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->Remove beginning* + + .. class:: infomark + +**TIP:** If your data is not TAB delimited, use *Text Manipulation->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> |