Repository 'histogram'
hg clone https://toolshed.g2.bx.psu.edu/repos/devteam/histogram

Changeset 0:6ff47de059a0 (2014-07-28)
Next changeset 1:cdb9e89e2970 (2015-11-11)
Commit message:
Imported from capsule None
added:
histogram.py
histogram2.png
histogram2.xml
plot_filter.py
plotter.py
test-data/histogram_in1.tabular
test-data/histogram_out1.pdf
tool_dependencies.xml
b
diff -r 000000000000 -r 6ff47de059a0 histogram.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/histogram.py Mon Jul 28 11:56:34 2014 -0400
[
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+#Greg Von Kuster
+
+import sys
+from rpy import *
+
+assert sys.version_info[:2] >= ( 2, 4 )
+
+def stop_err(msg):
+    sys.stderr.write(msg)
+    sys.exit()
+
+def main():
+
+    # Handle input params
+    in_fname = sys.argv[1]
+    out_fname = sys.argv[2] 
+    try:
+        column = int( sys.argv[3] ) - 1
+    except:
+        stop_err( "Column not specified, your query does not contain a column of numerical data." )
+    title = sys.argv[4]
+    xlab = sys.argv[5]
+    breaks = int( sys.argv[6] )
+    if breaks == 0:
+        breaks = "Sturges"
+    if sys.argv[7] == "true":
+        density = True
+    else: density = False
+    if len( sys.argv ) >= 9 and sys.argv[8] == "true":
+        frequency = True
+    else: frequency = False
+
+    matrix = []
+    skipped_lines = 0
+    first_invalid_line = 0
+    invalid_value = ''
+    i = 0
+    for i, line in enumerate( file( in_fname ) ):
+        valid = True
+        line = line.rstrip('\r\n')
+        # Skip comments
+        if line and not line.startswith( '#' ): 
+            # Extract values and convert to floats
+            row = []
+            try:
+                fields = line.split( "\t" )
+                val = fields[column]
+                if val.lower() == "na":
+                    row.append( float( "nan" ) )
+            except:
+                valid = False
+                skipped_lines += 1
+                if not first_invalid_line:
+                    first_invalid_line = i+1
+            else:
+                try:
+                    row.append( float( val ) )
+                except ValueError:
+                    valid = False
+                    skipped_lines += 1
+                    if not first_invalid_line:
+                        first_invalid_line = i+1
+                        invalid_value = fields[column]
+        else:
+            valid = False
+            skipped_lines += 1
+            if not first_invalid_line:
+                first_invalid_line = i+1
+
+        if valid:
+            matrix += row
+
+    if skipped_lines < i:
+        try:
+            a = r.array( matrix )
+            r.pdf( out_fname, 8, 8 )
+            histogram = r.hist( a, probability=not frequency, main=title, xlab=xlab, breaks=breaks )
+            if density:
+                density = r.density( a )
+                if frequency:
+                    scale_factor = len( matrix ) * ( histogram['mids'][1] - histogram['mids'][0] ) #uniform bandwidth taken from first 2 midpoints
+                    density[ 'y' ] = map( lambda x: x * scale_factor, density[ 'y' ] )
+                r.lines( density )
+            r.dev_off()
+        except Exception, exc:
+            stop_err( "%s" %str( exc ) )
+    else:
+        if i == 0:
+            stop_err("Input dataset is empty.")
+        else:
+            stop_err( "All values in column %s are non-numeric." %sys.argv[3] )
+
+    print "Histogram of column %s. " %sys.argv[3]
+    if skipped_lines > 0:
+        print "Skipped %d invalid lines starting with line #%d, '%s'." % ( skipped_lines, first_invalid_line, invalid_value )
+
+    r.quit( save="no" )
+    
+if __name__ == "__main__":
+    main()
b
diff -r 000000000000 -r 6ff47de059a0 histogram2.png
b
Binary file histogram2.png has changed
b
diff -r 000000000000 -r 6ff47de059a0 histogram2.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/histogram2.xml Mon Jul 28 11:56:34 2014 -0400
b
@@ -0,0 +1,77 @@
+<tool id="histogram_rpy" name="Histogram" version="1.0.3">
+  <description>of a numeric column</description>
+  <requirements>
+    <requirement type="package" version="1.0.3">rpy</requirement>
+    <requirement type="package" version="2.11.0">R</requirement>
+  </requirements>
+  <command interpreter="python">histogram.py $input $out_file1 $numerical_column "$title" "$xlab" $breaks $density $frequency</command>
+  <inputs>
+    <param name="input" type="data" format="tabular" label="Dataset" help="Dataset missing? See TIP below"/>
+    <param name="numerical_column" type="data_column" data_ref="input" numerical="True" label="Numerical column for x axis" />
+    <param name="breaks" type="integer" size="4" value="0" label="Number of breaks (bars)"/>
+    <param name="title" type="text" size="30" value="Histogram" label="Plot title"/>
+    <param name="xlab" type="text" size="30" value="V1" label="Label for x axis"/>
+    <param name="density" type="boolean" checked="yes" label="Include smoothed density"/>
+    <param name="frequency" type="boolean" checked="no" label="Plot as frequency (counts)"/>
+  </inputs>
+  <outputs>
+    <data format="pdf" name="out_file1" />
+  </outputs>
+  <tests>
+    <test>
+      <param name="input" value="histogram_in1.tabular" ftype="tabular"/>
+      <param name="numerical_column" value="2"/>
+      <param name="breaks" value="0"/>
+      <param name="title" value="Histogram"/>
+      <param name="xlab" value="V1"/>
+      <param name="density" value="true"/>
+      <param name="frequency" value="false"/>
+      <output name="out_file1" file="histogram_out1.pdf"/>
+    </test>
+  </tests>
+  <help>
+
+.. class:: infomark
+
+**TIP:** To remove comment lines that do not begin with a *#* character, use *Text Manipulation-&gt;Remove beginning*
+
+ .. class:: infomark
+
+**TIP:** If your data is not TAB delimited, use *Text Manipulation-&gt;Convert*
+
+-----
+
+**Syntax**
+
+This tool computes a histogram of the numerical values in a column of a dataset.
+
+- All invalid, blank and comment lines in the dataset are skipped.  The number of skipped lines is displayed in the resulting history item.
+- **Column for x axis** - only numerical columns are possible.
+- **Number of breaks(bars)** - breakpoints between histogram cells. Value of '0' will determine breaks automatically.
+- **Plot title** - the histogram title.
+- **Label for x axis** - the label of the x axis for the histogram.
+- **Include smoothed density** - if checked, the resulting graph will join the given corresponding points with line segments.
+
+-----
+
+**Example**
+
+- Input file::
+
+    1 68 4.1
+    2 71 4.6
+    3 62 3.8
+    4 75 4.4
+    5 58 3.2
+    6 60 3.1
+    7 67 3.8
+    8 68 4.1
+    9 71 4.3
+    10 69 3.7 
+
+- Create a histogram on column 2 of the above dataset. 
+
+.. image:: histogram2.png
+
+</help>
+</tool>
b
diff -r 000000000000 -r 6ff47de059a0 plot_filter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plot_filter.py Mon Jul 28 11:56:34 2014 -0400
b
@@ -0,0 +1,19 @@
+
+def validate(incoming):
+    """Validator for the plotting program"""
+    
+    bins = incoming.get("bins","")
+    col  = incoming.get("col","")
+
+    if not bins or not col:
+        raise Exception, "You need to specify a number for bins and columns"
+
+    try:
+        bins = int(bins)
+        col  = int(col)
+    except:
+        raise Exception, "Parameters are not valid numbers, columns:%s, bins:%s" % (col, bins)
+
+    if not 1<bins<100:
+        raise Exception, "The number of bins %s must be a number between 1 and 100" % bins
+
b
diff -r 000000000000 -r 6ff47de059a0 plotter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plotter.py Mon Jul 28 11:56:34 2014 -0400
[
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+
+# python histogram input_file output_file column bins 
+import sys, os
+import matplotlib; matplotlib.use('Agg')
+
+from pylab import *
+
+assert sys.version_info[:2] >= ( 2, 4 )
+
+def stop_err(msg):
+    sys.stderr.write(msg)
+    sys.exit()
+
+if __name__ == '__main__':
+    # parse the arguments
+    
+    if len(sys.argv) != 6:
+        stop_err('Usage: python histogram.py input_file column bins output_file style')
+        sys.exit()
+
+    mode = sys.argv[5]
+    HIST = mode == 'hist'
+    try:
+        col =  int(float(sys.argv[2]))
+        if HIST:
+            bin = int(float(sys.argv[3]))
+        else:
+            # hack, this parameter is the plotting style for scatter plots
+            if sys.argv[3] == 'P':
+                style = 'o'
+            elif sys.argv[3] == 'LP':
+                style = 'o-'
+            else:
+                style = '-'
+
+    except:
+        msg = 'Parameter were not numbers %s, %s' % (sys.argv[3], sys.argv[4])
+        stop_err(msg)
+
+    # validate arguments
+    inp_file = sys.argv[1]
+    out_file = sys.argv[4]
+
+    if HIST:
+        print "Histogram on column %s (%s bins)" % (col, bin)
+    else:
+        print "Scatterplot on column %s" % (col)
+
+    xcol= col -1
+    # read the file
+    values = []
+    try:
+        count = 0
+        for line in file(inp_file):
+            count += 1
+            line = line.strip()
+            if line and line[0] != '#':
+                values.append(float(line.split()[xcol]))
+    except Exception, e:
+        stop_err('%s' % e)
+        stop_err("Non numerical data at line %d, column %d" % (count, col) )
+
+    # plot the data
+
+    if HIST:
+        n, bins, patches = hist(values, bins=bin, normed=0)
+    else:
+        plot(values, style)
+    
+    xlabel('values')
+    ylabel('counts')
+
+    if HIST:
+        title('Histogram of values over column %s (%s bins)' % (col, len(bins)) )
+    else:
+        title('Scatterplot over column %s' % col )        
+    grid(True)
+    
+    # the plotter detects types by file extension
+    png_out = out_file + '.png' # force it to png
+    savefig(png_out)
+
+    # shuffle it back and clean up
+    data = file(png_out, 'rb').read() 
+    fp = open(out_file, 'wb')
+    fp.write(data)
+    fp.close()
+    os.remove(png_out)
b
diff -r 000000000000 -r 6ff47de059a0 test-data/histogram_in1.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/histogram_in1.tabular Mon Jul 28 11:56:34 2014 -0400
b
@@ -0,0 +1,10 @@
+1 68 4.1
+2 71 4.6
+3 62 3.8
+4 75 4.4
+5 58 3.2
+6 60 3.1
+7 67 3.8
+8 68 4.1
+9 71 4.3
+10 69 3.7
b
diff -r 000000000000 -r 6ff47de059a0 test-data/histogram_out1.pdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/histogram_out1.pdf Mon Jul 28 11:56:34 2014 -0400
[
b'@@ -0,0 +1,545 @@\n+%PDF-1.4\n+%\x81\xe2\x81\xe3\x81\xcf\x81\xd3\\r\n+1 0 obj\n+<<\n+/CreationDate (D:20110303082028)\n+/ModDate (D:20110303082028)\n+/Title (R Graphics Output)\n+/Producer (R 2.11.0)\n+/Creator (R)\n+>>\n+endobj\n+2 0 obj\n+<<\n+/Type /Catalog\n+/Pages 3 0 R\n+>>\n+endobj\n+5 0 obj\n+<<\n+/Type /Page\n+/Parent 3 0 R\n+/Contents 6 0 R\n+/Resources 4 0 R\n+>>\n+endobj\n+6 0 obj\n+<<\n+/Length 7 0 R\n+>>\n+stream\r\n+1 J 1 j q\n+Q q\n+BT\n+0.000 0.000 0.000 rg\n+/F3 1 Tf 14.00 0.00 -0.00 14.00 267.78 541.45 Tm (Histogram) Tj\n+ET\n+BT\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 295.06 18.72 Tm (V1) Tj\n+ET\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 12.96 275.20 Tm (Density) Tj\n+ET\n+Q q\n+0.000 0.000 0.000 RG\n+0.75 w\n+[] 0 d\n+1 J\n+1 j\n+10.00 M\n+77.07 73.44 m 527.73 73.44 l S\n+77.07 73.44 m 77.07 66.24 l S\n+189.73 73.44 m 189.73 66.24 l S\n+302.40 73.44 m 302.40 66.24 l S\n+415.07 73.44 m 415.07 66.24 l S\n+527.73 73.44 m 527.73 66.24 l S\n+BT\n+0.000 0.000 0.000 rg\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 70.39 47.52 Tm (55) Tj\n+ET\n+BT\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 183.06 47.52 Tm (60) Tj\n+ET\n+BT\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 295.73 47.52 Tm (65) Tj\n+ET\n+BT\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 408.39 47.52 Tm (70) Tj\n+ET\n+BT\n+/F2 1 Tf 12.00 0.00 -0.00 12.00 521.06 47.52 Tm (75) Tj\n+ET\n+59.04 89.87 m 59.04 500.53 l S\n+59.04 89.87 m 51.84 89.87 l S\n+59.04 192.53 m 51.84 192.53 l S\n+59.04 295.20 m 51.84 295.20 l S\n+59.04 397.87 m 51.84 397.87 l S\n+59.04 500.53 m 51.84 500.53 l S\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 78.19 Tm (0.00) Tj\n+ET\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 180.86 Tm (0.02) Tj\n+ET\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 283.52 Tm (0.04) Tj\n+ET\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 386.19 Tm (0.06) Tj\n+ET\n+BT\n+/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 488.86 Tm (0.08) Tj\n+ET\n+Q q 59.04 73.44 486.72 443.52 re W n\n+0.000 0.000 0.000 RG\n+0.75 w\n+[] 0 d\n+1 J\n+1 j\n+10.00 M\n+77.07 89.87 112.67 205.33 re S\n+189.73 89.87 112.67 102.67 re S\n+302.40 89.87 112.67 410.67 re S\n+415.07 89.87 112.67 308.00 re S\n+0.00 98.74 m\n+0.12 98.77 l\n+1.67 99.23 l\n+3.22 99.72 l\n+4.77 100.22 l\n+6.33 100.74 l\n+7.88 101.29 l\n+9.43 101.85 l\n+10.98 102.44 l\n+12.53 103.05 l\n+14.09 103.69 l\n+15.64 104.35 l\n+17.19 105.03 l\n+18.74 105.74 l\n+20.30 106.47 l\n+21.85 107.23 l\n+23.40 108.02 l\n+24.95 108.83 l\n+26.51 109.67 l\n+28.06 110.53 l\n+29.61 111.43 l\n+31.16 112.35 l\n+32.72 113.31 l\n+34.27 114.29 l\n+35.82 115.30 l\n+37.37 116.35 l\n+38.92 117.42 l\n+40.48 118.52 l\n+42.03 119.66 l\n+43.58 120.82 l\n+45.13 122.02 l\n+46.69 123.24 l\n+48.24 124.51 l\n+49.79 125.80 l\n+51.34 127.11 l\n+52.90 128.48 l\n+54.45 129.85 l\n+56.00 131.28 l\n+57.55 132.73 l\n+59.11 134.20 l\n+60.66 135.72 l\n+62.21 137.25 l\n+63.76 138.83 l\n+65.31 140.43 l\n+66.87 142.07 l\n+68.42 143.73 l\n+69.97 145.41 l\n+71.52 147.14 l\n+73.08 148.89 l\n+74.63 150.66 l\n+76.18 152.47 l\n+77.73 154.29 l\n+79.29 156.15 l\n+80.84 158.02 l\n+82.39 159.93 l\n+83.94 161.85 l\n+85.50 163.79 l\n+87.05 165.77 l\n+88.60 167.75 l\n+90.15 169.76 l\n+91.70 171.78 l\n+93.26 173.82 l\n+94.81 175.88 l\n+96.36 177.95 l\n+97.91 180.03 l\n+99.47 182.13 l\n+101.02 184.23 l\n+102.57 186.35 l\n+104.12 188.47 l\n+105.68 190.60 l\n+107.23 192.73 l\n+108.78 194.87 l\n+110.33 197.01 l\n+111.89 199.14 l\n+113.44 201.28 l\n+114.99 203.42 l\n+116.54 205.55 l\n+118.09 207.67 l\n+119.65 209.79 l\n+121.20 211.89 l\n+122.75 213.99 l\n+124.30 216.08 l\n+125.86 218.15 l\n+127.41 220.21 l\n+128.96 222.24 l\n+130.51 224.27 l\n+132.07 226.26 l\n+133.62 228.24 l\n+135.17 230.20 l\n+136.72 232.13 l\n+138.28 234.04 l\n+139.83 235.91 l\n+141.38 237.77 l\n+142.93 239.59 l\n+144.48 241.37 l\n+146.04 243.14 l\n+147.59 244.85 l\n+149.14 246.54 l\n+150.69 248.19 l\n+152.25 249.80 l\n+153.80 251.39 l\n+155.35 252.91 l\n+156.90 254.41 l\n+158.46 255.87 l\n+160.01 257.28 l\n+161.56 258.66 l\n+163.11 259.98 l\n+164.67 261.28 l\n+166.22 262.51 l\n+167.77 263.71 l\n+169.32 264.88 l\n+170.87 265.98 l\n+172.43 267.06 l\n+173.98 268.07 l\n+175.53 269.05 l\n+177.08 269.98 l\n+178.64 270.87 l\n+180.19 271.73 l\n+181.74 272.52 l\n+183.29 273.28 l\n+184.85 274.00 l\n+186.40 274.67 l\n+187.95 275.32 l\n+189.'..b' l\n+307.48 347.18 l\n+309.03 349.91 l\n+310.59 352.69 l\n+312.14 355.51 l\n+313.69 358.34 l\n+315.24 361.22 l\n+316.80 364.12 l\n+318.35 367.04 l\n+319.90 369.99 l\n+321.45 372.94 l\n+323.01 375.91 l\n+324.56 378.89 l\n+326.11 381.87 l\n+327.66 384.86 l\n+329.21 387.84 l\n+330.77 390.81 l\n+332.32 393.78 l\n+333.87 396.72 l\n+335.42 399.66 l\n+336.98 402.57 l\n+338.53 405.45 l\n+340.08 408.31 l\n+341.63 411.12 l\n+343.19 413.90 l\n+344.74 416.64 l\n+346.29 419.33 l\n+347.84 421.99 l\n+349.39 424.56 l\n+350.95 427.11 l\n+352.50 429.58 l\n+354.05 431.98 l\n+355.60 434.34 l\n+357.16 436.60 l\n+358.71 438.81 l\n+360.26 440.92 l\n+361.81 442.96 l\n+363.37 444.93 l\n+364.92 446.79 l\n+366.47 448.60 l\n+368.02 450.27 l\n+369.58 451.88 l\n+371.13 453.39 l\n+372.68 454.78 l\n+374.23 456.12 l\n+375.78 457.29 l\n+377.34 458.41 l\n+378.89 459.40 l\n+380.44 460.28 l\n+381.99 461.09 l\n+383.55 461.74 l\n+385.10 462.32 l\n+386.65 462.76 l\n+388.20 463.10 l\n+389.76 463.35 l\n+391.31 463.45 l\n+392.86 463.48 l\n+394.41 463.35 l\n+395.97 463.14 l\n+397.52 462.83 l\n+399.07 462.36 l\n+400.62 461.84 l\n+402.17 461.16 l\n+403.73 460.40 l\n+405.28 459.53 l\n+406.83 458.53 l\n+408.38 457.47 l\n+409.94 456.25 l\n+411.49 454.96 l\n+413.04 453.57 l\n+414.59 452.06 l\n+416.15 450.50 l\n+417.70 448.78 l\n+419.25 447.01 l\n+420.80 445.13 l\n+422.36 443.17 l\n+423.91 441.14 l\n+425.46 438.99 l\n+427.01 436.79 l\n+428.56 434.48 l\n+430.12 432.11 l\n+431.67 429.68 l\n+433.22 427.15 l\n+434.77 424.58 l\n+436.33 421.92 l\n+437.88 419.21 l\n+439.43 416.44 l\n+440.98 413.60 l\n+442.54 410.73 l\n+444.09 407.78 l\n+445.64 404.80 l\n+447.19 401.77 l\n+448.75 398.69 l\n+450.30 395.58 l\n+451.85 392.41 l\n+453.40 389.23 l\n+454.95 386.00 l\n+456.51 382.75 l\n+458.06 379.48 l\n+459.61 376.16 l\n+461.16 372.84 l\n+462.72 369.49 l\n+464.27 366.13 l\n+465.82 362.75 l\n+467.37 359.36 l\n+468.93 355.96 l\n+470.48 352.55 l\n+472.03 349.14 l\n+473.58 345.72 l\n+475.14 342.30 l\n+476.69 338.88 l\n+478.24 335.46 l\n+479.79 332.05 l\n+481.34 328.64 l\n+482.90 325.24 l\n+484.45 321.85 l\n+486.00 318.47 l\n+487.55 315.10 l\n+489.11 311.75 l\n+490.66 308.41 l\n+492.21 305.08 l\n+493.76 301.78 l\n+495.32 298.49 l\n+496.87 295.22 l\n+498.42 291.97 l\n+499.97 288.74 l\n+501.53 285.54 l\n+503.08 282.35 l\n+504.63 279.19 l\n+506.18 276.06 l\n+507.73 272.94 l\n+509.29 269.86 l\n+510.84 266.79 l\n+512.39 263.76 l\n+513.94 260.76 l\n+515.50 257.77 l\n+517.05 254.82 l\n+518.60 251.89 l\n+520.15 249.00 l\n+521.71 246.13 l\n+523.26 243.28 l\n+524.81 240.47 l\n+526.36 237.68 l\n+527.92 234.93 l\n+529.47 232.20 l\n+531.02 229.50 l\n+532.57 226.83 l\n+534.12 224.18 l\n+535.68 221.58 l\n+537.23 218.99 l\n+538.78 216.43 l\n+540.33 213.91 l\n+541.89 211.40 l\n+543.44 208.94 l\n+544.99 206.49 l\n+546.54 204.08 l\n+548.10 201.69 l\n+549.65 199.33 l\n+551.20 197.01 l\n+552.75 194.70 l\n+554.31 192.43 l\n+555.86 190.18 l\n+557.41 187.96 l\n+558.96 185.77 l\n+560.51 183.60 l\n+562.07 181.48 l\n+563.62 179.36 l\n+565.17 177.28 l\n+566.72 175.23 l\n+568.28 173.20 l\n+569.83 171.21 l\n+571.38 169.24 l\n+572.93 167.30 l\n+574.49 165.38 l\n+576.00 163.54 l\n+S\n+Q\n+endstream\n+endobj\n+7 0 obj\n+7425\n+endobj\n+3 0 obj\n+<<\n+/Type /Pages\n+/Kids [\n+5 0 R\n+]\n+/Count 1\n+/MediaBox [0 0 576 576]\n+>>\n+endobj\n+4 0 obj\n+<<\n+/ProcSet [/PDF /Text]\n+/Font <</F2 9 0 R /F3 10 0 R >>\n+/ExtGState << >>\n+>>\n+endobj\n+8 0 obj\n+<<\n+/Type /Encoding\n+/BaseEncoding /WinAnsiEncoding\n+/Differences [ 45/minus 96/quoteleft\n+144/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent\n+/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space]\n+>>\n+endobj\n+9 0 obj <<\n+/Type /Font\n+/Subtype /Type1\n+/Name /F2\n+/BaseFont /Helvetica\n+/Encoding 8 0 R\n+>> endobj\n+10 0 obj <<\n+/Type /Font\n+/Subtype /Type1\n+/Name /F3\n+/BaseFont /Helvetica-Bold\n+/Encoding 8 0 R\n+>> endobj\n+xref\n+0 11\n+0000000000 65535 f \n+0000000021 00000 n \n+0000000164 00000 n \n+0000007791 00000 n \n+0000007874 00000 n \n+0000000213 00000 n \n+0000000293 00000 n \n+0000007771 00000 n \n+0000007966 00000 n \n+0000008223 00000 n \n+0000008319 00000 n \n+trailer\n+<<\n+/Size 11\n+/Info 1 0 R\n+/Root 2 0 R\n+>>\n+startxref\n+8421\n+%%EOF\n'
b
diff -r 000000000000 -r 6ff47de059a0 tool_dependencies.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml Mon Jul 28 11:56:34 2014 -0400
b
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<tool_dependency>
+  <package name="rpy" version="1.0.3">
+      <repository changeset_revision="82170c94ca7c" name="package_rpy_1_0_3" owner="devteam" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+    <package name="R" version="2.11.0">
+      <repository changeset_revision="5824d2b3bc8b" name="package_r_2_11_0" owner="devteam" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+</tool_dependency>