# HG changeset patch
# User dave
# Date 1402583600 14400
# Node ID b95d7c323cc9b9b217b3b03af10beae173d1b62b
# Parent 46aee6903d8fda7267b13b0dc0dfd3b9d7c1e7fc
Uploaded
diff -r 46aee6903d8f -r b95d7c323cc9 join.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/join.py Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,1 @@
+#øæå♥
diff -r 46aee6903d8f -r b95d7c323cc9 joiner.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/joiner.xml Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,180 @@
+
+ side by side on a specified field
+ join.py $input1 $input2 $field1 $field2 $out_file1 $unmatched $partial --index_depth=3 --buffer=50000000 --fill_options_file=$fill_options_file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%
+import simplejson
+%>
+#set $__fill_options = {}
+#if $fill_empty_columns['fill_empty_columns_switch'] == 'fill_empty':
+ #set $__fill_options['fill_unjoined_only'] = $fill_empty_columns['fill_columns_by'].value == 'fill_unjoined_only'
+ #if $fill_empty_columns['do_fill_empty_columns']['column_fill_type'] == 'single_fill_value':
+ #set $__start_fill = $fill_empty_columns['do_fill_empty_columns']['fill_value'].value
+ #else:
+ #set $__start_fill = ""
+ #end if
+ #set $__fill_options['file1_columns'] = [ __start_fill for i in range( int( $input1.metadata.columns ) ) ]
+ #set $__fill_options['file2_columns'] = [ __start_fill for i in range( int( $input2.metadata.columns ) ) ]
+ #if $fill_empty_columns['do_fill_empty_columns']['column_fill_type'] == 'fill_value_by_column':
+ #for column_fill1 in $fill_empty_columns['do_fill_empty_columns']['column_fill1']:
+ #set $__fill_options['file1_columns'][ int( column_fill1['column_number1'].value ) - 1 ] = column_fill1['fill_value1'].value
+ #end for
+ #for column_fill2 in $fill_empty_columns['do_fill_empty_columns']['column_fill2']:
+ #set $__fill_options['file2_columns'][ int( column_fill2['column_number2'].value ) - 1 ] = column_fill2['fill_value2'].value
+ #end for
+ #end if
+#end if
+${simplejson.dumps( __fill_options )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. class:: warningmark
+
+**This tool will attempt to reuse the metadata from your first input.** To change metadata assignments click on the "edit attributes" link of the history item generated by this tool.
+
+.. class:: infomark
+
+**TIP:** If your data is not TAB delimited, use *Text Manipulation->Convert*
+
+-----
+
+**Syntax**
+
+This tool joins lines of two datasets on a common field. An empty string ("") is not a valid identifier.
+You may choose to include lines of your first input that do not join with your second input.
+
+- Columns are referenced with a **number**. For example, **3** refers to the 3rd column of a tab-delimited file.
+
+-----
+
+**Example**
+
+Dataset1::
+
+ chr1 10 20 geneA
+ chr1 50 80 geneB
+ chr5 10 40 geneL
+
+Dataset2::
+
+ geneA tumor-supressor
+ geneB Foxp2
+ geneC Gnas1
+ geneE INK4a
+
+Joining the 4th column of Dataset1 with the 1st column of Dataset2 will yield::
+
+ chr1 10 20 geneA geneA tumor-suppressor
+ chr1 50 80 geneB geneB Foxp2
+
+Joining the 4th column of Dataset1 with the 1st column of Dataset2, while keeping all lines from Dataset1, will yield::
+
+ chr1 10 20 geneA geneA tumor-suppressor
+ chr1 50 80 geneB geneB Foxp2
+ chr5 10 40 geneL
+
+
+
diff -r 46aee6903d8f -r b95d7c323cc9 jøin.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jøin.py Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,370 @@
+#!/usr/bin/env python
+#Dan Blankenberg
+"""
+Script to Join Two Files on specified columns.
+
+Takes two tab delimited files, two column numbers (base 1) and outputs a new tab delimited file with lines joined by tabs.
+User can also opt to have have non-joining rows of file1 echoed.
+
+"""
+
+import optparse, os, sys, tempfile, struct
+import psyco_full
+
+try:
+ simple_json_exception = None
+ from galaxy import eggs
+ from galaxy.util.bunch import Bunch
+ from galaxy.util import stringify_dictionary_keys
+ import pkg_resources
+ pkg_resources.require("simplejson")
+ import simplejson
+except Exception, e:
+ simplejson_exception = e
+ simplejson = None
+
+
+class OffsetList:
+ def __init__( self, filesize = 0, fmt = None ):
+ self.file = tempfile.NamedTemporaryFile( 'w+b' )
+ if fmt:
+ self.fmt = fmt
+ elif filesize and filesize <= sys.maxint * 2:
+ self.fmt = 'I'
+ else:
+ self.fmt = 'Q'
+ self.fmt_size = struct.calcsize( self.fmt )
+ @property
+ def size( self ):
+ self.file.flush()
+ return self.file_size / self.fmt_size
+ @property
+ def file_size( self ):
+ self.file.flush()
+ return os.stat( self.file.name ).st_size
+ def add_offset( self, offset ):
+ if not isinstance( offset, list ):
+ offset = [offset]
+ self.file.seek( self.file_size )
+ for off in offset:
+ self.file.write( struct.pack( self.fmt, off ) )
+ def get_offsets( self, start = 0 ):
+ self.file.seek( start * self.fmt_size )
+ while True:
+ packed = self.file.read( self.fmt_size )
+ if not packed: break
+ yield struct.unpack( self.fmt, packed )[0]
+ def get_offset_by_index( self, index ):
+ self.file.seek( index * self.fmt_size )
+ return struct.unpack( self.fmt, self.file.read( self.fmt_size ) )[0]
+ def set_offset_at_index( self, index, offset ):
+ if not isinstance( offset, list ):
+ offset = [offset]
+ if index >= self.size:
+ self.add_offset( offset )
+ else:
+ temp_file = tempfile.NamedTemporaryFile( 'w+b' )
+ self.file.seek( 0 )
+ temp_file.write( self.file.read( ( index ) * self.fmt_size ) )
+ for off in offset:
+ temp_file.write( struct.pack( self.fmt, off ) )
+ temp_file.write( self.file.read() )
+ self.file = temp_file
+
+class SortedOffsets( OffsetList ):
+ def __init__( self, indexed_filename, column, split = None ):
+ OffsetList.__init__( self, os.stat( indexed_filename ).st_size )
+ self.indexed_filename = indexed_filename
+ self.indexed_file = open( indexed_filename, 'rb' )
+ self.column = column
+ self.split = split
+ self.last_identifier = None
+ self.last_identifier_merged = None
+ self.last_offset_merged = 0
+ def merge_with_dict( self, new_offset_dict ):
+ if not new_offset_dict: return #no items to merge in
+ keys = new_offset_dict.keys()
+ keys.sort()
+ identifier2 = keys.pop( 0 )
+
+ result_offsets = OffsetList( fmt = self.fmt )
+ offsets1 = enumerate( self.get_offsets() )
+ try:
+ index1, offset1 = offsets1.next()
+ identifier1 = self.get_identifier_by_offset( offset1 )
+ except StopIteration:
+ offset1 = None
+ identifier1 = None
+ index1 = 0
+
+ while True:
+ if identifier1 is None and identifier2 is None:
+ self.file = result_offsets.file #self is now merged results
+ return
+ elif identifier1 is None or ( identifier2 and identifier2 < identifier1 ):
+ result_offsets.add_offset( new_offset_dict[identifier2] )
+ if keys:
+ identifier2 = keys.pop( 0 )
+ else:
+ identifier2 = None
+ elif identifier2 is None:
+ result_offsets.file.seek( result_offsets.file_size )
+ self.file.seek( index1 * self.fmt_size )
+ result_offsets.file.write( self.file.read() )
+ identifier1 = None
+ offset1 = None
+ else:
+ result_offsets.add_offset( offset1 )
+ try:
+ index1, offset1 = offsets1.next()
+ identifier1 = self.get_identifier_by_offset( offset1 )
+ except StopIteration:
+ offset1 = None
+ identifier1 = None
+ index1 += 1
+#methods to help link offsets to lines, ids, etc
+ def get_identifier_by_line( self, line ):
+ if isinstance( line, str ):
+ fields = line.rstrip( '\r\n' ).split( self.split )
+ if self.column < len( fields ):
+ return fields[self.column]
+ return None
+ def get_line_by_offset( self, offset ):
+ self.indexed_file.seek( offset )
+ return self.indexed_file.readline()
+ def get_identifier_by_offset( self, offset ):
+ return self.get_identifier_by_line( self.get_line_by_offset( offset ) )
+
+#indexed set of offsets, index is built on demand
+class OffsetIndex:
+ def __init__( self, filename, column, split = None, index_depth = 3 ):
+ self.filename = filename
+ self.file = open( filename, 'rb' )
+ self.column = column
+ self.split = split
+ self._offsets = {}
+ self._index = None
+ self.index_depth = index_depth
+ def _build_index( self ):
+ self._index = {}
+ for start_char, sorted_offsets in self._offsets.items():
+ self._index[start_char]={}
+ for i, offset in enumerate( sorted_offsets.get_offsets() ):
+ identifier = sorted_offsets.get_identifier_by_offset( offset )
+ if identifier[0:self.index_depth] not in self._index[start_char]:
+ self._index[start_char][identifier[0:self.index_depth]] = i
+ def get_lines_by_identifier( self, identifier ):
+ if not identifier: return
+ #if index doesn't exist, build it
+ if self._index is None: self._build_index()
+
+ #identifier cannot exist
+ if identifier[0] not in self._index or identifier[0:self.index_depth] not in self._index[identifier[0]]:
+ return
+ #identifier might exist, search for it
+ offset_index = self._index[identifier[0]][identifier[0:self.index_depth]]
+ while True:
+ if offset_index >= self._offsets[identifier[0]].size:
+ return
+ offset = self._offsets[identifier[0]].get_offset_by_index( offset_index )
+ identifier2 = self._offsets[identifier[0]].get_identifier_by_offset( offset )
+ if not identifier2 or identifier2 > identifier:
+ return
+ if identifier2 == identifier:
+ yield self._offsets[identifier[0]].get_line_by_offset( offset )
+ offset_index += 1
+ def get_offsets( self ):
+ keys = self._offsets.keys()
+ keys.sort()
+ for key in keys:
+ for offset in self._offsets[key].get_offsets():
+ yield offset
+ def get_line_by_offset( self, offset ):
+ self.file.seek( offset )
+ return self.file.readline()
+ def get_identifiers_offsets( self ):
+ keys = self._offsets.keys()
+ keys.sort()
+ for key in keys:
+ for offset in self._offsets[key].get_offsets():
+ yield self._offsets[key].get_identifier_by_offset( offset ), offset
+ def get_identifier_by_line( self, line ):
+ if isinstance( line, str ):
+ fields = line.rstrip( '\r\n' ).split( self.split )
+ if self.column < len( fields ):
+ return fields[self.column]
+ return None
+ def merge_with_dict( self, d ):
+ if not d: return #no data to merge
+ self._index = None
+ keys = d.keys()
+ keys.sort()
+ identifier = keys.pop( 0 )
+ first_char = identifier[0]
+ temp = { identifier: d[identifier] }
+ while True:
+ if not keys:
+ if first_char not in self._offsets:
+ self._offsets[first_char] = SortedOffsets( self.filename, self.column, self.split )
+ self._offsets[first_char].merge_with_dict( temp )
+ return
+ identifier = keys.pop( 0 )
+ if identifier[0] == first_char:
+ temp[identifier] = d[identifier]
+ else:
+ if first_char not in self._offsets:
+ self._offsets[first_char] = SortedOffsets( self.filename, self.column, self.split )
+ self._offsets[first_char].merge_with_dict( temp )
+ temp = { identifier: d[identifier] }
+ first_char = identifier[0]
+
+class BufferedIndex:
+ def __init__( self, filename, column, split = None, buffer = 1000000, index_depth = 3 ):
+ self.index = OffsetIndex( filename, column, split, index_depth )
+ self.buffered_offsets = {}
+ f = open( filename, 'rb' )
+ offset = f.tell()
+ identified_offset_count = 1
+ while True:
+ offset = f.tell()
+ line = f.readline()
+ if not line: break #EOF
+ identifier = self.index.get_identifier_by_line( line )
+ if identifier:
+ #flush buffered offsets, if buffer size reached
+ if buffer and identified_offset_count % buffer == 0:
+ self.index.merge_with_dict( self.buffered_offsets )
+ self.buffered_offsets = {}
+ if identifier not in self.buffered_offsets:
+ self.buffered_offsets[identifier] = []
+ self.buffered_offsets[identifier].append( offset )
+ identified_offset_count += 1
+ f.close()
+
+ def get_lines_by_identifier( self, identifier ):
+ for line in self.index.get_lines_by_identifier( identifier ):
+ yield line
+ if identifier in self.buffered_offsets:
+ for offset in self.buffered_offsets[identifier]:
+ yield self.index.get_line_by_offset( offset )
+
+
+def fill_empty_columns( line, split, fill_values ):
+ if not fill_values:
+ return line
+ filled_columns = []
+ for i, field in enumerate( line.split( split ) ):
+ if field or i >= len( fill_values ):
+ filled_columns.append( field )
+ else:
+ filled_columns.append( fill_values[i] )
+ if len( fill_values ) > len( filled_columns ):
+ filled_columns.extend( fill_values[ len( filled_columns ) : ] )
+ return split.join( filled_columns )
+
+
+def join_files( filename1, column1, filename2, column2, out_filename, split = None, buffer = 1000000, keep_unmatched = False, keep_partial = False, index_depth = 3, fill_options = None ):
+ #return identifier based upon line
+ def get_identifier_by_line( line, column, split = None ):
+ if isinstance( line, str ):
+ fields = line.rstrip( '\r\n' ).split( split )
+ if column < len( fields ):
+ return fields[column]
+ return None
+ if fill_options is None:
+ fill_options = Bunch( fill_unjoined_only = True, file1_columns = None, file2_columns = None )
+ out = open( out_filename, 'w+b' )
+ index = BufferedIndex( filename2, column2, split, buffer, index_depth )
+ for line1 in open( filename1, 'rb' ):
+ identifier = get_identifier_by_line( line1, column1, split )
+ if identifier:
+ written = False
+ for line2 in index.get_lines_by_identifier( identifier ):
+ if not fill_options.fill_unjoined_only:
+ out.write( "%s%s%s\n" % ( fill_empty_columns( line1.rstrip( '\r\n' ), split, fill_options.file1_columns ), split, fill_empty_columns( line2.rstrip( '\r\n' ), split, fill_options.file2_columns ) ) )
+ else:
+ out.write( "%s%s%s\n" % ( line1.rstrip( '\r\n' ), split, line2.rstrip( '\r\n' ) ) )
+ written = True
+ if not written and keep_unmatched:
+ out.write( fill_empty_columns( line1.rstrip( '\r\n' ), split, fill_options.file1_columns ) )
+ if fill_options:
+ if fill_options.file2_columns:
+ out.write( "%s%s" % ( split, fill_empty_columns( "", split, fill_options.file2_columns ) ) )
+ out.write( "\n" )
+ elif keep_partial:
+ out.write( fill_empty_columns( line1.rstrip( '\r\n' ), split, fill_options.file1_columns ) )
+ if fill_options:
+ if fill_options.file2_columns:
+ out.write( "%s%s" % ( split, fill_empty_columns( "", split, fill_options.file2_columns ) ) )
+ out.write( "\n" )
+ out.close()
+
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option(
+ '-b','--buffer',
+ dest='buffer',
+ type='int',default=1000000,
+ help='Number of lines to buffer at a time. Default: 1,000,000 lines. A buffer of 0 will attempt to use memory only.'
+ )
+ parser.add_option(
+ '-d','--index_depth',
+ dest='index_depth',
+ type='int',default=3,
+ help='Depth to use on filebased offset indexing. Default: 3.'
+ )
+ parser.add_option(
+ '-p','--keep_partial',
+ action='store_true',
+ dest='keep_partial',
+ default=False,
+ help='Keep rows in first input which are missing identifiers.')
+ parser.add_option(
+ '-u','--keep_unmatched',
+ action='store_true',
+ dest='keep_unmatched',
+ default=False,
+ help='Keep rows in first input which are not joined with the second input.')
+ parser.add_option(
+ '-f','--fill_options_file',
+ dest='fill_options_file',
+ type='str',default=None,
+ help='Fill empty columns with a values from a JSONified file.')
+
+
+ options, args = parser.parse_args()
+
+ fill_options = None
+ if options.fill_options_file is not None:
+ try:
+ if simplejson is None:
+ raise simplejson_exception
+ fill_options = Bunch( **stringify_dictionary_keys( simplejson.load( open( options.fill_options_file ) ) ) ) #simplejson.load( open( options.fill_options_file ) )
+ except Exception, e:
+ print "Warning: Ignoring fill options due to simplejson error (%s)." % e
+ if fill_options is None:
+ fill_options = Bunch()
+ if 'fill_unjoined_only' not in fill_options:
+ fill_options.fill_unjoined_only = True
+ if 'file1_columns' not in fill_options:
+ fill_options.file1_columns = None
+ if 'file2_columns' not in fill_options:
+ fill_options.file2_columns = None
+
+
+ try:
+ filename1 = args[0]
+ filename2 = args[1]
+ column1 = int( args[2] ) - 1
+ column2 = int( args[3] ) - 1
+ out_filename = args[4]
+ except:
+ print >> sys.stderr, "Error parsing command line."
+ sys.exit()
+
+ #Character for splitting fields and joining lines
+ split = "\t"
+
+ return join_files( filename1, column1, filename2, column2, out_filename, split, options.buffer, options.keep_unmatched, options.keep_partial, options.index_depth, fill_options = fill_options )
+
+if __name__ == "__main__": main()
diff -r 46aee6903d8f -r b95d7c323cc9 j♥in.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/j♥in.py Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,1 @@
+#øæå♥
diff -r 46aee6903d8f -r b95d7c323cc9 pho
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1.bed Thu Jun 12 10:33:20 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 -
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2.bed Thu Jun 12 10:33:20 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 -
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/joiner_out1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/joiner_out1.bed Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,49 @@
+chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - chr1 147962192 147962580 NM_005997_cds_0_0_chr1_147962193_r 0 -
+chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + chr1 147984545 147984630 BC007833_cds_0_0_chr1_147984546_f 0 +
+chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - chr1 148078400 148078582 AJ011123_cds_0_0_chr1_148078401_r 0 -
+chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + chr1 148185136 148185276 NM_002796_cds_0_0_chr1_148185137_f 0 +
+chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - chr10 55251623 55253124 AY029205_cds_0_0_chr10_55251624_r 0 -
+chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - chr11 116124407 116124501 AK057832_cds_0_0_chr11_116124408_r 0 -
+chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + chr11 116206508 116206563 NM_000040_cds_1_0_chr11_116206509_f 0 +
+chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - chr11 116211733 116212337 BC005380_cds_0_0_chr11_116211734_r 0 -
+chr12 38440094 38440321 CCDS8736.1_cds_0_0_chr12_38440095_r 0 - chr12 38440094 38440321 NM_052885_cds_0_0_chr12_38440095_r 0 -
+chr13 112381694 112381953 CCDS9526.1_cds_0_0_chr13_112381695_f 0 + chr13 112381694 112381953 NM_207440_cds_1_0_chr13_112381695_f 0 +
+chr14 98710240 98712285 CCDS9949.1_cds_0_0_chr14_98710241_r 0 - chr14 98710240 98712285 NM_022898_cds_0_0_chr14_98710241_r 0 -
+chr15 41486872 41487060 CCDS10096.1_cds_0_0_chr15_41486873_r 0 - chr15 41486872 41487060 BX537418_cds_0_0_chr15_41486873_r 0 -
+chr15 41673708 41673857 CCDS10097.1_cds_0_0_chr15_41673709_f 0 + chr15 41673708 41673857 AK223365_cds_0_0_chr15_41673709_f 0 +
+chr15 41679161 41679250 CCDS10098.1_cds_0_0_chr15_41679162_r 0 - chr15 41679161 41679250 NM_153700_cds_0_0_chr15_41679162_r 0 -
+chr16 142908 143003 CCDS10397.1_cds_0_0_chr16_142909_f 0 + chr16 142908 143003 NM_005332_cds_0_0_chr16_142909_f 0 +
+chr16 244413 244681 CCDS10402.1_cds_0_0_chr16_244414_f 0 + chr16 244413 244681 AK057165_cds_2_0_chr16_244414_f 0 +
+chr16 259268 259383 CCDS10403.1_cds_0_0_chr16_259269_r 0 - chr16 259268 259383 AB016929_cds_0_0_chr16_259269_r 0 -
+chr18 23786114 23786321 CCDS11891.1_cds_0_0_chr18_23786115_r 0 - chr18 23786114 23786321 NM_001792_cds_0_0_chr18_23786115_r 0 -
+chr18 59406881 59407046 CCDS11985.1_cds_0_0_chr18_59406882_f 0 + chr18 59406881 59407046 NM_012397_cds_1_0_chr18_59406882_f 0 +
+chr18 59455932 59456337 CCDS11986.1_cds_0_0_chr18_59455933_r 0 - chr18 59455932 59456337 AB046400_cds_0_0_chr18_59455933_r 0 -
+chr19 59068595 59069564 CCDS12866.1_cds_0_0_chr19_59068596_f 0 + chr19 59068595 59069564 BC013995_cds_1_0_chr19_59068596_f 0 +
+chr19 59236026 59236146 CCDS12872.1_cds_0_0_chr19_59236027_r 0 - chr19 59236026 59236146 NM_198481_cds_0_0_chr19_59236027_r 0 -
+chr19 59297998 59298008 CCDS12877.1_cds_0_0_chr19_59297999_f 0 + chr19 59297998 59298008 NM_004542_cds_0_0_chr19_59297999_f 0 +
+chr2 118288583 118288668 CCDS2120.1_cds_0_0_chr2_118288584_f 0 + chr2 118288583 118288668 NM_006773_cds_0_0_chr2_118288584_f 0 +
+chr2 220229609 220230869 CCDS2443.1_cds_0_0_chr2_220229610_r 0 - chr2 220229609 220230869 NM_024536_cds_0_0_chr2_220229610_r 0 -
+chr20 33330413 33330423 CCDS13249.1_cds_0_0_chr20_33330414_r 0 - chr20 33330413 33330423 NM_181466_cds_0_0_chr20_33330414_r 0 -
+chr20 33513606 33513792 CCDS13255.1_cds_0_0_chr20_33513607_f 0 + chr20 33513606 33513792 AF022655_cds_1_0_chr20_33513607_f 0 +
+chr21 32869641 32870022 CCDS13615.1_cds_0_0_chr21_32869642_r 0 - chr21 32869641 32870022 NM_018277_cds_3_0_chr21_32869642_r 0 -
+chr21 33321040 33322012 CCDS13620.1_cds_0_0_chr21_33321041_f 0 + chr21 33321040 33322012 NM_005806_cds_1_0_chr21_33321041_f 0 +
+chr22 30120223 30120265 CCDS13897.1_cds_0_0_chr22_30120224_f 0 + chr22 30120223 30120265 NM_004147_cds_0_0_chr22_30120224_f 0 +
+chr22 30160419 30160661 CCDS13898.1_cds_0_0_chr22_30160420_r 0 - chr22 30160419 30160661 BC032941_cds_0_0_chr22_30160420_r 0 -
+chr5 131424298 131424460 CCDS4149.1_cds_0_0_chr5_131424299_f 0 + chr5 131424298 131424460 NM_000588_cds_0_0_chr5_131424299_f 0 +
+chr5 131556601 131556672 CCDS4151.1_cds_0_0_chr5_131556602_r 0 - chr5 131556601 131556672 BC035813_cds_0_0_chr5_131556602_r 0 -
+chr5 131621326 131621419 CCDS4152.1_cds_0_0_chr5_131621327_f 0 + chr5 131621326 131621419 BC003096_cds_0_0_chr5_131621327_f 0 +
+chr6 108299600 108299744 CCDS5061.1_cds_0_0_chr6_108299601_r 0 - chr6 108299600 108299744 NM_007214_cds_0_0_chr6_108299601_r 0 -
+chr6 108594662 108594687 CCDS5063.1_cds_0_0_chr6_108594663_f 0 + chr6 108594662 108594687 NM_003269_cds_0_0_chr6_108594663_f 0 +
+chr6 108640045 108640151 CCDS5064.1_cds_0_0_chr6_108640046_r 0 - chr6 108640045 108640151 NM_003795_cds_0_0_chr6_108640046_r 0 -
+chr6 108722976 108723115 CCDS5067.1_cds_0_0_chr6_108722977_f 0 + chr6 108722976 108723115 NM_145315_cds_0_0_chr6_108722977_f 0 +
+chr7 113660517 113660685 CCDS5760.1_cds_0_0_chr7_113660518_f 0 + chr7 113660517 113660685 AF467257_cds_1_0_chr7_113660518_f 0 +
+chr7 116512159 116512389 CCDS5771.1_cds_0_0_chr7_116512160_r 0 - chr7 116512159 116512389 NM_003391_cds_0_0_chr7_116512160_r 0 -
+chr7 116714099 116714152 CCDS5773.1_cds_0_0_chr7_116714100_f 0 + chr7 116714099 116714152 NM_000492_cds_0_0_chr7_116714100_f 0 +
+chr7 116945541 116945787 CCDS5774.1_cds_0_0_chr7_116945542_r 0 - chr7 116945541 116945787 AF377960_cds_0_0_chr7_116945542_r 0 -
+chr8 118881131 118881317 CCDS6324.1_cds_0_0_chr8_118881132_r 0 - chr8 118881131 118881317 NM_000127_cds_0_0_chr8_118881132_r 0 -
+chr9 128764156 128764189 CCDS6914.1_cds_0_0_chr9_128764157_f 0 + chr9 128764156 128764189 BC051300_cds_0_0_chr9_128764157_f 0 +
+chr9 128787519 128789136 CCDS6915.1_cds_0_0_chr9_128787520_r 0 - chr9 128787519 128789136 NM_014908_cds_0_0_chr9_128787520_r 0 -
+chrX 122745047 122745924 CCDS14606.1_cds_0_0_chrX_122745048_f 0 + chrX 122745047 122745924 NM_001167_cds_1_0_chrX_122745048_f 0 +
+chrX 152648964 152649196 CCDS14733.1_cds_0_0_chrX_152648965_r 0 - chrX 152648964 152649196 NM_000425_cds_0_0_chrX_152648965_r 0 -
+chrX 152691446 152691471 CCDS14735.1_cds_0_0_chrX_152691447_f 0 + chrX 152691446 152691471 AF101728_cds_0_0_chrX_152691447_f 0 +
+chrX 152694029 152694263 CCDS14736.1_cds_0_0_chrX_152694030_r 0 - chrX 152694029 152694263 BC052303_cds_0_0_chrX_152694030_r 0 -
\ No newline at end of file
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/joiner_out2.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/joiner_out2.bed Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,65 @@
+chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - chr1 147962192 147962580 NM_005997_cds_0_0_chr1_147962193_r 0 -
+chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + chr1 147984545 147984630 BC007833_cds_0_0_chr1_147984546_f 0 +
+chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - chr1 148078400 148078582 AJ011123_cds_0_0_chr1_148078401_r 0 -
+chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + chr1 148185136 148185276 NM_002796_cds_0_0_chr1_148185137_f 0 +
+chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - chr10 55251623 55253124 AY029205_cds_0_0_chr10_55251624_r 0 -
+chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - chr11 116124407 116124501 AK057832_cds_0_0_chr11_116124408_r 0 -
+chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + chr11 116206508 116206563 NM_000040_cds_1_0_chr11_116206509_f 0 +
+chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - chr11 116211733 116212337 BC005380_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 - chr12 38440094 38440321 NM_052885_cds_0_0_chr12_38440095_r 0 -
+chr13 112381694 112381953 CCDS9526.1_cds_0_0_chr13_112381695_f 0 + chr13 112381694 112381953 NM_207440_cds_1_0_chr13_112381695_f 0 +
+chr14 98710240 98712285 CCDS9949.1_cds_0_0_chr14_98710241_r 0 - chr14 98710240 98712285 NM_022898_cds_0_0_chr14_98710241_r 0 -
+chr15 41486872 41487060 CCDS10096.1_cds_0_0_chr15_41486873_r 0 - chr15 41486872 41487060 BX537418_cds_0_0_chr15_41486873_r 0 -
+chr15 41673708 41673857 CCDS10097.1_cds_0_0_chr15_41673709_f 0 + chr15 41673708 41673857 AK223365_cds_0_0_chr15_41673709_f 0 +
+chr15 41679161 41679250 CCDS10098.1_cds_0_0_chr15_41679162_r 0 - chr15 41679161 41679250 NM_153700_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 142908 143003 NM_005332_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 244413 244681 AK057165_cds_2_0_chr16_244414_f 0 +
+chr16 259268 259383 CCDS10403.1_cds_0_0_chr16_259269_r 0 - chr16 259268 259383 AB016929_cds_0_0_chr16_259269_r 0 -
+chr18 23786114 23786321 CCDS11891.1_cds_0_0_chr18_23786115_r 0 - chr18 23786114 23786321 NM_001792_cds_0_0_chr18_23786115_r 0 -
+chr18 59406881 59407046 CCDS11985.1_cds_0_0_chr18_59406882_f 0 + chr18 59406881 59407046 NM_012397_cds_1_0_chr18_59406882_f 0 +
+chr18 59455932 59456337 CCDS11986.1_cds_0_0_chr18_59455933_r 0 - chr18 59455932 59456337 AB046400_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 59068595 59069564 BC013995_cds_1_0_chr19_59068596_f 0 +
+chr19 59236026 59236146 CCDS12872.1_cds_0_0_chr19_59236027_r 0 - chr19 59236026 59236146 NM_198481_cds_0_0_chr19_59236027_r 0 -
+chr19 59297998 59298008 CCDS12877.1_cds_0_0_chr19_59297999_f 0 + chr19 59297998 59298008 NM_004542_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 118288583 118288668 NM_006773_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 - chr2 220229609 220230869 NM_024536_cds_0_0_chr2_220229610_r 0 -
+chr20 33330413 33330423 CCDS13249.1_cds_0_0_chr20_33330414_r 0 - chr20 33330413 33330423 NM_181466_cds_0_0_chr20_33330414_r 0 -
+chr20 33513606 33513792 CCDS13255.1_cds_0_0_chr20_33513607_f 0 + chr20 33513606 33513792 AF022655_cds_1_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 32869641 32870022 NM_018277_cds_3_0_chr21_32869642_r 0 -
+chr21 33321040 33322012 CCDS13620.1_cds_0_0_chr21_33321041_f 0 + chr21 33321040 33322012 NM_005806_cds_1_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 30120223 30120265 NM_004147_cds_0_0_chr22_30120224_f 0 +
+chr22 30160419 30160661 CCDS13898.1_cds_0_0_chr22_30160420_r 0 - chr22 30160419 30160661 BC032941_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 131424298 131424460 NM_000588_cds_0_0_chr5_131424299_f 0 +
+chr5 131556601 131556672 CCDS4151.1_cds_0_0_chr5_131556602_r 0 - chr5 131556601 131556672 BC035813_cds_0_0_chr5_131556602_r 0 -
+chr5 131621326 131621419 CCDS4152.1_cds_0_0_chr5_131621327_f 0 + chr5 131621326 131621419 BC003096_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 108299600 108299744 NM_007214_cds_0_0_chr6_108299601_r 0 -
+chr6 108594662 108594687 CCDS5063.1_cds_0_0_chr6_108594663_f 0 + chr6 108594662 108594687 NM_003269_cds_0_0_chr6_108594663_f 0 +
+chr6 108640045 108640151 CCDS5064.1_cds_0_0_chr6_108640046_r 0 - chr6 108640045 108640151 NM_003795_cds_0_0_chr6_108640046_r 0 -
+chr6 108722976 108723115 CCDS5067.1_cds_0_0_chr6_108722977_f 0 + chr6 108722976 108723115 NM_145315_cds_0_0_chr6_108722977_f 0 +
+chr7 113660517 113660685 CCDS5760.1_cds_0_0_chr7_113660518_f 0 + chr7 113660517 113660685 AF467257_cds_1_0_chr7_113660518_f 0 +
+chr7 116512159 116512389 CCDS5771.1_cds_0_0_chr7_116512160_r 0 - chr7 116512159 116512389 NM_003391_cds_0_0_chr7_116512160_r 0 -
+chr7 116714099 116714152 CCDS5773.1_cds_0_0_chr7_116714100_f 0 + chr7 116714099 116714152 NM_000492_cds_0_0_chr7_116714100_f 0 +
+chr7 116945541 116945787 CCDS5774.1_cds_0_0_chr7_116945542_r 0 - chr7 116945541 116945787 AF377960_cds_0_0_chr7_116945542_r 0 -
+chr8 118881131 118881317 CCDS6324.1_cds_0_0_chr8_118881132_r 0 - chr8 118881131 118881317 NM_000127_cds_0_0_chr8_118881132_r 0 -
+chr9 128764156 128764189 CCDS6914.1_cds_0_0_chr9_128764157_f 0 + chr9 128764156 128764189 BC051300_cds_0_0_chr9_128764157_f 0 +
+chr9 128787519 128789136 CCDS6915.1_cds_0_0_chr9_128787520_r 0 - chr9 128787519 128789136 NM_014908_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 122745047 122745924 NM_001167_cds_1_0_chrX_122745048_f 0 +
+chrX 152648964 152649196 CCDS14733.1_cds_0_0_chrX_152648965_r 0 - chrX 152648964 152649196 NM_000425_cds_0_0_chrX_152648965_r 0 -
+chrX 152691446 152691471 CCDS14735.1_cds_0_0_chrX_152691447_f 0 + chrX 152691446 152691471 AF101728_cds_0_0_chrX_152691447_f 0 +
+chrX 152694029 152694263 CCDS14736.1_cds_0_0_chrX_152694030_r 0 - chrX 152694029 152694263 BC052303_cds_0_0_chrX_152694030_r 0 -
\ No newline at end of file
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/joiner_out3.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/joiner_out3.bed Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,65 @@
+chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - chr1 147962192 147962580 NM_005997_cds_0_0_chr1_147962193_r 0 -
+chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + chr1 147984545 147984630 BC007833_cds_0_0_chr1_147984546_f 0 +
+chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - chr1 148078400 148078582 AJ011123_cds_0_0_chr1_148078401_r 0 -
+chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + chr1 148185136 148185276 NM_002796_cds_0_0_chr1_148185137_f 0 +
+chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - chr10 55251623 55253124 AY029205_cds_0_0_chr10_55251624_r 0 -
+chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - chr11 116124407 116124501 AK057832_cds_0_0_chr11_116124408_r 0 -
+chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + chr11 116206508 116206563 NM_000040_cds_1_0_chr11_116206509_f 0 +
+chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - chr11 116211733 116212337 BC005380_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 - chr12 38440094 38440321 NM_052885_cds_0_0_chr12_38440095_r 0 -
+chr13 112381694 112381953 CCDS9526.1_cds_0_0_chr13_112381695_f 0 + chr13 112381694 112381953 NM_207440_cds_1_0_chr13_112381695_f 0 +
+chr14 98710240 98712285 CCDS9949.1_cds_0_0_chr14_98710241_r 0 - chr14 98710240 98712285 NM_022898_cds_0_0_chr14_98710241_r 0 -
+chr15 41486872 41487060 CCDS10096.1_cds_0_0_chr15_41486873_r 0 - chr15 41486872 41487060 BX537418_cds_0_0_chr15_41486873_r 0 -
+chr15 41673708 41673857 CCDS10097.1_cds_0_0_chr15_41673709_f 0 + chr15 41673708 41673857 AK223365_cds_0_0_chr15_41673709_f 0 +
+chr15 41679161 41679250 CCDS10098.1_cds_0_0_chr15_41679162_r 0 - chr15 41679161 41679250 NM_153700_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 142908 143003 NM_005332_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 244413 244681 AK057165_cds_2_0_chr16_244414_f 0 +
+chr16 259268 259383 CCDS10403.1_cds_0_0_chr16_259269_r 0 - chr16 259268 259383 AB016929_cds_0_0_chr16_259269_r 0 -
+chr18 23786114 23786321 CCDS11891.1_cds_0_0_chr18_23786115_r 0 - chr18 23786114 23786321 NM_001792_cds_0_0_chr18_23786115_r 0 -
+chr18 59406881 59407046 CCDS11985.1_cds_0_0_chr18_59406882_f 0 + chr18 59406881 59407046 NM_012397_cds_1_0_chr18_59406882_f 0 +
+chr18 59455932 59456337 CCDS11986.1_cds_0_0_chr18_59455933_r 0 - chr18 59455932 59456337 AB046400_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 59068595 59069564 BC013995_cds_1_0_chr19_59068596_f 0 +
+chr19 59236026 59236146 CCDS12872.1_cds_0_0_chr19_59236027_r 0 - chr19 59236026 59236146 NM_198481_cds_0_0_chr19_59236027_r 0 -
+chr19 59297998 59298008 CCDS12877.1_cds_0_0_chr19_59297999_f 0 + chr19 59297998 59298008 NM_004542_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 118288583 118288668 NM_006773_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 - chr2 220229609 220230869 NM_024536_cds_0_0_chr2_220229610_r 0 -
+chr20 33330413 33330423 CCDS13249.1_cds_0_0_chr20_33330414_r 0 - chr20 33330413 33330423 NM_181466_cds_0_0_chr20_33330414_r 0 -
+chr20 33513606 33513792 CCDS13255.1_cds_0_0_chr20_33513607_f 0 + chr20 33513606 33513792 AF022655_cds_1_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 32869641 32870022 NM_018277_cds_3_0_chr21_32869642_r 0 -
+chr21 33321040 33322012 CCDS13620.1_cds_0_0_chr21_33321041_f 0 + chr21 33321040 33322012 NM_005806_cds_1_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 30120223 30120265 NM_004147_cds_0_0_chr22_30120224_f 0 +
+chr22 30160419 30160661 CCDS13898.1_cds_0_0_chr22_30160420_r 0 - chr22 30160419 30160661 BC032941_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 131424298 131424460 NM_000588_cds_0_0_chr5_131424299_f 0 +
+chr5 131556601 131556672 CCDS4151.1_cds_0_0_chr5_131556602_r 0 - chr5 131556601 131556672 BC035813_cds_0_0_chr5_131556602_r 0 -
+chr5 131621326 131621419 CCDS4152.1_cds_0_0_chr5_131621327_f 0 + chr5 131621326 131621419 BC003096_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 108299600 108299744 NM_007214_cds_0_0_chr6_108299601_r 0 -
+chr6 108594662 108594687 CCDS5063.1_cds_0_0_chr6_108594663_f 0 + chr6 108594662 108594687 NM_003269_cds_0_0_chr6_108594663_f 0 +
+chr6 108640045 108640151 CCDS5064.1_cds_0_0_chr6_108640046_r 0 - chr6 108640045 108640151 NM_003795_cds_0_0_chr6_108640046_r 0 -
+chr6 108722976 108723115 CCDS5067.1_cds_0_0_chr6_108722977_f 0 + chr6 108722976 108723115 NM_145315_cds_0_0_chr6_108722977_f 0 +
+chr7 113660517 113660685 CCDS5760.1_cds_0_0_chr7_113660518_f 0 + chr7 113660517 113660685 AF467257_cds_1_0_chr7_113660518_f 0 +
+chr7 116512159 116512389 CCDS5771.1_cds_0_0_chr7_116512160_r 0 - chr7 116512159 116512389 NM_003391_cds_0_0_chr7_116512160_r 0 -
+chr7 116714099 116714152 CCDS5773.1_cds_0_0_chr7_116714100_f 0 + chr7 116714099 116714152 NM_000492_cds_0_0_chr7_116714100_f 0 +
+chr7 116945541 116945787 CCDS5774.1_cds_0_0_chr7_116945542_r 0 - chr7 116945541 116945787 AF377960_cds_0_0_chr7_116945542_r 0 -
+chr8 118881131 118881317 CCDS6324.1_cds_0_0_chr8_118881132_r 0 - chr8 118881131 118881317 NM_000127_cds_0_0_chr8_118881132_r 0 -
+chr9 128764156 128764189 CCDS6914.1_cds_0_0_chr9_128764157_f 0 + chr9 128764156 128764189 BC051300_cds_0_0_chr9_128764157_f 0 +
+chr9 128787519 128789136 CCDS6915.1_cds_0_0_chr9_128787520_r 0 - chr9 128787519 128789136 NM_014908_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 122745047 122745924 NM_001167_cds_1_0_chrX_122745048_f 0 +
+chrX 152648964 152649196 CCDS14733.1_cds_0_0_chrX_152648965_r 0 - chrX 152648964 152649196 NM_000425_cds_0_0_chrX_152648965_r 0 -
+chrX 152691446 152691471 CCDS14735.1_cds_0_0_chrX_152691447_f 0 + chrX 152691446 152691471 AF101728_cds_0_0_chrX_152691447_f 0 +
+chrX 152694029 152694263 CCDS14736.1_cds_0_0_chrX_152694030_r 0 - chrX 152694029 152694263 BC052303_cds_0_0_chrX_152694030_r 0 -
diff -r 46aee6903d8f -r b95d7c323cc9 test-data/joiner_out4.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/joiner_out4.bed Thu Jun 12 10:33:20 2014 -0400
@@ -0,0 +1,65 @@
+chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - chr1 147962192 147962580 NM_005997_cds_0_0_chr1_147962193_r 0 -
+chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + chr1 147984545 147984630 BC007833_cds_0_0_chr1_147984546_f 0 +
+chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - chr1 148078400 148078582 AJ011123_cds_0_0_chr1_148078401_r 0 -
+chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + chr1 148185136 148185276 NM_002796_cds_0_0_chr1_148185137_f 0 +
+chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - chr10 55251623 55253124 AY029205_cds_0_0_chr10_55251624_r 0 -
+chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - chr11 116124407 116124501 AK057832_cds_0_0_chr11_116124408_r 0 -
+chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + chr11 116206508 116206563 NM_000040_cds_1_0_chr11_116206509_f 0 +
+chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - chr11 116211733 116212337 BC005380_cds_0_0_chr11_116211734_r 0 -
+chr11 1812377 1812407 CCDS7726.1_cds_0_0_chr11_1812378_f 0 + NoChrom
+chr12 38440094 38440321 CCDS8736.1_cds_0_0_chr12_38440095_r 0 - chr12 38440094 38440321 NM_052885_cds_0_0_chr12_38440095_r 0 -
+chr13 112381694 112381953 CCDS9526.1_cds_0_0_chr13_112381695_f 0 + chr13 112381694 112381953 NM_207440_cds_1_0_chr13_112381695_f 0 +
+chr14 98710240 98712285 CCDS9949.1_cds_0_0_chr14_98710241_r 0 - chr14 98710240 98712285 NM_022898_cds_0_0_chr14_98710241_r 0 -
+chr15 41486872 41487060 CCDS10096.1_cds_0_0_chr15_41486873_r 0 - chr15 41486872 41487060 BX537418_cds_0_0_chr15_41486873_r 0 -
+chr15 41673708 41673857 CCDS10097.1_cds_0_0_chr15_41673709_f 0 + chr15 41673708 41673857 AK223365_cds_0_0_chr15_41673709_f 0 +
+chr15 41679161 41679250 CCDS10098.1_cds_0_0_chr15_41679162_r 0 - chr15 41679161 41679250 NM_153700_cds_0_0_chr15_41679162_r 0 -
+chr15 41826029 41826196 CCDS10101.1_cds_0_0_chr15_41826030_f 0 + NoChrom
+chr16 142908 143003 CCDS10397.1_cds_0_0_chr16_142909_f 0 + chr16 142908 143003 NM_005332_cds_0_0_chr16_142909_f 0 +
+chr16 179963 180135 CCDS10401.1_cds_0_0_chr16_179964_r 0 - NoChrom
+chr16 244413 244681 CCDS10402.1_cds_0_0_chr16_244414_f 0 + chr16 244413 244681 AK057165_cds_2_0_chr16_244414_f 0 +
+chr16 259268 259383 CCDS10403.1_cds_0_0_chr16_259269_r 0 - chr16 259268 259383 AB016929_cds_0_0_chr16_259269_r 0 -
+chr18 23786114 23786321 CCDS11891.1_cds_0_0_chr18_23786115_r 0 - chr18 23786114 23786321 NM_001792_cds_0_0_chr18_23786115_r 0 -
+chr18 59406881 59407046 CCDS11985.1_cds_0_0_chr18_59406882_f 0 + chr18 59406881 59407046 NM_012397_cds_1_0_chr18_59406882_f 0 +
+chr18 59455932 59456337 CCDS11986.1_cds_0_0_chr18_59455933_r 0 - chr18 59455932 59456337 AB046400_cds_0_0_chr18_59455933_r 0 -
+chr18 59600586 59600754 CCDS11988.1_cds_0_0_chr18_59600587_f 0 + NoChrom
+chr19 59068595 59069564 CCDS12866.1_cds_0_0_chr19_59068596_f 0 + chr19 59068595 59069564 BC013995_cds_1_0_chr19_59068596_f 0 +
+chr19 59236026 59236146 CCDS12872.1_cds_0_0_chr19_59236027_r 0 - chr19 59236026 59236146 NM_198481_cds_0_0_chr19_59236027_r 0 -
+chr19 59297998 59298008 CCDS12877.1_cds_0_0_chr19_59297999_f 0 + chr19 59297998 59298008 NM_004542_cds_0_0_chr19_59297999_f 0 +
+chr19 59302168 59302288 CCDS12878.1_cds_0_0_chr19_59302169_r 0 - NoChrom
+chr2 118288583 118288668 CCDS2120.1_cds_0_0_chr2_118288584_f 0 + chr2 118288583 118288668 NM_006773_cds_0_0_chr2_118288584_f 0 +
+chr2 118394148 118394202 CCDS2121.1_cds_0_0_chr2_118394149_r 0 - NoChrom
+chr2 220190202 220190242 CCDS2441.1_cds_0_0_chr2_220190203_f 0 + NoChrom
+chr2 220229609 220230869 CCDS2443.1_cds_0_0_chr2_220229610_r 0 - chr2 220229609 220230869 NM_024536_cds_0_0_chr2_220229610_r 0 -
+chr20 33330413 33330423 CCDS13249.1_cds_0_0_chr20_33330414_r 0 - chr20 33330413 33330423 NM_181466_cds_0_0_chr20_33330414_r 0 -
+chr20 33513606 33513792 CCDS13255.1_cds_0_0_chr20_33513607_f 0 + chr20 33513606 33513792 AF022655_cds_1_0_chr20_33513607_f 0 +
+chr20 33579500 33579527 CCDS13256.1_cds_0_0_chr20_33579501_r 0 - NoChrom
+chr20 33593260 33593348 CCDS13257.1_cds_0_0_chr20_33593261_f 0 + NoChrom
+chr21 32707032 32707192 CCDS13614.1_cds_0_0_chr21_32707033_f 0 + NoChrom
+chr21 32869641 32870022 CCDS13615.1_cds_0_0_chr21_32869642_r 0 - chr21 32869641 32870022 NM_018277_cds_3_0_chr21_32869642_r 0 -
+chr21 33321040 33322012 CCDS13620.1_cds_0_0_chr21_33321041_f 0 + chr21 33321040 33322012 NM_005806_cds_1_0_chr21_33321041_f 0 +
+chr21 33744994 33745040 CCDS13625.1_cds_0_0_chr21_33744995_r 0 - NoChrom
+chr22 30120223 30120265 CCDS13897.1_cds_0_0_chr22_30120224_f 0 + chr22 30120223 30120265 NM_004147_cds_0_0_chr22_30120224_f 0 +
+chr22 30160419 30160661 CCDS13898.1_cds_0_0_chr22_30160420_r 0 - chr22 30160419 30160661 BC032941_cds_0_0_chr22_30160420_r 0 -
+chr22 30665273 30665360 CCDS13901.1_cds_0_0_chr22_30665274_f 0 + NoChrom
+chr22 30939054 30939266 CCDS13903.1_cds_0_0_chr22_30939055_r 0 - NoChrom
+chr5 131424298 131424460 CCDS4149.1_cds_0_0_chr5_131424299_f 0 + chr5 131424298 131424460 NM_000588_cds_0_0_chr5_131424299_f 0 +
+chr5 131556601 131556672 CCDS4151.1_cds_0_0_chr5_131556602_r 0 - chr5 131556601 131556672 BC035813_cds_0_0_chr5_131556602_r 0 -
+chr5 131621326 131621419 CCDS4152.1_cds_0_0_chr5_131621327_f 0 + chr5 131621326 131621419 BC003096_cds_0_0_chr5_131621327_f 0 +
+chr5 131847541 131847666 CCDS4155.1_cds_0_0_chr5_131847542_r 0 - NoChrom
+chr6 108299600 108299744 CCDS5061.1_cds_0_0_chr6_108299601_r 0 - chr6 108299600 108299744 NM_007214_cds_0_0_chr6_108299601_r 0 -
+chr6 108594662 108594687 CCDS5063.1_cds_0_0_chr6_108594663_f 0 + chr6 108594662 108594687 NM_003269_cds_0_0_chr6_108594663_f 0 +
+chr6 108640045 108640151 CCDS5064.1_cds_0_0_chr6_108640046_r 0 - chr6 108640045 108640151 NM_003795_cds_0_0_chr6_108640046_r 0 -
+chr6 108722976 108723115 CCDS5067.1_cds_0_0_chr6_108722977_f 0 + chr6 108722976 108723115 NM_145315_cds_0_0_chr6_108722977_f 0 +
+chr7 113660517 113660685 CCDS5760.1_cds_0_0_chr7_113660518_f 0 + chr7 113660517 113660685 AF467257_cds_1_0_chr7_113660518_f 0 +
+chr7 116512159 116512389 CCDS5771.1_cds_0_0_chr7_116512160_r 0 - chr7 116512159 116512389 NM_003391_cds_0_0_chr7_116512160_r 0 -
+chr7 116714099 116714152 CCDS5773.1_cds_0_0_chr7_116714100_f 0 + chr7 116714099 116714152 NM_000492_cds_0_0_chr7_116714100_f 0 +
+chr7 116945541 116945787 CCDS5774.1_cds_0_0_chr7_116945542_r 0 - chr7 116945541 116945787 AF377960_cds_0_0_chr7_116945542_r 0 -
+chr8 118881131 118881317 CCDS6324.1_cds_0_0_chr8_118881132_r 0 - chr8 118881131 118881317 NM_000127_cds_0_0_chr8_118881132_r 0 -
+chr9 128764156 128764189 CCDS6914.1_cds_0_0_chr9_128764157_f 0 + chr9 128764156 128764189 BC051300_cds_0_0_chr9_128764157_f 0 +
+chr9 128787519 128789136 CCDS6915.1_cds_0_0_chr9_128787520_r 0 - chr9 128787519 128789136 NM_014908_cds_0_0_chr9_128787520_r 0 -
+chr9 128882427 128882523 CCDS6917.1_cds_0_0_chr9_128882428_f 0 + NoChrom
+chr9 128937229 128937445 CCDS6919.1_cds_0_0_chr9_128937230_r 0 - NoChrom
+chrX 122745047 122745924 CCDS14606.1_cds_0_0_chrX_122745048_f 0 + chrX 122745047 122745924 NM_001167_cds_1_0_chrX_122745048_f 0 +
+chrX 152648964 152649196 CCDS14733.1_cds_0_0_chrX_152648965_r 0 - chrX 152648964 152649196 NM_000425_cds_0_0_chrX_152648965_r 0 -
+chrX 152691446 152691471 CCDS14735.1_cds_0_0_chrX_152691447_f 0 + chrX 152691446 152691471 AF101728_cds_0_0_chrX_152691447_f 0 +
+chrX 152694029 152694263 CCDS14736.1_cds_0_0_chrX_152694030_r 0 - chrX 152694029 152694263 BC052303_cds_0_0_chrX_152694030_r 0 -
diff -r 46aee6903d8f -r b95d7c323cc9 tool_dependencies.xml
--- a/tool_dependencies.xml Wed Jul 24 09:15:52 2013 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-