galaxy-dev
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
September 2009
- 15 participants
- 140 discussions
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/6ed5f088a2ad
changeset: 2722:6ed5f088a2ad
user: guru
date: Fri Sep 18 15:28:18 2009 -0400
description:
Fixed a bug in fasta_formatter tool test case, which was causing the functional tests to fail.
1 file(s) affected in this change:
tools/fastx_toolkit/fasta_formatter.xml
diffs (12 lines):
diff -r bed484895e2d -r 6ed5f088a2ad tools/fastx_toolkit/fasta_formatter.xml
--- a/tools/fastx_toolkit/fasta_formatter.xml Fri Sep 18 15:15:39 2009 -0400
+++ b/tools/fastx_toolkit/fasta_formatter.xml Fri Sep 18 15:28:18 2009 -0400
@@ -21,7 +21,7 @@
<!-- Re-format a FASTA file into a single line -->
<param name="input" value="fasta_formatter1.fasta" />
<param name="width" value="0" />
- <output name="output" file="fastx_formatter1.out" />
+ <output name="output" file="fasta_formatter1.out" />
</test>
<test>
<!-- Re-format a FASTA file into multiple lines wrapping at 60 charactes -->
1
0
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/bed484895e2d
changeset: 2721:bed484895e2d
user: James Taylor <james(a)jamestaylor.org>
date: Fri Sep 18 15:15:39 2009 -0400
description:
More work on server side for tracks. Now uses converters instead of indexers. A wiggle to array_tree converter is provided. Still need to purge indexer stuff. This will not work without new bx egg (or likely at all)
12 file(s) affected in this change:
datatypes_conf.xml.sample
lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.py
lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.xml
lib/galaxy/tracks/__init__.py
lib/galaxy/tracks/messages.py
lib/galaxy/tracks/store.py
lib/galaxy/visualization/__init__.py
lib/galaxy/visualization/tracks/__init__.py
lib/galaxy/visualization/tracks/data/__init__.py
lib/galaxy/visualization/tracks/data/array_tree.py
lib/galaxy/web/controllers/tracks.py
static/scripts/trackster.js
diffs (626 lines):
diff -r 3f3712d36034 -r bed484895e2d datatypes_conf.xml.sample
--- a/datatypes_conf.xml.sample Fri Sep 18 15:18:57 2009 -0400
+++ b/datatypes_conf.xml.sample Fri Sep 18 15:15:39 2009 -0400
@@ -58,8 +58,9 @@
<datatype extension="blastxml" type="galaxy.datatypes.xml:BlastXml" display_in_upload="true"/>
<datatype extension="txtseq.zip" type="galaxy.datatypes.images:Txtseq" mimetype="application/zip" display_in_upload="true"/>
<datatype extension="wig" type="galaxy.datatypes.interval:Wiggle" display_in_upload="true">
- <indexer file="wiggle.xml" />
+ <converter file="wiggle_to_array_tree_converter.xml" target_datatype="array_tree"/>
</datatype>
+ <datatype extension="array_tree" type="galaxy.datatypes.data:Data" />
<!-- EMBOSS TOOLS -->
<datatype extension="acedb" type="galaxy.datatypes.data:Text"/>
<datatype extension="asn1" type="galaxy.datatypes.data:Text"/>
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.py Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+from __future__ import division
+
+import sys
+
+import pkg_resources; pkg_resources.require( "bx-python" )
+from bx.arrays.array_tree import *
+from bx.arrays.wiggle import IntervalReader
+
+def main():
+
+ input_fname = sys.argv[1]
+ out_fname = sys.argv[2]
+
+ reader = IntervalReader( open( input_fname ) )
+
+ # Fill array from wiggle
+ d = array_tree_dict_from_wiggle_reader( reader, {} )
+
+ for value in d.itervalues():
+ value.root.build_summary()
+
+ f = open( out_fname, "w" )
+ FileArrayTreeDict.dict_to_file( d, f )
+ f.close()
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.xml Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,14 @@
+<tool id="INDEXER_Wiggle_0" name="Index Wiggle for Track Viewer">
+ <!-- Used internally to generate track indexes -->
+ <command interpreter="python">wiggle_to_array_tree_converter.py $input $output</command>
+ <inputs>
+ <page>
+ <param format="wiggle" name="input" type="data" label="Choose wiggle"/>
+ </page>
+ </inputs>
+ <outputs>
+ <data format="array_tree" name="output"/>
+ </outputs>
+ <help>
+ </help>
+</tool>
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/tracks/messages.py
--- a/lib/galaxy/tracks/messages.py Fri Sep 18 15:18:57 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-PENDING = "pending"
-NO_DATA = "no data"
-NO_CHROMOSOME = "no chromosome"
-DATA = "data"
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/tracks/store.py
--- a/lib/galaxy/tracks/store.py Fri Sep 18 15:18:57 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-import os
-import re
-from string import Template
-from galaxy.util import sanitize_text
-
-# extra mappings/escape to keep users from traversing around the
-# filesystem and wreaking havoc
-extra_mappings = { r"/": "__fs__", r"^manifest.tab$": "__manifest.tab__" }
-
-def sanitize_name( name ):
- name = sanitize_text( name )
- for key, value in extra_mappings.items():
- name = re.sub( key, value, name )
- return name
-
-class TemplateSubber( object ):
- def __init__(self, obj):
- self.obj = obj
- def get( self, key, default=None ):
- return getattr(self.obj, key, default)
- def __getitem__(self, key):
- return self.get(key)
-
-class TrackStoreManager( object ):
- def __init__(self, path=""):
- self.path = path
-
- def get( self, dataset ):
- s = Template(self.path)
- return TrackStore( path=s.substitute(TemplateSubber(dataset)) )
-
-class TrackStore( object ):
- MANIFEST_NAME = "manifest.tab"
-
- def __init__(self, path=""):
- self.path = path
-
- def get_manifest( self ):
- if not self.exists: raise self.DoesNotExist("TrackStore at %s does not exist." % self.path)
- manifest_path = os.path.join( self.path, self.MANIFEST_NAME )
- if os.path.exists( manifest_path ):
- manifest = {}
- for line in open( manifest_path ):
- line = line.rstrip("\n\r")
- fields = line.split("\t")
- manifest[fields[0]] = fields[1:]
- return manifest
- else:
- raise self.DoesNotExist( "Manifest for TrackStore object could not be found." )
-
- def get(self, chrom="chr1", resolution=None, **kwargs):
- if not self.exists: raise self.DoesNotExist("TrackStore at %s does not exist." % self.path)
- object_path = self._get_object_path( chrom, resolution )
- if os.path.exists( object_path ):
- return open( object_path, "rb" )
- else:
- try:
- return kwargs['default']
- except KeyError:
- raise self.DoesNotExist("TrackStore object at %s does not exist." % object_path )
-
- def set(self, chrom="chr1", resolution=None, data=None):
- if not self.exists: self._build_path( self.path )
- if not data: return
- object_path = self._get_object_path( chrom, resolution )
- fd = open( object_path, "wb" )
- fd.write( data )
- fd.close()
-
- def _get_object_path( self, chrom, resolution ):
- object_name = sanitize_name(chrom)
- if resolution: object_name += "_%d" % resolution
- return os.path.join( self.path, object_name )
-
- def _build_path( self, path ):
- try:
- os.mkdir( path )
- except OSError:
- self._build_path( os.path.dirname( path ) )
- os.mkdir( path )
-
- @property
- def exists(self):
- return os.path.exists( self.path )
-
- class DoesNotExist( Exception ):
- pass
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/visualization/__init__.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/visualization/__init__.py Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,3 @@
+"""
+Package for Galaxy visulization plugins.
+"""
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/visualization/tracks/__init__.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/visualization/tracks/__init__.py Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,3 @@
+"""
+Package for track style visulization using the trackster UI.
+"""
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/visualization/tracks/data/__init__.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/visualization/tracks/data/__init__.py Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,3 @@
+"""
+Package for track data providers
+"""
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/visualization/tracks/data/array_tree.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/visualization/tracks/data/array_tree.py Fri Sep 18 15:15:39 2009 -0400
@@ -0,0 +1,50 @@
+"""
+Array tree data provider for Galaxy track browser.
+"""
+
+import pkg_resources; pkg_resources.require( "bx-python" )
+from bx.arrays.array_tree import FileArrayTreeDict
+from math import floor, ceil, log
+
+# Maybe this should be included in the datatype itself, so users can add their
+# own types to the browser as long as they return the right format of data?
+
+# FIXME: Assuming block size is always 1000 for the moment
+BLOCK_SIZE = 1000
+
+class ArrayTreeDataProvider( object ):
+ def __init__( self, dataset ):
+ self.dataset = dataset
+ def get_data( self, chrom, start, end ):
+ start = int( start )
+ end = int( end )
+ level = int( ceil( log( end - start, BLOCK_SIZE ) ) ) - 1
+ print "!!!!", start, end, level
+ # Open the file
+ print self.dataset.file_name
+ d = FileArrayTreeDict( open( self.dataset.file_name ) )
+ # Get the right chromosome
+ try:
+ chrom_array_tree = d[chrom]
+ except KeyError:
+ return None
+ # Is the requested level valid?
+ assert 0 <= level <= chrom_array_tree.levels
+ # Calculate the actual start/range/step of the block we're getting
+ size = BLOCK_SIZE ** (level+1)
+ block_start = ( start // BLOCK_SIZE ) * BLOCK_SIZE
+ block_step = size // BLOCK_SIZE
+ indexes = range( block_start, block_start + size, block_step )
+ # Return either data point or a summary depending on the level
+ if level > 0:
+ s = chrom_array_tree.get_summary( start, level )
+ if s is not None:
+ return zip( indexes, map( float, s.sums / s.counts ) )
+ else:
+ return None
+ else:
+ v = chrom_array_tree.get_leaf( start )
+ if v is not None:
+ return zip( indexes, map( float, v ) )
+ else:
+ return None
\ No newline at end of file
diff -r 3f3712d36034 -r bed484895e2d lib/galaxy/web/controllers/tracks.py
--- a/lib/galaxy/web/controllers/tracks.py Fri Sep 18 15:18:57 2009 -0400
+++ b/lib/galaxy/web/controllers/tracks.py Fri Sep 18 15:15:39 2009 -0400
@@ -9,18 +9,44 @@
Problems
--------
- - Assumes that the only indexing type in Galaxy is for this particular
- application. Thus, datatypes can only have one indexer, and the presence
- of an indexer results in assuming that datatype can be displayed as a track.
-
+ - Only line tracks supported
+ - Resolutions are a bit wonky
+ - Must have a LEN file, not currently able to infer from data (not sure we
+ need to support that, but need to make user defined build support better)
"""
import math
-from galaxy.tracks import messages
from galaxy.util.json import to_json_string
from galaxy.web.base.controller import *
from galaxy.web.framework import simplejson
+from galaxy.util.bunch import Bunch
+
+from galaxy.visualization.tracks.data.array_tree import ArrayTreeDataProvider
+
+# Message strings returned to browser
+messages = Bunch(
+ PENDING = "pending",
+ NO_DATA = "no data",
+ NO_CHROMOSOME = "no chromosome",
+ DATA = "data"
+)
+
+# Dataset type required for each track type. This needs to be more flexible,
+# there might be mutliple types of indexes that suffice for a given track type.
+track_type_to_dataset_type = {
+ "line": "array_tree"
+}
+
+# Mapping from dataset type to a class that can fetch data from a file of that
+# type. This also needs to be more flexible.
+dataset_type_to_data_provider = {
+ "array_tree": ArrayTreeDataProvider
+}
+
+# FIXME: hardcoding this for now, but it should be derived from the available
+# converters
+browsable_types = set( ["wig" ] )
class TracksController( BaseController ):
"""
@@ -41,24 +67,26 @@
session = trans.sa_session
# If the user clicked the submit button explicately, try to build the browser
if browse and dataset_ids:
+ if not isinstance( dataset_ids, list ):
+ dataset_ids = [ dataset_ids ]
dataset_ids = ",".join( map( str, dataset_ids ) )
trans.response.send_redirect( web.url_for( controller='tracks', action='browser', chrom="", dataset_ids=dataset_ids ) )
- return
- # Determine the set of all dbkeys that are used in the current history
- dbkeys = [ d.metadata.dbkey for d in trans.get_history().datasets if not d.deleted ]
- dbkey_set = set( dbkeys )
- # If a dbkey argument was not provided, or is no longer valid, default
- # to the first one
- if dbkey is None or dbkey not in dbkey_set:
- dbkey = dbkeys[0]
- # Find all datasets in the current history that are of that dbkey and
- # have an indexer.
- datasets = {}
- for dataset in session.query( model.HistoryDatasetAssociation ).filter_by( deleted=False, history_id=trans.history.id ):
- if dataset.metadata.dbkey == dbkey and trans.app.datatypes_registry.get_indexers_by_datatype( dataset.extension ):
- datasets[dataset.id] = dataset.name
- # Render the template
- return trans.fill_template( "tracks/new_browser.mako", dbkey=dbkey, dbkey_set=dbkey_set, datasets=datasets )
+ else:
+ # Determine the set of all dbkeys that are used in the current history
+ dbkeys = [ d.metadata.dbkey for d in trans.get_history().datasets if not d.deleted ]
+ dbkey_set = set( dbkeys )
+ # If a dbkey argument was not provided, or is no longer valid, default
+ # to the first one
+ if dbkey is None or dbkey not in dbkey_set:
+ dbkey = dbkeys[0]
+ # Find all datasets in the current history that are of that dbkey
+ # and can be displayed
+ datasets = {}
+ for dataset in session.query( model.HistoryDatasetAssociation ).filter_by( deleted=False, history_id=trans.history.id ):
+ if dataset.metadata.dbkey == dbkey and dataset.extension in browsable_types:
+ datasets[dataset.id] = dataset.name
+ # Render the template
+ return trans.fill_template( "tracks/new_browser.mako", dbkey=dbkey, dbkey_set=dbkey_set, datasets=datasets )
@web.expose
def browser(self, trans, dataset_ids, chrom=""):
@@ -75,13 +103,15 @@
"id": dataset.id
} )
dbkey = dataset.dbkey
- LEN = self._chroms(trans, dbkey ).get(chrom,0)
+ chrom_lengths = self._chroms( trans, dbkey )
+ if chrom_lengths is None:
+ error( "No chromosome lengths file found for '%s'" )
return trans.fill_template( 'tracks/browser.mako',
dataset_ids=dataset_ids,
tracks=tracks,
chrom=chrom,
dbkey=dbkey,
- LEN=LEN )
+ LEN=chrom_lengths.get( chrom, 0 ) )
@web.json
def chroms(self, trans, dbkey=None ):
@@ -91,85 +121,86 @@
"""
Called by the browser to get a list of valid chromosomes and lengths
"""
+ # If there is any dataset in the history of extension `len`, this will
+ # use it
db_manifest = trans.db_dataset_for( dbkey )
if not db_manifest:
db_manifest = os.path.join( trans.app.config.tool_data_path, 'shared','ucsc','chrom', "%s.len" % dbkey )
else:
db_manifest = db_manifest.file_name
manifest = {}
- if os.path.exists( db_manifest ):
- for line in open( db_manifest ):
- if line.startswith("#"): continue
- line = line.rstrip("\r\n")
- fields = line.split("\t")
- manifest[fields[0]] = int(fields[1])
- else:
- # try to fake a manifest by reading track stores
- datasets = trans.app.model.HistoryDatasetAssociation.filter_by(deleted=False, history_id=trans.history.id).all()
- for dataset in datasets:
- if not dataset.metadata.dbkey == dbkey: continue
- track_store = trans.app.track_store.get( dataset )
- if track_store.exists:
- try:
- for chrom, fields in track_store.get_manifest().items():
- manifest[chrom] = max(manifest.get(chrom, 0), int(fields[0]))
- except track_store.DoesNotExist:
- pass
+ if not os.path.exists( db_manifest ):
+ return None
+ for line in open( db_manifest ):
+ if line.startswith("#"): continue
+ line = line.rstrip("\r\n")
+ fields = line.split("\t")
+ manifest[fields[0]] = int(fields[1])
return manifest
-
- @web.json
- def data( self, trans, dataset_id, chrom="", low="", high="" ):
+
+ @web.json
+ def data( self, trans, dataset_id, track_type, chrom, low, high ):
"""
Called by the browser to request a block of data
"""
+ # Load the requested dataset
dataset = trans.app.model.HistoryDatasetAssociation.get( dataset_id )
- if not dataset: return messages.NO_DATA
+ # No dataset for that id
+ if not dataset:
+ return messages.NO_DATA
+ # Dataset is in error state, can't display
if dataset.state == trans.app.model.Job.states.ERROR:
return messages.NO_DATA
- if not dataset.state == trans.app.model.Job.states.OK:
+ # Dataset is still being generated
+ if dataset.state != trans.app.model.Job.states.OK:
return messages.PENDING
- track_store = trans.app.track_store.get( dataset )
- if not track_store.exists:
- # Test if we can make a track
- indexers = trans.app.datatypes_registry.get_indexers_by_datatype( dataset.extension )
- if indexers:
- tool = indexers[0] # They are sorted by class chain so use the top one
- # If we can, return pending and launch job
- job = trans.app.model.Job()
- job.session_id = trans.get_galaxy_session().id
- job.history_id = trans.history.id
- job.tool_id = tool.id
- job.tool_version = "1.0.0"
- job.add_input_dataset( "input_dataset", dataset )
- job.add_parameter( "input_dataset", to_json_string( dataset.id ) )
- # This is odd
- # job.add_output_dataset( "input_dataset", dataset )
- # create store path, this is rather unclear?
- track_store.set()
- job.add_parameter( "store_path", to_json_string( track_store.path ) )
- job.flush()
- trans.app.job_manager.job_queue.put( job.id, tool )
- return messages.PENDING
- else:
- return messages.NO_DATA
- else:
- # Data for that chromosome or resolution does not exist?
- # HACK: we're "pending" because the store exists without a manifest
- try:
- track_store.get_manifest()
- except track_store.DoesNotExist:
- return messages.PENDING
- if chrom and low and high:
- low = math.floor(float(low))
- high = math.ceil(float(high))
- resolution = dataset.datatype.get_track_resolution( dataset, low, high )
- try:
- data = track_store.get( chrom, resolution )
- except track_store.DoesNotExist:
- return messages.NO_DATA
- window = dataset.datatype.get_track_window( dataset, data, low, high )
- glob = {"data":window, "type":dataset.datatype.get_track_type()};
- if resolution: glob["resolution"] = resolution
- return window
- else:
- return messages.DATA
+ # Determine what to return based on the type of track being drawn.
+ converted_dataset_type = track_type_to_dataset_type[track_type]
+ converted_dataset = self.__dataset_as_type( trans, dataset, converted_dataset_type )
+ # If at this point we still don't have an `array_tree_dataset`, there
+ # is now way we can display this data as an array tree
+ if converted_dataset is None:
+ return messages.NO_DATA
+ # Need to check states again for the converted version
+ if converted_dataset.state == model.Dataset.states.ERROR:
+ return messages.NO_DATA
+ if converted_dataset.state != model.Dataset.states.OK:
+ return messages.PENDING
+ # We have a dataset in the right format that is ready to use, wrap in
+ # a data provider that knows how to access it
+ data_provider = dataset_type_to_data_provider[ converted_dataset_type ]( converted_dataset )
+ # Get the requested chunk of data
+ data = data_provider.get_data( chrom, low, high )
+ # Pack into a dictionary and return
+ return data
+
+ def __dataset_as_type( self, trans, dataset, type ):
+ """
+ Given a dataset, try to find a way to adapt it to a different type. If the
+ dataset is already of that type it is returned, if it can be converted a
+ converted dataset (possibly new) is returned, if it cannot be converted,
+ None is returned.
+ """
+ # Already of correct type
+ if dataset.extension == type:
+ return dataset
+ # See if we can convert the dataset
+ if type not in dataset.get_converter_types():
+ log.debug( "Converstion from '%s' to '%d' not possible", dataset.extension, type )
+ return None
+ # See if converted dataset already exists
+ converted_datasets = dataset.get_converted_files_by_type( type )
+ if converted_datasets:
+ for d in converted_datasets:
+ if d and d.state != 'error':
+ return d
+ # Conversion is possible but doesn't exist yet, run converter here
+ # FIXME: this is largely duplicated from DefaultToolAction
+ assoc = model.ImplicitlyConvertedDatasetAssociation( parent = dataset, file_type = type, metadata_safe = False )
+ new_dataset = dataset.datatype.convert_dataset( trans, dataset, type, return_output = True, visible = False ).values()[0]
+ new_dataset.hid = dataset.hid # Hrrmmm....
+ new_dataset.name = dataset.name
+ new_dataset.flush()
+ assoc.dataset = new_dataset
+ assoc.flush()
+ return new_dataset
diff -r 3f3712d36034 -r bed484895e2d static/scripts/trackster.js
--- a/static/scripts/trackster.js Fri Sep 18 15:18:57 2009 -0400
+++ b/static/scripts/trackster.js Fri Sep 18 15:15:39 2009 -0400
@@ -1,4 +1,8 @@
var DENSITY = 1000;
+
+var BLOCK_SIZE = 1000;
+
+var log = function( x, b ) { return Math.log( x ) / Math.log( b ) }
var View = function( chr, length, low, high ) {
this.chr = chr;
@@ -83,9 +87,12 @@
high = this.view.high,
range = high - low;
- var resolution = Math.pow( 10, Math.ceil( Math.log( range / DENSITY ) / Math.log( 10 ) ) );
+ var resolution = Math.pow( BLOCK_SIZE, Math.floor( log( range, BLOCK_SIZE ) ) );
+ // Math.pow( 10, Math.ceil( Math.log( range / DENSITY ) / Math.log( 10 ) ) );
+
+ console//.log( "resolution:", resolution );
resolution = Math.max( resolution, 1 );
- resolution = Math.min( resolution, 100000 );
+ resolution = Math.min( resolution, 1000000 );
var parent_element = $("<div style='position: relative;'></div>");
this.content_div.children( ":first" ).remove();
@@ -155,7 +162,7 @@
// use closure to preserve this and parameters for getJSON
var fetcher = function (ref) {
return function () {
- $.getJSON( TRACKSTER_DATA_URL + ref.type, { chrom: ref.view.chr, low: low, high: high, dataset_id: ref.track.dataset_id }, function ( data ) {
+ $.getJSON( TRACKSTER_DATA_URL, { track_type: ref.type, chrom: ref.view.chr, low: low, high: high, dataset_id: ref.track.dataset_id }, function ( data ) {
if( data == "pending" ) {
setTimeout( fetcher, 5000 );
} else {
@@ -175,7 +182,7 @@
Track.call( this, name, view, parent_element );
this.container_div.addClass( "line-track" );
this.dataset_id = dataset_id;
- this.cache = new DataCache( "", this, view );
+ this.cache = new DataCache( "line", this, view );
};
$.extend( LineTrack.prototype, TiledTrack.prototype, {
make_container: function () {
@@ -209,35 +216,37 @@
var canvas = element;
canvas.get(0).width = canvas.width();
canvas.get(0).height = canvas.height();
- var ctx = canvas.get(0).getContext("2d");
- var in_path = false;
- ctx.beginPath();
- var data = chunk.values;
- for ( var i = 0; i < data.length - 1; i++ ) {
- var x1 = data[i][0] - tile_low;
- var y1 = data[i][1];
- var x2 = data[i+1][0] - tile_low;
- var y2 = data[i+1][1];
- console.log( x1, y1, x2, y2 );
- // Missing data causes us to stop drawing
- if ( isNaN( y1 ) || isNaN( y2 ) ) {
- in_path = false;
- } else {
- // Translate
- x1 = x1 * w_scale;
- x2 = x2 * w_scale;
- y1 = h_scale - y1 * ( h_scale );
- y2 = h_scale - y2 * ( h_scale );
- if ( in_path ) {
- ctx.lineTo( x1, y1, x2, y2 );
- } else {
- ctx.moveTo( x1, y1, x2, y2 );
- in_path = true;
- }
- }
- }
- ctx.stroke();
- return element;
+ var data = chunk.values;
+ if ( data ) {
+ var ctx = canvas.get(0).getContext("2d");
+ var in_path = false;
+ ctx.beginPath();
+ // console.log( "Drawing tile" );
+ for ( var i = 0; i < data.length - 1; i++ ) {
+ var x1 = data[i][0] - tile_low;
+ var y1 = data[i][1];
+ var x2 = data[i+1][0] - tile_low;
+ var y2 = data[i+1][1];
+ // Missing data causes us to stop drawing
+ if ( isNaN( y1 ) || isNaN( y2 ) ) {
+ in_path = false;
+ } else {
+ // Translate
+ x1 = x1 * w_scale;
+ x2 = x2 * w_scale;
+ y1 = h_scale - y1 * ( h_scale );
+ y2 = h_scale - y2 * ( h_scale );
+ if ( in_path ) {
+ ctx.lineTo( x1, y1, x2, y2 );
+ } else {
+ ctx.moveTo( x1, y1, x2, y2 );
+ in_path = true;
+ }
+ }
+ }
+ ctx.stroke();
+ }
+ return element;
}
});
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/3f3712d36034
changeset: 2720:3f3712d36034
user: rc
date: Fri Sep 18 15:18:57 2009 -0400
description:
Galaxy AMQP Listener, first pass
Added a check for testing completed requests in Requests functional tests
7 file(s) affected in this change:
lib/galaxy/web/controllers/requests_admin.py
lib/galaxy/web/framework/helpers/grids.py
run_galaxy_listener.sh
scripts/galaxy_messaging/amqp_consumer.py
scripts/galaxy_messaging/galaxydb_interface.py
test/functional/test_forms_and_requests.py
universe_wsgi.ini.sample
diffs (300 lines):
diff -r 7f18940a4821 -r 3f3712d36034 lib/galaxy/web/controllers/requests_admin.py
--- a/lib/galaxy/web/controllers/requests_admin.py Fri Sep 18 14:21:59 2009 -0400
+++ b/lib/galaxy/web/controllers/requests_admin.py Fri Sep 18 15:18:57 2009 -0400
@@ -98,7 +98,6 @@
else:
self.request_grid.default_filter = dict(state=kwargs['show_filter'], deleted=False)
self.request_grid.show_filter = kwargs.get('show_filter', trans.app.model.Request.states.SUBMITTED)
- self.__update_request_state(trans)
# Render the list view
return self.request_grid( trans, **kwargs )
@web.expose
@@ -980,12 +979,6 @@
request_id=request.id,
msg='Bar codes has been saved for this request',
messagetype='done'))
-
- def __update_request_state(self, trans):
- requests = trans.app.model.Request.query.filter_by(deleted=False,
- state=trans.app.model.Request.states.SUBMITTED)
- for request in requests:
- self.__set_request_state(request)
def __set_request_state(self, request):
# check if all the samples of the current request are in the final state
diff -r 7f18940a4821 -r 3f3712d36034 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Fri Sep 18 14:21:59 2009 -0400
+++ b/lib/galaxy/web/framework/helpers/grids.py Fri Sep 18 15:18:57 2009 -0400
@@ -121,7 +121,7 @@
return None
def build_initial_query( self, session ):
return session.query( self.model_class )
- def apply_default_filter( self, trans, query ):
+ def apply_default_filter( self, trans, query, **kwargs):
return query
class GridColumn( object ):
diff -r 7f18940a4821 -r 3f3712d36034 run_galaxy_listener.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/run_galaxy_listener.sh Fri Sep 18 15:18:57 2009 -0400
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+python scripts/galaxy_messaging/amqp_consumer.py
\ No newline at end of file
diff -r 7f18940a4821 -r 3f3712d36034 scripts/galaxy_messaging/amqp_consumer.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/galaxy_messaging/amqp_consumer.py Fri Sep 18 15:18:57 2009 -0400
@@ -0,0 +1,68 @@
+from amqplib import client_0_8 as amqp
+import ConfigParser
+import sys
+import optparse
+import xml.dom.minidom
+from galaxydb_interface import GalaxyDbInterface
+
+galaxy_config_file = 'universe_wsgi.ini'
+global dbconnstr
+
+def get_value(dom, tag_name):
+ '''
+ This method extracts the tag value from the xml message
+ '''
+ nodelist = dom.getElementsByTagName(tag_name)[0].childNodes
+ rc = ""
+ for node in nodelist:
+ if node.nodeType == node.TEXT_NODE:
+ rc = rc + node.data
+ return rc
+
+def recv_callback(msg):
+ #print 'Received: ' + msg.body + ' from channel #' + str(msg.channel.channel_id)
+ dom = xml.dom.minidom.parseString(msg.body)
+ barcode = get_value(dom, 'barcode')
+ state = get_value(dom, 'state')
+ print barcode, state
+ # update the galaxy db
+ galaxy = GalaxyDbInterface(dbconnstr)
+ sample_id = galaxy.get_sample_id(field_name='bar_code', value=barcode)
+ if sample_id == -1:
+ print 'Invalid barcode.'
+ return
+ galaxy.change_state(sample_id, state)
+
+def main():
+ config = ConfigParser.ConfigParser()
+ config.read(galaxy_config_file)
+ global dbconnstr
+ dbconnstr = config.get("app:main", "database_connection")
+ amqp_config = {}
+ for option in config.options("galaxy:amqp"):
+ amqp_config[option] = config.get("galaxy:amqp", option)
+ print amqp_config
+ conn = amqp.Connection(host=amqp_config['host']+":"+amqp_config['port'],
+ userid=amqp_config['userid'],
+ password=amqp_config['password'],
+ virtual_host=amqp_config['virtual_host'],
+ insist=False)
+ chan = conn.channel()
+ chan.queue_declare(queue=amqp_config['queue'], durable=True, exclusive=True, auto_delete=False)
+ chan.exchange_declare(exchange=amqp_config['exchange'], type="direct", durable=True, auto_delete=False,)
+ chan.queue_bind(queue=amqp_config['queue'],
+ exchange=amqp_config['exchange'],
+ routing_key=amqp_config['routing_key'])
+
+ chan.basic_consume(queue=amqp_config['queue'],
+ no_ack=True,
+ callback=recv_callback,
+ consumer_tag="testtag")
+ while True:
+ chan.wait()
+ chan.basic_cancel("testtag")
+ chan.close()
+ conn.close()
+
+if __name__ == '__main__':
+ main()
\ No newline at end of file
diff -r 7f18940a4821 -r 3f3712d36034 scripts/galaxy_messaging/galaxydb_interface.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/galaxy_messaging/galaxydb_interface.py Fri Sep 18 15:18:57 2009 -0400
@@ -0,0 +1,141 @@
+#/usr/bin/python
+
+from sqlalchemy import *
+from sqlalchemy.orm import sessionmaker
+from datetime import datetime, timedelta
+import sys
+import optparse
+import os
+import time
+import logging
+
+logging.basicConfig(level=logging.DEBUG)
+log = logging.getLogger( 'GalaxyDbInterface' )
+
+class GalaxyDbInterface(object):
+
+ def __init__(self, dbstr):
+ self.dbstr = dbstr
+ self.db_engine = create_engine(self.dbstr)
+# self.db_engine.echo = True
+ self.metadata = MetaData(self.db_engine)
+ self.session = sessionmaker(bind=self.db_engine)
+ self.event_table = Table('sample_event', self.metadata, autoload=True )
+ self.sample_table = Table('sample', self.metadata, autoload=True )
+ self.request_table = Table('request', self.metadata, autoload=True )
+ self.state_table = Table('sample_state', self.metadata, autoload=True )
+
+ def get_sample_id(self, field_name='bar_code', value=None):
+ if not value:
+ return -1
+ sample_id = -1
+ if field_name =='name':
+ stmt = select(columns=[self.sample_table.c.id],
+ whereclause=self.sample_table.c.name==value)
+ result = stmt.execute()
+ sample_id = result.fetchone()[0]
+ elif field_name == 'bar_code':
+ stmt = select(columns=[self.sample_table.c.id],
+ whereclause=self.sample_table.c.bar_code==value)
+ result = stmt.execute()
+ x = result.fetchone()
+ if x:
+ sample_id = x[0]
+ log.debug('Sample ID: %i' % sample_id)
+ return sample_id
+ log.warning('This sample %s %s does not belong to any sample in the database.' % (field_name, value))
+ return -1
+
+ def current_state(self, sample_id):
+ '''
+ This method returns the current state of the sample for the given sample_id
+ '''
+ stmt = select(columns=[self.event_table.c.sample_state_id],
+ whereclause=self.event_table.c.sample_id==sample_id,
+ order_by=self.event_table.c.update_time.desc())
+ result = stmt.execute()
+ all_states = result.fetchall()
+ current_state_id = all_states[0][0]
+ return current_state_id
+
+ def all_possible_states(self, sample_id):
+ subsubquery = select(columns=[self.sample_table.c.request_id],
+ whereclause=self.sample_table.c.id==sample_id)
+ self.request_id = subsubquery.execute().fetchall()[0][0]
+ log.debug('REQUESTID: %i' % self.request_id)
+ subquery = select(columns=[self.request_table.c.request_type_id],
+ whereclause=self.request_table.c.id==self.request_id)
+ request_type_id = subquery.execute().fetchall()[0][0]
+ log.debug('REQUESTTYPEID: %i' % request_type_id)
+ query = select(columns=[self.state_table.c.id, self.state_table.c.name],
+ whereclause=self.state_table.c.request_type_id==request_type_id,
+ order_by=self.state_table.c.id.asc())
+ states = query.execute().fetchall()
+ log.debug('POSSIBLESTATES: '+ str(states))
+ return states
+
+ def change_state(self, sample_id, new_state=None):
+ '''
+ This method changes the state of the sample to the the 'new_state'
+ '''
+ if not new_state:
+ return
+ new_state_id = -1
+ # find the state_id for this new state in the list of possible states
+ possible_states = self.all_possible_states(sample_id)
+ for state_id, state_name in possible_states:
+ if new_state == state_name:
+ new_state_id = state_id
+ if new_state_id == -1:
+ return
+ log.debug('Updating sample_id %i state to %s' % (sample_id, new_state))
+ d = timedelta(hours=4)
+ i = self.event_table.insert()
+ i.execute(update_time=datetime.now()+d,
+ create_time=datetime.now()+d,
+ sample_id=sample_id,
+ sample_state_id=int(new_state_id),
+ comment='bar code scanner')
+ # if all the samples for this request are in the final state
+ # then change the request state to 'Complete'
+ result = select(columns=[self.sample_table.c.id],
+ whereclause=self.sample_table.c.request_id==self.request_id).execute()
+ sample_id_list = result.fetchall()
+ request_complete = True
+ for sid in sample_id_list:
+ current_state_id = self.current_state(sid[0])
+ if current_state_id != possible_states[-1][0]:
+ request_complete = False
+ break
+ if request_complete:
+ request_state = 'Complete'
+ else:
+ request_state = 'Submitted'
+ log.debug('Updating request_id %i state to "%s"' % (self.request_id, request_state))
+ d = timedelta(hours=4)
+ i = self.request_table.update(whereclause=self.request_table.c.id==self.request_id,
+ values={self.request_table.c.state: request_state})
+ i.execute()
+
+
+
+if __name__ == '__main__':
+ print '''This file should not be run directly. To start the Galaxy AMQP Listener:
+ %sh run_galaxy_listener.sh'''
+# dbstr = 'postgres://postgres:postgres@localhost/galaxy_ft'
+#
+# parser = optparse.OptionParser()
+# parser.add_option('-n', '--name', help='name of the sample field', dest='name', \
+# action='store', default='bar_code')
+# parser.add_option('-v', '--value', help='value of the sample field', dest='value', \
+# action='store')
+# parser.add_option('-s', '--state', help='new state of the sample', dest='state', \
+# action='store')
+# (opts, args) = parser.parse_args()
+#
+# gs = GalaxyDbInterface(dbstr)
+# sample_id = gs.get_sample_id(field_name=opts.name, value=opts.value)
+# gs.change_state(sample_id, opts.state)
+
+
+
diff -r 7f18940a4821 -r 3f3712d36034 test/functional/test_forms_and_requests.py
--- a/test/functional/test_forms_and_requests.py Fri Sep 18 14:21:59 2009 -0400
+++ b/test/functional/test_forms_and_requests.py Fri Sep 18 15:18:57 2009 -0400
@@ -247,6 +247,8 @@
self.home()
request_one.refresh()
# check if the request's state is now set to 'complete'
+ self.visit_url('%s/requests_admin/list?show_filter=Complete' % self.url)
+ self.check_page_for_string( request_one.name )
assert request_one.state is not request_one.states.COMPLETE, "The state of the request '%s' should be set to '%s'" % ( request_one.name, request_one.states.COMPLETE )
# def test_40_admin_create_request_on_behalf_of_regular_user( self ):
# """Testing creating and submitting a request as an admin on behalf of a regular user"""
diff -r 7f18940a4821 -r 3f3712d36034 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Fri Sep 18 14:21:59 2009 -0400
+++ b/universe_wsgi.ini.sample Fri Sep 18 15:18:57 2009 -0400
@@ -240,3 +240,22 @@
ucsc_table_direct_archaea1 = local:///
ucsc_table_direct_test1 = local:///
upload1 = local:///
+
+
+# Galaxy Message Queue
+# Galaxy uses AMQ protocol to receive messages from external sources like
+# bar code scanners. Galaxy has been tested against RabbitMQ AMQP implementation.
+# For Galaxy to receive messages from a message queue the RabbitMQ server has
+# to be set up with a user account and other parameters listed below. The 'host'
+# and 'port' fields should point to where the RabbitMQ server is running.
+
+#[galaxy:amqp]
+#host = 127.0.0.1
+#port = 5672
+#userid = galaxy
+#password = galaxy
+#virtual_host = galaxy_messaging_engine
+#queue = galaxy_queue
+#exchange = galaxy_exchange
+#routing_key = bar_code_scanner
+
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/cbf8667219a4
changeset: 2718:cbf8667219a4
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Fri Sep 18 13:59:50 2009 -0400
description:
Unicode support for tags + sqlite
1 file(s) affected in this change:
templates/tagging_common.mako
diffs (16 lines):
diff -r 99b5db852719 -r cbf8667219a4 templates/tagging_common.mako
--- a/templates/tagging_common.mako Fri Sep 18 13:58:43 2009 -0400
+++ b/templates/tagging_common.mako Fri Sep 18 13:59:50 2009 -0400
@@ -13,7 +13,11 @@
tag_value = ""
if tag.value is not None:
tag_value = tag.user_value
- tag_names_and_values[unicode(tag_name, 'utf-8')] = unicode(tag_value, 'utf-8')
+ ## Tag names and values may be string or unicode object.
+ if isinstance( tag_name, str ):
+ tag_names_and_values[unicode(tag_name, 'utf-8')] = unicode(tag_value, 'utf-8')
+ else: ## isInstance( tag_name, unicode ):
+ tag_names_and_values[tag_name] = tag_value
%>
//
// Returns the number of keys (elements) in an array/dictionary.
1
0
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/7f18940a4821
changeset: 2719:7f18940a4821
user: guru
date: Fri Sep 18 14:21:59 2009 -0400
description:
Adding qualsolid_boxplot_graph.sh script used by SOLiD quality boxplot tool to the distribution.
2 file(s) affected in this change:
tools/solid_tools/qualsolid_boxplot_graph.sh
tools/solid_tools/solid_qual_boxplot.xml
diffs (110 lines):
diff -r cbf8667219a4 -r 7f18940a4821 tools/solid_tools/qualsolid_boxplot_graph.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/solid_tools/qualsolid_boxplot_graph.sh Fri Sep 18 14:21:59 2009 -0400
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# Modified fastq_quality_boxplot_graph.sh from FASTX-toolkit - FASTA/FASTQ preprocessing tools.
+# Copyright (C) 2009 A. Gordon (gordon(a)cshl.edu)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+function usage()
+{
+ echo "SOLiD-Quality BoxPlot plotter"
+ echo "Generates a SOLiD quality score box-plot graph "
+ echo
+ echo "Usage: $0 [-i INPUT.TXT] [-t TITLE] [-p] [-o OUTPUT]"
+ echo
+ echo " [-p] - Generate PostScript (.PS) file. Default is PNG image."
+ echo " [-i INPUT.TXT] - Input file. Should be the output of \"solid_qual_stats\" program."
+ echo " [-o OUTPUT] - Output file name. default is STDOUT."
+ echo " [-t TITLE] - Title (usually the solid file name) - will be plotted on the graph."
+ echo
+ exit
+}
+
+#
+# Input Data columns: #pos cnt min max sum mean Q1 med Q3 IQR lW rW
+# As produced by "solid_qual_stats" program
+
+TITLE="" # default title is empty
+FILENAME=""
+OUTPUTTERM="set term png size 800,600"
+OUTPUTFILE="/dev/stdout" # Default output file is simply "stdout"
+while getopts ":t:i:o:ph" Option
+ do
+ case $Option in
+ # w ) CMD=$OPTARG; FILENAME="PIMSLogList.txt"; TARGET="logfiles"; ;;
+ t ) TITLE="for $OPTARG" ;;
+ i ) FILENAME=$OPTARG ;;
+ o ) OUTPUTFILE="$OPTARG" ;;
+ p ) OUTPUTTERM="set term postscript enhanced color \"Helvetica\" 4" ;;
+ h ) usage ;;
+ * ) echo "unrecognized argument. use '-h' for usage information."; exit -1 ;;
+ esac
+done
+shift $(($OPTIND - 1))
+
+
+if [ "$FILENAME" == "" ]; then
+ usage
+fi
+
+if [ ! -r "$FILENAME" ]; then
+ echo "Error: can't open input file ($1)." >&2
+ exit 1
+fi
+
+#Read number of cycles from the stats file (each line is a cycle, minus the header line)
+#But for the graph, I want xrange to reach (num_cycles+1), so I don't subtract 1 now.
+NUM_CYCLES=$(cat "$FILENAME" | wc -l)
+
+GNUPLOTCMD="
+$OUTPUTTERM
+set boxwidth 0.8
+set size 1,1
+set key Left inside
+set xlabel \"read position\"
+set ylabel \"Quality Score \"
+set title \"Quality Scores $TITLE\"
+#set auto x
+set bars 4.0
+set xrange [ 0: $NUM_CYCLES ]
+set yrange [-2:45]
+set y2range [-2:45]
+set xtics 1
+set x2tics 1
+set ytics 2
+set y2tics 2
+set tics out
+set grid ytics
+set style fill empty
+plot '$FILENAME' using 1:7:11:12:9 with candlesticks lt 1 lw 1 title 'Quartiles' whiskerbars, \
+ '' using 1:8:8:8:8 with candlesticks lt -1 lw 2 title 'Medians'
+"
+
+echo "$GNUPLOTCMD" | gnuplot > "$OUTPUTFILE"
diff -r cbf8667219a4 -r 7f18940a4821 tools/solid_tools/solid_qual_boxplot.xml
--- a/tools/solid_tools/solid_qual_boxplot.xml Fri Sep 18 13:59:50 2009 -0400
+++ b/tools/solid_tools/solid_qual_boxplot.xml Fri Sep 18 14:21:59 2009 -0400
@@ -1,7 +1,7 @@
<tool id="solid_qual_boxplot" name="Quality Boxplot" version="1.0.0">
<description>for SOLiD data</description>
- <command>qualsolid_boxplot_graph.sh -t '$input.name' -i $input -o $output</command>
+ <command interpreter="bash">qualsolid_boxplot_graph.sh -t '$input.name' -i $input -o $output</command>
<inputs>
<param format="txt" name="input" type="data" label="Statistics report file (output of 'Quality Statistics for SOLiD data' tool)" />
1
0
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/99b5db852719
changeset: 2717:99b5db852719
user: Kelly Vincent <kpvincent(a)bx.psu.edu>
date: Fri Sep 18 13:58:43 2009 -0400
description:
Added pileup-to-interval tool to tool_conf.xml.sample
1 file(s) affected in this change:
tool_conf.xml.sample
diffs (11 lines):
diff -r 079541496366 -r 99b5db852719 tool_conf.xml.sample
--- a/tool_conf.xml.sample Fri Sep 18 13:45:14 2009 -0400
+++ b/tool_conf.xml.sample Fri Sep 18 13:58:43 2009 -0400
@@ -207,6 +207,7 @@
<tool file="samtools/sam_merge.xml" />
<tool file="samtools/sam_pileup.xml" />
<tool file="samtools/pileup_parser.xml" />
+ <tool file="samtools/pileup_interval.xml" />
</section>
<section name="Rg Data" id="rgData1">
<tool file="rgenetics/rgenetics_import.xml"/>
1
0
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/079541496366
changeset: 2716:079541496366
user: Nate Coraor <nate(a)bx.psu.edu>
date: Fri Sep 18 13:45:14 2009 -0400
description:
lastz commented as per Anton's instructions, the wrapper and params will be rewritten shortly.
1 file(s) affected in this change:
tool_conf.xml.sample
diffs (12 lines):
diff -r 16993bf0803e -r 079541496366 tool_conf.xml.sample
--- a/tool_conf.xml.sample Fri Sep 18 12:11:43 2009 -0400
+++ b/tool_conf.xml.sample Fri Sep 18 13:45:14 2009 -0400
@@ -194,7 +194,7 @@
<tool file="solid_tools/solid_qual_boxplot.xml" />
</section>
<section name="NGS: Mapping" id="solexa_tools">
- <tool file="sr_mapping/lastz_wrapper.xml" />
+ <!-- <tool file="sr_mapping/lastz_wrapper.xml" /> -->
<tool file="metag_tools/megablast_wrapper.xml" />
<tool file="metag_tools/megablast_xml_parser.xml" />
<tool file="sr_mapping/bowtie_wrapper.xml" />
1
0
21 Sep '09
details: http://www.bx.psu.edu/hg/galaxy/rev/16993bf0803e
changeset: 2715:16993bf0803e
user: Kelly Vincent <kpvincent(a)bx.psu.edu>
date: Fri Sep 18 12:11:43 2009 -0400
description:
Added header removal option to BWA wrapper tool, and cleaned up its test files. Also added the bwa_solid2fastq_modified.pl script to the next gen conversion directory for the solid-to-fastq tool.
16 file(s) affected in this change:
test-data/bwa_wrapper_in0.fastq
test-data/bwa_wrapper_out0.sam
test-data/bwa_wrapper_out0.tabular
test-data/bwa_wrapper_out0b.sam
test-data/bwa_wrapper_out0b.tabular
test-data/bwa_wrapper_out1.sam
test-data/bwa_wrapper_out1.tabular
test-data/bwa_wrapper_out2.sam
test-data/bwa_wrapper_out2.tabular
test-data/bwa_wrapper_out3.sam
test-data/bwa_wrapper_out3.tabular
test-data/bwa_wrapper_out4.sam
test-data/bwa_wrapper_out4.tabular
tools/next_gen_conversion/bwa_solid2fastq_modified.pl
tools/sr_mapping/bwa_wrapper.py
tools/sr_mapping/bwa_wrapper.xml
diffs (1125 lines):
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_in0.fastq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/bwa_wrapper_in0.fastq Fri Sep 18 12:11:43 2009 -0400
@@ -0,0 +1,576 @@
+@1831_573_1004/1
+AATACTTTCGGCGCCCTAAACCAGCTCACTGGGG
++
+><C&&9952+C>5<.?<79,=42<292:<(9/-7
+@1831_573_1050/1
+TTTATGGGTATGGCCGCTCACAGGCCAGCGGCCT
++
+;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
+@1831_573_1067/1
+AAGTATGAGTCATTTACCGGGATGCGAAGAAAAG
++
+++#%(',%/$,+&1#&),)&+'*'*%#$&#%('$
+@1831_573_1219/1
+CGCCCTATAATAATACAGCGCGTTAGACCGCTCA
++
+@@=4/+)5)408?'665>*/5?<61';<3,:,5-
+@1831_573_1242/1
+GCTGAATCGCACCTAGCAACTATAGCCGGGCCGC
++
+>>::>17=A5?@@=;7A=;2.60>82<8=74+;;
+@1831_573_1333/1
+AGAATCGTTACCACACACTGCGTCTGGGTATCCG
++
+='@#%3=.>)/34*117,,/6-4+.9742456<)
+@1831_573_1362/1
+CGATCTCAACCAGGTCCGCGCCCACCCCTGCCTC
++
+B@@?@@?@C@BA?@>@<@8A@?@'.8'?17:,+?
+@1831_573_1448/1
+TCACGCCGGTCCTTGACTGGCGTTCTCTTCGAGG
++
+7=A)?,.@A@@:@@<=/7)@<-#8662%9613&+
+@1831_573_1490/1
+CTCGTCATGTTACGCAAAGGCACGTCACAGCACC
++
+@@@?,@??@$><=>+%/*>*1,)?26&12'9%7.
+@1831_573_1523/1
+ATGGAACGGAACGGGTGAGGAGGGGAACGTAGGG
++
+,//*,#8''.6''6'2&27/80)%�'%#*,2'
+@1831_573_1578/1
+CGAGTAGCAAACAAGACGCCAATCCAGGCGACCC
++
+?=@<@C@?@@??=>@;7<<8<694)3511(+1<.
+@1831_573_1647/1
+AGGGGTTTACACTATTCGACTGGGTGAGAGGCGT
++
+?@@<@@???;A==@@;9?@?3=;6.4/;6:=/;4
+@1831_573_1684/1
+TTCAACTGCGTCGACGTAGCGCACAGGCGTCCGT
++
+>1:8<@39@@??9=;@@<>?@@<;<?7>76?9>?
+@1831_573_1769/1
+TGGACGTATAGTGGCGATGAGCATGTAGGTTCTC
++
+54749&&767%/7;3$-7;3#,3//#,45/#&06
+@1831_573_1853/1
+CAAAACGCCCGGGGCCTCACATGCGCGGCAGTTC
++
+4./B@@72B+/4?@?7?+@9/+99.')2<2&)2&
+@1831_573_1943/1
+ATAACGTATGGCAGTGAACGGGCGGAACCTGCCC
++
+>/*1,),@-)'0*>5'$/?6(a)/.&?8/(')A43,
+@1831_573_1977/1
+GGCGTAGGGCTCATTGTGCAAGTATCCGACCTCC
++
+@?6@8@@9A@=4633A7?9?<3:+7>'@%@?%32
+@1831_574_109/1
+TCGGTTGCGTTACTTCATGGGAGGGCTTTACATT
++
+7651#4817>@65<2:84716=788<1995.7?6
+@1831_574_148/1
+CGAACCTCGTATAACGGAGTAGTCGGAAACAGTC
++
+;->3;;3>//>0;;7=,=4-4/+>029<9<624;
+@1831_574_185/1
+CCGTTTTGCCTAGTAATGCTCGGCGCAGCGTCGC
++
+<4;%%@7>#*>97%6;+8$#<07%1372$%<54#
+@1831_574_243/1
+AGGCACCGTAACTCAGGACATTCTCGATTAGTTA
++
+@@@95@=9?*><45$<@<4%@9?7#=?>7&>?97
+@1831_574_257/1
+ATACCTTCCAAAGCAATAGAATAAAAAACAGTAC
++
+>>B>)@?>B@B?@1%*%,#+00.'(+&5&%#$3&
+@1831_574_293/1
+TGCTGCAAATAAACATACAGCCTTCTAATGACTA
++
+')7'.*%#&$'/.$##$.$&*)+*$#8%&%#&&%
+@1831_574_389/1
+CATGGCTATGCACCGGTTTGTAGCGTACTCGAGA
++
+)$>/>8):2@:213;;.1)@3%64%+)<7)+$92
+@1831_574_575/1
+TTCTTGGCAAGCGCAGATTATGCGTTCCGCCTAG
++
+?@>=?@>8@@@=@6*%&<='5@<<',0<=4*5/<
+@1831_574_592/1
+TCATTTACCACGTCAGGGTCGGAGTCATTCATTA
++
+3-5)19,,<@>4067<2.-864346;9<1/;212
+@1831_574_617/1
+AAGCATCGGCGGGAGCGCAAGCTGGGAAGGTGCC
++
+>@?;>?=@==@>@=5?@+@:@40@><:0)')64-
+@1831_574_725/1
+GACAAGATGGCTATTATTTACAATCCGATCTGCA
++
+'>?52+5=;4$6;<8.1<47*9+?7(+5;-).)4
+@1831_574_734/1
+CCTGTACGAAAGAACGTAGGCATGGGCTGGGGGG
++
+-&.$2&<*(-%):/)%5:)/%7+,9034*A.?70
+@1831_574_824/1
+AGCGCAAATTATGCGTTCCGCCTAGCGGAGAACT
++
+@@@;;),+@<-<7;<&89??&29?<$2:A<);8?
+@1831_574_959/1
+CGCGCTAGGACTCGGCCCCAAGAGACGTTCCGCC
++
+A=;+?@9;/<@;<8#&&/*%(%.0$0$2)+1$-1
+@1831_574_1062/1
+ACCGGTAATATAAGGCAACATGATTACGGCCACG
++
+@821<//:136/8<1/5.427.;>288/0<1$)/
+@1831_574_1092/1
+GACTGGCGAAATCATCGCGGAAAAACCCCTATCA
++
+8?.,98)03%#,,,(,++$'69'#9'7#';6.%2
+@1831_574_1103/1
+ATCTCCTGATTAGACATATCTCCGTAGCTCACGC
++
+??>?@=>@@A<>?=@==<:?<;58'&&):+35'1
+@1831_574_1116/1
+CACCTCACGTGAGTATAGCAGCCCGAGCGTCACC
++
+(a)++,)/)?./)%<)2>.==:8?&;44&/&,)/*4
+@1831_574_1194/1
+TTATCACATTTGGGGATCGGAAGGGACTACTTCG
++
+5>;,??9@9@?@1@@=@3=@>@4?@@94?75/,6
+@1831_574_1204/1
+CTTACTGGTCTGCTGGACATATAGTGGCGATGAA
++
+A5A5B@5:;@@,.9?A1?#.?;3),>82%)='7*
+@1831_574_1306/1
+ATTGCTTAGATCCAGTGGCGCTCAATACAACGGA
++
+2.7&%''.$&#'%##$#'#%')')$'$%$,)'.1
+@1831_574_1387/1
+GTACTTCTCAATGCTGCACTACTATGTACGCCCC
++
+?A??:@?@@9?@@?9C;:>&).,,);&'<&7(/'
+@1831_574_1431/1
+GACCAGTTTCAGGGCTAACCGTCCCTACTCGACC
++
+7?>9BA897;+8*=6#6.+5&-#26$0.,5&'$1
+@1831_574_1560/1
+GGCGTCTTAGGATTGAAGAGGGCCTCCCACCCCC
++
+))&65<4=>99@:597(1&;+&(%&4#,#&&&*$
+@1831_574_1591/1
+TGAGCACTTATGGCTAGGCGTAGGGGACCGTGAG
++
+=<A><?@78@<=;@&@6>8:?,><&&<7>8(8+9
+@1831_574_1624/1
+ACGGGAAGGGCTGGAATCTACCCAGTAGGCATTG
++
+<6.&(,7-+))7..'/;43.)927.(<85&13-)
+@1831_574_1826/1
+TACGTCGCGACCGAGCGTTATATAGTCTGACCCC
++
+@<<,))459<?.+57'-'&6?1)(;1;0&%4,#$
+@1831_574_1903/1
+AGTGCAACATCTGCTTTGCTTATCAGCACACGGC
++
+956?@>;7@@@8:@>8><=9>9>@2=71?1:6;/
+@1831_574_1961/1
+GTTTCACTTCGGTTATTAAGAAACCCAAATGGAA
++
+>-07-@>(2'@<#064@%5%@@6.&<<(9)=:47
+@1831_575_54/1
+TTTCTTATGGGTAGAACAGCTGCCACTGACTGAA
++
+=@@68<2;<8;?@<>+9>7,,6972&57:4&9<8
+@1831_575_80/1
+TCTTTGGGTTTGGGGCAATTTGGTATGTTCGTCT
++
+?5><@?/=5%(&.5)+#/0'/'>#$/'37#()6&
+@1831_575_192/1
+AACTACGCCCCTTAATTACACAGCGCGTTAGACC
++
+:8<,9(.=/)#%8$,4'<,:)3/.'.5<,>-;7'
+@1831_575_197/1
+TTCGCCTACACTTAGATACCTCTTAAACTCAATG
++
+-:?463@A:88?6?437<=.2&1.;@67.4@%2,
+@1831_575_223/1
+ACGCACAAAGGAGCTCGGCGCATAGCAACGCAGA
++
+?>?8?@:?;>+$'%&,+#$.--#%$1'&#-7$&'
+@1831_575_420/1
+CCCACATGGAAAACACTCACCGCCGAACAGAGCG
++
+2?.>?(-''2+..@),$%1@;')1)?+)7.')..
+@1831_575_434/1
+ATCGCTGCGAGGTCACCCTGGTTACGCCCCTTCC
++
+@@><@B@>=@@?>><@?;)@?;6.?=4,'';/3)
+@1831_575_444/1
+TAGGCGACCGTGAGGACAAGAGCTGTTGCCTTGA
++
+2@@;<.=?@<+=:A<<@?<</>@><(<8>4&5;>
+@1831_575_459/1
+CTTATCAGCACACGGTTTACCAGTCCGACTCCAA
++
+@@C@?A@@A@??A@@'6@@B'=;C@'4<=9,@1.
+@1831_575_506/1
+CGCAGAACCCGCACGCTTGTGCTCACCACTGTAC
++
+?)2*5@3+.7=?A:8@,/&):@37/<89'+4*)*
+@1831_575_569/1
+AGCAGACTGCTGTAACACGGTGTGGTGTAAGGAT
++
+'9-,@29+479%&>9#&08=>7#9>,69/+'*3)
+@1831_575_622/1
+CCAAATCCGGCCCAGTAAGTGTCCTGTCGCACCC
++
+A8B=@@?<@?<>>=?96<497)<4/<':4+;74+
+@1831_575_644/1
+CTTGAATGGCGATCTCGTCGAGGAAATACCACTA
++
+<8>.>&,+)8.10':5(/-62&*.=/%(.<&&18
+@1831_575_663/1
+GGCAACTTATCCGCATTGGTCCCACTGGAGCGCA
++
+@@@@A</;A>@6>0792<5966:?;25+:><1,+
+@1831_575_681/1
+TCTCCTGATTAGACATATCACTGTTGAACACAGC
++
+72?.)25;96-14'*.03'#4#++$)/8+%/((&
+@1831_575_711/1
+TATGTTCGTCCACGTCAGACGCGCAAAGTTGCGC
++
+%+:2(#'1+.)&*45-#,<A-%4;>+))<;##*&
+@1831_575_730/1
+CACACAGGAACCATAGCGTATGTTATTCACCCCC
++
+%8<%-')5,*1&=#)(1*1)->7$.,4'4'&'*&
+@1831_575_904/1
+ACCCGCTTAAAGACGTGAATTTTGCCTCCGCGCC
++
+<><.689@@7@<54:4=@>69=:+6-=42;8<:#
+@1831_575_938/1
+TCATCAGGGAAGGCTAGGGGTTTACACTATTCGA
++
+:@@:?@;=8;>=;;:=<93<4.;<6:2<9;4)87
+@1831_575_970/1
+TGACTCCTACAGTCTTTATAGTACCGAGGGAGGC
++
+@=@=;@@><@@:9<:=?;>@=?9>>?@:2===<5
+@1831_575_991/1
+TTCGGCGATCCCCCCCACGGCGCGATGCCGCGCA
++
+>>;7???/4<:::,#&*%'$--5-#(7)&&,-)%
+@1831_575_1138/1
+TTGAAAGACCTGAACGCGATTTCATGTTTACTGC
++
+=0;%1936+?96?,?5<:2>@6@<:;4>.7;*:1
+@1831_575_1157/1
+TCGCTGTTTAGATTTCGGGAGGGTACTTCAGTGC
++
+B@B>?A?A@?9'?;?&8?@@6;<@=+<:99+965
+@1831_575_1180/1
+GAATTCACGGCAGTGTTATCACCGTTTCCTTCCA
++
+<B>5?':/78?;1;55:997@@>94=7<186->7
+@1831_575_1283/1
+GGTGGAATACTAAGGACTAATGTGCTGTCTCTTT
++
+C@A54><?A78@<?2>:#>=?@2>80:'?69.'7
+@1831_575_1302/1
+CGACTATTCGTTTCGTCTAGAACGTGACACTAGC
++
+12>/#2'&-2&%'7+$%*#$/1(&&12/$,2,,*
+@1831_575_1310/1
+CTTGCTCTCGAGCTATGCCTCAGGACACGCCCTT
++
+<<>663?99@(@7=11@:@@/7??<@<;>'3-7;
+@1831_575_1321/1
+CAACACAGTTGAACGGCGGAGGAGTAAAGATGCG
++
+;B@?@>=A@<A?>@>?6>@5>'4@9?)7@7?/89
+@1831_575_1373/1
+CGCTACCGGTTCCAACGGCTGCCTGACTCGCGGA
++
+@@@>@;=9<@??7@>@:@;@;17?630/7=4,2<
+@1831_575_1419/1
+TGGGGAATATAACAGCGTAGCGTTGAACACTAGA
++
+//3->&-.->%11/@&/&7:<,-1=,+2<6'%&<
+@1831_575_1436/1
+TGCATCTAGCGCGTATTGCGAGCCTTACGGATTC
++
+2@=;39*3<*4<:>52>>9'7:<='0=>1'136<
+@1831_575_1442/1
+TCTGACAAGGTTCCTGCACCTGCGTCTGAGAGGG
++
+>58<?7>+1B6-/9<<:5?>A:1@?539.@4/1>
+@1831_575_1454/1
+CCTCCTAACCACGAGCCGAGGGGTCTCTGCCCCT
++
+4=?8=6589=0:A=:?>6<;@/,4+-6+/'.,(,
+@1831_575_1500/1
+CACAAAAGGTCCCTACCTGTCTACCCTACATAGC
++
+?@@?A@?8<6<:985=99999==B3<5<<,7?>9
+@1831_575_1535/1
+CTCGACGATATGACCGCCAGCCACTTAACTCCGC
++
+B=@<@@B?:A@@=>@?68@=?@5?7;:6<<;>5<
+@1831_575_1724/1
+TCGTAAGTGTTAAGGAGCTGTGTACAAAACAACA
++
+<B.+@),2*.%)))4%2@;7#%(%+$8))85%&5
+@1831_575_1829/1
+CATTTGCTGACCCTGCGTAGTTTAGTCTCACAGC
++
+2(*'%.3$+7)@&%$'3*+*#/#/*+0.=&#)+0
+@1831_575_1898/1
+CTTACCATATCATCTCAACCCATAACAGCACTTA
++
+B>@@&1/))'40)%#8/.%#8$((#;4'$'63,,
+@1831_575_1964/1
+GACAGACCATGAGGCTGAAGACTACTAAGTGCGT
++
+>39)@2<2/@+9?2=&)>>@*62=5&2<42.'?+
+@1831_576_32/1
+TACGCAACGATTTATGGCCTTATAATTGAGGCCA
++
+<>?>?=7<2)522;><<@40@>704<>5=23@+&
+@1831_576_74/1
+ACATTCTGCAGTGGGACAGAGCGGTACGCCGCAA
++
+=@@?@>(??<B5?@@@9<@><+><;@';>6961?
+@1831_576_86/1
+ATGAAAACGCATTAGGACAACCATAATGGCCTCA
++
+811)2:*.++5</:3+43924*))/:,6&29)2/
+@1831_576_89/1
+GCTGTTTGATTTGAGAAGAGGAATTAAGCGCCGA
++
+)69+,'.4=-,>/>(*$#)3030*'(,%)2##$,
+@1831_576_266/1
+ATGGGGTCACTCGACCTAATCCCGCGGCTTTGGT
++
+@@?=;<?7=@>9,>@1$&&89$/:>7'3178%&6
+@1831_576_327/1
+GCCGTTCTACTCTAGCTGCAACTTGCGATTGCTA
++
+@?@6@@;<@?><@>==3@:==<3@@>53<9><6=
+@1831_576_331/1
+GACGCTTTACTCCGGTAGTACCGTGCCGTTTATA
++
+-2)+(*.*1/;5%.-9&#/1'+($*$##()%/$.
+@1831_576_387/1
+ACACGCCATGATCCGATAAGAAGGGAACGTAAGG
++
+8).$5#1#*%.$##.*#$%##-%,+,1#&%.%))
+@1831_576_406/1
+AGGTCTTACAGCACGGGGCTGAGCGCATCTGACC
++
+4<>%%14:*4656)&<251&2+3#&19,6&4>5(
+@1831_576_449/1
+CTCGAACCGCGGGGTCCAAAGACTGCTGCAAGGA
++
++'&'.,,$/+.)$$8&%#+?&,#)-&###7,+#*
+@1831_576_519/1
+TACCTGCCTACTACTTGCTCTCGAGCTATGCCTC
++
+=46<97@>2/6?;2<4A881>9121+<1/4.9+7
+@1831_576_603/1
+CAATATGTCTTAGTCGTGACTCGGCAACTTATCC
++
+@46=@C.??<A79@@;-<@@>29B?>55<B7598
+@1831_576_655/1
+GAACAGTCTATAGTGGCGGGAATCTCGTCGTCAG
++
+@AA9@@<6*>@@5/<@>9'=;>7+@?9>/9;+,%
+@1831_576_677/1
+TTTACTCAGTTGATACATCACTGTAGCACATAGG
++
+290&/*0#&'&,.2'#&*$&('#-%($*#%$)#%
+@1831_576_718/1
+CGTGCCTTTCAGGGTCTTTTCTGGTCTGGTCGCT
++
+4###$0###%(#########,####%####$###
+@1831_576_722/1
+CGTATGATGGCGAGTCTTTATAATCCAATCTGAA
++
+*,-,##.)*&(*1%*(%(-2#+)-#.&-#%%$')
+@1831_576_754/1
+AGGCGTCCTGCATCGACCGTTCTATCCGCTTAGA
++
+4//#(.$)'',>($<,##%((,#5?#0*%1*
+@1831_576_815/1
+TAGGCCTGATATGACACGATCACAGTGCAACATC
++
+3>@?9>@?B=>=;>A???=>:25=4.25?6<57.
+@1831_576_882/1
+TGTAAGACGGTGAGGTGTAAGGATCAGACCACGG
++
+26?8?@:4>@>96??<<=5'1<>9846=<9<1>8
+@1831_576_898/1
+AGTACTGTCGCGCATTGGGGTCCTGGTCGTTGCT
++
+@@C2?C>?<>@886B?;?.??87=B<8<15??=.
+@1831_576_923/1
+CTGGACATGAGAGACTGCACGCGGTACACGTCGG
++
+6.51=;.699<96>;;49<;;11;<@59:9=647
+@1831_576_930/1
+CTGGCATGTACGTCCATGTCAGACGAGCAGAACT
++
+#*0.2&.:((#'14'##-)#%$$2%#$/1&#%/#
+@1831_576_1019/1
+GATGCGCGCTGTCATGGCATCGAACCATCGGTCG
++
+<$>$,1,&++&@,.)'+/+#9'69/6'2(+-'9-
+@1831_576_1068/1
+AAGAGTGACTCACTTACCGGGATGCGATGGAGCC
++
+>><=4?;@7=??9?;9>5@9?:8@:=5';7;'#4
+@1831_576_1131/1
+AGTTCGGGAAGGGCTGGAATCTACCCAGTAGGCA
++
+04@#@/@,4>9?2+?1571@',>=;(759;*92<
+@1831_576_1168/1
+CACTTAACTCCGCTGTCGGAAGCCTTACAAGACA
++
+@CC6@@2?9=>7?;76<;467@;9,0%26'',4$
+@1831_576_1207/1
+CAACCTGACTAAACGGGGATACGCTGGCGCTACA
++
+$>2,(&?4?(,@:<&,@>?$&:8A%%=0.%,597
+@1831_576_1289/1
+TAGCGCAAGTCCAGAATGTTCATAGACTCGCGAT
++
+9<>1B@@;7@@663==28,5':8<<,.=2>>.50
+@1831_576_1329/1
+CCAATAGCAGAGACCTAATAGGAAACGAAAGCAA
++
+>&0,870/A@@/5.;=;:'&@3'&$$%,+#($&2
+@1831_576_1367/1
+GGTCTCATCCGTTCCAATCGGGACTTTGACCAGT
++
+?@@<>@@=@<@<=@>@??9:?<=>=<8;59@787
+@1831_576_1416/1
+TAGCGTTCAACGTCGATCTCATCTTGCCGATGGC
++
+';?..1.<@'.=+6.5?7<0-?7;(%=>56.98@
+@1831_576_1461/1
+GAGGGGCGGCCCGGTTCAAGCAGGTAAGCAACAA
++
+1&74#(#(&##$#,'###%#%%#*#&%%##%%%'
+@1831_576_1605/1
+AGTGCAACATCTGCTTTGCTTATCAGCACACGGC
++
+<@C@@>1;@:;<<@@9@???9<3?5-21=4877,
+@1831_576_1664/1
+CGCGCACAACTCGCCATGATACGACAAGACCCGA
++
+@?>?@=A:@@>@='=<>=).>=9*8)(7#/++;)
+@1831_576_1671/1
+GTCTTTGTAAGCCTGGCCTGGTCAGGTCTGGTCT
++
+@?@5>@@8&8?25#&)&5&&)15&&,&4%&,&6%
+@1831_576_1729/1
+CGTTTCGTCTACAACGTGACACTAGCACAGTATA
++
+?@?<?<@>A?/==?>?7>?@8<?@>99;><+0=>
+@1831_576_1880/1
+TATGCGCTGTTGAGCTTACAACTCACTAGCGAAT
++
+515/792,:,7/%/05,%$):+#8%2(1754))3
+@1831_576_1982/1
+AATGTCGTCAGACGACTTTGGCGCGAAAACCATA
++
+@@?@,A><@9@=?@9B=8<6@@6@2<A?>.7<+@
+@1831_576_1987/1
+AAGGTCTTCTGTCGGCGCTGGACTGAACACCTGA
++
+##()(#&##)%)/-#%$11#%3>'##&$,#$$'+
+@1831_576_2014/1
+CCGTGACACACAATGCCGGCCCCAGCCTAGCAAT
++
+@@9,B29-5>'?,+?79+/A';'2@'5&/9,6&1
+@1831_576_2028/1
+ACTCGCCGCATCCCCGAGTGACGCTCGAGACCAA
++
+<>9>5'2(&707.8#&&39,0%7/#(#,*%&5*+
+@1831_577_40/1
+CCCCGCGTTACGAACGAGAGAAATCTCTTATAAT
++
+2/4('.')(<*?#$)%&<,/39<(.2,+<=@611
+@1831_577_119/1
+TCCCACAAGCCATTGACATGCTCGCTCTAAACAG
++
+>?C11)-1/)#;#/,850*+.+$$5550+%-.40
+@1831_577_133/1
+TGCTTGTACGGTCTAACGGGGTATGGGTTTCTGG
++
+4@>>?=1?:+>@07@@><>@*<+1@15)96'2$)
+@1831_577_255/1
+ATTGAGGCCAAGATAATTGAGGAGAGAGAAGGTG
++
+<=87@>69%**#&#-+$.#&&#+$-+%&%.,%5#
+@1831_577_281/1
+TATGTACGTCGCGTACACTCCGGGGCCCGCAAAA
++
+-:B;8@=;>7@>4?=?+659?;5<7?;9@8(>:?
+@1831_577_288/1
+CATCCGAGGCTATCAAGGCGTAAGCACTGACCTA
++
+;/79??&=B::298*6.7/+4&21,7,6?.7#'6
+@1831_577_322/1
+GAATGCTGGAGTACATTATGACAAACTATCGGAG
++
+=;>4506;255464-<#7+194&2<?65968)7/
+@1831_577_362/1
+CGATTAGTTACCACTCGTATTCGCACGCCCAGGA
++
+2B?:@?@<?958=,3:,90:&'-99,6<5.($+6
+@1831_577_382/1
+GTCGCGTATTCCCCGATGCTATGTAGACTTGCAA
++
+2957/:1))=76(*24;,3+:<.&.&-=1=2/5*
+@1831_577_464/1
+TAGAGGCACCCTAACTCAGGGCTTTCTCGATTAG
++
+=<7/<826)>#.'&4204+5#/041.7*91&756
+@1831_577_488/1
+TGAATAGTTATGGCCAGAATGTCTGCACCGATAC
++
+48.,*>6566<?8=<=<2>6;94>;=9>@8924@
+@1831_577_511/1
+GGTGCTTATCAGTTCTTTCTCGGGACTTGTATTT
++
+7/+&$:<7%6,$$%'%/+)#$7((&*3>16'0/+
+@1831_577_545/1
+ACCGCTCTTTGGGTATGGGGCAATCTGGCATGTT
++
+><<9?<>?A<481@<@8==@76/61<95.5988-
+@1831_577_559/1
+GTGCCACTATGTTCGACAGACCCTAAGGCGGAAG
++
+<@;??@>@?/2<.@1=>12=61/;=?.&2+92)'
+@1831_577_562/1
+GTTCCACTACGTTCCACGCAAAGGAATCCGAATC
++
+((&*&0%)1%)#($2-,***%/-,,))&,-.1'*
+@1831_577_637/1
+GCCTTCGCGGGAGCATATCAGTCGATACATCCCA
++
+-,4#>:-6+:8,&(5;3=0>7=68&1/9&'?;4,
+@1831_577_641/1
+TATCTACCACCGCGGTGGCGCGAGAATGCTCCCT
++
+47;/':A;;5?:72,(=),#*?+.#&7$8#%7/'
+@1831_577_692/1
+CCGGTGAGAATTACATCGCGAGTACGCCCAAGGA
++
+B,@?@B(@A?@+@@>@+?=>@'=<@<=<9=?75<
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out0.sam
--- a/test-data/bwa_wrapper_out0.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out0.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,2 +1,1 @@
-@SQ SN:PHIX174 LN:5386
081017-and-081020:1:1:1715:1759 16 PHIX174 322 25 36M * 0 0 GATATTTTAAAGGAGCGTGGATTACTATCTGAGTCC B&&I13A$G$*%$IIIIIII9(.+5$IIIIIII#II XT:A:U NM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A24
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out0.tabular
--- a/test-data/bwa_wrapper_out0.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-081017-and-081020:1:1:1715:1759 16 PHIX174 322 25 36M = 322 0 GATATTTTAAAGGAGCGTGGATTACTATCTGAGTCC B&&I13A$G$*%$IIIIIII9(.+5$IIIIIII#II XT:A:U NM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A24
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out0b.sam
--- a/test-data/bwa_wrapper_out0b.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out0b.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,4 +1,3 @@
-@SQ SN:phiX LN:5386
1831_573_1004 0 phiX 278 25 33M1S * 0 0 TTAGATATGAGTCACATTTTGTTCATGGTAGAGG ]]>!4[WPFW]\ZSV]\YNRZOWWTTU]MJQEM XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
1831_573_1050 4 * 0 0 * * 0 0 TTTATGGGTATGGCCGCTCACAGGCCAGCGGCCT ;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
1831_573_1067 4 * 0 0 * * 0 0 AAGTATGAGTCATTTACCGGGATGCGAAGAAAAG ++#%(',%/$,+&1#&),)&+'*'*%#$&#%('$
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out0b.tabular
--- a/test-data/bwa_wrapper_out0b.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-081017-and-081020:1:1:1715:1759 4 * 0 0 * * 0 0 GGACTCAGATAGTAATCCACGCTCCTTTAAAATATC II#IIIIIII$5+.(9IIIIIII$%*$G$A31I&&B
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out1.sam
--- a/test-data/bwa_wrapper_out1.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out1.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,4 +1,3 @@
-@SQ SN:PHIX174 LN:5386
1831_573_1004 0 PHIX174 278 25 33M1S * 0 0 TTAGATATGAGTCACATTTTGTTCATGGTAGAGG ]]>!4[WPFW]\ZSV]\YNRZOWWTTU]MJQEM XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
1831_573_1050 4 * 0 0 * * 0 0 TTTATGGGTATGGCCGCTCACAGGCCAGCGGCCT ;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
1831_573_1067 4 * 0 0 * * 0 0 AAGTATGAGTCATTTACCGGGATGCGAAGAAAAG ++#%(',%/$,+&1#&),)&+'*'*%#$&#%('$
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out1.tabular
--- a/test-data/bwa_wrapper_out1.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-1831_573_1004 0 PHIX174 278 25 33M = 278 0 TTAGATATGAGTCACATTTTGTTCATGGTAGAG ]]>!4[WPFW]\ZSV]\YNRZOWWTTU]MJQEM XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1050 4 * 0 0 * * 0 0 TTTATGGGTATGGCCGCTCACAGGCCAGCGGCCT ;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
-1831_573_1067 4 * 0 0 * * 0 0 AAGTATGAGTCATTTACCGGGATGCGAAGAAAAG ++#%(',%/$,+&1#&),)&+'*'*%#$&#%('$
-1831_573_1219 16 PHIX174 2202 37 33M = 2202 0 TGCAGTGGAATAGTCAGGTTAAATTTAATGTGA KJOOHX]KAP[]]MBQ\TUFO]QMFGG=CLZ]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1242 0 PHIX174 648 37 33M = 648 0 CATCCCGTCAACATTCAAACGGCCTGTCTCATC ]]]]XQ]]]]]]]][]]]VIMOW]SW]]]T*1] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1333 4 * 0 0 * * 0 0 AGAATCGTTACCACACACTGCGTCTGGGTATCCG ='@#%3=.>)/34*117,,/6-4+.9742456<)
-1831_573_1362 4 * 0 0 * * 0 0 CGATCTCAACCAGGTCCGCGCCCACCCCTGCCTC B@@?@@?@C@BA?@>@<@8A@?@'.8'?17:,+?
-1831_573_1448 16 PHIX174 2563 25 33M = 2563 0 CTTCATTGCATTCAGATGGATACATCTGTCAAC :BMPX5.QUW6+R]RIOU]]]]]]]]WCTQS]] XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1490 0 PHIX174 1767 25 33M = 1767 0 CGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAAC ]]]TU]]]=;]]]R9=BQQDF>QZQ1,LBIGEN XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1523 4 * 0 0 * * 0 0 ATGGAACGGAACGGGTGAGGAGGGGAACGTAGGG ,//*,#8''.6''6'2&27/80)%�'%#*,2'
-1831_573_1578 4 * 0 0 * * 0 0 CGAGTAGCAAACAAGACGCCAATCCAGGCGACCC ?=@<@C@?@@??=>@;7<<8<694)3511(+1<.
-1831_573_1647 16 PHIX174 1118 37 33M = 1118 0 GACTCCTTCGAGATGGACGCCGTTGGCGCTCTC XSU]YZSLKMZ]Y[]]]]]]]]]]]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1684 16 PHIX174 3696 37 33M = 3696 0 AGTGCTGAGGTTGACTTAGTTCATCAGCAAACG ]]]]V]]]]]]]]]]]]]]]]]]]]]U\]][TX XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_573_1769 4 * 0 0 * * 0 0 TGGACGTATAGTGGCGATGAGCATGTAGGTTCTC 54749&&767%/7;3$-7;3#,3//#,45/#&06
-1831_573_1853 4 * 0 0 * * 0 0 CAAAACGCCCGGGGCCTCACATGCGCGGCAGTTC 4./B@@72B+/4?@?7?+@9/+99.')2<2&)2&
-1831_573_1943 4 * 0 0 * * 0 0 ATAACGTATGGCAGTGAACGGGCGGAACCTGCCC >/*1,),@-)'0*>5'$/?6(a)/.&?8/(')A43,
-1831_573_1977 4 * 0 0 * * 0 0 GGCGTAGGGCTCATTGTGCAAGTATCCGACCTCC @?6@8@@9A@=4633A7?9?<3:+7>'@%@?%32
-1831_574_109 0 PHIX174 3729 37 33M = 3729 0 CAGAATCAGCGGTATGGCTCTTCTCATATTGGC VTO/2URQ]]]TZWU[UTQP\]XY]VS[WLN]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_574_148 16 PHIX174 2369 37 33M = 2369 0 TAGGTTTTCTGCTTAGGAGTTTAATCATGTTTC XOQ[]]]TKWRCLJJZRR][]TWVGVZW]WZTQ XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_574_185 4 * 0 0 * * 0 0 CCGTTTTGCCTAGTAATGCTCGGCGCAGCGTCGC <4;%%@7>#*>97%6;+8$#<07%1372$%<54#
-1831_574_243 0 PHIX174 2129 37 33M = 2129 0 TCTGGTGATTTGCAAGAACGCGTACTTATTCGC ]]]W]]]]RQ]YRBI]]Y0<]]]CI]]]FM]]Y XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_574_257 4 * 0 0 * * 0 0 ATACCTTCCAAAGCAATAGAATAAAAAACAGTAC >>B>)@?>B@B?@1%*%,#+00.'(+&5&%#$3&
-1831_574_293 4 * 0 0 * * 0 0 TGCTGCAAATAAACATACAGCCTTCTAATGACTA ')7'.*%#&$'/.$##$.$&*)+*$#8%&%#&&%
-1831_574_389 4 * 0 0 * * 0 0 CATGGCTATGCACCGGTTTGTAGCGTACTCGAGA )$>/>8):2@:213;;.1)@3%64%+)<7)+$92
-1831_574_575 16 PHIX174 4006 37 33M = 4006 0 AATGTCACGCTGATTATTTTGACTTTGAGCGTA TMHGZ]UE<L]]]EM]K"&I]]]]]]]]]]]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_574_592 16 PHIX174 2950 37 33M = 2950 0 GCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCA LLVSIV]]ZSPPSWNDIW\VOM[]]QANSCGKI XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_574_617 4 * 0 0 * * 0 0 AAGCATCGGCGGGAGCGCAAGCTGGGAAGGTGCC >@?;>?=@==@>@=5?@+@:@40@><:0)')64-
-1831_574_725 4 * 0 0 * * 0 0 GACAAGATGGCTATTATTTACAATCCGATCTGCA '>?52+5=;4$6;<8.1<47*9+?7(+5;-).)4
-1831_574_734 16 PHIX174 5263 25 33M = 5263 0 GAGAGATGAGATTGAGGCTGGGAAAAGTTACTG P]VXTGPLRN@KE=ALXC7ARL7;>;OKA/!!< XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_574_824 16 PHIX174 3997 37 33M = 3997 0 ACCCTTCTGAATGTCACGCTGATTATTTTGACT ]\MN]]U?I]]TAN]]ZGK][\RR]T@>M]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_574_959 4 * 0 0 * * 0 0 CGCGCTAGGACTCGGCCCCAAGAGACGTTCCGCC A=;+?@9;/<@;<8#&&/*%(%.0$0$2)+1$-1
-1831_574_1062 4 * 0 0 * * 0 0 ACCGGTAATATAAGGCAACATGATTACGGCCACG @821<//:136/8<1/5.427.;>288/0<1$)/
-1831_574_1092 4 * 0 0 * * 0 0 GACTGGCGAAATCATCGCGGAAAAACCCCTATCA 8?.,98)03%#,,,(,++$'69'#9'7#';6.%2
-1831_574_1103 4 * 0 0 * * 0 0 ATCTCCTGATTAGACATATCTCCGTAGCTCACGC ??>?@=>@@A<>?=@==<:?<;58'&&):+35'1
-1831_574_1116 4 * 0 0 * * 0 0 CACCTCACGTGAGTATAGCAGCCCGAGCGTCACC @++,)/)?./)%<)2>.==:8?&;44&/&,)/*4
-1831_574_1194 0 PHIX174 1136 37 33M = 1136 0 GCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGT \]PT]]]]]]]ZZ]]]\Y]]]]\]]]V\]UMDK XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_574_1204 16 PHIX174 1445 25 33M = 1445 0 CCTAATGAGCTTAATCAAGATGATGCTCGTTAT JGMO%.S]S>EW]V,=Y[]]PCU]]]X]]]]]] XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_574_1306 4 * 0 0 * * 0 0 ATTGCTTAGATCCAGTGGCGCTCAATACAACGGA 2.7&%''.$&#'%##$#'#%')')$'$%$,)'.1
-1831_574_1387 4 * 0 0 * * 0 0 GTACTTCTCAATGCTGCACTACTATGTACGCCCC ?A??:@?@@9?@@?9C;:>&).,,);&'<&7(/'
-1831_574_1431 4 * 0 0 * * 0 0 GACCAGTTTCAGGGCTAACCGTCCCTACTCGACC 7?>9BA897;+8*=6#6.+5&-#26$0.,5&'$1
-1831_574_1560 4 * 0 0 * * 0 0 GGCGTCTTAGGATTGAAGAGGGCCTCCCACCCCC ))&65<4=>99@:597(1&;+&(%&4#,#&&&*$
-1831_574_1591 16 PHIX174 5118 37 33M = 5118 0 AAGCTGTTCAGAATCAGAATGAGCCGCAACTTC MLII]]\K!7]ST][]]]OO]]]]]X]]]]]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_574_1624 16 PHIX174 4058 37 33M = 4058 0 TATTGAGGCTTGTGGCATTTCTACTCTTTCTCA ?IM@DV]M?NRTK@JPXS?>ENI;=AML=7=M[ XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_574_1826 4 * 0 0 * * 0 0 TACGTCGCGACCGAGCGTTATATAGTCTGACCCC @<<,))459<?.+57'-'&6?1)(;1;0&%4,#$
-1831_574_1903 0 PHIX174 5209 37 33M = 5209 0 AGCTGGGTTACGACGCGACGCCGTTCAACCAGA WT]]]][]]]][]]]]]]]]]]][X]QYYTYZ- XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_574_1961 0 PHIX174 3555 25 33M = 3555 0 CGCGTTGCGTCTATTATGGAAAACACCAATCTT TFPMV]OCBP]H<OS]<1CN]]M=K]52KO]WT XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_575_54 16 PHIX174 3587 37 33M = 3587 0 TTCCAAGCAACAGCAGGTTTCCGAGATTATGCG ]]4/WZUDARYXKAL]]MR]]]]\]]VW]W]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_80 4 * 0 0 * * 0 0 TCTTTGGGTTTGGGGCAATTTGGTATGTTCGTCT ?5><@?/=5%(&.5)+#/0'/'>#$/'37#()6&
-1831_575_192 4 * 0 0 * * 0 0 AACTACGCCCCTTAATTACACAGCGCGTTAGACC :8<,9(.=/)#%8$,4'<,:)3/.'.5<,>-;7'
-1831_575_197 16 PHIX174 4861 37 33M = 4861 0 GCTTGCAAAATACGTGGCCTTATGGTTACAGTA G.<]KNV]]RH@AIT]\SP\]]]Y[]]\RS\]P XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_223 4 * 0 0 * * 0 0 ACGCACAAAGGAGCTCGGCGCATAGCAACGCAGA ?>?8?@:?;>+$'%&,+#$.--#%$1'&#-7$&'
-1831_575_420 4 * 0 0 * * 0 0 CCCACATGGAAAACACTCACCGCCGAACAGAGCG 2?.>?(-''2+..@),$%1@;')1)?+)7.')..
-1831_575_434 4 * 0 0 * * 0 0 ATCGCTGCGAGGTCACCCTGGTTACGCCCCTTCC @@><@B@>=@@?>><@?;)@?;6.?=4,'';/3)
-1831_575_444 16 PHIX174 5098 37 33M = 5098 0 AGCTGTCGCTACTTCCCAAGAAGCTGTTCAGAA ]Y0/[]]MM]]]VT]]]]]]]]QP]]]TS]]][ XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_459 4 * 0 0 * * 0 0 CTTATCAGCACACGGTTTACCAGTCCGACTCCAA @@C@?A@@A@??A@@'6@@B'=;C@'4<=9,@1.
-1831_575_506 4 * 0 0 * * 0 0 CGCAGAACCCGCACGCTTGTGCTCACCACTGTAC ?)2*5@3+.7=?A:8@,/&):@37/<89'+4*)*
-1831_575_569 0 PHIX174 5043 25 33M = 5043 0 GACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAA IOBU[TMHTYG4M]7$?Q]]]57]SKXQC;:FE XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_575_622 0 PHIX174 2485 37 33M = 2485 0 GTTTTACAGACACCTAAAGCTACATCGTCAACG ]]]]]]]]]]]]]]]X[YVYINYLTLJWHO[$! XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_644 4 * 0 0 * * 0 0 CTTGAATGGCGATCTCGTCGAGGAAATACCACTA <8>.>&,+)8.10':5(/-62&*.=/%(.<&&18
-1831_575_663 16 PHIX174 1554 25 33M = 1554 0 CGACTTCTACCACATCTATTGACATTATGGGTC !&V]]NIPV]]YUXWZWTYPW]]]]]ST]]]]] XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_575_681 4 * 0 0 * * 0 0 TCTCCTGATTAGACATATCACTGTTGAACACAGC 72?.)25;96-14'*.03'#4#++$)/8+%/((&
-1831_575_711 4 * 0 0 * * 0 0 TATGTTCGTCCACGTCAGACGCGCAAAGTTGCGC %+:2(#'1+.)&*45-#,<A-%4;>+))<;##*&
-1831_575_730 4 * 0 0 * * 0 0 CACACAGGAACCATAGCGTATGTTATTCACCCCC %8<%-')5,*1&=#)(1*1)->7$.,4'4'&'*&
-1831_575_904 4 * 0 0 * * 0 0 ACCCGCTTAAAGACGTGAATTTTGCCTCCGCGCC <><.689@@7@<54:4=@>69=:+6-=42;8<:#
-1831_575_938 16 PHIX174 1133 37 33M = 1133 0 GACGCCGTTGGCGCTCTCCGTCTTTCTCCATTG XJFX]]WUY[]RKYXU]]]]]]]]\]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_970 16 PHIX174 232 37 33M = 232 0 GAGGAGAAGTGGCTTAATATGCTTGGCACGTTC Z]]]XU]]]]]]]]]]]]]]]\]]]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_991 4 * 0 0 * * 0 0 TTCGGCGATCCCCCCCACGGCGCGATGCCGCGCA >>;7???/4<:::,#&*%'$--5-#(7)&&,-)%
-1831_575_1138 0 PHIX174 1913 37 33M = 1913 0 GCTAAAGGTGCTTTGACTTATACCGATATTGCT VT7-SURJS]X]TT]Z]UY]]]]]]X[UN[NMT XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1157 16 PHIX174 3736 25 33M = 3736 0 AGCGGTATGGCTCTTCTCATATTGGCGCTACTG TX//[\]PQ]]]Z]]]]GN]]O!']]]]]]]]] XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1180 0 PHIX174 4169 37 33M = 4169 0 GGGCGTTGAGTTCGATAATGGTGATATGTATGT ]]\]OJROX]]UUYSX\[Y]]]]VZ]\VRWLT] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1283 4 * 0 0 * * 0 0 GGTGGAATACTAAGGACTAATGTGCTGTCTCTTT C@A54><?A78@<?2>:#>=?@2>80:'?69.'7
-1831_575_1302 16 PHIX174 5202 37 33M = 5202 0 CTTACCAAGCTGGGTTACGACGCGACGCCGTTC ?AGG9<JL@57BI,!6828KG54AH<6B>;VYL XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1310 16 PHIX174 1612 37 33M = 1612 0 TACTGACCAAGAACGTGATTACTTCATGCAGCG [M!!N]]]]]]]OX]]]ZKW]]QQ][][RU]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1321 0 PHIX174 2664 37 33M = 2664 0 TTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGAC ]]]]]]]]]]]]]]]]]]]\ND]]]7/]]]WPZ XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1373 16 PHIX174 4221 37 33M = 4221 0 TCTGACGTTCGTGATGAGTTTGTATCTGTTACT WGIZ]OHLR]]QU]]]]]]]]]]]]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1419 4 * 0 0 * * 0 0 TGGGGAATATAACAGCGTAGCGTTGAACACTAGA //3->&-.->%11/@&/&7:<,-1=,+2<6'%&<
-1831_575_1436 0 PHIX174 3460 37 33M = 3460 0 CTGGCATTCAGTCGGCGACTTCACGCCAGAATA []]WULFXOGY]]\PY]]IGZ]]M@V]XAAMR[ XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1442 0 PHIX174 3317 37 33M = 3317 0 TGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTC \V]]]]RE\]LEQ]]]X]]]]TZ]]QUPW]LIX XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1454 4 * 0 0 * * 0 0 CCTCCTAACCACGAGCCGAGGGGTCTCTGCCCCT 4=?8=6589=0:A=:?>6<;@/,4+-6+/'.,(,
-1831_575_1500 16 PHIX174 4269 37 33M = 4269 0 GAATTGGCACAATGCTACAATGTGCTCCCCCAA ]]]LQ]ZZX]]]][[[[][VZ\][[]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1535 16 PHIX174 1225 37 33M = 1225 0 TCACGTTTATGGTGAACAGTGGATTAAGTTCAT Z\]]][Y][]]]]]]]W]]]]]]]]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_575_1724 4 * 0 0 * * 0 0 TCGTAAGTGTTAAGGAGCTGTGTACAAAACAACA <B.+@),2*.%)))4%2@;7#%(%+$8))85%&5
-1831_575_1829 4 * 0 0 * * 0 0 CATTTGCTGACCCTGCGTAGTTTAGTCTCACAGC 2(*'%.3$+7)@&%$'3*+*#/#/*+0.=&#)+0
-1831_575_1898 4 * 0 0 * * 0 0 CTTACCATATCATCTCAACCCATAACAGCACTTA B>@@&1/))'40)%#8/.%#8$((#;4'$'63,,
-1831_575_1964 4 * 0 0 * * 0 0 GACAGACCATGAGGCTGAAGACTACTAAGTGCGT >39)@2<2/@+9?2=&)>>@*62=5&2<42.'?+
-1831_576_32 16 PHIX174 988 25 33M = 988 0 TTGAGGATAAATTATGTCTAATATTCAAACTGG !6\NX[\]YMP]]YM]]]]]VMPGDW\]]]]]] XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_576_74 4 * 0 0 * * 0 0 ACATTCTGCAGTGGGACAGAGCGGTACGCCGCAA =@@?@>(??<B5?@@@9<@><+><;@';>6961?
-1831_576_86 16 PHIX174 2981 37 33M = 2981 0 CATGTCTAAATTGTTTGGAGGCGGTCAAAAAGC JDKTAEKORA;<GOTUPHGVRTZI?BAMUDCKR XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_89 4 * 0 0 * * 0 0 GCTGTTTGATTTGAGAAGAGGAATTAAGCGCCGA )69+,'.4=-,>/>(*$#)3030*'(,%)2##$,
-1831_576_266 16 PHIX174 280 37 33M = 280 0 AGATATGAGTCACATTTTGTTCATGGTAGAGAT E4FXQMCG]]R<FZG5#.Z]SN]]]]]]]]]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_576_327 16 PHIX174 4517 37 33M = 4517 0 TACTATTCAGCGTTTGATGAATGCAATGCGACA \[]]]XQ\]]\X]]]]\Y]]]]]]]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_331 4 * 0 0 * * 0 0 GACGCTTTACTCCGGTAGTACCGTGCCGTTTATA -2)+(*.*1/;5%.-9&#/1'+($*$##()%/$.
-1831_576_387 4 * 0 0 * * 0 0 ACACGCCATGATCCGATAAGAAGGGAACGTAAGG 8).$5#1#*%.$##.*#$%##-%,+,1#&%.%))
-1831_576_406 4 * 0 0 * * 0 0 AGGTCTTACAGCACGGGGCTGAGCGCATCTGACC 4<>%%14:*4656)&<251&2+3#&19,6&4>5(
-1831_576_449 4 * 0 0 * * 0 0 CTCGAACCGCGGGGTCCAAAGACTGCTGCAAGGA +'&'.,,$/+.)$$8&%#+?&,#)-&###7,+#*
-1831_576_519 16 PHIX174 1625 37 33M = 1625 0 CGTGATTACTTCATGCAGCGTTACCGTGATGTT KMPKLIVPELLS]XRY]]YWV]]NJY]]Y][SZ XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_603 16 PHIX174 1576 37 33M = 1576 0 CATTATGGGTCTGCAAGCTGCTTATGCTAATTT ZWU]]ZS\]]]TY]]]RQ]]]Y]]]]VZ]]\S] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_655 16 PHIX174 3292 37 33M = 3292 0 TTGCTGCTGCATTTCCTGAGCTTAATGCTTGGG :@O]QV]]]TK]]]73]]]TM]]]QI[]]]]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_576_677 4 * 0 0 * * 0 0 TTTACTCAGTTGATACATCACTGTAGCACATAGG 290&/*0#&'&,.2'#&*$&('#-%($*#%$)#%
-1831_576_718 4 * 0 0 * * 0 0 CGTGCCTTTCAGGGTCTTTTCTGGTCTGGTCGCT 4###$0###%(#########,####%####$###
-1831_576_722 4 * 0 0 * * 0 0 CGTATGATGGCGAGTCTTTATAATCCAATCTGAA *,-,##.)*&(*1%*(%(-2#+)-#.&-#%%$')
-1831_576_754 4 * 0 0 * * 0 0 AGGCGTCCTGCATCGACCGTTCTATCCGCTTAGA 4//#(.$)'',>($<,##%((,#5?#0*%1*
-1831_576_815 0 PHIX174 5186 37 33M = 5186 0 GGAGTGCTTAATCCAACTTACCAAGCTGGGTTA Z]]]]]]]]]]]]]]]]]]]UP[ZKIP]][ZUN XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_882 0 PHIX174 5053 37 33M = 5053 0 CTAAAGGTCTAGGAGCTAAAGAATGGAACAACT Q]]]]]W[]]]X]]]]][EAV]]ZUS\]]]VX] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_898 0 PHIX174 518 37 33M = 518 0 GATTGCTACTGACCGCTCTCGTGCTCGTCGCTG ]]]Z]]]]]]]YW]]]]VV]]X]]]]]VO]]]T XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_923 0 PHIX174 1050 37 33M = 1050 0 ATCTTGGCTTCCTTGCTGGTCAGATTGGTCGTC MLOW]RMX[]]X]]]XV]]]UKU]]]W\\]\ST XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_930 4 * 0 0 * * 0 0 CTGGCATGTACGTCCATGTCAGACGAGCAGAACT #*0.2&.:((#'14'##-)#%$$2%#$/1&#%/#
-1831_576_1019 4 * 0 0 * * 0 0 GATGCGCGCTGTCATGGCATCGAACCATCGGTCG <$>$,1,&++&@,.)'+/+#9'69/6'2(+-'9-
-1831_576_1068 4 * 0 0 * * 0 0 AAGAGTGACTCACTTACCGGGATGCGATGGAGCC >><=4?;@7=??9?;9>5@9?:8@:=5';7;'#4
-1831_576_1131 16 PHIX174 4061 37 33M = 4061 0 TGAGGCTTGTGGCATTTCTACTCTTTCTCAATC WTLN]WUHL]]S<PZQUOYSFZ]][IUXX>>]M XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1168 4 * 0 0 * * 0 0 CACTTAACTCCGCTGTCGGAAGCCTTACAAGACA @CC6@@2?9=>7?;76<;467@;9,0%26'',4$
-1831_576_1207 4 * 0 0 * * 0 0 CAACCTGACTAAACGGGGATACGCTGGCGCTACA $>2,(&?4?(,@:<&,@>?$&:8A%%=0.%,597
-1831_576_1289 16 PHIX174 1899 37 33M = 1899 0 TTCAGTACCTTAACGCTAAAGGTGCTTTGACTT NLU]YXTCQ]][JEJMSX]YRU]]][]]]\X]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1329 4 * 0 0 * * 0 0 CCAATAGCAGAGACCTAATAGGAAACGAAAGCAA >&0,870/A@@/5.;=;:'&@3'&$$%,+#($&2
-1831_576_1367 0 PHIX174 1839 37 33M = 1839 0 AGCATGGCACTATGTTTACTCTTGCGCTTGTTC ]]]]]]]]]]]]]]]]]]\]]]]]]]\YW]]XX XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1416 0 PHIX174 4522 37 33M = 4522 0 TTCAGCGTTTGATGAATGCAATGCGACAGGCTC K]VEHHS]P>TQJML]]\UFU][L6K]\TMPZ] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1461 4 * 0 0 * * 0 0 GAGGGGCGGCCCGGTTCAAGCAGGTAAGCAACAA 1&74#(#(&##$#,'###%#%%#*#&%%##%%%'
-1831_576_1605 0 PHIX174 5209 37 33M = 5209 0 AGCTGGGTTACGACGCGACGCCGTTCAACCAGA ]]]]]XU]]]]]]]]]]]]]]X[]KHLWZUXW, XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1664 4 * 0 0 * * 0 0 CGCGCACAACTCGCCATGATACGACAAGACCCGA @?>?@=A:@@>@='=<>=).>=9*8)(7#/++;)
-1831_576_1671 4 * 0 0 * * 0 0 GTCTTTGTAAGCCTGGCCTGGTCAGGTCTGGTCT @?@5>@@8&8?25#&)&5&&)15&&,&4%&,&6%
-1831_576_1729 16 PHIX174 5194 37 33M = 5194 0 TAATCCAACTTACCAAGCTGGGTTACGACGCGA ]VDP]]][]]]]]]]]]]]]]]UW]]]]]]]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1880 4 * 0 0 * * 0 0 TATGCGCTGTTGAGCTTACAACTCACTAGCGAAT 515/792,:,7/%/05,%$):+#8%2(1754))3
-1831_576_1982 16 PHIX174 5024 37 33M = 5024 0 TAACAAAAAGTCAGATATGGACCTTGCTGCTAA TP\NU]]]W[]]]][]]]]]]]]]]]]]VU]]] XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_576_1987 4 * 0 0 * * 0 0 AAGGTCTTCTGTCGGCGCTGGACTGAACACCTGA ##()(#&##)%)/-#%$11#%3>'##&$,#$$'+
-1831_576_2014 4 * 0 0 * * 0 0 CCGTGACACACAATGCCGGCCCCAGCCTAGCAAT @@9,B29-5>'?,+?79+/A';'2@'5&/9,6&1
-1831_576_2028 4 * 0 0 * * 0 0 ACTCGCCGCATCCCCGAGTGACGCTCGAGACCAA <>9>5'2(&707.8#&&39,0%7/#(#,*%&5*+
-1831_577_40 0 PHIX174 2772 25 33M = 2772 0 TGTGACTATTGACGTCCTTCCCCGTACGCCGGG JLE8>>9:MOR=!&74KQDKU]M?IG@P]]]PK XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_577_119 4 * 0 0 * * 0 0 TCCCACAAGCCATTGACATGCTCGCTCTAAACAG >?C11)-1/)#;#/,850*+.+$$5550+%-.40
-1831_577_133 16 PHIX174 1714 37 33M = 1714 0 CATGCGCTCTAATCTCTGGGCATCTGGCTATGA &/BFXKGOZZEPOS]]]]]]PY]RN]YW]]]]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_577_255 4 * 0 0 * * 0 0 ATTGAGGCCAAGATAATTGAGGAGAGAGAAGGTG <=87@>69%**#&#-+$.#&&#+$-+%&%.,%5#
-1831_577_281 16 PHIX174 4577 37 33M = 4577 0 TTTTGACACTCTCACGTTGGCTGACGACCGATT ]]OI]]]]]\ZY]]WTJS]]\[]]]]]]]\]]P XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_577_288 0 PHIX174 3201 25 33M = 3201 0 GGCACTTCTGCCGTTTCTGATAAGTTGCTTGAT SOY]]NL]]]UTZKIMNOCH/-LFLLK]VN5%F XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_577_322 16 PHIX174 458 37 33M = 458 0 TTCTGCCGTTTTGGATTTAACCGAAGATGATTT OIJWXWT]]WACVSEK5:RJSSRSPVZONR[]] XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_577_362 0 PHIX174 2153 37 33M = 2153 0 CTTATTCGCCACCATGATTATGACCAGTGTTTC ]]]]]]]]]WV]RHVONRSI6=O[NK[ZL?%(J XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_577_382 16 PHIX174 4686 37 33M = 4686 0 GGTCGCAAGGCTAATGATTCACACGCCGACTGC HMJXWWS<===S]NGHPXOE;GV]O;CTROUWT XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_577_464 0 PHIX174 2126 25 33M = 2126 0 CCTTCTGGTGATTTGCAAGAACGCGTACTTATT ]\OT]SQHP<,>6COKMHI3-HMNHNJLS@FUT XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_577_488 16 PHIX174 4948 37 33M = 4948 0 GGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG ]OTZ]]]]]][V]Z]YW]]]]]][UTT]Q?COU XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_577_511 4 * 0 0 * * 0 0 GGTGCTTATCAGTTCTTTCTCGGGACTTGTATTT 7/+&$:<7%6,$$%'%/+)#$7((&*3>16'0/+
-1831_577_545 0 PHIX174 1711 37 33M = 1711 0 TGTCATGCGCTCTAATCTCTGGGCATCTGGCTA ]]]]]]]]]YURZ]]]]]]]VNNPV]WLLWZYN XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
-1831_577_559 0 PHIX174 3840 25 33M = 3840 0 GCTGTTGCCGATACTTGGAACAATTTCTGGAAA ]]]]]]]]WJWSWZW]XLX\P#-]]V=A(/TD9 XT:A:U CM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:33
-1831_577_562 4 * 0 0 * * 0 0 GTTCCACTACGTTCCACGCAAAGGAATCCGAATC ((&*&0%)1%)#($2-,***%/-,,))&,-.1'*
-1831_577_637 0 PHIX174 4247 37 33M = 4247 0 TGTTACTGAGAAGTTAATGGATGAATTGGCACA BI2<]PLJN[M;7FYWYVW]]\WG@IQH6O]XI XT:A:U CM:i:1 X0:i:1 X1:i:0 XM:i:1 XO:i:0 XG:i:0 MD:Z:33
-1831_577_641 4 * 0 0 * * 0 0 TATCTACCACCGCGGTGGCGCGAGAATGCTCCCT 47;/':A;;5?:72,(=),#*?+.#&7$8#%7/'
-1831_577_692 0 PHIX174 3905 37 33M = 3905 0 GTCTAGGAAATAACCGTCAGGATTGACACCCTC WU]]]SQ]]]TT]]]TS]]]PM]]]]]]]]]UZ XT:A:U CM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:33
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out2.sam
--- a/test-data/bwa_wrapper_out2.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out2.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,4 +1,3 @@
-@SQ SN:PHIX174 LN:5386
1378_11_329 77 * 0 0 * * 0 0 GTTCGTGGCCGGTGGGTGTTTGGG ###$$#$#$&#####$'$#$###$
1378_11_329 141 * 0 0 * * 0 0 AGACCGGGCGGGGTGGCGTTCGGT %##+'#######%###$#$##$(#
1378_17_1788 77 * 0 0 * * 0 0 TGGGTGGATGTGTTGTCGTTCATG #$#$###$#$#######$#$####
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out2.tabular
--- a/test-data/bwa_wrapper_out2.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-1378_11_329 69 * 0 0 * * 0 0 GTTCGTGGCCGGTGGGTGTTTGGG ###$$#$#$&#####$'$#$###$
-1378_11_329 133 * 0 0 * * 0 0 AGACCGGGCGGGGTGGCGTTCGGT %##+'#######%###$#$##$(#
-1378_17_1788 69 * 0 0 * * 0 0 TGGGTGGATGTGTTGTCGTTCATG #$#$###$#$#######$#$####
-1378_17_1788 133 * 0 0 * * 0 0 TGCCGTGTCTTGCTAACGCCGATT #'#$$#$###%%##$$$$######
-1378_25_2035 69 * 0 0 * * 0 0 GTGCGTCGGGGAGGGTGCTGTCGG ######%#$%#$$###($###&&%
-1378_25_2035 133 * 0 0 * * 0 0 CTGCGTGTTGGTGTCTACTGGGGT #%#'##$#$##&%#%$$$%#%#'#
-1378_28_770 69 * 0 0 * * 0 0 GGTTGGGAGTTGGCGCGCGTGGTT ###$##%%$####%#%$#%%#($$
-1378_28_770 133 * 0 0 * * 0 0 CTGCTATGCCGGCCGCCTGCCCCT %##(#$$#%$#$%###$%%$##$#
-1378_33_1945 69 * 0 0 * * 0 0 GGGGGGGGGGGGGGGGGGGGGGGG .6;?;55697>8779457986264
-1378_33_1945 133 * 0 0 * * 0 0 GGGGGGGGGGGGGGGGGGGGGGGG +9;64287788752796/576352
-1378_34_789 69 * 0 0 * * 0 0 GGGCTTGCGTTAGTGAGAGGTTGT ###%$%$%%###$####$###$#&
-1378_34_789 133 * 0 0 * * 0 0 ATGGTGGCTGACGCGTTTGACTGT #$##%#$##$&$#%##$##$###$
-1378_35_263 69 * 0 0 * * 0 0 GGCGGGGGGGGGGGGGGGGGGGGG $%%&,)3/)%$-6'$&5&#$''5.
-1378_35_263 133 * 0 0 * * 0 0 GGGCGGGGGGCGGCGGGGGGGGGG ),,#%'$)'-(%&%'%',%%&&(&
-1378_43_186 69 * 0 0 * * 0 0 GCTAGGGTTTGGGTTTGCGGTGGG $%#$########%##%#$###'#'
-1378_43_186 133 * 0 0 * * 0 0 ATACTAGTTGGGACGCGTTGTGCT #$(4%$########$#$###$$$#
-1378_51_1671 69 * 0 0 * * 0 0 GGTGTTGTTCGGATGTAGCGTGGG ##%$$####$########$##0##
-1378_51_1671 133 * 0 0 * * 0 0 TGGGTAGGTGCGGCTCTTGCGGTC ##$#$%###%%#%#$##$$#####
-1378_56_324 69 * 0 0 * * 0 0 GCTGGGTGATCTAAGGAATGTAAT #$#####$$$#$$$$##%###*(#
-1378_56_324 133 * 0 0 * * 0 0 AGGCTTGGATTGTTGCGCTGACCT /+#**###%%##%#####$$$#$#
-1378_56_773 69 * 0 0 * * 0 0 TCTGGTCGGTTTCGGGGAGTGGAA ##%%#&$###$#$##%$####%%$
-1378_56_773 133 * 0 0 * * 0 0 TGTCGTGAGGTCACTTATCCCCAT &%#%##%%#####&#$%##$%##$
-1378_62_2027 69 * 0 0 * * 0 0 GTTGGCCTGGCCTGCCGTGCTGCG *##),/%##$)#%##1$#'%.#&#
-1378_62_2027 133 * 0 0 * * 0 0 CTTCCACGATCTGCTCGCTGTGGT (#&&$##$$#$%#%$$$#$###'#
-1378_62_2029 69 * 0 0 * * 0 0 GGCGGTGTGTGGTGCGGCTGTGCG /$$$=(####%####)$$%$-&%#
-1378_62_2029 133 * 0 0 * * 0 0 TCTGGGCTGTCTTCGGGTCGGTGT $%$$####$##$$#)##%%#$###
-1378_67_1795 69 * 0 0 * * 0 0 CGTGCCAACGACCGTCCTACGGAG @@.?7@@@.@:@A<<>>=>70<@7
-1378_67_1795 133 * 0 0 * * 0 0 TAGTGGGCTAGTCCGGGATCTACC B@C2@@?;-@@1>'A@@91@.@1'
-1378_68_466 69 * 0 0 * * 0 0 GTGTCATCTGAGGTAAAGCATTGT /##$09#$#.=$#$76+$%1'###
-1378_68_466 133 * 0 0 * * 0 0 GTGATCGTCGGTGCCAGTCCCTGT #(%)+##$#$#%#+$%##$#####
-1378_68_1692 69 * 0 0 * * 0 0 TGTTCGATTTAGGTCTTGCCTCGC ###%%$%%##%$#$##$###$$#$
-1378_68_1692 133 * 0 0 * * 0 0 GGTCTTCTGGGCACGGGCCAAGTT ###)%'&%##$###%#######$#
-1378_80_664 69 * 0 0 * * 0 0 TGTCTGCGTTGTATCTCTGGTGTA %##%,%$$#&$$###$#$%##'%#
-1378_80_664 133 * 0 0 * * 0 0 CTGCTTTGATCCCCGGTGGAGCAC 7#%###$$6#######$##$$$##
-1378_85_1786 69 * 0 0 * * 0 0 CCCTAGGAGCGTATACCGGACGAG ,'&/%/@,&1,&'/)&,6&&1)((
-1378_85_1786 133 * 0 0 * * 0 0 ATACTATGTCGATCTGTAAAAAAA )&.)#3%(a)$&%-,2#&+.-%0&./
-1378_86_1011 69 * 0 0 * * 0 0 AGGCGATGGGATATTATTTTACTT :$###)%##$9$###1$$#$2###
-1378_86_1011 133 * 0 0 * * 0 0 CTACGTTATTGCTCTGTTTGTCCT ######$%##$$$%###%#$####
-1378_86_1789 69 * 0 0 * * 0 0 GGCCAGGTACTAATAAATTCAACA 1.51/&%#'$,*?%#6&0$$5,20
-1378_86_1789 133 * 0 0 * * 0 0 CGAATATCCCCTGGTTTAGAAGTA 61?1;@/>@<=/(.7'(<5@=%$=
-1378_91_1596 69 * 0 0 * * 0 0 GCTTTTTCATTCGGTGCCTTTGGA '>%/3%=()8'#.%?50$&5>%)%
-1378_91_1596 133 * 0 0 * * 0 0 TTAGCGGTTGACTATCTGCTGACA *&+'#9'(%*'#//,&<),/)'*#
-1378_94_1595 69 * 0 0 * * 0 0 GCGGGTTAACCCAGTACCTCTGGC ,8@6'>8<76>@@(->9)7'*941
-1378_94_1595 133 * 0 0 * * 0 0 CGTGCGACAGCCCATGTTTTCAGA -=..5,3826&*+.+#+#%%6;%#
-1378_95_1039 69 * 0 0 * * 0 0 GTTCTGTGCCAGGTGAGGTACGGA &##,./#$&)6##+,'#$$0(##$
-1378_95_1039 133 * 0 0 * * 0 0 CGGCGTCCATCTTCGCCTTGAGAT $##.#$##$$#%$#$%%$###$)$
-1378_95_1767 69 * 0 0 * * 0 0 CTAATTGACCGGGCAAGCTATTAA ',,2'(10/>:=/7).3&%6&)&6
-1378_95_1767 133 * 0 0 * * 0 0 ACACGCACCATCTGGCGGCTAACC 86<65<4<C27/$5+#;-$+#2%$
-1378_96_1037 69 * 0 0 * * 0 0 CTGCTGGGCCATTTGACTTACTCA '$#+#(##-%5##+*&###-.$$$
-1378_96_1037 133 * 0 0 * * 0 0 ATCCCCCAAGATGCCTGTTGATTG $#$'##$$$#%$$#%###+##$#$
-1378_96_1764 69 * 0 0 * * 0 0 TCTTTGTAACCCACTTAGTATTTC 4='28>.@4881B807:822>%)1
-1378_96_1764 133 * 0 0 * * 0 0 TACACCGGAACCTTGCACTAAAGC 6-9'<#+81?+*<8-=69&6;*3)
-1378_98_1574 69 * 0 0 * * 0 0 AGGCGAGTGTGGGGGTTGTTTGAG +%%$#)##%##$####%###$%$#
-1378_98_1574 133 * 0 0 * * 0 0 GTTCTGCCGGTGTCTGTGGCGGGC $$#+&$$####%$$$###$%#%%#
-1378_107_1647 69 * 0 0 * * 0 0 GGTCTGGTTCTATGTTGGTCGACT ###'$$#$$$(#%###(#$##$%#
-1378_107_1647 133 * 0 0 * * 0 0 AGGCCTACTACGCGTCATTGATAG &#$$#$(.#%#$$####&$%##($
-1378_111_829 69 * 0 0 * * 0 0 GGTCTTCTATGGTGCTAAATTAGT $##'&###$##)#%($#$%#$'%#
-1378_111_829 133 * 0 0 * * 0 0 TGCGGCACTTGCTTCTTCGTATTT %#%##%#$%#$#%###$$##&#$$
-1378_111_1900 69 * 0 0 * * 0 0 GCACGCCTTTGGGCTAAGCCGTAA )$)'#%$########$'#&%$#(#
-1378_111_1900 133 * 0 0 * * 0 0 TCCCCTCGCTCGGCTCTGTGCTGT $&%*$#(#)##$#'##%(##$#$%
-1378_112_1483 69 * 0 0 * * 0 0 TGGAGTGGTGTGTTTGCTGAGCCA #$#)#############$#%#%'%
-1378_112_1483 133 * 0 0 * * 0 0 TGTCCAGCTATGCGGCTTCCTCCT %#$+#%#&#$#####%####%$##
-1378_125_1287 69 * 0 0 * * 0 0 TGACGTGGGTTGTCCCGTGAGATT ##$%%#$###$##$$#&%##$(%%
-1378_125_1287 133 * 0 0 * * 0 0 TGTCTCTGGGGGGCCTGGTTAGGT $##13$'%#$###$$###$$$#&#
-1378_126_468 69 * 0 0 * * 0 0 AAAAAACGGGCCGGGCGGACTAGG @@B@@@>@2>1+?:92)>@8&&<+
-1378_126_468 133 * 0 0 * * 0 0 TCTCCTGATTAGACATATCTCCGT 7>@318?=,=8@49579?..7,7)
-1378_127_664 69 * 0 0 * * 0 0 TCGCTTTGCCTATGTTTGTTCGGA #%$%#&##$%#%%###$$###)-'
-1378_127_664 133 * 0 0 * * 0 0 AGAGGTTGGTGTCTTGTCGCAGCT ##'#$######$$%######$$$#
-1378_129_463 69 * 0 0 * * 0 0 AAAAAAAAAAAAAAAAAAAAAAAA ,)&20%8'(&35-***1-2&+510
-1378_129_463 133 * 0 0 * * 0 0 CCTGTGGGCCAAGCCCAATGAAAG 8),,<6(--)<()5&.&/8+;.2+
-1378_129_875 69 * 0 0 * * 0 0 GACCTTTACGTATTGGGGGTTGGC ###)###+###$##$#&%##$,#$
-1378_129_875 133 * 0 0 * * 0 0 TTTCTATGGCTTACGCTGTCTGCC #$($##%####%$#$#####$###
-1378_140_1251 69 * 0 0 * * 0 0 TTTCCTTCGTGTGCGTGCGGAGTG #%#%$##$$$######.$$$%#%(
-1378_140_1251 133 * 0 0 * * 0 0 ATCCTAGCGCGGTGTCTTGGGGAC #$%1#$$$##$##$#$#$##$%$$
-1378_141_809 69 * 0 0 * * 0 0 TCTCGTGGTTTCTTTTTTATGTGT ##%)##$$#####%$#$#%%#'##
-1378_141_809 133 * 0 0 * * 0 0 TGTCCTCCAGTGTCTGTTGGGTGT %&,-##$$#(%###$#$$'###'#
-1378_144_983 69 * 0 0 * * 0 0 GTTCGTTCGTGGTGTACGAGGGTG #(#%#####($#%##$$#%##%#)
-1378_144_983 133 * 0 0 * * 0 0 AGCGCCCGGTTGGTGCGGCTCGTC -$(&%*$#*#))#$$$#%%$#$##
-1378_153_270 69 * 0 0 * * 0 0 GGCCGTGTGCGGGTGTAGATTGGA %$##($######&##$&$$$$%##
-1378_153_270 133 * 0 0 * * 0 0 AGTCCTTGTCCCCTGGGTTTTCCC +''$#&%$%#$##&$$($#&#$$#
-1378_155_1689 69 * 0 0 * * 0 0 CGCGTTCGGACAAAGCTAGCACCT @4@@=6=@@<4:@@681@@@.24.
-1378_155_1689 133 * 0 0 * * 0 0 TTGGGAGGGAGAGAGACTAGACCG ?4@@4<<??<?-@4@=4<5<?:/>
-1378_157_1580 69 * 0 0 * * 0 0 GGGATTGAAGGGATGTATGCTAGG #%$&%#$$'%$%#$##*#%$$$$#
-1378_157_1580 133 * 0 0 * * 0 0 TGGGCCTCGGTGCCCTTGGTCTGT #%)$##'#$$$&#####%#$#$##
-1378_161_317 69 * 0 0 * * 0 0 AATCCATACCCACAAAAGCAGGCC .&%','(@''?7//+&)+2.+)0)
-1378_161_317 133 * 0 0 * * 0 0 TTGGCCGGCAACCCCGGTACCTAA 7<,<'@)@>.)2@/')'&(?/-<(
-1378_177_735 69 * 0 0 * * 0 0 CGAGCCCTAAACCATGAGATCGGA @@B>@AC9@A<B8@=9>7@5)>,0
-1378_177_735 133 * 0 0 * * 0 0 AGTACGCCATGTATTTGCGACCAG =?@?C<88@=>:7>@55/.,416,
-1378_181_1684 69 * 0 0 * * 0 0 TTTCTGTTGTGGTTTTGTTGGGGT $##'$%'##%##$%$#$$####$*
-1378_181_1684 133 * 0 0 * * 0 0 CGACTCCCGCATTCACGGTCAAGT &*#,##$#&$*$$#$#$$$#%$##
-1378_187_1407 69 * 0 0 * * 0 0 TTGGGTGAAATCTTGTCGAGTGGA ####&##$$###$#####%##%%)
-1378_187_1407 133 * 0 0 * * 0 0 TGGCGTCCACTCGTGGGTCTATCG $#$'%#$%$%&$%#####$#$#%#
-1378_203_721 69 * 0 0 * * 0 0 CCTTTACGATCATAAACCATGACC 9<&./1&@;12')?<1',?/)&/.
-1378_203_721 133 * 0 0 * * 0 0 CCTAAATAACCCAGGGTAAAAGAT 9<1+2+1@=259@+;2.71&@+2&
-1378_206_2039 69 * 0 0 * * 0 0 CCCCCCCCCCCCCCCCCCCCCCCC ?=>>?=:;<>>4::<=56199(05
-1378_206_2039 133 * 0 0 * * 0 0 CCCCCCCCCCCCCCCCCCCCCCCC 9@?8>;>>><<994;=895895-8
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out3.sam
--- a/test-data/bwa_wrapper_out3.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out3.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,2 +1,1 @@
-@SQ SN:PHIX174 LN:5386
081017-and-081020:1:1:1715:1759 16 PHIX174 322 25 36M * 0 0 GATATTTTAAAGGAGCGTGGATTACTATCTGAGTCC B&&I13A$G$*%$IIIIIII9(.+5$IIIIIII#II XT:A:U NM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A24
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out3.tabular
--- a/test-data/bwa_wrapper_out3.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-081017-and-081020:1:1:1715:1759 16 PHIX174 322 25 36M = 322 0 GATATTTTAAAGGAGCGTGGATTACTATCTGAGTCC B&&I13A$G$*%$IIIIIII9(.+5$IIIIIII#II XT:A:U NM:i:2 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A24
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out4.sam
--- a/test-data/bwa_wrapper_out4.sam Fri Sep 18 11:11:41 2009 -0400
+++ b/test-data/bwa_wrapper_out4.sam Fri Sep 18 12:11:43 2009 -0400
@@ -1,3 +1,2 @@
-@SQ SN:PHIX174 LN:5386
081017-and-081020:1:1:1715:1759 113 PHIX174 322 25 18M = 340 18 GATATTTTAAAGGAGCGT B&&I13A$G$*%$IIIII XT:A:U NM:i:2 SM:i:25 AM:i:25 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A6
081017-and-081020:1:1:1715:1759 177 PHIX174 340 37 18M = 322 -18 GGATTACTATCTGAGTCC II9(.+5$IIIIIII#II XT:A:U NM:i:0 SM:i:37 AM:i:25 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:18
diff -r 76759e07013b -r 16993bf0803e test-data/bwa_wrapper_out4.tabular
--- a/test-data/bwa_wrapper_out4.tabular Fri Sep 18 11:11:41 2009 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-QNAME FLAG RNAME POS MAPQ CIGAR MRNM MPOS ISIZE SEQ QUAL OPT
-081017-and-081020:1:1:1715:1759 113 PHIX174 322 25 18M = 340 18 GATATTTTAAAGGAGCGT B&&I13A$G$*%$IIIII XT:A:U NM:i:2 SM:i:25 AM:i:25 X0:i:1 X1:i:0 XM:i:2 XO:i:0 XG:i:0 MD:Z:2C8A6
-081017-and-081020:1:1:1715:1759 177 PHIX174 340 37 18M = 322 -18 GGATTACTATCTGAGTCC II9(.+5$IIIIIII#II XT:A:U NM:i:0 SM:i:37 AM:i:25 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:18
diff -r 76759e07013b -r 16993bf0803e tools/next_gen_conversion/bwa_solid2fastq_modified.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/next_gen_conversion/bwa_solid2fastq_modified.pl Fri Sep 18 12:11:43 2009 -0400
@@ -0,0 +1,112 @@
+#!/usr/bin/perl -w
+
+# Author: lh3
+# Note: Ideally, this script should be written in C. It is a bit slow at present.
+
+use strict;
+use warnings;
+use Getopt::Std;
+
+my %opts;
+my $version = '0.1.2';
+my $usage = qq{
+Usage: solid2fastq.pl <paired> <outfile1> <outfile2> <outfile3> <F3.csfasta> <F3.qual> <R3.csfasta> <R3.qual>
+
+Note: <in.title> is the string showed in the `# Title:' line of a
+ ".csfasta" read file. Then <in.title>F3.csfasta is read sequence
+ file and <in.title>F3_QV.qual is the quality file. If
+ <in.title>R3.csfasta is present, this script assumes reads are
+ paired; otherwise reads will be regarded as single-end.
+
+ The read name will be <out.prefix>:panel_x_y/[12] with `1' for R3
+ tag and `2' for F3. Usually you may want to use short <out.prefix>
+ to save diskspace. Long <out.prefix> also causes troubles to maq.
+
+};
+
+getopts('', \%opts);
+die($usage) if (@ARGV != 8);
+my ($is_paired,$outfile1,$outfile2,$outfile3,$f3reads,$f3qual,$r3reads,$r3qual) = @ARGV;
+my (@fhr, @fhw);
+my $fn = '';
+my @fn_suff = ($f3reads,$f3qual,$r3reads,$r3qual);
+#my @fn_suff = ('F3.csfasta', 'F3_QV.qual', 'R3.csfasta', 'R3_QV.qual');
+#my $is_paired = (-f "$title$fn_suff[2]" || -f "$title$fn_suff[2].gz")? 1 : 0;
+if ($is_paired eq "yes") { # paired end
+ for (0 .. 3) {
+ $fn = $fn_suff[$_];
+ $fn = "gzip -dc $fn.gz |" if (!-f $fn && -f "$fn.gz");
+ open($fhr[$_], $fn) || die("** Fail to open '$fn'.\n");
+ }
+ open($fhw[0], "|gzip >$outfile2") || die;
+ open($fhw[1], "|gzip >$outfile1") || die;
+ open($fhw[2], "|gzip >$outfile3") || die;
+ my (@df, @dr);
+ @df = &read1(1); @dr = &read1(2);
+ while (@df && @dr) {
+ if ($df[0] eq $dr[0]) { # mate pair
+ print {$fhw[0]} $df[1]; print {$fhw[1]} $dr[1];
+ @df = &read1(1); @dr = &read1(2);
+ } else {
+ if ($df[0] le $dr[0]) {
+ print {$fhw[2]} $df[1];
+ @df = &read1(1);
+ } else {
+ print {$fhw[2]} $dr[1];
+ @dr = &read1(2);
+ }
+ }
+ }
+ if (@df) {
+ print {$fhw[2]} $df[1];
+ while (@df = &read1(1, $fhr[0], $fhr[1])) {
+ print {$fhw[2]} $df[1];
+ }
+ }
+ if (@dr) {
+ print {$fhw[2]} $dr[1];
+ while (@dr = &read1(2, $fhr[2], $fhr[3])) {
+ print {$fhw[2]} $dr[1];
+ }
+ }
+ close($fhr[$_]) for (0 .. $#fhr);
+ close($fhw[$_]) for (0 .. $#fhw);
+} else { # single end
+ for (0 .. 1) {
+ my $fn = "$fn_suff[$_]";
+ $fn = "gzip -dc $fn.gz |" if (!-f $fn && -f "$fn.gz");
+ open($fhr[$_], $fn) || die("** Fail to open '$fn'.\n");
+ }
+ open($fhw[2], "|gzip >$outfile1") || die;
+ my @df;
+ while (@df = &read1(1, $fhr[0], $fhr[1])) {
+ print {$fhw[2]} $df[1];
+ }
+ close($fhr[$_]) for (0 .. $#fhr);
+ close($fhw[2]);
+}
+
+sub read1 {
+ my $i = shift(@_);
+ my $j = ($i-1)<<1;
+ my ($key, $seq);
+ my ($fhs, $fhq) = ($fhr[$j], $fhr[$j|1]);
+ while (<$fhs>) {
+ my $t = <$fhq>;
+ if (/^>(\d+)_(\d+)_(\d+)_[FR]3/) {
+ $key = sprintf("%.4d_%.4d_%.4d", $1, $2, $3); # this line could be improved on 64-bit machines
+ #print $key;
+ die(qq/** unmatched read name: '$_' != '$_'\n/) unless ($_ eq $t);
+ my $name = "$1_$2_$3/$i";
+ $_ = substr(<$fhs>, 2);
+ tr/0123./ACGTN/;
+ my $s = $_;
+ $_ = <$fhq>;
+ s/^(\d+)\s*//;
+ s/(\d+)\s*/chr($1+33)/eg;
+ $seq = qq/\@$name\n$s+\n$_\n/;
+ last;
+ }
+ }
+ return defined($seq)? ($key, $seq) : ();
+}
diff -r 76759e07013b -r 16993bf0803e tools/sr_mapping/bwa_wrapper.py
--- a/tools/sr_mapping/bwa_wrapper.py Fri Sep 18 11:11:41 2009 -0400
+++ b/tools/sr_mapping/bwa_wrapper.py Fri Sep 18 12:11:43 2009 -0400
@@ -41,6 +41,7 @@
parser.add_option('', '--maxInsertSize', dest='maxInsertSize', help='Maximum insert size for a read pair to be considered mapped good')
parser.add_option('', '--maxOccurPairing', dest='maxOccurPairing', help='Maximum occurrences of a read for pairings')
parser.add_option('', '--dbkey', dest='dbkey', help='')
+ parser.add_option('', '--suppressHeader', dest='suppressHeader', help='Suppress header')
(options, args) = parser.parse_args()
# index if necessary
@@ -119,5 +120,29 @@
# clean up temp files
tmp_align_out.close()
tmp_align_out2.close()
+ # remove header if necessary
+ if options.suppressHeader == 'true':
+ tmp_out = tempfile.NamedTemporaryFile()
+ cmd4 = 'cp %s %s' % (options.output, tmp_out.name)
+ try:
+ os.system(cmd4)
+ except Exception, erf:
+ stop_err("Error copying output file before removing headers\n" + str(erf))
+ output = file(tmp_out.name, 'r')
+ fout = file(options.output, 'w')
+ header = True
+ line = output.readline()
+ while line.strip() != '':
+ if header:
+ if line.startswith('@HD') or line.startswith('@SQ') or line.startswith('@RG') or line.startswith('@PG') or line.startswith('@CO'):
+ pass
+ else:
+ header = False
+ fout.write(line)
+ else:
+ fout.write(line)
+ line = output.readline()
+ fout.close()
+ tmp_out.close()
if __name__=="__main__": __main__()
diff -r 76759e07013b -r 16993bf0803e tools/sr_mapping/bwa_wrapper.xml
--- a/tools/sr_mapping/bwa_wrapper.xml Fri Sep 18 11:11:41 2009 -0400
+++ b/tools/sr_mapping/bwa_wrapper.xml Fri Sep 18 12:11:43 2009 -0400
@@ -61,6 +61,7 @@
#else:
--dbkey="None"
#end if
+ --suppressHeader=$suppressHeader
</command>
<inputs>
<conditional name="solidOrSolexa">
@@ -151,6 +152,7 @@
<param name="maxOccurPairing" type="integer" value="100000" label="Maximum occurrences of a read for pairing" help="For paired-end reads only. A read with more occurrences will be treated as a single-end read. Reducing this parameter helps faster pairing" />
</when>
</conditional>
+ <param name="suppressHeader" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Suppress the header in the output SAM file" help="BWA produces SAM with several lines of header information" />
</inputs>
<outputs>
<data format="sam" name="output" />
@@ -163,6 +165,7 @@
<param name="sPaired" value="single" />
<param name="input1" value="bwa_wrapper_in1.fastq" />
<param name="source_select" value="pre_set" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out0.sam" ftype="sam" />
</test>
<test>
@@ -172,6 +175,7 @@
<param name="sPaired" value="single" />
<param name="input1" value="bwa_wrapper_in0.fastq" />
<param name="source_select" value="pre_set" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out0b.sam" ftype="sam" />
</test>
<test>
@@ -198,6 +202,7 @@
<param name="outputTopN" value="-1" />
<param name="maxInsertSize" value="500" />
<param name="maxOccurPairing" value="100000" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out1.sam" ftype="sam" />
</test>
<test>
@@ -225,6 +230,7 @@
<param name="outputTopN" value="-1" />
<param name="maxInsertSize" value="500" />
<param name="maxOccurPairing" value="100000" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out2.sam" ftype="sam" />
</test>
<test>
@@ -251,6 +257,7 @@
<param name="outputTopN" value="-1" />
<param name="maxInsertSize" value="500" />
<param name="maxOccurPairing" value="100000" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out3.sam" ftype="sam" />
</test>
<test>
@@ -278,8 +285,9 @@
<param name="outputTopN" value="-1" />
<param name="maxInsertSize" value="500" />
<param name="maxOccurPairing" value="100000" />
+ <param name="suppressHeader" value="true" />
<output name="output" file="bwa_wrapper_out4.sam" ftype="sam" />
- </test>
+ </test>
</tests>
<help>
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/5ffb934ab613
changeset: 2713:5ffb934ab613
user: Anton Nekrutenko <anton(a)bx.psu.edu>
date: Fri Sep 18 10:40:53 2009 -0400
description:
getting rid of maq
1 file(s) affected in this change:
tool_conf.xml.sample
diffs (11 lines):
diff -r c1e0a15b5cd5 -r 5ffb934ab613 tool_conf.xml.sample
--- a/tool_conf.xml.sample Fri Sep 18 10:29:34 2009 -0400
+++ b/tool_conf.xml.sample Fri Sep 18 10:40:53 2009 -0400
@@ -192,7 +192,6 @@
<section name="SOLiD: QC" id="solid_tools">
<tool file="solid_tools/solid_qual_stats.xml" />
<tool file="solid_tools/solid_qual_boxplot.xml" />
- <tool file="solid_tools/maq_cs_wrapper.xml" />
</section>
<section name="NGS: Mapping" id="solexa_tools">
<tool file="sr_mapping/lastz_wrapper.xml" />
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/76759e07013b
changeset: 2714:76759e07013b
user: Anton Nekrutenko <anton(a)bx.psu.edu>
date: Fri Sep 18 11:11:41 2009 -0400
description:
small tweaks
2 file(s) affected in this change:
tools/metag_tools/split_paired_reads.xml
tools/sr_mapping/bowtie_wrapper.xml
diffs (26 lines):
diff -r 5ffb934ab613 -r 76759e07013b tools/metag_tools/split_paired_reads.xml
--- a/tools/metag_tools/split_paired_reads.xml Fri Sep 18 10:40:53 2009 -0400
+++ b/tools/metag_tools/split_paired_reads.xml Fri Sep 18 11:11:41 2009 -0400
@@ -7,8 +7,8 @@
<param name="input" type="data" format="fastqsolexa,fastqsanger" label="Your paired-end file" />
</inputs>
<outputs>
- <data name="output1" format="fastqsolexa"/>
- <data name="output2" format="fastqsolexa"/>
+ <data name="output1" format="input"/>
+ <data name="output2" format="input"/>
</outputs>
<tests>
<test>
diff -r 5ffb934ab613 -r 76759e07013b tools/sr_mapping/bowtie_wrapper.xml
--- a/tools/sr_mapping/bowtie_wrapper.xml Fri Sep 18 10:40:53 2009 -0400
+++ b/tools/sr_mapping/bowtie_wrapper.xml Fri Sep 18 11:11:41 2009 -0400
@@ -275,7 +275,7 @@
<param name="input1" type="data" format="fastqsanger" label="Forward FASTQ file" />
<param name="input2" type="data" format="fastqsanger" label="Reverse FASTQ file" />
<conditional name="params">
- <param name="settings_type" type="select" label="BWA settings to use" help="For most mapping needs use Commonly used settings. If you want full control use Full parameter list">
+ <param name="settings_type" type="select" label="Bowtie settings to use" help="For most mapping needs use Commonly used settings. If you want full control use Full parameter list">
<option value="pre_set">Commonly used</option>
<option value="full">Full parameter list</option>
</param>
1
0