changeset 0:8aa939ace6ba

Imported from capsule None
author devteam
date Tue, 01 Apr 2014 10:53:46 -0400
parents
children 855580142a12
files concat.xml gops_concat.py operation_filter.py test-data/1.bed test-data/1.interval test-data/2.bed test-data/gops_concat_out1.bed test-data/gops_concat_out2.bed tool_dependencies.xml
diffstat 9 files changed, 586 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/concat.xml	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,63 @@
+<tool id="gops_concat_1" name="Concatenate" version="1.0.1">
+  <description>two datasets into one dataset</description>
+  <requirements>
+    <requirement type="package" version="0.7.1">bx-python</requirement>
+    <requirement type="package" version="1.0.0">galaxy-ops</requirement>
+  </requirements>
+  <command interpreter="python">gops_concat.py $input1 $input2 $output -1 ${input1.metadata.chromCol},${input1.metadata.startCol},${input1.metadata.endCol},${input1.metadata.strandCol} -2 ${input2.metadata.chromCol},${input2.metadata.startCol},${input2.metadata.endCol},${input2.metadata.strandCol} $sameformat</command>
+  <inputs>
+    <param format="interval" name="input1" type="data" help="First dataset">
+      <label>Concatenate</label>
+    </param>
+    <param format="interval" name="input2" type="data" help="Second dataset">
+      <label>with</label>
+    </param>
+    <param name="sameformat" type="boolean" truevalue="--sameformat" falsevalue="" label="Both datasets are same filetype?" checked="true" help="If unchecked Second dataset will be forced into format of First dataset">
+    </param>
+   </inputs>
+  <outputs>
+    <data format="input" name="output" metadata_source="input1" />
+  </outputs>
+  <code file="operation_filter.py"/>
+  <tests>
+    <test>
+      <param name="input1" value="1.bed" />
+      <param name="input2" value="2.bed" />
+      <param name="sameformat" value="true" />
+      <output name="output" file="gops_concat_out1.bed" />     
+    </test>
+    <test>
+      <param name="input1" value="1.bed" />
+      <param name="input2" value="1.interval" />
+      <param name="sameformat" value="false" />
+      <output name="output" file="gops_concat_out2.bed" />     
+    </test>   
+  </tests>
+  <help>
+
+.. class:: infomark
+
+**TIP:** If your dataset does not appear in the pulldown menu -> it is not in interval format. Use "edit attributes" to set chromosome, start, end, and strand columns.
+
+-----
+
+**Screencasts!**
+
+See Galaxy Interval Operation Screencasts_ (right click to open this link in another window).
+
+.. _Screencasts: http://wiki.g2.bx.psu.edu/Learn/Interval%20Operations
+
+-----
+
+**Syntax**
+
+- **Both datasets are exactly the same filetype** will preserve all extra fields in both files.  Leaving this unchecked will force the second dataset to use the same column assignments for chrom, start, end and strand, but will fill extra fields with a period(.).  In both cases, the output fields are truncated or padded with fields of periods to maintain a truly tabular output.
+
+-----
+
+**Example**
+
+.. image:: ${static_path}/operation_icons/gops_concatenate.gif
+
+</help>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gops_concat.py	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+"""
+Concatenate two bed files.  The concatenated files are returned in the
+same format as the first.  If --sameformat is specified, then all
+columns will be treated as the same, and all fields will be saved,
+although the output will be trimmed to match the primary input.  In
+addition, if --sameformat is specified, missing fields will be padded
+with a period(.).
+
+usage: %prog in_file_1 in_file_2 out_file
+    -1, --cols1=N,N,N,N: Columns for chrom, start, end, strand in first file
+    -2, --cols2=N,N,N,N: Columns for chrom, start, end, strand in second file
+    -s, --sameformat: All files are precisely the same format.
+"""
+
+import sys, traceback, fileinput
+from warnings import warn
+from bx.intervals import *
+from bx.intervals.io import *
+from bx.intervals.operations.concat import *
+from bx.cookbook import doc_optparse
+from galaxy.tools.util.galaxyops import *
+
+assert sys.version_info[:2] >= ( 2, 4 )
+
+def main():
+    sameformat=False
+    upstream_pad = 0
+    downstream_pad = 0
+
+    options, args = doc_optparse.parse( __doc__ )
+    try:
+        chr_col_1, start_col_1, end_col_1, strand_col_1 = parse_cols_arg( options.cols1 )
+        chr_col_2, start_col_2, end_col_2, strand_col_2 = parse_cols_arg( options.cols2 )
+        if options.sameformat: sameformat = True
+        in_file_1, in_file_2, out_fname = args
+    except:
+        doc_optparse.exception()
+
+    g1 = NiceReaderWrapper( fileinput.FileInput( in_file_1 ),
+                            chrom_col=chr_col_1,
+                            start_col=start_col_1,
+                            end_col=end_col_1,
+                            strand_col=strand_col_1,
+                            fix_strand=True )
+
+    g2 = NiceReaderWrapper( fileinput.FileInput( in_file_2 ),
+                            chrom_col=chr_col_2,
+                            start_col=start_col_2,
+                            end_col=end_col_2,
+                            strand_col=strand_col_2,
+                            fix_strand=True )
+
+    out_file = open( out_fname, "w" )
+
+    try:
+        for line in concat( [g1, g2], sameformat=sameformat ):
+            if type( line ) is GenomicInterval:
+                out_file.write( "%s\n" % "\t".join( line.fields ) )
+            else:
+                out_file.write( "%s\n" % line )
+    except ParseError, exc:
+        out_file.close()
+        fail( "Invalid file format: %s" % str( exc ) )
+
+    out_file.close()
+
+    if g1.skipped > 0:
+        print skipped( g1, filedesc=" of 1st dataset" )
+    if g2.skipped > 0:
+        print skipped( g2, filedesc=" of 2nd dataset" )
+        
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/operation_filter.py	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,99 @@
+# runs after the job (and after the default post-filter)
+import os
+from galaxy import eggs
+from galaxy import jobs
+from galaxy.tools.parameters import DataToolParameter
+
+from galaxy.jobs.handler import JOB_ERROR
+
+# Older py compatibility
+try:
+    set()
+except:
+    from sets import Set as set
+
+#def exec_before_process(app, inp_data, out_data, param_dict, tool=None):
+#    """Sets the name of the data"""
+#    dbkeys = sets.Set( [data.dbkey for data in inp_data.values() ] ) 
+#    if len(dbkeys) != 1:
+#        raise Exception, '<p><font color="yellow">Both Queries must be from the same genome build</font></p>'
+
+def validate_input( trans, error_map, param_values, page_param_map ):
+    dbkeys = set()
+    data_param_names = set()
+    data_params = 0
+    for name, param in page_param_map.iteritems():
+        if isinstance( param, DataToolParameter ):
+            # for each dataset parameter
+            if param_values.get(name, None) != None:
+                dbkeys.add( param_values[name].dbkey )
+                data_params += 1
+                # check meta data
+                try:
+                    param = param_values[name]
+                    if isinstance( param.datatype, trans.app.datatypes_registry.get_datatype_by_extension( 'gff' ).__class__ ):
+                        # TODO: currently cannot validate GFF inputs b/c they are not derived from interval.
+                        pass
+                    else: # Validate interval datatype.
+                        startCol = int( param.metadata.startCol )
+                        endCol = int( param.metadata.endCol )
+                        chromCol = int( param.metadata.chromCol )
+                        if param.metadata.strandCol is not None:
+                            strandCol = int ( param.metadata.strandCol )
+                        else:
+                            strandCol = 0
+                except:
+                    error_msg = "The attributes of this dataset are not properly set. " + \
+                    "Click the pencil icon in the history item to set the chrom, start, end and strand columns."
+                    error_map[name] = error_msg
+            data_param_names.add( name )
+    if len( dbkeys ) > 1:
+        for name in data_param_names:
+            error_map[name] = "All datasets must belong to same genomic build, " \
+                "this dataset is linked to build '%s'" % param_values[name].dbkey
+    if data_params != len(data_param_names):
+        for name in data_param_names:
+            error_map[name] = "A dataset of the appropriate type is required"
+
+# Commented out by INS, 5/30/2007.  What is the PURPOSE of this?
+def exec_after_process(app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
+    """Verify the output data after each run"""
+    items = out_data.items()
+
+    for name, data in items:
+        try:
+            if stderr and len( stderr ) > 0:
+                raise Exception( stderr )
+
+        except Exception, exc:
+            data.blurb = JOB_ERROR
+            data.state = JOB_ERROR
+
+## def exec_after_process(app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
+##     pass
+
+
+def exec_after_merge(app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
+    exec_after_process(
+        app, inp_data, out_data, param_dict, tool=tool, stdout=stdout, stderr=stderr)
+
+    # strip strand column if clusters were merged
+    items = out_data.items()
+    for name, data in items:
+        if param_dict['returntype'] == True:
+            data.metadata.chromCol = 1
+            data.metadata.startCol = 2
+            data.metadata.endCol = 3
+        # merge always clobbers strand
+        data.metadata.strandCol = None
+            
+
+def exec_after_cluster(app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
+    exec_after_process(
+        app, inp_data, out_data, param_dict, tool=tool, stdout=stdout, stderr=stderr)
+
+    # strip strand column if clusters were merged
+    if param_dict["returntype"] == '1':
+        items = out_data.items()
+        for name, data in items:
+            data.metadata.strandCol = None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1.bed	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,65 @@
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1.interval	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,5 @@
+chr1	4348187	4348589	3.70	4.90	2.55	0.24	0.46
+chr1	4488177	4488442	4.03	5.77	1.92	-0.67	0.81
+chr1	4774091	4774440	8.07	8.33	7.82	0.85	-0.40
+chr1	4800122	4800409	6.40	7.35	5.44	1.19	-0.42
+chr1	4878925	4879277	2.18	0.28	4.93	-0.96	1.24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2.bed	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,68 @@
+chr1	147962192	147962580	NM_005997_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gops_concat_out1.bed	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,133 @@
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
+chr1	147962192	147962580	NM_005997_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gops_concat_out2.bed	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,70 @@
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
+chr1	4348187	4348589	.	.	+
+chr1	4488177	4488442	.	.	+
+chr1	4774091	4774440	.	.	+
+chr1	4800122	4800409	.	.	+
+chr1	4878925	4879277	.	.	+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Tue Apr 01 10:53:46 2014 -0400
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<tool_dependency>
+  <package name="bx-python" version="0.7.1">
+      <repository changeset_revision="41eb9d9f667d" name="package_bx_python_0_7" owner="devteam" prior_installation_required="False" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+    <package name="galaxy-ops" version="1.0.0">
+      <repository changeset_revision="4e39032e4ec6" name="package_galaxy_ops_1_0_0" owner="devteam" prior_installation_required="False" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+</tool_dependency>