# HG changeset patch
# User iuc
# Date 1453214063 18000
# Node ID 8dd8e89c06034967efaacfc35794817a313c1c32
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/extract_genomic_dna commit b'67cff25a50ba173b0468819204d0999496f68ea9'
diff -r 000000000000 -r 8dd8e89c0603 extract_genomic_dna.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_genomic_dna.py Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,207 @@
+#!/usr/bin/env python
+import argparse
+import os
+
+import extract_genomic_dna_utils as egdu
+import bx.seq.nib
+import bx.seq.twobit
+from bx.intervals.io import Header, Comment
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--input_format', dest='input_format', help="Input dataset format")
+parser.add_argument('--input', dest='input', help="Input dataset")
+parser.add_argument('--genome', dest='genome', help="Input dataset genome build")
+parser.add_argument('--interpret_features', dest='interpret_features', default=None, help="Interpret features if input format is gff")
+parser.add_argument('--columns', dest='columns', help="Columns to use in input file")
+parser.add_argument('--reference_genome_source', dest='reference_genome_source', help="Source of reference genome file")
+parser.add_argument('--reference_genome', dest='reference_genome', help="Reference genome file")
+parser.add_argument('--output_format', dest='output_format', help="Output format")
+parser.add_argument('--output', dest='output', help="Output dataset")
+args = parser.parse_args()
+
+input_is_gff = args.input_format == 'gff'
+interpret_features = input_is_gff and args.interpret_features == "yes"
+if len(args.columns.split(',')) == 5:
+ # Bed file.
+ chrom_col, start_col, end_col, strand_col, name_col = egdu.parse_cols_arg(args.columns)
+else:
+ # Gff file.
+ chrom_col, start_col, end_col, strand_col = egdu.parse_cols_arg(args.columns)
+ name_col = False
+
+if args.reference_genome_source == "history":
+ seq_path = egdu.convert_to_twobit(args.reference_genome)
+else:
+ seq_path = args.reference_genome
+seq_dir = os.path.split(seq_path)[0]
+
+includes_strand_col = strand_col >= 0
+strand = None
+nibs = {}
+skipped_lines = 0
+first_invalid_line = 0
+invalid_lines = []
+warnings = []
+warning = ''
+twobitfile = None
+line_count = 1
+file_iterator = open(args.input)
+if interpret_features:
+ file_iterator = egdu.GFFReaderWrapper(file_iterator, fix_strand=False)
+out = open(args.output, 'wt')
+
+for feature in file_iterator:
+ # Ignore comments, headers.
+ if isinstance(feature, (Header, Comment)):
+ line_count += 1
+ continue
+ name = ""
+ if interpret_features:
+ # Processing features.
+ egdu.convert_gff_coords_to_bed(feature)
+ chrom = feature.chrom
+ start = feature.start
+ end = feature.end
+ strand = feature.strand
+ else:
+ # Processing lines, either interval or GFF format.
+ line = feature.rstrip('\r\n')
+ if line and not line.startswith("#"):
+ fields = line.split('\t')
+ try:
+ chrom = fields[chrom_col]
+ start = int(fields[start_col])
+ end = int(fields[end_col])
+ if name_col:
+ name = fields[name_col]
+ if input_is_gff:
+ start, end = egdu.convert_gff_coords_to_bed([start, end])
+ if includes_strand_col:
+ strand = fields[strand_col]
+ except:
+ warning = "Invalid chrom, start or end column values. "
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ if start > end:
+ warning = "Invalid interval, start '%d' > end '%d'. " % (start, end)
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ if strand not in ['+', '-']:
+ strand = '+'
+ sequence = ''
+ else:
+ continue
+ # Open sequence file and get sequence for feature/interval.
+ if os.path.exists("%s/%s.nib" % (seq_dir, chrom)):
+ if chrom in nibs:
+ nib = nibs[chrom]
+ else:
+ nibs[chrom] = nib = bx.seq.nib.NibFile(open("%s/%s.nib" % (seq_path, chrom)))
+ try:
+ sequence = nib.get(start, end - start)
+ except Exception, e:
+ warning = "Unable to fetch the sequence from '%d' to '%d' for build '%s'. " % (start, end - start, args.genome)
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ elif os.path.isfile(seq_path):
+ if not(twobitfile):
+ twobitfile = bx.seq.twobit.TwoBitFile(open(seq_path))
+ try:
+ if interpret_features:
+ # Create sequence from intervals within a feature.
+ sequence = ''
+ for interval in feature.intervals:
+ sequence += twobitfile[interval.chrom][interval.start:interval.end]
+ else:
+ sequence = twobitfile[chrom][start:end]
+ except:
+ warning = "Unable to fetch the sequence from '%d' to '%d' for chrom '%s'. " % (start, end - start, chrom)
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ else:
+ warning = "Chromosome by name '%s' was not found for build '%s'. " % (chrom, args.genome)
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ if sequence == '':
+ warning = "Chrom: '%s', start: '%d', end: '%d' is either invalid or not present in build '%s'. " % (chrom, start, end, args.genome)
+ warnings.append(warning)
+ if not invalid_lines:
+ invalid_lines = egdu.get_lines(feature)
+ first_invalid_line = line_count
+ skipped_lines += len(invalid_lines)
+ continue
+ if includes_strand_col and strand == "-":
+ sequence = egdu.reverse_complement(sequence)
+ if args.output_format == "fasta":
+ l = len(sequence)
+ c = 0
+ if input_is_gff:
+ start, end = egdu.convert_bed_coords_to_gff([start, end])
+ fields = [args.genome, str(chrom), str(start), str(end), strand]
+ meta_data = "_".join(fields)
+ if name.strip():
+ out.write(">%s %s\n" % (meta_data, name))
+ else:
+ out.write(">%s\n" % meta_data)
+ while c < l:
+ b = min(c + 50, l)
+ out.write("%s\n" % str(sequence[c:b]))
+ c = b
+ else:
+ # output_format == "interval".
+ if interpret_features:
+ meta_data = "\t".join([feature.chrom,
+ "galaxy_extract_genomic_dna",
+ "interval",
+ str(feature.start),
+ str(feature.end),
+ feature.score,
+ feature.strand,
+ ".",
+ egdu.gff_attributes_to_str(feature.attributes, "GTF")])
+ else:
+ # Where is fields being set here?
+ meta_data = "\t".join(fields)
+ if input_is_gff:
+ format_str = "%s seq \"%s\";\n"
+ else:
+ format_str = "%s\t%s\n"
+ out.write(format_str % (meta_data, str(sequence)))
+ # Update line count.
+ if isinstance(feature, egdu.GFFFeature):
+ line_count += len(feature.intervals)
+ else:
+ line_count += 1
+out.close()
+
+if warnings:
+ warn_msg = "%d warnings, 1st is: " % len(warnings)
+ warn_msg += warnings[0]
+ print warn_msg
+if skipped_lines:
+ # Error message includes up to the first 10 skipped lines.
+ print 'Skipped %d invalid lines, 1st is #%d, "%s"' % (skipped_lines, first_invalid_line, '\n'.join(invalid_lines[:10]))
+
+if args.reference_genome_source == "history":
+ os.remove(seq_path)
diff -r 000000000000 -r 8dd8e89c0603 extract_genomic_dna.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_genomic_dna.xml Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,202 @@
+
diff -r 000000000000 -r 8dd8e89c0603 extract_genomic_dna_utils.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_genomic_dna_utils.py Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,391 @@
+import copy
+import os
+import subprocess
+import sys
+import tempfile
+
+from bx.intervals.io import Comment, Header, GenomicInterval
+from bx.intervals.io import GenomicIntervalReader, NiceReaderWrapper, ParseError
+
+# Default chrom, start, end, strand cols for a bed file
+BED_DEFAULT_COLS = 0, 1, 2, 5
+
+
+class GFFInterval(GenomicInterval):
+ """
+ A GFF interval, including attributes. If file is strictly a GFF file,
+ only attribute is 'group.'
+ """
+
+ def __init__(self, reader, fields, chrom_col=0, feature_col=2, start_col=3, end_col=4,
+ strand_col=6, score_col=5, default_strand='.', fix_strand=False):
+ # GFF format allows '.' for strand but GenomicInterval does not. To get around this,
+ # temporarily set strand and then unset after initing GenomicInterval.
+ unknown_strand = False
+ if not fix_strand and fields[strand_col] == '.':
+ unknown_strand = True
+ fields[strand_col] = '+'
+ GenomicInterval.__init__(self, reader, fields, chrom_col, start_col, end_col,
+ strand_col, default_strand, fix_strand=fix_strand)
+ if unknown_strand:
+ self.strand = '.'
+ self.fields[strand_col] = '.'
+ # Handle feature, score column.
+ self.feature_col = feature_col
+ if self.feature_col >= self.nfields:
+ stop_err("No field for feature_col (%d)" % feature_col)
+ self.feature = self.fields[self.feature_col]
+ self.score_col = score_col
+ if self.score_col >= self.nfields:
+ stop_err("No field for score_col (%d)" % score_col)
+ self.score = self.fields[self.score_col]
+ # GFF attributes.
+ self.attributes = parse_gff_attributes(fields[8])
+
+ def copy(self):
+ return GFFInterval(self.reader, list(self.fields), self.chrom_col, self.feature_col,
+ self.start_col, self.end_col, self.strand_col, self.score_col, self.strand)
+
+
+class GFFFeature(GFFInterval):
+ """
+ A GFF feature, which can include multiple intervals.
+ """
+
+ def __init__(self, reader, chrom_col=0, feature_col=2, start_col=3, end_col=4, strand_col=6,
+ score_col=5, default_strand='.', fix_strand=False, intervals=[], raw_size=0):
+ # Use copy so that first interval and feature do not share fields.
+ GFFInterval.__init__(self, reader, copy.deepcopy(intervals[0].fields), chrom_col, feature_col,
+ start_col, end_col, strand_col, score_col, default_strand, fix_strand=fix_strand)
+ self.intervals = intervals
+ self.raw_size = raw_size
+ # Use intervals to set feature attributes.
+ for interval in self.intervals:
+ # Error checking. NOTE: intervals need not share the same strand.
+ if interval.chrom != self.chrom:
+ stop_err("interval chrom does not match self chrom: %s != %s" % (interval.chrom, self.chrom))
+ # Set start, end of interval.
+ if interval.start < self.start:
+ self.start = interval.start
+ if interval.end > self.end:
+ self.end = interval.end
+
+ def name(self):
+ """
+ Returns feature's name.
+ """
+ name = None
+ # Preference for name:
+ # GTF: 'gene_id', 'transcript_id'
+ # GFF3: 'ID', 'id'
+ # GFF: 'group'
+ for attr_name in ['gene_id', 'transcript_id', 'ID', 'id', 'group']:
+ name = self.attributes.get(attr_name, None)
+ if name is not None:
+ break
+ return name
+
+ def copy(self):
+ intervals_copy = []
+ for interval in self.intervals:
+ intervals_copy.append(interval.copy())
+ return GFFFeature(self.reader, self.chrom_col, self.feature_col, self.start_col, self.end_col,
+ self.strand_col, self.score_col, self.strand, intervals=intervals_copy)
+
+ def lines(self):
+ lines = []
+ for interval in self.intervals:
+ lines.append('\t'.join(interval.fields))
+ return lines
+
+
+class GFFReaderWrapper(NiceReaderWrapper):
+ """
+ Reader wrapper for GFF files which has two major functions:
+ 1. group entries for GFF file (via group column), GFF3 (via id attribute),
+ or GTF (via gene_id/transcript id);
+ 2. convert coordinates from GFF format--starting and ending coordinates
+ are 1-based, closed--to the 'traditional'/BED interval format--0 based,
+ half-open. This is useful when using GFF files as inputs to tools that
+ expect traditional interval format.
+ """
+
+ def __init__(self, reader, chrom_col=0, feature_col=2, start_col=3, end_col=4, strand_col=6,
+ score_col=5, fix_strand=False, convert_to_bed_coord=False, **kwargs):
+ NiceReaderWrapper.__init__(self, reader, chrom_col=chrom_col, start_col=start_col, end_col=end_col,
+ strand_col=strand_col, fix_strand=fix_strand, **kwargs)
+ self.feature_col = feature_col
+ self.score_col = score_col
+ self.convert_to_bed_coord = convert_to_bed_coord
+ self.last_line = None
+ self.cur_offset = 0
+ self.seed_interval = None
+ self.seed_interval_line_len = 0
+
+ def parse_row(self, line):
+ interval = GFFInterval(self, line.split("\t"), self.chrom_col, self.feature_col, self.start_col,
+ self.end_col, self.strand_col, self.score_col, self.default_strand,
+ fix_strand=self.fix_strand)
+ return interval
+
+ def next(self):
+ """
+ Returns next GFFFeature.
+ """
+
+ def handle_parse_error(parse_error):
+ """
+ Actions to take when ParseError found.
+ """
+ if self.outstream:
+ if self.print_delegate and hasattr(self.print_delegate, "__call__"):
+ self.print_delegate(self.outstream, e, self)
+ self.skipped += 1
+ # No reason to stuff an entire bad file into memory.
+ if self.skipped < 10:
+ self.skipped_lines.append((self.linenum, self.current_line, str(e)))
+ # Get next GFFFeature
+ raw_size = self.seed_interval_line_len
+ # If there is no seed interval, set one. Also, if there are no more
+ # intervals to read, this is where iterator dies.
+ if not self.seed_interval:
+ while not self.seed_interval:
+ try:
+ self.seed_interval = GenomicIntervalReader.next(self)
+ except ParseError as e:
+ handle_parse_error(e)
+ finally:
+ raw_size += len(self.current_line)
+ # If header or comment, clear seed interval and return it with its size.
+ if isinstance(self.seed_interval, (Header, Comment)):
+ return_val = self.seed_interval
+ return_val.raw_size = len(self.current_line)
+ self.seed_interval = None
+ self.seed_interval_line_len = 0
+ return return_val
+ # Initialize feature identifier from seed.
+ # For GFF.
+ feature_group = self.seed_interval.attributes.get('group', None)
+ # For GFF3
+ feature_id = self.seed_interval.attributes.get('ID', None)
+ # For GTF.
+ feature_transcript_id = self.seed_interval.attributes.get('transcript_id', None)
+ # Read all intervals associated with seed.
+ feature_intervals = []
+ feature_intervals.append(self.seed_interval)
+ while True:
+ try:
+ interval = GenomicIntervalReader.next(self)
+ raw_size += len(self.current_line)
+ except StopIteration as e:
+ # No more intervals to read, but last feature needs to be
+ # returned.
+ interval = None
+ raw_size += len(self.current_line)
+ break
+ except ParseError as e:
+ handle_parse_error(e)
+ raw_size += len(self.current_line)
+ continue
+ # Ignore comments.
+ if isinstance(interval, Comment):
+ continue
+ # Determine if interval is part of feature.
+ part_of = False
+ group = interval.attributes.get('group', None)
+ # GFF test:
+ if group and feature_group == group:
+ part_of = True
+ # GFF3 test:
+ parent_id = interval.attributes.get('Parent', None)
+ cur_id = interval.attributes.get('ID', None)
+ if (cur_id and cur_id == feature_id) or (parent_id and parent_id == feature_id):
+ part_of = True
+ # GTF test:
+ transcript_id = interval.attributes.get('transcript_id', None)
+ if transcript_id and transcript_id == feature_transcript_id:
+ part_of = True
+ # If interval is not part of feature, clean up and break.
+ if not part_of:
+ # Adjust raw size because current line is not part of feature.
+ raw_size -= len(self.current_line)
+ break
+ # Interval associated with feature.
+ feature_intervals.append(interval)
+ # Last interval read is the seed for the next interval.
+ self.seed_interval = interval
+ self.seed_interval_line_len = len(self.current_line)
+ # Return feature.
+ feature = GFFFeature(self, self.chrom_col, self.feature_col, self.start_col,
+ self.end_col, self.strand_col, self.score_col,
+ self.default_strand, fix_strand=self.fix_strand,
+ intervals=feature_intervals, raw_size=raw_size)
+ # Convert to BED coords?
+ if self.convert_to_bed_coord:
+ convert_gff_coords_to_bed(feature)
+ return feature
+
+
+def convert_bed_coords_to_gff(interval):
+ """
+ Converts an interval object's coordinates from BED format to GFF format.
+ Accepted object types include GenomicInterval and list (where the first
+ element in the list is the interval's start, and the second element is
+ the interval's end).
+ """
+ if isinstance(interval, GenomicInterval):
+ interval.start += 1
+ if isinstance(interval, GFFFeature):
+ for subinterval in interval.intervals:
+ convert_bed_coords_to_gff(subinterval)
+ elif isinstance(interval, list):
+ interval[0] += 1
+ return interval
+
+
+def convert_gff_coords_to_bed(interval):
+ """
+ Converts an interval object's coordinates from GFF format to BED format.
+ Accepted object types include GFFFeature, GenomicInterval, and list (where
+ the first element in the list is the interval's start, and the second
+ element is the interval's end).
+ """
+ if isinstance(interval, GenomicInterval):
+ interval.start -= 1
+ if isinstance(interval, GFFFeature):
+ for subinterval in interval.intervals:
+ convert_gff_coords_to_bed(subinterval)
+ elif isinstance(interval, list):
+ interval[0] -= 1
+ return interval
+
+
+def convert_to_twobit(reference_genome):
+ """
+ Create 2bit file history fasta dataset.
+ """
+ try:
+ seq_path = tempfile.NamedTemporaryFile(dir=".").name
+ cmd = "faToTwoBit %s %s" % (reference_genome, seq_path)
+ tmp_name = tempfile.NamedTemporaryFile(dir=".").name
+ tmp_stderr = open(tmp_name, 'wb')
+ proc = subprocess.Popen(args=cmd, shell=True, stderr=tmp_stderr.fileno())
+ returncode = proc.wait()
+ tmp_stderr.close()
+ if returncode != 0:
+ # Get stderr, allowing for case where it's very large.
+ tmp_stderr = open(tmp_name, 'rb')
+ stderr = ''
+ buffsize = 1048576
+ try:
+ while True:
+ stderr += tmp_stderr.read(buffsize)
+ if not stderr or len(stderr) % buffsize != 0:
+ break
+ except OverflowError:
+ pass
+ tmp_stderr.close()
+ os.remove(tmp_name)
+ stop_err(stderr)
+ return seq_path
+ except Exception, e:
+ stop_err('Error running faToTwoBit. ' + str(e))
+
+
+def get_lines(feature):
+ # Get feature's line(s).
+ if isinstance(feature, GFFFeature):
+ return feature.lines()
+ else:
+ return [feature.rstrip('\r\n')]
+
+
+def gff_attributes_to_str(attrs, gff_format):
+ """
+ Convert GFF attributes to string. Supported formats are GFF3, GTF.
+ """
+ if gff_format == 'GTF':
+ format_string = '%s "%s"'
+ # Convert group (GFF) and ID, parent (GFF3) attributes to
+ # transcript_id, gene_id.
+ id_attr = None
+ if 'group' in attrs:
+ id_attr = 'group'
+ elif 'ID' in attrs:
+ id_attr = 'ID'
+ elif 'Parent' in attrs:
+ id_attr = 'Parent'
+ if id_attr:
+ attrs['transcript_id'] = attrs['gene_id'] = attrs[id_attr]
+ elif gff_format == 'GFF3':
+ format_string = '%s=%s'
+ attrs_strs = []
+ for name, value in attrs.items():
+ attrs_strs.append(format_string % (name, value))
+ return " ; ".join(attrs_strs)
+
+
+def parse_cols_arg(cols):
+ """
+ Parse a columns command line argument into a four-tuple.
+ """
+ if cols:
+ # Handle case where no strand column included - in this case, cols
+ # looks something like 1,2,3,
+ if cols.endswith(','):
+ cols += '0'
+ col_list = map(lambda x: int(x) - 1, cols.split(","))
+ return col_list
+ else:
+ return BED_DEFAULT_COLS
+
+
+def parse_gff_attributes(attr_str):
+ """
+ Parses a GFF/GTF attribute string and returns a dictionary of name-value
+ pairs. The general format for a GFF3 attributes string is
+ name1=value1;name2=value2
+ The general format for a GTF attribute string is
+ name1 "value1" ; name2 "value2"
+ The general format for a GFF attribute string is a single string that
+ denotes the interval's group; in this case, method returns a dictionary
+ with a single key-value pair, and key name is 'group'.
+ """
+ attributes_list = attr_str.split(";")
+ attributes = {}
+ for name_value_pair in attributes_list:
+ # Try splitting by '=' (GFF3) first because spaces are allowed in GFF3
+ # attribute; next, try double quotes for GTF.
+ pair = name_value_pair.strip().split("=")
+ if len(pair) == 1:
+ pair = name_value_pair.strip().split("\"")
+ if len(pair) == 1:
+ # Could not split for some reason.
+ continue
+ if pair == '':
+ continue
+ name = pair[0].strip()
+ if name == '':
+ continue
+ # Need to strip double quote from values
+ value = pair[1].strip(" \"")
+ attributes[name] = value
+ if len(attributes) == 0:
+ # Could not split attributes string, so entire string must be
+ # 'group' attribute. This is the case for strictly GFF files.
+ attributes['group'] = attr_str
+ return attributes
+
+
+def reverse_complement(s):
+ complement_dna = {"A": "T", "T": "A", "C": "G", "G": "C", "a": "t", "t": "a", "c": "g", "g": "c", "N": "N", "n": "n"}
+ reversed_s = []
+ for i in s:
+ reversed_s.append(complement_dna[i])
+ reversed_s.reverse()
+ return "".join(reversed_s)
+
+
+def stop_err(msg):
+ sys.stderr.write(msg)
+ sys.exit(1)
diff -r 000000000000 -r 8dd8e89c0603 test-data/1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1.bed Tue Jan 19 09:34:23 2016 -0500
@@ -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 000000000000 -r 8dd8e89c0603 test-data/cufflinks_out1.gtf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cufflinks_out1.gtf Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,4 @@
+test_chromosome Cufflinks transcript 53 550 1000 + . gene_id "CUFF.1"; transcript_id "CUFF.1.1"; FPKM "10679134.4063403048"; frac "1.000000"; conf_lo "8543307.525072"; conf_hi "12814961.287608"; cov "145.770185";
+test_chromosome Cufflinks exon 53 250 1000 + . gene_id "CUFF.1"; transcript_id "CUFF.1.1"; exon_number "1"; FPKM "10679134.4063403048"; frac "1.000000"; conf_lo "8543307.525072"; conf_hi "12814961.287608"; cov "145.770185";
+test_chromosome Cufflinks exon 351 400 1000 + . gene_id "CUFF.1"; transcript_id "CUFF.1.1"; exon_number "2"; FPKM "10679134.4063403048"; frac "1.000000"; conf_lo "8543307.525072"; conf_hi "12814961.287608"; cov "145.770185";
+test_chromosome Cufflinks exon 501 550 1000 + . gene_id "CUFF.1"; transcript_id "CUFF.1.1"; exon_number "3"; FPKM "10679134.4063403048"; frac "1.000000"; conf_lo "8543307.525072"; conf_hi "12814961.287608"; cov "145.770185";
diff -r 000000000000 -r 8dd8e89c0603 test-data/droPer1.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/droPer1.bed Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,2 @@
+super_1 139823 139913 AK028861 0 - 139823 139913 0 1 90, 0,
+super_1 156750 156844 BC126698 0 - 156750 156844 0 1 94, 0,
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out1.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,88 @@
+>hg17_chr1_147962192_147962580_-
+ACTTGATCCTGCTCCCTCGGTGTCTGCATTGACTCCTCATGCTGGGACTG
+GACCCGTCAACCCCCCTGCTCGCTGCTCACGTACCTTCATCACTTTTAGT
+GATGATGCAACTTTCGAGGAATGGTTCCCCCAAGGGCGGCCCCCAAAAGT
+CCCTGTTCGTGAGGTCTGTCCAGTGACCCATCGTCCAGCCCTATACCGGG
+ACCCTGTTACAGACATACCCTATGCCACTGCTCGAGCCTTCAAGATCATT
+CGTGAGGCTTACAAGAAGTACATTACTGCCCATGGACTGCCGCCCACTGC
+CTCAGCCCTGGGCCCCGGCCCGCCACCTCCTGAGCCCCTCCCTGGCTCTG
+GGCCCCGAGCCTTGCGCCAGAAAATTGTCATTAAATGA
+>hg17_chr1_147984545_147984630_+
+ATGGCGTCGGCCTCCTCCGGGCCGTCGTCTTCGGTCGGTTTTTCATCCTT
+TGATCCCGCGGTCCCTTCCTGTACCTTGTCCTCAG
+>hg17_chr1_148078400_148078582_-
+GTTCTCAGCTTCCTTGCTTCCATGGCTCCAGCACCATTCGAAACCTCAAA
+GAGAGGTTCCACATGAGCATGACTGAGGAGCAGCTGCAGCTGCTGGTGGA
+GCAGATGGTGGATGGCAGTATGCGGTCTATCACCACCAAACTCTATGACG
+GCTTCCAGTACCTCACCAACGGCATCATGTGA
+>hg17_chr1_148185136_148185276_+
+ATGGAAGCGTTTTTGGGGTCGCGGTCCGGACTTTGGGCGGGGGGTCCGGC
+CCCAGGACAGTTTTACCGCATTCCGTCCACTCCCGATTCCTTCATGGATC
+CGGCGTCTGCACTTTACAGAGGTCCAATCACGCGGACCCA
+>hg17_chr10_55251623_55253124_-
+TCTTTTCCTTCTCTACCATTTTCAACAAAGCAGGGGAAATAACTCAGTCT
+CAGAAGACAGGAAACATCAACAAGTTGTGATGCCCTTTTCTTCCAATACT
+ATTGAGGCTCACAAGTCAGCTCATGTAGACGGATCACTTAAGAGCAACAA
+ACTGAAGTCTGCAAGAAAATTCACATTTCTATCTGATGAGGATGACTTAA
+GTGCCCATAATCCCCTTTATAAGGAAAACATAAGTCAAGTATCAACAAAT
+TCAGACATTTCACAGAGAACAGATTTTGTAGACCCATTTTCACCCAAAAT
+ACAAGCCAAGAGTAAGTCTCTGAGGGGCCCAAGAGAAAAGATTCAGAGGC
+TGTGGAGTCAGTCAGTCAGCTTACCCAGGAGGCTGATGAGGAAAGTTCCA
+AATAGACCAGAGATCATAGATCTGCAGCAGTGGCAAGGCACCAGGCAGAA
+AGCTGAAAATGAAAACACTGGAATCTGTACAAACAAAAGAGGTAGCAGCA
+ATCCATTGCTTACAACTGAAGAGGCAAATTTGACAGAGAAAGAGGAAATA
+AGGCAAGGTGAAACACTGATGATAGAAGGAACAGAACAGTTGAAATCTCT
+CTCTTCAGACTCTTCATTTTGCTTTCCCAGGCCTCACTTCTCATTCTCCA
+CTTTGCCAACTGTTTCAAGAACTGTGGAACTCAAATCAGAACCTAATGTC
+ATCAGTTCTCCTGCTGAGTGTTCCTTGGAACTTTCTCCTTCAAGGCCTTG
+TGTTTTACATTCTTCACTCTCTAGGAGAGAGACACCTATTTGTATGTTAC
+CTATTGAAACCGAAAGAAATATTTTTGAAAATTTTGCCCATCCACCAAAC
+ATCTCTCCTTCTGCCTGtccccttccccctcctcctcctatttctcctcc
+ttctcctcctcctgctcctgctcctcttgctcctcctcctgacatttctc
+ctttttctcttttttgtcctcctccctctcctccttctatccctcttcct
+cttcctcctcctACATTTTTTCCACTTTCCGTTTCAACGTCTGGTCCCCC
+AACAccacctcttctacctccatttccaactcctcttcctccaccacctc
+cttctattccttgccctccacctccttcAGCTTCATTTCTGTCCACAGAG
+TGTGTCTGTATAACAGGTGTTAAATGCACGACCAACTTGATGCCTGCCGA
+GAAAATTAAGTCCTCTATGACACAGCTATCAACAACGACAGTGTGTAAAA
+CAGACCCTCAGAGAGAACCAAAAGGCATCCTCAGACACGTTAAAAACTTA
+GCAGAACTTGAAAAATCAGTAGCTAACATGTACAGTCAAATAGAAAAAAA
+CTATCTACGCACAAATGTTTCAGAACTTCAAACTATGTGCCCTTCAGAAG
+TAACAAATATGGAAATCACATCTGAACAAAACAAGGGGAGTTTGAACAAT
+ATTGTCGAGGGAACTGAAAAACAATCTCACAGTCAATCTACTTCACTGTA
+A
+>hg17_chr11_116124407_116124501_-
+ATCCAATGGATTTGAACAGAAGCGCTTTGCCAGGCTTGCCAGCAAGAAGG
+CAGTGGAGGAACTTGCCTACAAATGGAGTGTTGAGGATATGTAA
+>hg17_chr11_116206508_116206563_+
+ATGCAGCCCCGGGTACTCCTTGTTGTTGCCCTCCTGGCGCTCCTGGCCTC
+TGCCC
+>hg17_chr11_116211733_116212337_-
+CCTAAAGCTCCTTGACAACTGGGACAGCGTGACCTCCACCTTCAGCAAGC
+TGCGCGAACAGCTCGGCCCTGTGACCCAGGAGTTCTGGGATAACCTGGAA
+AAGGAGACAGAGGGCCTGAGGCAGGAGATGAGCAAGGATCTGGAGGAGGT
+GAAGGCCAAGGTGCAGCCCTACCTGGACGACTTCCAGAAGAAGTGGCAGG
+AGGAGATGGAGCTCTACCGCCAGAAGGTGGAGCCGCTGCGCGCAGAGCTC
+CAAGAGGGCGCGCGCCAGAAGCTGCACGAGCTGCAAGAGAAGCTGAGCCC
+ACTGGGCGAGGAGATGCGCGACCGCGCGCGCGCCCATGTGGACGCGCTGC
+GCACGCATCTGGCCCCCTACAGCGACGAGCTGCGCCAGCGCTTGGCCGCG
+CGCCTTGAGGCTCTCAAGGAGAACGGCGGCGCCAGACTGGCCGAGTACCA
+CGCCAAGGCCACCGAGCATCTGAGCACGCTCAGCGAGAAGGCCAAGCCCG
+CGCTCGAGGACCTCCGCCAAGGCCTGCTGCCCGTGCTGGAGAGCTTCAAG
+GTCAGCTTCCTGAGCGCTCTCGAGGAGTACACTAAGAAGCTCAACACCCA
+GTGA
+>hg17_chr11_1812377_1812407_+
+ATGCTCCACCTGCATGGCTGGCAAACCATG
+>hg17_chr12_38440094_38440321_-
+GAGCTTTCTTCCTCTATGCTGGATTTGCTGCTGTGGGACTCCTTTTCATC
+TATGGCTGTCTTCCTGAGACCAAAGGCAAAAAATTAGAGGAAATTGAATC
+ACTCTTTGACAACAGGCTATGTACATGTGGCACTTCAGATTCTGATGAAG
+GGAGATATATTGAATATATTCGGGTAAAGGGAAGTAACTATCATCTTTCT
+GACAATGATGCTTCTGATGTGGAATAA
+>hg17_chr13_112381694_112381953_+
+ATGAACTCACCAGAGGCGAGGCTCTGCGTTGCTCAATGCAGAGACTCTTA
+CCCAGGGTGTCAGCCTCTGAAAGATACACGTGCCTGGGCCTCTTCCCTGA
+AGATGGACCCGGCAGGTCTGGAGGGAGGCCCCCGTGATGAATCCCGTGAT
+GAGCCGCCGATCCGAGCTCAGGCTGCGTCATGGGACCAGCCACAAGGTTG
+CCTGACCTATAAAGGTCGCAGGAGTGCCTCAGGGACACAGAAGCAGTTAC
+AGCTGCCAG
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out2.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out2.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,6 @@
+>droPer1_super_1_139823_139913_- AK028861
+CGTCGGCTTCTGCTTCTGCTGATGATGGTCGTTCTTCTTCCTTTACTTCT
+TCCTATTTTTCTTCCTTCCCTTACACTATATCTTCCTTTA
+>droPer1_super_1_156750_156844_- BC126698
+CCGGGCTGCGGCAAGGGATTCACCTGCTCCAAACAGCTCAAGGTGCACTC
+CCGCACGCACACGGGCGAGAAGCCCTATCACTGCGACATCTGCT
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out3.interval
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out3.interval Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,10 @@
+chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - ACTTGATCCTGCTCCCTCGGTGTCTGCATTGACTCCTCATGCTGGGACTGGACCCGTCAACCCCCCTGCTCGCTGCTCACGTACCTTCATCACTTTTAGTGATGATGCAACTTTCGAGGAATGGTTCCCCCAAGGGCGGCCCCCAAAAGTCCCTGTTCGTGAGGTCTGTCCAGTGACCCATCGTCCAGCCCTATACCGGGACCCTGTTACAGACATACCCTATGCCACTGCTCGAGCCTTCAAGATCATTCGTGAGGCTTACAAGAAGTACATTACTGCCCATGGACTGCCGCCCACTGCCTCAGCCCTGGGCCCCGGCCCGCCACCTCCTGAGCCCCTCCCTGGCTCTGGGCCCCGAGCCTTGCGCCAGAAAATTGTCATTAAATGA
+chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + ATGGCGTCGGCCTCCTCCGGGCCGTCGTCTTCGGTCGGTTTTTCATCCTTTGATCCCGCGGTCCCTTCCTGTACCTTGTCCTCAG
+chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - GTTCTCAGCTTCCTTGCTTCCATGGCTCCAGCACCATTCGAAACCTCAAAGAGAGGTTCCACATGAGCATGACTGAGGAGCAGCTGCAGCTGCTGGTGGAGCAGATGGTGGATGGCAGTATGCGGTCTATCACCACCAAACTCTATGACGGCTTCCAGTACCTCACCAACGGCATCATGTGA
+chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + ATGGAAGCGTTTTTGGGGTCGCGGTCCGGACTTTGGGCGGGGGGTCCGGCCCCAGGACAGTTTTACCGCATTCCGTCCACTCCCGATTCCTTCATGGATCCGGCGTCTGCACTTTACAGAGGTCCAATCACGCGGACCCA
+chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - TCTTTTCCTTCTCTACCATTTTCAACAAAGCAGGGGAAATAACTCAGTCTCAGAAGACAGGAAACATCAACAAGTTGTGATGCCCTTTTCTTCCAATACTATTGAGGCTCACAAGTCAGCTCATGTAGACGGATCACTTAAGAGCAACAAACTGAAGTCTGCAAGAAAATTCACATTTCTATCTGATGAGGATGACTTAAGTGCCCATAATCCCCTTTATAAGGAAAACATAAGTCAAGTATCAACAAATTCAGACATTTCACAGAGAACAGATTTTGTAGACCCATTTTCACCCAAAATACAAGCCAAGAGTAAGTCTCTGAGGGGCCCAAGAGAAAAGATTCAGAGGCTGTGGAGTCAGTCAGTCAGCTTACCCAGGAGGCTGATGAGGAAAGTTCCAAATAGACCAGAGATCATAGATCTGCAGCAGTGGCAAGGCACCAGGCAGAAAGCTGAAAATGAAAACACTGGAATCTGTACAAACAAAAGAGGTAGCAGCAATCCATTGCTTACAACTGAAGAGGCAAATTTGACAGAGAAAGAGGAAATAAGGCAAGGTGAAACACTGATGATAGAAGGAACAGAACAGTTGAAATCTCTCTCTTCAGACTCTTCATTTTGCTTTCCCAGGCCTCACTTCTCATTCTCCACTTTGCCAACTGTTTCAAGAACTGTGGAACTCAAATCAGAACCTAATGTCATCAGTTCTCCTGCTGAGTGTTCCTTGGAACTTTCTCCTTCAAGGCCTTGTGTTTTACATTCTTCACTCTCTAGGAGAGAGACACCTATTTGTATGTTACCTATTGAAACCGAAAGAAATATTTTTGAAAATTTTGCCCATCCACCAAACATCTCTCCTTCTGCCTGtccccttccccctcctcctcctatttctcctccttctcctcctcctgctcctgctcctcttgctcctcctcctgacatttctcctttttctcttttttgtcctcctccctctcctccttctatccctcttcctcttcctcctcctACATTTTTTCCACTTTCCGTTTCAACGTCTGGTCCCCCAACAccacctcttctacctccatttccaactcctcttcctccaccacctccttctattccttgccctccacctccttcAGCTTCATTTCTGTCCACAGAGTGTGTCTGTATAACAGGTGTTAAATGCACGACCAACTTGATGCCTGCCGAGAAAATTAAGTCCTCTATGACACAGCTATCAACAACGACAGTGTGTAAAACAGACCCTCAGAGAGAACCAAAAGGCATCCTCAGACACGTTAAAAACTTAGCAGAACTTGAAAAATCAGTAGCTAACATGTACAGTCAAATAGAAAAAAACTATCTACGCACAAATGTTTCAGAACTTCAAACTATGTGCCCTTCAGAAGTAACAAATATGGAAATCACATCTGAACAAAACAAGGGGAGTTTGAACAATATTGTCGAGGGAACTGAAAAACAATCTCACAGTCAATCTACTTCACTGTAA
+chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - ATCCAATGGATTTGAACAGAAGCGCTTTGCCAGGCTTGCCAGCAAGAAGGCAGTGGAGGAACTTGCCTACAAATGGAGTGTTGAGGATATGTAA
+chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + ATGCAGCCCCGGGTACTCCTTGTTGTTGCCCTCCTGGCGCTCCTGGCCTCTGCCC
+chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - CCTAAAGCTCCTTGACAACTGGGACAGCGTGACCTCCACCTTCAGCAAGCTGCGCGAACAGCTCGGCCCTGTGACCCAGGAGTTCTGGGATAACCTGGAAAAGGAGACAGAGGGCCTGAGGCAGGAGATGAGCAAGGATCTGGAGGAGGTGAAGGCCAAGGTGCAGCCCTACCTGGACGACTTCCAGAAGAAGTGGCAGGAGGAGATGGAGCTCTACCGCCAGAAGGTGGAGCCGCTGCGCGCAGAGCTCCAAGAGGGCGCGCGCCAGAAGCTGCACGAGCTGCAAGAGAAGCTGAGCCCACTGGGCGAGGAGATGCGCGACCGCGCGCGCGCCCATGTGGACGCGCTGCGCACGCATCTGGCCCCCTACAGCGACGAGCTGCGCCAGCGCTTGGCCGCGCGCCTTGAGGCTCTCAAGGAGAACGGCGGCGCCAGACTGGCCGAGTACCACGCCAAGGCCACCGAGCATCTGAGCACGCTCAGCGAGAAGGCCAAGCCCGCGCTCGAGGACCTCCGCCAAGGCCTGCTGCCCGTGCTGGAGAGCTTCAAGGTCAGCTTCCTGAGCGCTCTCGAGGAGTACACTAAGAAGCTCAACACCCAGTGA
+chr11 1812377 1812407 CCDS7726.1_cds_0_0_chr11_1812378_f 0 + ATGCTCCACCTGCATGGCTGGCAAACCATG
+chr12 38440094 38440321 CCDS8736.1_cds_0_0_chr12_38440095_r 0 - GAGCTTTCTTCCTCTATGCTGGATTTGCTGCTGTGGGACTCCTTTTCATCTATGGCTGTCTTCCTGAGACCAAAGGCAAAAAATTAGAGGAAATTGAATCACTCTTTGACAACAGGCTATGTACATGTGGCACTTCAGATTCTGATGAAGGGAGATATATTGAATATATTCGGGTAAAGGGAAGTAACTATCATCTTTCTGACAATGATGCTTCTGATGTGGAATAA
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out4.gff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out4.gff Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,10 @@
+chr10 Cufflinks transcript 62044837 62045189 1000 . . gene_id "CUFF.23531"; transcript_id "CUFF.23531.1"; FPKM "19.5178121606"; frac "1.000000"; conf_lo "9.264456"; conf_hi "29.771168"; cov "1.108611"; seq "AATTACAAGATCGACACACCAAGATAGGCAGATCCATGGTTGGTTTTACTTTGTAAATCTAAAAGTATGTTGGAAAACGATGCAATGAATTCTTATCCTTTTTCAAAATGAAGAATTTGTGATGGTTAGTGGACAGTTCAGAAGCCTCTCTGCAAGAAAGGGGGCGCTGAGAAGTGGTAAAAAAAGGAAGGAAGCACTCGGGCTTTGTCAGCAGGGTGGACCCTGGGGTCCACAGTGGGAACAGTCCCTTCTGGCCTCTACTCACTGACCAAACGCTTTACTAAAACTCCGCTTCTGGCCTCTGTTGCCACCTCCTGGTCGCTGTCCTCGGAAGTTTCTACTTCCTCCTCGCT";
+chr10 Cufflinks transcript 75372919 75373002 1000 . . gene_id "CUFF.24985"; transcript_id "CUFF.24985.1"; FPKM "124.4970510798"; frac "1.000000"; conf_lo "71.411330"; conf_hi "177.582772"; cov "7.071429"; seq "GCGTCTCGCAGCTTCTGCCCGTCGATCTCCATGTCGAGCCGGATGGGCACCAGCACCTCAGGCTGTGACGCATTCTCATGGATC";
+chr10 Cufflinks transcript 80362428 80363292 1000 - . gene_id "CUFF.26065"; transcript_id "CUFF.26065.1"; FPKM "43.6170921216"; frac "1.000000"; conf_lo "32.260169"; conf_hi "54.974016"; cov "2.477449"; seq "ATGACGGACAAGTGTTTCCGGAAGTGCATCGGGAAGCCCGGGGGCTCCTTGGATAACTCGGAGCAGGTGAGACATCTCGGGAACCCGGGGTGGTGAGGGGCGCGGGGTCAGGAGCGTCTAGGAGGTTGAGAGATGTGCGCGTGCGCGGCCTCTAGCCTTAGCTACTGAGGAAGTTGTGCGCGTGCGCGGGGTGAGGACCCGGCTTCTGTGCCTAGATCGGTGCAGCCTTCATGGGTGATCCTCGGGTCGTGTGACCGTCAGTCAGGGATCCCCCTCCACGCTTTGCAGAAATGCATCGCCATGTGCATGGACCGCTACATGGACGCCTGGAATACCGTGTCCCGCGCCTACAACTCTCGACTGCAGCGGGAACGAGCCAACATGTGACCGGGACCTGTGCCTCGGGACACCGTGCTTATGGTCTGAACTGTTTTCCCTGCCAGTTAGGGTGTCTCCTCCTAGCCGCCCTGAAGTCTGGCAGCATGGAGGGCTTGGGGATCGAGGCCTCTCCCCTGGGTTGCTGCGTCCAGCTCAATCTCAGAAGAGAGTGAGGACCCGACAGAGCACAGGGATCTGGCTGGCCCCACTGACCTGTGACCTCAGGAGAGCAGGCCAATAAATCGCTGCTGGGGCAGTAAAGCAGGCGTGTCACCTCACTGCTTCAGGTCCCTTCCCCTGAGTAGGCCCAGACCTCCCAGGGTATCTTTCCCCTTGGGGTCAGTGGGCTGCTGGCTCTCAGGGAATTCGGAGCATGATCTCAGGTGTTTGGTCATCCCGGGGAGACCAGCCGAGGTTAAGAAGCAAGGCTTCATGTagccttcacctatcatgcatgaggcccagggtgctgaccttaactctgaat";
+chr11 Cufflinks transcript 7904565 7904642 1000 . . gene_id "CUFF.33508"; transcript_id "CUFF.33508.1"; FPKM "61.6484988869"; frac "1.000000"; conf_lo "22.882428"; conf_hi "100.414569"; cov "3.501633"; seq "CATCTTCTATTTGAGCCTCCATCCAGGCACCTCTGAAACAAAGGTGCACTCACTGCATGTCCACTTGTCACAGGAGCC";
+chr11 Cufflinks exon 78140156 78140259 1000 . . gene_id "CUFF.43148"; transcript_id "CUFF.43148.1"; exon_number "1"; FPKM "54.8483511750"; frac "1.000000"; conf_lo "23.181641"; conf_hi "86.515061"; cov "3.115385"; seq "CTGCTTGCTAATTTTCTCTCTTGGGATCAGGGGGACGTGAACTCCAGCCCTGACTCGTGCTCCTTATGCTCTGAGTACATAGCAAATAAATGAGAGCAAAACAC";
+chr11 Cufflinks exon 105616462 105616737 1000 . . gene_id "CUFF.48385"; transcript_id "CUFF.48385.1"; exon_number "1"; FPKM "18.9452034252"; frac "1.000000"; conf_lo "7.520816"; conf_hi "30.369591"; cov "1.076087"; seq "TAGGTGTAATAGTGGAAAACAATAGTTTTTAAACTTCAGAGTCCAGGGCTGTAACTCAGTAGTAACAGTGTTCTCTAAGTATGTTATTCTTCCTCTACATGCTGAAATTTTTCATATTTGGAGCATTCACTGTTCCATGTATCAGTAAATTATATTGTGAGCTGTCATCATATCTAAGCACCATATTGAATATTTTTCATGATTAAAATTTGTTGAAACAACAATTCTATGACCGAAAAAAGCAAGGCTTTGTAAATAACATGTTTGTTACTAGTA";
+chr12 Cufflinks exon 30701762 30702509 1000 . . gene_id "CUFF.53897"; transcript_id "CUFF.53897.1"; exon_number "1"; FPKM "48.9333329111"; frac "1.000000"; conf_lo "37.780391"; conf_hi "60.086275"; cov "2.779412"; seq "TGTGGAGTGTACTTATATGATCCCTATGCTGATAGGATTACCTTCCTAGACATAGCTAGACGCAAAGCCACATGTGTAAGGCTGCTGAGCAAAGACAGCATCCCAGCATGGGTGTGTTCACGGTGGATTCACCACGTTGCATATGTAAAGTGGTCCCCTTGGCTTACCCTTCACTTTGCTCATGAGATTCAGAAGCTGGTGGTCCAGCAGGGGTGAGCATTTGTGAAATAGTAAGCTGAACTTAGTGGTGAGATTTCAGAACAGACTTCTGTGAAGTAAGAGATGTAACCATGCATCTAAAATCAGATGGCCGTGTAACTGCTCGGGCATAGAAATGGTGGGAGAACCTGTCCTGGGTACCTGGCATTTCACATGAGCCCAGGGATATGTCTTGTGCCAAGGCACACAAGTGTCCATGGACTTGGACAGGTGCCAAGGGTTTTTGTCTCTGTTCCTATGTGGGAGGCTGGCTGTGATTTACATTAATTTCTGTATTTCAAACGAAGATGTCTGCAGATCTCCATTTTGATGTTACAGCCTCATTGCCCAGGCAGTGGGCAGTGCCCAGACACCCTTTCTGACTAGCCACTGCATTGGGCTTCTGTGATTCAAAGTAGTGTATATATTTATTTACTTCTCTGACTGTGGCCAACAGCCAAATGCCATTTTATGTTCCTTGTATTCAGTCCATTACCAAAGAGGTGTTTGCACTTTGTAATGATACCTTTCAGTTCAAATAAAAGGACCA";
+chr13 Cufflinks exon 49159496 49159569 1000 . . gene_id "CUFF.67788"; transcript_id "CUFF.67788.1"; exon_number "1"; FPKM "44.9657653777"; frac "1.000000"; conf_lo "10.974842"; conf_hi "78.956689"; cov "2.554054"; seq "ttttcttttggattacttgatttttttttatttgatcttatttatgatgattttgagtacatttttgaacagtt";
+chr13 Cufflinks transcript 100200304 100200330 1000 . . gene_id "CUFF.73108"; transcript_id "CUFF.73108.1"; FPKM "123.2395051093"; frac "1.000000"; conf_lo "30.079196"; conf_hi "216.399814"; cov "7.000000"; seq "TCTCATATGAATAGCCACCCTCTTCTG";
+chr14 Cufflinks transcript 31949103 31949152 1000 . . gene_id "CUFF.77316"; transcript_id "CUFF.77316.1"; FPKM "85.5634278330"; frac "1.000000"; conf_lo "28.521143"; conf_hi "142.605713"; cov "4.860000"; seq "GGATGCTATCCGCGATGTGCATGTAAAGGGCCTCATGTACCAGTGGATCG";
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out5.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out5.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,31 @@
+>mm9_chr10_62044837_62045189_+
+AATTACAAGATCGACACACCAAGATAGGCAGATCCATGGTTGGTTTTACT
+TTGTAAATCTAAAAGTATGTTGGAAAACGATGCAATGAATTCTTATCCTT
+TTTCAAAATGAAGAATTTGTGATGGTTAGTGGACAGTTCAGAAGCCTCTC
+TGCAAGAAAGGGGGCGCTGAGAAGTGGTAAAAAAAGGAAGGAAGCACTCG
+GGCTTTGTCAGCAGGGTGGACCCTGGGGTCCACAGTGGGAACAGTCCCTT
+CTGGCCTCTACTCACTGACCAAACGCTTTACTAAAACTCCGCTTCTGGCC
+TCTGTTGCCACCTCCTGGTCGCTGTCCTCGGAAGTTTCTACTTCCTCCTC
+GCT
+>mm9_chr10_75372919_75373002_+
+GCGTCTCGCAGCTTCTGCCCGTCGATCTCCATGTCGAGCCGGATGGGCAC
+CAGCACCTCAGGCTGTGACGCATTCTCATGGATC
+>mm9_chr10_80362428_80363292_-
+ATGACGGACAAGTGTTTCCGGAAGTGCATCGGGAAGCCCGGGGGCTCCTT
+GGATAACTCGGAGCAGGTGAGACATCTCGGGAACCCGGGGTGGTGAGGGG
+CGCGGGGTCAGGAGCGTCTAGGAGGTTGAGAGATGTGCGCGTGCGCGGCC
+TCTAGCCTTAGCTACTGAGGAAGTTGTGCGCGTGCGCGGGGTGAGGACCC
+GGCTTCTGTGCCTAGATCGGTGCAGCCTTCATGGGTGATCCTCGGGTCGT
+GTGACCGTCAGTCAGGGATCCCCCTCCACGCTTTGCAGAAATGCATCGCC
+ATGTGCATGGACCGCTACATGGACGCCTGGAATACCGTGTCCCGCGCCTA
+CAACTCTCGACTGCAGCGGGAACGAGCCAACATGTGACCGGGACCTGTGC
+CTCGGGACACCGTGCTTATGGTCTGAACTGTTTTCCCTGCCAGTTAGGGT
+GTCTCCTCCTAGCCGCCCTGAAGTCTGGCAGCATGGAGGGCTTGGGGATC
+GAGGCCTCTCCCCTGGGTTGCTGCGTCCAGCTCAATCTCAGAAGAGAGTG
+AGGACCCGACAGAGCACAGGGATCTGGCTGGCCCCACTGACCTGTGACCT
+CAGGAGAGCAGGCCAATAAATCGCTGCTGGGGCAGTAAAGCAGGCGTGTC
+ACCTCACTGCTTCAGGTCCCTTCCCCTGAGTAGGCCCAGACCTCCCAGGG
+TATCTTTCCCCTTGGGGTCAGTGGGCTGCTGGCTCTCAGGGAATTCGGAG
+CATGATCTCAGGTGTTTGGTCATCCCGGGGAGACCAGCCGAGGTTAAGAA
+GCAAGGCTTCATGTagccttcacctatcatgcatgaggcccagggtgctg
+accttaactctgaat
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out6.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out6.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,20 @@
+>mm9_test_chromosome_53_550_+
+TACTATCTGACTAGACTGGAGGCGCTTGCGACTGAGCTAGGACGTGCCAC
+TACGGGGATGACGACTAGGACTACGGACGGACTTAGAGCGTCAGATGCAG
+CGACTGGACTATTTAGGACGATCGGACTGAGGAGGGCAGTAGGACGCTAC
+GTATTTGGCGCGCGGCGCTACGGCTGAGCGTCGAGCTTGCGATACGCCGT
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAC
+TATTACTTTATTATCTTACTCGGACGTAGACGGATCGGCAACGGGACTGT
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTT
+TTCTACTTGAGACTGGGATCGAGGCGGACTTTTTAGGACGGGACTTGC
+>mm9_test_chromosome_53_250_+
+TACTATCTGACTAGACTGGAGGCGCTTGCGACTGAGCTAGGACGTGCCAC
+TACGGGGATGACGACTAGGACTACGGACGGACTTAGAGCGTCAGATGCAG
+CGACTGGACTATTTAGGACGATCGGACTGAGGAGGGCAGTAGGACGCTAC
+GTATTTGGCGCGCGGCGCTACGGCTGAGCGTCGAGCTTGCGATACGCC
+>mm9_test_chromosome_351_400_+
+ACTATTACTTTATTATCTTACTCGGACGTAGACGGATCGGCAACGGGACT
+>mm9_test_chromosome_501_550_+
+TTTTCTACTTGAGACTGGGATCGAGGCGGACTTTTTAGGACGGGACTTGC
diff -r 000000000000 -r 8dd8e89c0603 test-data/extract_genomic_dna_out7.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/extract_genomic_dna_out7.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,17 @@
+>mm9_test_chromosome_53_550_+
+TACTATCTGACTAGACTGGAGGCGCTTGCGACTGAGCTAGGACGTGCCAC
+TACGGGGATGACGACTAGGACTACGGACGGACTTAGAGCGTCAGATGCAG
+CGACTGGACTATTTAGGACGATCGGACTGAGGAGGGCAGTAGGACGCTAC
+GTATTTGGCGCGCGGCGCTACGGCTGAGCGTCGAGCTTGCGATACGCCGT
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAC
+TATTACTTTATTATCTTACTCGGACGTAGACGGATCGGCAACGGGACTGT
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTT
+TTCTACTTGAGACTGGGATCGAGGCGGACTTTTTAGGACGGGACTTGCTA
+CTATCTGACTAGACTGGAGGCGCTTGCGACTGAGCTAGGACGTGCCACTA
+CGGGGATGACGACTAGGACTACGGACGGACTTAGAGCGTCAGATGCAGCG
+ACTGGACTATTTAGGACGATCGGACTGAGGAGGGCAGTAGGACGCTACGT
+ATTTGGCGCGCGGCGCTACGGCTGAGCGTCGAGCTTGCGATACGCCACTA
+TTACTTTATTATCTTACTCGGACGTAGACGGATCGGCAACGGGACTTTTT
+CTACTTGAGACTGGGATCGAGGCGGACTTTTTAGGACGGGACTTGC
diff -r 000000000000 -r 8dd8e89c0603 test-data/gff_filter_by_attribute_out1.gff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gff_filter_by_attribute_out1.gff Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,20 @@
+chr10 Cufflinks transcript 62044837 62045189 1000 . . gene_id "CUFF.23531"; transcript_id "CUFF.23531.1"; FPKM "19.5178121606"; frac "1.000000"; conf_lo "9.264456"; conf_hi "29.771168"; cov "1.108611";
+chr10 Cufflinks transcript 75372919 75373002 1000 . . gene_id "CUFF.24985"; transcript_id "CUFF.24985.1"; FPKM "124.4970510798"; frac "1.000000"; conf_lo "71.411330"; conf_hi "177.582772"; cov "7.071429";
+chr10 Cufflinks transcript 80362428 80363292 1000 - . gene_id "CUFF.26065"; transcript_id "CUFF.26065.1"; FPKM "43.6170921216"; frac "1.000000"; conf_lo "32.260169"; conf_hi "54.974016"; cov "2.477449";
+chr11 Cufflinks transcript 7904565 7904642 1000 . . gene_id "CUFF.33508"; transcript_id "CUFF.33508.1"; FPKM "61.6484988869"; frac "1.000000"; conf_lo "22.882428"; conf_hi "100.414569"; cov "3.501633";
+chr11 Cufflinks exon 78140156 78140259 1000 . . gene_id "CUFF.43148"; transcript_id "CUFF.43148.1"; exon_number "1"; FPKM "54.8483511750"; frac "1.000000"; conf_lo "23.181641"; conf_hi "86.515061"; cov "3.115385";
+chr11 Cufflinks exon 105616462 105616737 1000 . . gene_id "CUFF.48385"; transcript_id "CUFF.48385.1"; exon_number "1"; FPKM "18.9452034252"; frac "1.000000"; conf_lo "7.520816"; conf_hi "30.369591"; cov "1.076087";
+chr12 Cufflinks exon 30701762 30702509 1000 . . gene_id "CUFF.53897"; transcript_id "CUFF.53897.1"; exon_number "1"; FPKM "48.9333329111"; frac "1.000000"; conf_lo "37.780391"; conf_hi "60.086275"; cov "2.779412";
+chr13 Cufflinks exon 49159496 49159569 1000 . . gene_id "CUFF.67788"; transcript_id "CUFF.67788.1"; exon_number "1"; FPKM "44.9657653777"; frac "1.000000"; conf_lo "10.974842"; conf_hi "78.956689"; cov "2.554054";
+chr13 Cufflinks transcript 100200304 100200330 1000 . . gene_id "CUFF.73108"; transcript_id "CUFF.73108.1"; FPKM "123.2395051093"; frac "1.000000"; conf_lo "30.079196"; conf_hi "216.399814"; cov "7.000000";
+chr14 Cufflinks transcript 31949103 31949152 1000 . . gene_id "CUFF.77316"; transcript_id "CUFF.77316.1"; FPKM "85.5634278330"; frac "1.000000"; conf_lo "28.521143"; conf_hi "142.605713"; cov "4.860000";
+chr14 Cufflinks exon 67604227 67604668 1000 . . gene_id "CUFF.81446"; transcript_id "CUFF.81446.1"; exon_number "1"; FPKM "123.6776546104"; frac "1.000000"; conf_lo "100.611653"; conf_hi "146.743656"; cov "7.024887";
+chr14 Cufflinks exon 75165582 75165744 1000 . . gene_id "CUFF.82088"; transcript_id "CUFF.82088.1"; exon_number "1"; FPKM "20.4139057543"; frac "1.000000"; conf_lo "4.982443"; conf_hi "35.845368"; cov "1.159509";
+chr16 Cufflinks transcript 57154027 57154067 1000 . . gene_id "CUFF.103364"; transcript_id "CUFF.103364.1"; FPKM "162.3154457537"; frac "1.000000"; conf_lo "75.554191"; conf_hi "249.076701"; cov "9.219512";
+chr16 Cufflinks exon 74862302 74862560 1000 . . gene_id "CUFF.105450"; transcript_id "CUFF.105450.1"; exon_number "1"; FPKM "11.0120241741"; frac "1.000000"; conf_lo "2.020744"; conf_hi "20.003304"; cov "0.625483";
+chr16 Cufflinks transcript 98168779 98168914 1000 . . gene_id "CUFF.107834"; transcript_id "CUFF.107834.1"; FPKM "24.4666664555"; frac "1.000000"; conf_lo "5.971605"; conf_hi "42.961728"; cov "1.389706";
+chr17 Cufflinks exon 8483212 8483268 1000 . . gene_id "CUFF.108498"; transcript_id "CUFF.108498.1"; exon_number "1"; FPKM "50.0370923000"; frac "1.000000"; conf_lo "9.181978"; conf_hi "90.892207"; cov "2.842105";
+chr17 Cufflinks exon 30355791 30355913 1000 . . gene_id "CUFF.111759"; transcript_id "CUFF.111759.1"; exon_number "1"; FPKM "19.3232673516"; frac "1.000000"; conf_lo "2.040012"; conf_hi "36.606523"; cov "1.097561";
+chr18 Cufflinks transcript 39571718 39571880 1000 . . gene_id "CUFF.123569"; transcript_id "CUFF.123569.1"; FPKM "20.4139057543"; frac "1.000000"; conf_lo "4.982443"; conf_hi "35.845368"; cov "1.159509";
+chr19 Cufflinks exon 17633088 17633203 1000 . . gene_id "CUFF.131333"; transcript_id "CUFF.131333.1"; exon_number "1"; FPKM "20.4893265884"; frac "1.000000"; conf_lo "2.163116"; conf_hi "38.815537"; cov "1.163793";
+chr19 Cufflinks transcript 41997624 41997859 1000 . . gene_id "CUFF.133569"; transcript_id "CUFF.133569.1"; FPKM "28.1988698132"; frac "1.000000"; conf_lo "13.125940"; conf_hi "43.271800"; cov "1.601695";
diff -r 000000000000 -r 8dd8e89c0603 test-data/tophat_in1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tophat_in1.fasta Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,14 @@
+>test_chromosome
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ACTACTATCTGACTAGACTGGAGGCGCTTGCGACTGAGCTAGGACGTGCC
+ACTACGGGGATGACGACTAGGACTACGGACGGACTTAGAGCGTCAGATGC
+AGCGACTGGACTATTTAGGACGATCGGACTGAGGAGGGCAGTAGGACGCT
+ACGTATTTGGCGCGCGGCGCTACGGCTGAGCGTCGAGCTTGCGATACGCC
+GTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG
+ACTATTACTTTATTATCTTACTCGGACGTAGACGGATCGGCAACGGGACT
+GTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG
+TTTTCTACTTGAGACTGGGATCGAGGCGGACTTTTTAGGACGGGACTTGC
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
diff -r 000000000000 -r 8dd8e89c0603 tool_data_table_conf.xml.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.sample Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,6 @@
+
+
+
diff -r 000000000000 -r 8dd8e89c0603 tool_dependencies.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff -r 000000000000 -r 8dd8e89c0603 twobit.loc.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/twobit.loc.sample Tue Jan 19 09:34:23 2016 -0500
@@ -0,0 +1,26 @@
+#This is a sample file distributed with Galaxy that is used by some
+#tools. The twobit.loc file has this format (white space characters
+#are TAB characters):
+#
+#
+#
+#So, for example, if you had droPer1 twobit files stored in
+#/depot/data2/galaxy/droPer1/, then the twobit.loc entry
+#would look like this:
+#
+#droPer1 /depot/data2/galaxy/droPer1/droPer1.2bit
+#
+#and your /depot/data2/galaxy/droPer1/ directory would
+#contain all of your twobit files (e.g.):
+#
+#-rw-rw-r-- 1 nate galaxy 48972650 2007-05-04 11:27 droPer1.2bit
+#...etc...
+#
+#Your twobit.loc file should include an entry per line for each twobit
+#file you have stored. For example:
+#
+#droPer1 /depot/data2/galaxy/droPer1/droPer1.2bit
+#apiMel2 /depot/data2/galaxy/apiMel2/apiMel2.2bit
+#droAna1 /depot/data2/galaxy/droAna1/droAna1.2bit
+#droAna2 /depot/data2/galaxy/droAna2/droAna2.2bit
+#...etc...