Merge pull request #7246 from davebx/csv_tsv_converters

Add converters between tabular and CSV.
This commit is contained in:
John Chilton
2019-04-16 17:41:18 -04:00
committed by GitHub
4 changed files with 77 additions and 3 deletions
+9 -3
View File
@@ -85,8 +85,12 @@
<converter file="interval_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
<converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/>
</datatype>
<datatype extension="csv" type="galaxy.datatypes.tabular:CSV" display_in_upload="true"/>
<datatype extension="tsv" type="galaxy.datatypes.tabular:TSV" display_in_upload="true"/>
<datatype extension="csv" type="galaxy.datatypes.tabular:CSV" display_in_upload="true">
<converter file="csv_to_tabular.xml" target_datatype="tabular"/>
</datatype>
<datatype extension="tsv" type="galaxy.datatypes.tabular:TSV" display_in_upload="true">
<converter file="tabular_to_csv.xml" target_datatype="csv"/>
</datatype>
<datatype extension="intermine_tabular" type="galaxy.datatypes.tabular:TSV" subclass="true" display_in_upload="true">
<display file="intermine/intermine_simple.xml"/>
</datatype>
@@ -326,7 +330,9 @@
<datatype extension="sra" type="galaxy.datatypes.binary:Sra" mimetype="application/octet-stream" display_in_upload="true" description="A binary file archive format from the NCBI Sequence Read Archive with a '.sra' file extension." description_url="http://www.ncbi.nlm.nih.gov/books/n/helpsra/SRA_Overview_BK/#SRA_Overview_BK.4_SRA_Data_Structure"/>
<datatype extension="svg" type="galaxy.datatypes.xml:GenericXml" mimetype="image/svg+xml" subclass="true"/>
<datatype extension="taxonomy" type="galaxy.datatypes.tabular:Taxonomy" display_in_upload="true"/>
<datatype extension="tabular" type="galaxy.datatypes.tabular:Tabular" display_in_upload="true" description="Any data in tab delimited format (tabular)." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Tabular_.28tab_delimited.29"/>
<datatype extension="tabular" type="galaxy.datatypes.tabular:Tabular" display_in_upload="true" description="Any data in tab delimited format (tabular)." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Tabular_.28tab_delimited.29">
<converter file="tabular_to_csv.xml" target_datatype="csv"/>
</datatype>
<datatype extension="twobit" type="galaxy.datatypes.binary:TwoBit" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="sqlite" type="galaxy.datatypes.binary:SQlite" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="gemini.sqlite" type="galaxy.datatypes.binary:GeminiSQLite" mimetype="application/octet-stream" display_in_upload="true"/>
@@ -0,0 +1,12 @@
<tool id="csv_to_tabular" name="Convert CSV to tabular" version="1.0.0">
<description></description>
<command>python '$__tool_directory__/tabular_csv.py' -o '$tabular' -i '$csv'</command>
<inputs>
<param format="csv" name="csv" type="data" label="Choose file with comma-separated values"/>
</inputs>
<outputs>
<data format="tabular" name="tabular"/>
</outputs>
<help>
</help>
</tool>
@@ -0,0 +1,44 @@
#!/usr/bin/env python
"""
Uses the python csv library to convert to and from tabular
usage: %prog [--from-tabular] -i in_file -o out_file
"""
import argparse
import csv
def main():
usage = "Usage: %prog [options]"
parser = argparse.ArgumentParser(usage=usage)
parser.add_argument('-f', '--from-tabular', action='store_true', default=False, dest='fromtabular')
parser.add_argument('-i', '--input', type=str, dest='input')
parser.add_argument('-o', '--output', type=str, dest='output')
args = parser.parse_args()
input_fname = args.input
output_fname = args.output
if args.fromtabular:
convert_to_csv(input_fname, output_fname)
else:
convert_to_tsv(input_fname, output_fname)
def convert_to_tsv(input_fname, output_fname):
with open(input_fname, 'rb') as csvfile:
with open(output_fname, 'wb') as ofh:
reader = csv.reader(csvfile)
for line in reader:
ofh.write('\t'.join(line) + '\n')
def convert_to_csv(input_fname, output_fname):
with open(input_fname, 'rb') as tabfile:
with open(output_fname, 'wb') as ofh:
writer = csv.writer(ofh, delimiter=',')
for line in tabfile.readlines():
writer.writerow(line.strip().split('\t'))
if __name__ == "__main__":
main()
@@ -0,0 +1,12 @@
<tool id="tabular_to_csv" name="Convert tabular to CSV" version="1.0.0">
<description></description>
<command>python '$__tool_directory__/tabular_csv.py' --from-tabular -i '$tabular' -o '$csv'</command>
<inputs>
<param format="tsv,tabular" name="tabular" type="data" label="Choose file with tab-separated values"/>
</inputs>
<outputs>
<data format="csv" name="csv"/>
</outputs>
<help>
</help>
</tool>