Adding back 'wiggle to interval' converter

This commit is contained in:
Guruprasad Anada
2009-12-01 11:49:07 -05:00
parent a333097860
commit 10af4c5ccf
7 changed files with 189 additions and 0 deletions
+1
View File
@@ -58,6 +58,7 @@
<datatype extension="txtseq.zip" type="galaxy.datatypes.data:Txtseq" mimetype="application/zip" display_in_upload="true"/>
<datatype extension="wig" type="galaxy.datatypes.interval:Wiggle" display_in_upload="true">
<converter file="wiggle_to_array_tree_converter.xml" target_datatype="array_tree"/>
<converter file="wiggle_to_simple_converter.xml" target_datatype="interval"/>
</datatype>
<datatype extension="array_tree" type="galaxy.datatypes.data:Data" />
<datatype extension="interval_index" type="galaxy.datatypes.data:Data" />
@@ -0,0 +1,44 @@
#!/usr/bin/env python
#code is same as ~/tools/stats/wiggle_to_simple.py
"""
Read a wiggle track and print out a series of lines containing
"chrom position score". Ignores track lines, handles bed, variableStep
and fixedStep wiggle lines.
"""
import sys
from galaxy import eggs
import pkg_resources; pkg_resources.require( "bx-python" )
import bx.wiggle
from galaxy.tools.exception_handling import *
def stop_err( msg ):
sys.stderr.write( msg )
sys.exit()
def main():
if len( sys.argv ) > 1:
in_file = open( sys.argv[1] )
else:
in_file = open( sys.stdin )
if len( sys.argv ) > 2:
out_file = open( sys.argv[2], "w" )
else:
out_file = sys.stdout
try:
for fields in bx.wiggle.IntervalReader( UCSCOutWrapper( in_file ) ):
out_file.write( "%s\n" % "\t".join( map( str, fields ) ) )
except UCSCLimitException:
# Wiggle data was truncated, at the very least need to warn the user.
print 'Encountered message from UCSC: "Reached output limit of 100000 data values", so be aware your data was truncated.'
except ValueError, e:
in_file.close()
out_file.close()
stop_err( str( e ) )
in_file.close()
out_file.close()
if __name__ == "__main__": main()
@@ -0,0 +1,11 @@
<tool id="CONVERTER_wiggle_to_interval_0" name="Wiggle to Interval">
<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
<!-- Used on the metadata edit page. -->
<command interpreter="python">wiggle_to_simple_converter.py $input $out_file1 </command>
<inputs>
<param format="wig" name="input" type="data" label="Convert"/>
</inputs>
<outputs>
<data format="interval" name="out_file1" />
</outputs>
</tool>
+1
View File
@@ -47,6 +47,7 @@
<tool file="maf/maf_to_fasta.xml" />
<tool file="fasta_tools/tabular_to_fasta.xml" />
<tool file="fastx_toolkit/fastq_to_fasta.xml" />
<tool file="filters/wiggle_to_simple.xml" />
</section>
<section name="FASTA manipulation" id="fasta_manipulation">
<tool file="fasta_tools/fasta_compute_length.xml" />
+1
View File
@@ -71,6 +71,7 @@
<tool file="maf/maf_to_fasta.xml" />
<tool file="fasta_tools/tabular_to_fasta.xml" />
<tool file="fastx_toolkit/fastq_to_fasta.xml" />
<tool file="filters/wiggle_to_simple.xml" />
</section>
<section name="Extract Features" id="features">
<tool file="filters/ucsc_gene_bed_to_exon_bed.xml" />
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env python
"""
Read a wiggle track and print out a series of lines containing
"chrom position score". Ignores track lines, handles bed, variableStep
and fixedStep wiggle lines.
"""
import sys
from galaxy import eggs
import pkg_resources; pkg_resources.require( "bx-python" )
import bx.wiggle
from galaxy.tools.exception_handling import *
def stop_err( msg ):
sys.stderr.write( msg )
sys.exit()
def main():
if len( sys.argv ) > 1:
in_file = open( sys.argv[1] )
else:
in_file = open( sys.stdin )
if len( sys.argv ) > 2:
out_file = open( sys.argv[2], "w" )
else:
out_file = sys.stdout
try:
for fields in bx.wiggle.IntervalReader( UCSCOutWrapper( in_file ) ):
out_file.write( "%s\n" % "\t".join( map( str, fields ) ) )
except UCSCLimitException:
# Wiggle data was truncated, at the very least need to warn the user.
print 'Encountered message from UCSC: "Reached output limit of 100000 data values", so be aware your data was truncated.'
except ValueError, e:
in_file.close()
out_file.close()
stop_err( str( e ) )
in_file.close()
out_file.close()
if __name__ == "__main__": main()
+88
View File
@@ -0,0 +1,88 @@
<tool id="wiggle2simple1" name="Wiggle-to-Interval">
<description>converter</description>
<command interpreter="python">wiggle_to_simple.py $input $out_file1 </command>
<inputs>
<param format="wig" name="input" type="data" label="Convert"/>
</inputs>
<outputs>
<data format="interval" name="out_file1" />
</outputs>
<tests>
<test>
<param name="input" value="2.wig" />
<output name="out_file1" file="2.interval"/>
</test>
<test>
<param name="input" value="3.wig" />
<output name="out_file1" file="3_wig.bed"/>
</test>
</tests>
<help>
**Syntax**
This tool converts wiggle data into interval type.
- **Wiggle format**: The .wig format is line-oriented. Wiggle data is preceded by a UCSC track definition line. Following the track definition line is the track data, which can be entered in three different formats described below.
- **BED format** with no declaration line and four columns of data::
chromA chromStartA chromEndA dataValueA
chromB chromStartB chromEndB dataValueB
- **variableStep** two column data; started by a declaration line and followed with chromosome positions and data values::
variableStep chrom=chrN [span=windowSize]
chromStartA dataValueA
chromStartB dataValueB
- **fixedStep** single column data; started by a declaration line and followed with data values::
fixedStep chrom=chrN start=position step=stepInterval [span=windowSize]
dataValue1
dataValue2
-----
**Example**
- input wiggle format file::
#track type=wiggle_0 name="Bed Format" description="BED format"
chr19 59302000 59302300 -1.0
chr19 59302300 59302600 -0.75
chr19 59302600 59302900 -0.50
chr19 59302900 59303200 -0.25
chr19 59303200 59303500 0.0
#track type=wiggle_0 name="variableStep" description="variableStep format"
variableStep chrom=chr19 span=150
59304701 10.0
59304901 12.5
59305401 15.0
59305601 17.5
#track type=wiggle_0 name="fixedStep" description="fixed step" visibility=full
fixedStep chrom=chr19 start=59307401 step=300 span=200
1000
900
800
700
600
- convert the above file to interval file::
chr19 59302000 59302300 + -1.0
chr19 59302300 59302600 + -0.75
chr19 59302600 59302900 + -0.5
chr19 59302900 59303200 + -0.25
chr19 59303200 59303500 + 0.0
chr19 59304701 59304851 + 10.0
chr19 59304901 59305051 + 12.5
chr19 59305401 59305551 + 15.0
chr19 59305601 59305751 + 17.5
chr19 59307701 59307901 + 1000.0
chr19 59308001 59308201 + 900.0
chr19 59308301 59308501 + 800.0
chr19 59308601 59308801 + 700.0
chr19 59308901 59309101 + 600.0
</help>
</tool>