Mercurial > repos > kellrott > tabular_edit
comparison tabular_edit.xml @ 0:01454ded8907 draft default tip
Uploaded
| author | kellrott |
|---|---|
| date | Wed, 31 Oct 2012 19:50:16 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:01454ded8907 |
|---|---|
| 1 <tool id="tabular_edit" name="Tabular Edit" version="1.0.0"> | |
| 2 <description>Edit the contents and row/column labels of a tabular file using python statements</description> | |
| 3 <command interpreter="python">$script_file</command> | |
| 4 <inputs> | |
| 5 <param name="row_txt" type="text" area="True" size="5x35" label="Row Eval Code" optional="True"> | |
| 6 <sanitizer> | |
| 7 <valid initial="string.printable"> | |
| 8 <remove value="""/> | |
| 9 </valid> | |
| 10 <mapping initial="none"> | |
| 11 <add source=""" target="\""/> | |
| 12 <add source="\" target="\\"/> | |
| 13 </mapping> | |
| 14 </sanitizer> | |
| 15 </param> | |
| 16 <param name="col_txt" type="text" area="True" size="5x35" label="Column Eval Code" optional="True"> | |
| 17 <sanitizer> | |
| 18 <valid initial="string.printable"> | |
| 19 <remove value="""/> | |
| 20 </valid> | |
| 21 <mapping initial="none"> | |
| 22 <add source=""" target="\""/> | |
| 23 </mapping> | |
| 24 </sanitizer> | |
| 25 </param> | |
| 26 <param name="cell_txt" type="text" area="True" size="5x35" label="Cell Eval Code" optional="True"> | |
| 27 <sanitizer> | |
| 28 <valid initial="string.printable"> | |
| 29 <remove value="""/> | |
| 30 </valid> | |
| 31 <mapping initial="none"> | |
| 32 <add source=""" target="\""/> | |
| 33 </mapping> | |
| 34 </sanitizer> | |
| 35 </param> | |
| 36 | |
| 37 <param name="matrix" type="data" format="tabular" label="Matrix"/> | |
| 38 </inputs> | |
| 39 <outputs> | |
| 40 <data format="tabular" name="outfile" /> | |
| 41 </outputs> | |
| 42 <configfiles> | |
| 43 <configfile name="script_file"><![CDATA[#!/usr/bin/env python | |
| 44 import os | |
| 45 import sys | |
| 46 import csv | |
| 47 import re | |
| 48 import math | |
| 49 | |
| 50 def value_eval(code, value): | |
| 51 funcmap = { | |
| 52 "len":len, | |
| 53 "value" : value, | |
| 54 "re" : re, | |
| 55 "math" : math, | |
| 56 "float" : float | |
| 57 } | |
| 58 return str(eval(code,{"__builtins__":None},funcmap)) | |
| 59 | |
| 60 | |
| 61 row_text = """${row_txt}""" | |
| 62 col_text = """${col_txt}""" | |
| 63 cell_text = """${cell_txt}""" | |
| 64 | |
| 65 in_path = """${matrix}""" | |
| 66 out_path = """${outfile}""" | |
| 67 | |
| 68 | |
| 69 ohandle = open(out_path, "w") | |
| 70 ihandle = open(in_path) | |
| 71 reader = csv.reader(ihandle, delimiter="\t") | |
| 72 writer = csv.writer(ohandle, delimiter="\t", lineterminator="\n") | |
| 73 | |
| 74 header = True | |
| 75 for row in reader: | |
| 76 if header: | |
| 77 if len(col_text): | |
| 78 for i, val in enumerate(row[1:]): | |
| 79 row[i+1] = value_eval(col_text, val) | |
| 80 header = False | |
| 81 else: | |
| 82 if len(row_text): | |
| 83 row[0] = value_eval(row_text, row[0]) | |
| 84 if len(cell_text): | |
| 85 for i in range(1,len(row)): | |
| 86 row[i] = value_eval(cell_text,row[i]) | |
| 87 writer.writerow(row) | |
| 88 | |
| 89 ihandle.close() | |
| 90 ohandle.close() | |
| 91 | |
| 92 | |
| 93 ]]></configfile> | |
| 94 </configfiles> | |
| 95 <help> | |
| 96 This is a utility to perform editing operations on the contents and column/row labels of a tabular file. | |
| 97 | |
| 98 - The 'Column Eval Code' operations occur on the first line. | |
| 99 - The 'Row Eval Code' operations occur on the first cell of every line | |
| 100 - The 'Cell Eval Code' operations occur on every non-label cell | |
| 101 - If any of the code blocks are empty, the operation is skipped | |
| 102 | |
| 103 Example | |
| 104 | |
| 105 Remove the '.CEL' string from sample names:: | |
| 106 | |
| 107 re.sub(r'.CEL$', '', value) | |
| 108 | |
| 109 Log Transform the matrix cells:: | |
| 110 | |
| 111 math.log(float(value)) | |
| 112 | |
| 113 | |
| 114 </help> | |
| 115 </tool> |
