mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Adding back 'wiggle to interval' converter
This commit is contained in:
@@ -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>
|
||||
@@ -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" />
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Executable
+43
@@ -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()
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user