galaxy-dev
Threads by month
- ----- 2026 -----
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 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
- 10009 discussions
details: http://www.bx.psu.edu/hg/galaxy/rev/efed28fa6a5e
changeset: 3132:efed28fa6a5e
user: Enis Afgan <afgane(a)gmail.com>
date: Mon Nov 30 16:47:18 2009 -0500
description:
Merge
diffstat:
lib/galaxy/cloud/__init__.py | 100 +++++++++-
lib/galaxy/cloud/providers/ec2.py | 300 +++++++++++++++++++++++++++-----
lib/galaxy/cloud/providers/eucalyptus.py | 20 +-
lib/galaxy/web/controllers/cloud.py | 93 +++++++++-
templates/cloud/configure_cloud.mako | 19 +-
5 files changed, 445 insertions(+), 87 deletions(-)
diffs (922 lines):
diff -r 9d4945bbdcf5 -r efed28fa6a5e lib/galaxy/cloud/__init__.py
--- a/lib/galaxy/cloud/__init__.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/cloud/__init__.py Mon Nov 30 16:47:18 2009 -0500
@@ -29,6 +29,8 @@
SUBMITTED = "submitted",
SHUTTING_DOWN_UCI = "shutting-downUCI",
SHUTTING_DOWN = "shutting-down",
+ ADD_STORAGE_UCI = "add-storageUCI",
+ ADD_STORAGE = "add-storage",
AVAILABLE = "available",
RUNNING = "running",
PENDING = "pending",
@@ -40,6 +42,7 @@
TERMINATED = "terminated",
SUBMITTED = "submitted",
RUNNING = "running",
+ ADDING = "adding-storage",
PENDING = "pending",
SHUTTING_DOWN = "shutting-down",
ERROR = "error"
@@ -48,6 +51,7 @@
store_status = Bunch(
WAITING = "waiting",
IN_USE = "in-use",
+ ADDING = "adding",
CREATING = "creating",
DELETED = 'deleted',
ERROR = "error"
@@ -161,7 +165,8 @@
model.UCI.table.c.state==uci_states.SUBMITTED_UCI,
model.UCI.table.c.state==uci_states.SHUTTING_DOWN_UCI,
model.UCI.table.c.state==uci_states.DELETING_UCI,
- model.UCI.table.c.state==uci_states.SNAPSHOT_UCI ) ) \
+ model.UCI.table.c.state==uci_states.SNAPSHOT_UCI,
+ model.UCI.table.c.state==uci_states.ADD_STORAGE_UCI ) ) \
.all():
uci_wrapper = UCIwrapper( r, self.app )
new_requests.append( uci_wrapper )
@@ -195,6 +200,12 @@
self.uci_id = uci.id
self.app = app
self.sa_session = self.app.model.context
+ base_directory = os.path.join( self.app.config.job_working_directory, "cloud" )
+ self.working_directory = os.path.join( base_directory, str( self.uci_id ) )
+# log.debug( "Cloud controller working directory for UCI DB ID '%s': '%s'" % ( self.uci_id, self.working_directory ) )
+ if not os.path.exists( base_directory ):
+ os.mkdir( base_directory )
+
# --------- Setter methods -----------------
@@ -364,11 +375,18 @@
self.sa_session.add( uci )
self.sa_session.flush()
- def set_store_device( self, store_id, device ):
+# def set_store_device( self, store_id, device ):
+# uci = self.sa_session.query( model.UCI ).get( self.uci_id )
+# self.sa_session.refresh( uci )
+# uci.store[store_id].device = device
+# uci.store[store_id].flush()
+
+ def set_uci_total_size( self, total_size ):
uci = self.sa_session.query( model.UCI ).get( self.uci_id )
self.sa_session.refresh( uci )
- uci.store[store_id].device = device
- uci.store[store_id].flush()
+ uci.total_size = total_size
+ self.sa_session.add( uci )
+ self.sa_session.flush()
def set_store_error( self, error, store_index=None, store_id=None ):
if store_index != None:
@@ -405,15 +423,24 @@
def set_store_volume_id( self, store_index, volume_id ):
"""
- Given store index associated with this UCI in local database, set volume ID as it is registered
+ Given store index as it is stored in local database, set volume ID as it is registered
on the cloud provider (e.g., vol-39890501)
"""
- uci = self.sa_session.query( model.UCI ).get( self.uci_id )
- self.sa_session.refresh( uci )
- uci.store[store_index].volume_id = volume_id
- #uci.store[store_index].flush()
- self.sa_session.add( uci )
- self.sa_session.flush()
+
+ if store_index != None:
+ store = self.sa_session.query( model.CloudStore ).get( store_index )
+ store.volume_id = volume_id
+ self.sa_session.add( store )
+ self.sa_session.flush()
+ else:
+ return None
+
+# uci = self.sa_session.query( model.UCI ).get( self.uci_id )
+# self.sa_session.refresh( uci )
+# uci.store[store_index].volume_id = volume_id
+# #uci.store[store_index].flush()
+# self.sa_session.add( uci )
+# self.sa_session.flush()
def set_store_instance( self, vol_id, instance_id ):
"""
@@ -421,7 +448,29 @@
be given in following format: 'vol-78943248'
"""
vol = self.sa_session.query( model.CloudStore ).filter( model.CloudStore.table.c.volume_id == vol_id ).first()
- vol.inst.instance_id = instance_id
+ inst = self.sa_session.query( model.CloudInstance ).filter_by( instance_id=instance_id ).first()
+ vol.inst = inst
+ self.sa_session.add( vol )
+ self.sa_session.flush()
+
+ def set_store_device( self, vol_id, device ):
+ """
+ Stores instance ID that given store volume is attached to. Store volume ID should
+ be given in following format: 'vol-78943248'
+ """
+ vol = self.sa_session.query( model.CloudStore ).filter( model.CloudStore.table.c.volume_id == vol_id ).first()
+ vol.device = str( device )
+ self.sa_session.add( vol )
+ self.sa_session.flush()
+
+ def set_store_deleted( self, vol_id, status=None ):
+ """
+ Set storage volume as deleted in local database. Optionally, set the volume status too.
+ """
+ vol = self.sa_session.query( model.CloudStore ).filter( model.CloudStore.table.c.volume_id == vol_id ).first()
+ vol.deleted = True
+ if status != None:
+ vol.status = status
self.sa_session.add( vol )
self.sa_session.flush()
@@ -503,6 +552,12 @@
self.sa_session.refresh( uci )
return uci.instance[instance_id].state
+ def get_instaces_in_state( self, state ):
+ """ Get database objects of all instances associated with this UCI in given state. """
+ return self.sa_session.query( model.CloudInstance ) \
+ .filter_by( uci_id=self.uci_id, state = state ) \
+ .all()
+
def get_instances_ids( self ):
"""
Returns list IDs of all instances' associated with this UCI that are not in 'terminated' or
@@ -590,6 +645,11 @@
self.sa_session.refresh( uci )
return uci.store[0].availability_zone
+ def get_uci_total_size( self ):
+ uci = self.sa_session.query( model.UCI ).get( self.uci_id )
+ self.sa_session.refresh( uci )
+ return uci.total_size
+
def get_store_size( self, store_id=0 ):
uci = self.sa_session.query( model.UCI ).get( self.uci_id )
self.sa_session.refresh( uci )
@@ -604,9 +664,18 @@
self.sa_session.refresh( uci )
return uci.store[store_id].volume_id
+ def get_all_stores_in_status( self, status ):
+ """
+ Return database objects of all stores associated with this UCI that have their
+ status set to value passed as parameter.
+ """
+ return self.sa_session.query( model.CloudStore ).filter_by( deleted=False, uci_id=self.uci_id, status=status ).all()
+
def get_all_stores( self ):
- """ Returns all storage volumes' database objects associated with this UCI. """
- return self.sa_session.query( model.CloudStore ).filter( model.CloudStore.table.c.uci_id == self.uci_id ).all()
+ """ Returns all storage volumes' database objects associated with this UCI that have not been marked as 'deleted'. """
+ return self.sa_session.query( model.CloudStore ) \
+ .filter_by( deleted=False, uci_id=self.uci_id ) \
+ .all()
def get_snapshots( self, status=None ):
""" Returns database objects for all snapshots associated with this UCI and in given status."""
@@ -618,6 +687,9 @@
self.sa_session.refresh( uci )
return uci
+ def get_uci_working_directory( self ):
+ return self.working_directory
+
def uci_launch_time_set( self ):
uci = self.sa_session.query( model.UCI ).get( self.uci_id )
self.sa_session.refresh( uci )
diff -r 9d4945bbdcf5 -r efed28fa6a5e lib/galaxy/cloud/providers/ec2.py
--- a/lib/galaxy/cloud/providers/ec2.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/cloud/providers/ec2.py Mon Nov 30 16:47:18 2009 -0500
@@ -1,4 +1,4 @@
-import subprocess, threading, os, errno, time, datetime
+import subprocess, threading, os, errno, time, datetime, stat
from Queue import Queue, Empty
from datetime import datetime
@@ -30,6 +30,8 @@
SUBMITTED = "submitted",
SHUTTING_DOWN_UCI = "shutting-downUCI",
SHUTTING_DOWN = "shutting-down",
+ ADD_STORAGE_UCI = "add-storageUCI",
+ ADD_STORAGE = "add-storage",
AVAILABLE = "available",
RUNNING = "running",
PENDING = "pending",
@@ -43,6 +45,7 @@
TERMINATED = "terminated",
SUBMITTED = "submitted",
RUNNING = "running",
+ ADDING = "adding-storage",
PENDING = "pending",
SHUTTING_DOWN = "shutting-down",
ERROR = "error"
@@ -51,6 +54,7 @@
store_status = Bunch(
WAITING = "waiting",
IN_USE = "in-use",
+ ADDING = "adding",
CREATING = "creating",
DELETED = 'deleted',
ERROR = "error"
@@ -122,6 +126,9 @@
self.stop_uci( uci_wrapper )
elif uci_state==uci_states.SNAPSHOT:
self.snapshot_uci( uci_wrapper )
+ elif uci_state==uci_states.ADD_STORAGE:
+ self.add_storage_to_uci( uci_wrapper )
+ #self.dummy_start_uci( uci_wrapper )
except:
log.exception( "Uncaught exception executing cloud request." )
cnt += 1
@@ -241,25 +248,14 @@
log.info( "Availability zone for UCI (i.e., storage volume) was not selected, using default zone: %s" % self.zone )
uci_wrapper.set_store_availability_zone( self.zone )
- log.info( "Creating volume in zone '%s'..." % uci_wrapper.get_uci_availability_zone() )
+ store = uci_wrapper.get_all_stores_in_status( store_status.ADDING )[0] # Because at UCI creation time only 1 storage volume can be created, reference it directly
+
+ log.info( "Creating storage volume in zone '%s' of size '%s'..." % ( uci_wrapper.get_uci_availability_zone(), store.size ) )
# Because only 1 storage volume may be created at UCI config time, index of this storage volume in local Galaxy DB w.r.t
# current UCI is 0, so reference it in following methods
- vol = conn.create_volume( uci_wrapper.get_store_size( 0 ), uci_wrapper.get_uci_availability_zone(), snapshot=None )
- uci_wrapper.set_store_volume_id( 0, vol.id )
-
- # Wait for a while to ensure volume was created
-# vol_status = vol.status
-# for i in range( 30 ):
-# if vol_status is not "available":
-# log.debug( 'Updating volume status; current status: %s' % vol_status )
-# vol_status = vol.status
-# time.sleep(3)
-# if i is 29:
-# log.debug( "Error while creating volume '%s'; stuck in state '%s'; deleting volume." % ( vol.id, vol_status ) )
-# conn.delete_volume( vol.id )
-# uci_wrapper.change_state( uci_state='error' )
-# return
-
+ vol = conn.create_volume( store.size, uci_wrapper.get_uci_availability_zone(), snapshot=None )
+ uci_wrapper.set_store_volume_id( store.id, vol.id )
+
# Retrieve created volume again to get updated status
try:
vl = conn.get_all_volumes( [vol.id] )
@@ -306,6 +302,7 @@
if conn.delete_volume( v.volume_id ):
deletedList.append( v.volume_id )
v.deleted = True
+ v.status = store_status.DELETED
self.sa_session.add( v )
self.sa_session.flush()
count += 1
@@ -358,15 +355,180 @@
uci_wrapper.change_state( uci_state=uci_states.AVAILABLE )
- def add_storage_to_uci( self, name ):
- """ Adds more storage to specified UCI
- TODO"""
-
+ def add_storage_to_uci( self, uci_wrapper ):
+ """
+ Add an additional storage volume to specified UCI by creating the storage volume
+ on cloud provider, attaching it to currently running instance and adding it to
+ 'galaxyData' zpool on remote instance.
+ """
+ conn = self.get_connection( uci_wrapper )
+
+ stores = uci_wrapper.get_all_stores_in_status( store_status.ADDING )
+ for store in stores:
+ vol_size = store.size
+ availability_zone = uci_wrapper.get_uci_availability_zone()
+ log.info( "Adding storage volume to UCI '%s' in zone '%s' of size '%s'..." % ( uci_wrapper.get_name(), availability_zone, vol_size ) )
+
+ try:
+ vol = conn.create_volume( vol_size, availability_zone, snapshot=None )
+ uci_wrapper.set_store_volume_id( store.id, vol.id )
+ uci_wrapper.set_store_availability_zone( availability_zone, vol.id )
+ log.debug( "New storage volume created: '%s'" % vol.id )
+ except boto.exception.EC2ResponseError, e:
+ err = "EC2 response error while creating storage volume: " + str( e )
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+ except Exception, ex:
+ err = "Error while creating storage volume: " + str( ex )
+ log.error( err )
+ uci_wrapper.set_error( err, True )
+ return
+
+ # Retrieve created volume again to get updated status
+ try:
+ vl = conn.get_all_volumes( [vol.id] )
+ except boto.exception.EC2ResponseError, e:
+ err = "EC2 response error while retrieving (i.e., updating status) of just created storage volume '" + vol.id + "': " + str( e )
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+ except Exception, ex:
+ err = "Error while retrieving (i.e., updating status) of just created storage volume '" + vol.id + "': " + str( ex )
+ log.error( err )
+ uci_wrapper.set_error( err, True )
+ return
+
+ # Wait for a while to ensure volume was created
+ if len( vl ) > 0:
+ vol_status = vl[0].status # Bc. only single vol is queried, reference it as 0th list element
+ for i in range( 30 ):
+ if vol_status != "available":
+ log.debug( "(%s) Updating volume status; current status: '%s'" % (i, vol_status ) )
+ uci_wrapper.change_state( uci_state=vol_status )
+ time.sleep(5)
+ vol_status = vl[0].status
+ if vol_status == "available":
+ log.debug( "(%s) New volume status '%s', continuing with file system adjustment." % (i, vol_status ) )
+ uci_wrapper.set_store_status( vl[0].id, vol_status )
+ break
+ if i is 29:
+ err = "Error while creating volume '"+vl[0].id+"'; stuck in state '"+vol_status+"'; deleting volume."
+ conn.delete_volume( vl[0].id )
+ log.error( err )
+ uci_wrapper.set_error( err, True )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ conn.delete_volume( vl[0].id )
+ uci_wrapper.set_store_deleted( vl[0].id )
+ return
+ else:
+ err = "Volume '" + vol.id +"' not found by EC2 after being created."
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+
+ # Get private key for given instance
+ pk = uci_wrapper.get_key_pair_material()
+ if pk == None: #If pk does not exist, create it
+ self.check_key_pair( uci_wrapper, conn )
+ pk = uci_wrapper.get_key_pair_material()
+
+ # Get working directory for this UCI and store pk into a file
+ wd = uci_wrapper.get_uci_working_directory()
+ if not os.path.exists( wd ):
+ os.mkdir( wd )
+ pk_file_path = os.path.join( wd, "pk" )
+
+ if pk != None:
+ # Save private key to a file
+ pk_file = open( pk_file_path, "w" )
+ pk_file.write( pk )
+ pk_file.close()
+ else:
+ err = "ERROR: Private key not available for this UCI."
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+
+ if os.path.exists( pk_file_path ):
+ # Change permissions of the file - this is required by later used ssh
+ os.chmod( pk_file_path, stat.S_IRUSR | stat.S_IWUSR )
+
+ # Get # of storage volumes associated with this UCI to know as which device to connect new volume to the instance
+ device_num = len( uci_wrapper.get_all_stores_in_status( store_status.IN_USE ) ) + 5 # First device num is 5, so all subsequent ones should follow
+
+ # Get instance that the new storage volume is to be attached to. Although a list is returned,
+ # only 1 instance can be in 'adding-storage' state (because, for now, only 1 instance is assoc. with
+ # each UCI) and volume can be attached to only to it
+ il = uci_wrapper.get_instaces_in_state( instance_states.ADDING )
+ if len( il ) > 0:
+ # Attach new volume to the instance
+ log.debug( "Attaching new storage volume '%s' to UCI '%s' as device '%s'" %
+ ( vol.id, uci_wrapper.get_name(), device_num ) )
+ try:
+ vol_status = conn.attach_volume( vol.id, il[0].instance_id, device_num )
+ except boto.exception.EC2ResponseError, e:
+ err = "Attaching just created storage volume '" + vol.id + "'to instance '" + \
+ il[0].instance_id + "' as device '" + str( device_num ) + "' failed: " + str( e )
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+ # For a while, keep checking attachment status of the new volume
+ for i in range(30):
+ log.debug( "Checking attachment status of new volume '%s': '%s'" % ( vol.id, vol_status ) )
+ if vol_status == 'attached':
+ uci_wrapper.set_store_status( vol.id, vol_status )
+ uci_wrapper.set_store_device( vol.id, device_num )
+ break
+ if i == 29:
+ err = "Storage volume '" + vol.id + "' failed to attach to instance '" + il[0].instance_id + \
+ "'. Manual check needed."
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, False )
+ return
+
+ time.sleep(4)
+ vol_list = conn.get_all_volumes( [vol.id] )
+ for v in vol_list:
+ vol_status = v.attachment_state()
+
+ # Once storage volume is attached, add it to the zpool by issuing system level command
+ cmd = 'ssh -o StrictHostKeyChecking=no -i '+ pk_file_path +' root@'+il[0].public_dns+' "zpool add galaxyData c7d' + str( device_num )+'"'
+ log.debug( "Adding new storage volume to zpool cmd: %s" % cmd )
+ stdout = os.system( cmd )
+ if stdout != 0:
+ err = "Adding newly created storage volume to zpool on instance '" + il[0].instance_id + \
+ "' failed. Error code: " + str( stdout )
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, False )
+ return
+ else:
+ err = "No instance(s) found in 'adding-storage' state. New disk not added to UCI's zpool."
+ log.error( err )
+ uci_wrapper.set_store_error( err, store_id=vol.id )
+ uci_wrapper.set_error( err, True )
+ return
+
+ # Update UCI's total storage size
+ uci_wrapper.set_uci_total_size( uci_wrapper.get_uci_total_size() + vol.size )
+ # Reset UCI's and instance's state
+ uci_wrapper.change_state( uci_state=uci_states.RUNNING, instance_id=il[0].instance_id, i_state=instance_states.RUNNING )
+ log.debug( "Successfully added storage volume '%s' to UCI '%s'." % ( vol.id, uci_wrapper.get_name() ) )
+
def dummy_start_uci( self, uci_wrapper ):
uci = uci_wrapper.get_uci()
- log.debug( "Would be starting instance '%s'" % uci.name )
- uci_wrapper.change_state( uci_state.PENDING )
+ log.debug( "Dummy start UCI '%s'" % uci.name )
+
+
+# uci_wrapper.change_state( uci_state.PENDING )
# log.debug( "Sleeping a bit... (%s)" % uci.name )
# time.sleep(20)
# log.debug( "Woke up! (%s)" % uci.name )
@@ -418,10 +580,25 @@
if uci_wrapper.get_uci_state() != uci_states.ERROR:
# Start an instance
log.debug( "Starting instance for UCI '%s'" % uci_wrapper.get_name() )
- #TODO: Once multiple volumes can be attached to a single instance, update 'userdata' composition
- userdata = uci_wrapper.get_store_volume_id()+"|"+uci_wrapper.get_access_key()+"|"+uci_wrapper.get_secret_key()
+ #TODO: Once multiple volumes can be attached to a single instance, update 'userdata' composition
+ # Compose user data; for storage volumes, separate multiple volumes with a colon (:) ensuring that
+ # the last volume in the list is not followed by a colon.
+ stores = uci_wrapper.get_all_stores()
+ volume_ids = ""
+ if len( stores ) > 0:
+ for i, store in enumerate( stores ):
+ volume_ids += store.volume_id
+ if i < len( stores )-1:
+ volume_ids += ":"
+ else:
+ err = "No storage volumes found that are associated with UCI '%s'" + uci_wrapper.get_name()
+ log.error( err )
+ uci_wrapper.set_error( err, True )
+ return
+ userdata = volume_ids+"|"+uci_wrapper.get_access_key()+"|"+uci_wrapper.get_secret_key()
log.debug( "Using following command: conn.run_instances( image_id='%s', key_name='%s', security_groups=['%s'], user_data=[OMITTED], instance_type='%s', placement='%s' )"
% ( mi_id, uci_wrapper.get_key_pair_name(), self.security_group, uci_wrapper.get_instance_type( i_index ), uci_wrapper.get_uci_availability_zone() ) )
+ # Start an instance
reservation = None
try:
reservation = conn.run_instances( image_id=mi_id,
@@ -454,7 +631,10 @@
uci_wrapper.change_state( s, i_id, s )
uci_wrapper.set_security_group_name( self.security_group, i_id=i_id )
vol_id = uci_wrapper.get_store_volume_id( store_id=0 ) # TODO: Once more that one vol/UCI is allowed, update this!
- uci_wrapper.set_store_status( vol_id, store_status.WAITING )
+ # Following line is pointless bc. general update updates status of volume to 'available'
+ # before it actually connects to starting instance... This has been dealt w/ in general update method
+ #uci_wrapper.set_store_status( vol_id, store_status.WAITING )
+ uci_wrapper.set_store_instance( vol_id, i_id )
log.debug( "Instance of UCI '%s' started, current state: '%s'" % ( uci_wrapper.get_name(), uci_wrapper.get_uci_state() ) )
except boto.exception.EC2ResponseError, e:
err = "EC2 response error when retrieving instance information for UCI '" + uci_wrapper.get_name() + "': " + str( e )
@@ -571,19 +751,30 @@
.all()
for inst in instances:
if self.type == inst.uci.credentials.provider.type:
- log.debug( "[%s] Running general status update on instance '%s'" % ( inst.uci.credentials.provider.type, inst.instance_id ) )
+ log.debug( "[%s] Running general status update on instance '%s'"
+ % ( inst.uci.credentials.provider.type, inst.instance_id ) )
self.update_instance( inst )
+ # Update storage volume(s) associated with current instance
+ stores = self.sa_session.query( model.CloudStore ) \
+ .filter_by( uci_id=inst.uci_id, deleted=False ) \
+ .all()
+ for store in stores:
+ if self.type == store.uci.credentials.provider.type: # and store.volume_id != None:
+ log.debug( "[%s] Running general status update on store with local database ID: '%s'"
+ % ( store.uci.credentials.provider.type, store.id ) )
+ self.update_store( store )
# Update storage volume(s)
stores = self.sa_session.query( model.CloudStore ) \
- .filter( or_( model.CloudStore.table.c.status==store_status.IN_USE,
- model.CloudStore.table.c.status==store_status.CREATING,
- model.CloudStore.table.c.status==store_status.WAITING,
+ .filter( or_( model.CloudStore.table.c.status==store_status.CREATING,
+# model.CloudStore.table.c.status==store_status.IN_USE,
+# model.CloudStore.table.c.status==store_status.WAITING,
model.CloudStore.table.c.status==None ) ) \
.all()
for store in stores:
if self.type == store.uci.credentials.provider.type: # and store.volume_id != None:
- log.debug( "[%s] Running general status update on store with local database ID: '%s'" % ( store.uci.credentials.provider.type, store.id ) )
+ log.debug( "[%s] Running general status update on store with local database ID: '%s'"
+ % ( store.uci.credentials.provider.type, store.id ) )
self.update_store( store )
# else:
# log.error( "[%s] There exists an entry for UCI (%s) storage volume without an ID. Storage volume might have been created with "
@@ -668,7 +859,8 @@
for i, cInst in enumerate( r.instances ):
try:
s = cInst.update()
- log.debug( "Checking state of cloud instance '%s' associated with UCI '%s' and reservation '%s'. State='%s'" % ( cInst, uci.name, r, s ) )
+ log.debug( "Checking state of cloud instance '%s' associated with UCI '%s' " \
+ "and reservation '%s'. State='%s'" % ( cInst, uci.name, r, s ) )
if s != inst.state:
inst.state = s
self.sa_session.add( inst )
@@ -693,7 +885,8 @@
self.sa_session.add( inst )
self.sa_session.flush()
except boto.exception.EC2ResponseError, e:
- err = "Updating instance status from cloud failed for UCI '"+ uci.name + "' during general status update: " + str( e )
+ err = "Updating instance status from cloud failed for UCI '"+ uci.name + \
+ "' during general status update: " + str( e )
log.error( err )
uci.error = err
uci.state = uci_states.ERROR
@@ -715,7 +908,7 @@
# Get reservations handle for given store
try:
- log.debug( "Updating storage volume command: vl = conn.get_all_volumes( [%s] )" % store.volume_id )
+ log.debug( "Retrieving reference to storage volume '%s' during update..." % store.volume_id )
vl = conn.get_all_volumes( [store.volume_id] )
except boto.exception.EC2ResponseError, e:
err = "Retrieving volume(s) from cloud failed for UCI '"+ uci.name + "' during general status update: " + str( e )
@@ -729,7 +922,7 @@
# Update store status in local DB with info from cloud provider
if len(vl) > 0:
try:
- log.debug( "Storage volume '%s' current status: '%s'" % (store.volume_id, vl[0].status ) )
+ log.debug( "General status update for storage volume '%s'; current status: '%s'" % (store.volume_id, vl[0].status ) )
if store.status != vl[0].status:
# In case something failed during creation of UCI but actual storage volume was created and yet
# UCI state remained as 'new', try to remedy this by updating UCI state here
@@ -746,21 +939,26 @@
store.status = vl[0].status
self.sa_session.add( store )
self.sa_session.flush()
- if store.inst != None:
- if store.inst.instance_id != vl[0].instance_id:
- store.inst.instance_id = vl[0].instance_id
- self.sa_session.add( store )
- self.sa_session.flush()
- if store.attach_time != vl[0].attach_time:
- store.attach_time = vl[0].attach_time
- self.sa_session.add( store )
- self.sa_session.flush()
- if store.device != vl[0].device:
- store.device = vl[0].device
- self.sa_session.add( store )
- self.sa_session.flush()
+ # Boto does not seem to be reporting these values although fields exist so comment them out...
+# log.debug( "vl[0].instance_id: '%s'" % vl[0].instance_id )
+# if store.inst != None:
+# if store.inst.instance_id != vl[0].instance_id:
+# store.inst.instance_id = vl[0].instance_id
+# self.sa_session.add( store )
+# self.sa_session.flush()
+# log.debug( "vl[0].attach_time: '%s'" % vl[0].attach_time )
+# if store.attach_time != vl[0].attach_time:
+# store.attach_time = vl[0].attach_time
+# self.sa_session.add( store )
+# self.sa_session.flush()
+## log.debug( "vl[0].device: '%s'" % vl[0].device )
+# if store.device != vl[0].device:
+# store.device = vl[0].device
+# self.sa_session.add( store )
+# self.sa_session.flush()
except boto.exception.EC2ResponseError, e:
- err = "Updating status of volume(s) from cloud failed for UCI '"+ uci.name + "' during general status update: " + str( e )
+ err = "Updating status of volume(s) from cloud failed for UCI '"+ uci.name + \
+ "' during general status update: " + str( e )
log.error( err )
uci.error = err
uci.state = uci_states.ERROR
@@ -768,7 +966,7 @@
self.sa_session.flush()
return None
else:
- err = "No storage volumes returned by cloud provider on general update"
+ err = "No storage volumes returned by cloud provider on general update for volume with id: " + store.volume_id
log.error( "%s for UCI '%s'" % ( err, uci.name ) )
store.status = store_status.ERROR
store.error = err
diff -r 9d4945bbdcf5 -r efed28fa6a5e lib/galaxy/cloud/providers/eucalyptus.py
--- a/lib/galaxy/cloud/providers/eucalyptus.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/cloud/providers/eucalyptus.py Mon Nov 30 16:47:18 2009 -0500
@@ -30,6 +30,8 @@
SUBMITTED = "submitted",
SHUTTING_DOWN_UCI = "shutting-downUCI",
SHUTTING_DOWN = "shutting-down",
+ ADD_STORAGE_UCI = "add-storageUCI",
+ ADD_STORAGE = "add-storage",
AVAILABLE = "available",
RUNNING = "running",
PENDING = "pending",
@@ -43,6 +45,7 @@
TERMINATED = "terminated",
SUBMITTED = "submitted",
RUNNING = "running",
+ ADDING = "adding-storage",
PENDING = "pending",
SHUTTING_DOWN = "shutting-down",
ERROR = "error"
@@ -51,6 +54,7 @@
store_status = Bunch(
WAITING = "waiting",
IN_USE = "in-use",
+ ADDING = "adding",
CREATING = "creating",
DELETED = 'deleted',
ERROR = "error"
@@ -121,6 +125,8 @@
self.stop_uci( uci_wrapper )
elif uci_state==uci_states.SNAPSHOT:
self.snapshot_uci( uci_wrapper )
+ elif uci_state==uci_states.ADD_STORAGE:
+ self.add_storage_to_uci( uci_wrapper )
except:
log.exception( "Uncaught exception executing cloud request." )
cnt += 1
@@ -245,9 +251,16 @@
log.info( "Availability zone for UCI (i.e., storage volume) was not selected, using default zone: %s" % self.zone )
uci_wrapper.set_store_availability_zone( self.zone )
- log.debug( "Creating volume; using command: conn.create_volume( %s, '%s', snapshot=None )" % ( uci_wrapper.get_store_size( 0 ), uci_wrapper.get_uci_availability_zone() ))
- vol = conn.create_volume( uci_wrapper.get_store_size( 0 ), uci_wrapper.get_uci_availability_zone(), snapshot=None )
- uci_wrapper.set_store_volume_id( 0, vol.id )
+# log.debug( "Creating volume; using command: conn.create_volume( %s, '%s', snapshot=None )" % ( uci_wrapper.get_store_size( 0 ), uci_wrapper.get_uci_availability_zone() ))
+# vol = conn.create_volume( uci_wrapper.get_store_size( 0 ), uci_wrapper.get_uci_availability_zone(), snapshot=None )
+# uci_wrapper.set_store_volume_id( 0, vol.id )
+ store = uci_wrapper.get_all_stores_in_status( store_status.ADDING )[0] # Because at UCI creation time only 1 storage volume can be created, reference it directly
+
+ log.info( "Creating storage volume in zone '%s' of size '%s'..." % ( uci_wrapper.get_uci_availability_zone(), store.size ) )
+ # Because only 1 storage volume may be created at UCI config time, index of this storage volume in local Galaxy DB w.r.t
+ # current UCI is 0, so reference it in following methods
+ vol = conn.create_volume( store.size, uci_wrapper.get_uci_availability_zone(), snapshot=None )
+ uci_wrapper.set_store_volume_id( store.id, vol.id )
# Retrieve created volume again to get updated status
try:
@@ -364,6 +377,7 @@
def add_storage_to_uci( self, uci_wrapper ):
""" Adds more storage to specified UCI """
+ uci_wrapper.set_error( "Adding storage to eucalyptus-based clouds is not yet supported.", True )
def dummy_start_uci( self, uci_wrapper ):
diff -r 9d4945bbdcf5 -r efed28fa6a5e lib/galaxy/web/controllers/cloud.py
--- a/lib/galaxy/web/controllers/cloud.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/controllers/cloud.py Mon Nov 30 16:47:18 2009 -0500
@@ -41,6 +41,8 @@
SUBMITTED = "submitted",
SHUTTING_DOWN_UCI = "shutting-downUCI",
SHUTTING_DOWN = "shutting-down",
+ ADD_STORAGE_UCI = "add-storageUCI",
+ ADD_STORAGE = "add-storage",
AVAILABLE = "available",
RUNNING = "running",
PENDING = "pending",
@@ -54,13 +56,16 @@
TERMINATED = "terminated",
SUBMITTED = "submitted",
RUNNING = "running",
+ ADDING = "adding-storage",
PENDING = "pending",
SHUTTING_DOWN = "shutting-down",
ERROR = "error"
)
store_status = Bunch(
+ WAITING = "waiting",
IN_USE = "in-use",
+ ADDING = "adding",
CREATING = "creating",
DELETED = 'deleted',
ERROR = "error"
@@ -108,7 +113,9 @@
model.UCI.table.c.state==uci_states.SUBMITTED,
model.UCI.table.c.state==uci_states.SUBMITTED_UCI,
model.UCI.table.c.state==uci_states.SHUTTING_DOWN,
- model.UCI.table.c.state==uci_states.SHUTTING_DOWN_UCI ) ) \
+ model.UCI.table.c.state==uci_states.SHUTTING_DOWN_UCI,
+ model.UCI.table.c.state==uci_states.ADD_STORAGE,
+ model.UCI.table.c.state==uci_states.ADD_STORAGE_UCI ) ) \
.order_by( desc( model.UCI.table.c.update_time ) ) \
.all()
@@ -201,7 +208,8 @@
storage.user = user
storage.uci = uci
storage.size = volSize
- storage.availability_zone = zone
+ storage.availability_zone = zone
+ storage.status = store_status.ADDING
# Persist
session = trans.sa_session
session.add( uci )
@@ -306,6 +314,8 @@
( uci.state != uci_states.ERROR ) and \
( uci.state != uci_states.SHUTTING_DOWN_UCI ) and \
( uci.state != uci_states.SHUTTING_DOWN ) and \
+ ( uci.state != uci_states.ADD_STORAGE_UCI ) and \
+ ( uci.state != uci_states.ADD_STORAGE ) and \
( uci.state != uci_states.AVAILABLE ):
uci.state = uci_states.SHUTTING_DOWN_UCI
session = trans.sa_session
@@ -496,13 +506,53 @@
@web.expose
@web.require_login( "add instance storage" )
- def add_storage( self, trans, id ):
- instance = get_uci( trans, id )
+ def add_storage( self, trans, id, vol_size=None ):
+ error = None
+ uci = get_uci( trans, id )
+ stores = get_stores_in_status( trans, uci, store_status.IN_USE )
+ # Start adding of storage making sure given UCI is running and that at least one
+ # storage volume is attached to it (this is needed to by cloud controller to know
+ # as which device to attach the new storage volume)
+ if uci.state == uci_states.RUNNING and len( stores ) > 0:
+ if vol_size is not None:
+ try:
+ vol_size = int( vol_size )
+ except ValueError:
+ error = "Volume size must be integer value between 1 and 1000."
+
+ if not error:
+ user = trans.get_user()
+
+ storage = model.CloudStore()
+ storage.user = user
+ storage.uci = uci
+ storage.size = vol_size
+ storage.status = store_status.ADDING
+
+ # Set state of instance - NOTE that this code will only work (with code in cloud controller)
+ # for scenario where a UCI is associated with *1* compute instance!!!
+ instances = get_instances( trans, uci )
+ instances.state = instance_states.ADDING
+
+ uci.state = uci_states.ADD_STORAGE_UCI
+ # Persist
+ session = trans.sa_session
+ session.add( instances )
+ session.add( storage )
+ session.add( uci )
+ session.flush()
+ # Log and display the management page
+ trans.log_event( "User added storage volume to UCI: '%s'" % uci.name )
+ trans.set_message( "Adding of storage to instance '%s' initiated." % uci.name )
+ return self.list( trans )
+ else:
+ error( "Storage can only be added to instances that are in state 'RUNNING' with existing " \
+ "storage volume(s) already attached." )
- error( "Adding storage to instance '%s' is not supported yet." % instance.name )
-
- return self.list( trans )
+ return trans.show_form(
+ web.FormBuilder( url_for( id=trans.security.encode_id(uci.id) ), "Add storage to an instance", submit_text="Add" )
+ .add_text( "vol_size", "Storage size (1-1000 GB)", value='', error=error ) )
# ----- Image methods -----
@web.expose
@@ -1034,6 +1084,7 @@
dict = {}
dict['id'] = uci.id
dict['state'] = uci.state
+ dict['total_size'] = uci.total_size
if uci.error != None:
dict['error'] = str( uci.error )
else:
@@ -1136,19 +1187,30 @@
def get_stores( trans, uci ):
"""
- Get stores objects that are connected to uci object
+ Get stores objects that are associated with given uci and are not in 'error' status
"""
user = trans.get_user()
stores = trans.sa_session.query( model.CloudStore ) \
- .filter_by( user=user, uci_id=uci.id ) \
+ .filter_by( user=user, uci_id=uci.id, deleted=False ) \
.filter( model.CloudStore.table.c.status != store_status.ERROR ) \
.all()
return stores
+def get_stores_in_status( trans, uci, status ):
+ """
+ Get stores objects that are associated with given uci and are not have given status
+ """
+ user = trans.get_user()
+ stores = trans.sa_session.query( model.CloudStore ) \
+ .filter_by( user=user, uci_id=uci.id, status=status ) \
+ .all()
+
+ return stores
+
def get_instances( trans, uci ):
"""
- Get objects of instances that are pending or running and are connected to uci object
+ Get objects of instances that are pending or running and are connected to the given uci object
"""
user = trans.get_user()
instances = trans.sa_session.query( model.CloudInstance ) \
@@ -1159,6 +1221,17 @@
return instances
+def get_instances_in_state( trans, uci, state ):
+ """
+ Get objects of instances that are in specified state and are connected to the given uci object
+ """
+ user = trans.get_user()
+ instances = trans.sa_session.query( model.CloudInstance ) \
+ .filter_by( user=user, uci_id=uci.id, state=state ) \
+ .all()
+
+ return instances
+
def get_connection( trans, creds ):
"""
Establishes cloud connection using user's credentials
diff -r 9d4945bbdcf5 -r efed28fa6a5e templates/cloud/configure_cloud.mako
--- a/templates/cloud/configure_cloud.mako Mon Nov 30 15:33:45 2009 -0500
+++ b/templates/cloud/configure_cloud.mako Mon Nov 30 16:47:18 2009 -0500
@@ -79,7 +79,8 @@
});
}
- // Update 'state' and 'time alive' fields
+ // Update 'size', 'state' and 'time alive' fields
+ $(elem + "-size").text( data[i].total_size );
$(elem + "-state").text( data[i].state );
if ( new_state != 'error' ) { // Because 'error' state is handled as a JS link, don't include it in update
$(elem + "-state-p").text( data[i].state );
@@ -219,7 +220,7 @@
${liveInstance.name} (${liveInstance.credentials.name})
<a id="li-${i}-popup" class="popup-arrow" style="display: none;">▼</a>
</td>
- <td>${str(liveInstance.total_size)}</td>
+ <td id="${ liveInstance.id }-size">${str(liveInstance.total_size)}</td>
<td id="${ liveInstance.id }-state">${str(liveInstance.state)}</td>
<td id="${ liveInstance.id }-launch_time">
##${str(liveInstance.launch_time)[:16]}
@@ -251,7 +252,8 @@
<a class="action-button" confirm="Are you sure you want to stop instance '${liveInstance.name}'?" href="${h.url_for( action='stop', id=trans.security.encode_id(liveInstance.id) )}">Stop</a>
<a class="action-button" href="${h.url_for( action='rename_uci', id=trans.security.encode_id(liveInstance.id) )}">Rename</a>
<a class="action-button" href="${h.url_for( action='view_uci_details', id=trans.security.encode_id(liveInstance.id) )}">View details</a>
- <a class="action-button" href="${h.url_for( action='uci_usage_report', id=trans.security.encode_id(liveInstance.id) )}">Usage report</a>
+ <a class="action-button" href="${h.url_for( action='add_storage', id=trans.security.encode_id(liveInstance.id) )}">Add storage</a>
+ <a class="action-button" href="${h.url_for( action='uci_usage_report', id=trans.security.encode_id(liveInstance.id) )}">Usage report</a>
</div>
</td>
</tr>
@@ -315,14 +317,13 @@
</td>
<td>
<div popupmenu="pi-${i}-popup">
- <a class="action-button" href="${h.url_for( action='start', id=trans.security.encode_id(prevInstance.id), type='m1.small' )}"> Start m1.small</a>
+ <a class="action-button" href="${h.url_for( action='uci_usage_report', id=trans.security.encode_id(prevInstance.id) )}">Usage report</a>
+ <a class="action-button" href="${h.url_for( action='rename_uci', id=trans.security.encode_id(prevInstance.id) )}">Rename</a>
+ <a class="action-button" href="${h.url_for( action='start', id=trans.security.encode_id(prevInstance.id), type='m1.small' )}"> Start m1.small</a>
<a class="action-button" href="${h.url_for( action='start', id=trans.security.encode_id(prevInstance.id), type='c1.medium' )}"> Start c1.medium</a>
- <a class="action-button" href="${h.url_for( action='rename_uci', id=trans.security.encode_id(prevInstance.id) )}">Rename</a>
- <a class="action-button" href="${h.url_for( action='uci_usage_report', id=trans.security.encode_id(prevInstance.id) )}">Usage report</a>
- <a class="action-button" href="${h.url_for( action='create_snapshot', id=trans.security.encode_id(prevInstance.id) )}">Create snapshot</a>
+ <a class="action-button" href="${h.url_for( action='create_snapshot', id=trans.security.encode_id(prevInstance.id) )}">Create snapshot</a>
<a class="action-button" href="${h.url_for( action='view_snapshots', id=trans.security.encode_id(prevInstance.id) )}">View snapshots</a>
- <a class="action-button" href="${h.url_for( action='add_storage', id=trans.security.encode_id(prevInstance.id) )}" target="_parent">Add storage</a>
- <a class="action-button" confirm="Are you sure you want to delete instance '${prevInstance.name}'? This will delete all of your data assocaiated with this instance!" href="${h.url_for( action='delete_uci', id=trans.security.encode_id(prevInstance.id) )}">Delete</a>
+ <a class="action-button" confirm="Are you sure you want to delete instance '${prevInstance.name}'? This will delete all of your data assocaiated with this instance!" href="${h.url_for( action='delete_uci', id=trans.security.encode_id(prevInstance.id) )}">Delete</a>
</div>
</td>
</tr>
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/f98643c26eb7
changeset: 3130:f98643c26eb7
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Mon Nov 30 17:53:25 2009 -0500
description:
Framework for recording user actions for reports; framework is modelled after event recording. Currently two types of actions are recorded: (a) tagging/untagging and (b) filtering/searching in grids.
diffstat:
lib/galaxy/config.py | 1 +
lib/galaxy/model/__init__.py | 10 +++++
lib/galaxy/model/mapping.py | 13 ++++++
lib/galaxy/model/migrate/versions/0029_user_actions.py | 47 +++++++++++++++++++++++
lib/galaxy/web/controllers/dataset.py | 2 +-
lib/galaxy/web/controllers/history.py | 2 +-
lib/galaxy/web/controllers/tag.py | 24 ++++++++---
lib/galaxy/web/framework/__init__.py | 17 ++++++++
lib/galaxy/web/framework/helpers/grids.py | 13 +++++-
templates/dataset/edit_attributes.mako | 2 +-
templates/history/view.mako | 2 +-
templates/root/history.mako | 2 +-
templates/tagging_common.mako | 8 ++--
universe_wsgi.ini.sample | 3 +
14 files changed, 128 insertions(+), 18 deletions(-)
diffs (335 lines):
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/config.py
--- a/lib/galaxy/config.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/config.py Mon Nov 30 17:53:25 2009 -0500
@@ -79,6 +79,7 @@
self.use_heartbeat = string_as_bool( kwargs.get( 'use_heartbeat', 'False' ) )
self.use_memdump = string_as_bool( kwargs.get( 'use_memdump', 'False' ) )
self.log_memory_usage = string_as_bool( kwargs.get( 'log_memory_usage', 'False' ) )
+ self.log_actions = string_as_bool( kwargs.get( 'log_actions', 'False' ) )
self.log_events = string_as_bool( kwargs.get( 'log_events', 'False' ) )
self.ucsc_display_sites = kwargs.get( 'ucsc_display_sites', "main,test,archaea,ucla" ).lower().split(",")
self.gbrowse_display_sites = kwargs.get( 'gbrowse_display_sites', "main,test,tair" ).lower().split(",")
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/model/__init__.py Mon Nov 30 17:53:25 2009 -0500
@@ -1441,6 +1441,16 @@
def __init__( self, name=None, value=None ):
self.name = name
self.value = value
+
+class UserAction( object ):
+ def __init__( self, id=None, create_time=None, user_id=None, session_id=None, action=None, params=None, context=None):
+ self.id = id
+ self.create_time = create_time
+ self.user_id = user_id
+ self.session_id = session_id
+ self.action = action
+ self.params = params
+ self.context = context
## ---- Utility methods -------------------------------------------------------
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/model/mapping.py
--- a/lib/galaxy/model/mapping.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/model/mapping.py Mon Nov 30 17:53:25 2009 -0500
@@ -743,6 +743,15 @@
Column( "name", Unicode( 255 ), index=True),
Column( "value", Unicode( 1024 ) ) )
+UserAction.table = Table( "user_action", metadata,
+ Column( "id", Integer, primary_key=True ),
+ Column( "create_time", DateTime, default=now ),
+ Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
+ Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ),
+ Column( "action", Unicode( 255 ) ),
+ Column( "context", Unicode( 512 ) ),
+ Column( "params", Unicode( 1024 ) ) )
+
# With the tables defined we can define the mappers and setup the
# relationships between the model objects.
@@ -1237,6 +1246,10 @@
assign_mapper( context, UserPreference, UserPreference.table,
properties = {}
)
+
+assign_mapper( context, UserAction, UserAction.table,
+ properties = dict( user=relation( User.mapper ) )
+ )
def db_next_hid( self ):
"""
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/model/migrate/versions/0029_user_actions.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/model/migrate/versions/0029_user_actions.py Mon Nov 30 17:53:25 2009 -0500
@@ -0,0 +1,47 @@
+"""
+This migration script adds a user actions table to Galaxy.
+"""
+
+from sqlalchemy import *
+from migrate import *
+
+import datetime
+now = datetime.datetime.utcnow
+
+import logging
+log = logging.getLogger( __name__ )
+
+metadata = MetaData( migrate_engine )
+
+def display_migration_details():
+ print ""
+ print "This migration script adds a user actions table to Galaxy."
+ print ""
+
+
+# New table to store user actions.
+UserAction_table = Table( "user_action", metadata,
+ Column( "id", Integer, primary_key=True ),
+ Column( "create_time", DateTime, default=now ),
+ Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
+ Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ),
+ Column( "action", Unicode( 255 ) ),
+ Column( "context", Unicode( 512 ) ),
+ Column( "params", Unicode( 1024 ) ) )
+
+def upgrade():
+ display_migration_details()
+ metadata.reflect()
+ try:
+ UserAction_table.create()
+ except Exception, e:
+ print str(e)
+ log.debug( "Creating user_action table failed: %s" % str( e ) )
+
+def downgrade():
+ metadata.reflect()
+ try:
+ UserAction_table.drop()
+ except Exception, e:
+ print str(e)
+ log.debug( "Dropping user_action table failed: %s" % str( e ) )
\ No newline at end of file
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/web/controllers/dataset.py
--- a/lib/galaxy/web/controllers/dataset.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/controllers/dataset.py Mon Nov 30 17:53:25 2009 -0500
@@ -87,7 +87,7 @@
link=( lambda item: iff( item.history.deleted, None, dict( operation="switch", id=item.id ) ) ), filterable="advanced" ),
HistoryColumn( "History", key="history",
link=( lambda item: iff( item.history.deleted, None, dict( operation="switch_history", id=item.id ) ) ) ),
- grids.TagsColumn( "Tags", "tags", model.HistoryDatasetAssociation, model.HistoryDatasetAssociationTagAssociation, filterable="advanced" ),
+ grids.TagsColumn( "Tags", "tags", model.HistoryDatasetAssociation, model.HistoryDatasetAssociationTagAssociation, filterable="advanced", grid_name="HistoryDatasetAssocationListGrid" ),
StatusColumn( "Status", key="deleted", attach_popup=False ),
grids.GridColumn( "Created", key="create_time", format=time_ago ),
grids.GridColumn( "Last Updated", key="update_time", format=time_ago ),
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/web/controllers/history.py
--- a/lib/galaxy/web/controllers/history.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/controllers/history.py Mon Nov 30 17:53:25 2009 -0500
@@ -94,7 +94,7 @@
link=( lambda history: iff( history.deleted, None, dict( operation="Switch", id=history.id ) ) ),
attach_popup=True, filterable="advanced" ),
DatasetsByStateColumn( "Datasets (by state)", ncells=4 ),
- grids.TagsColumn( "Tags", "tags", model.History, model.HistoryTagAssociation, filterable="advanced"),
+ grids.TagsColumn( "Tags", "tags", model.History, model.HistoryTagAssociation, filterable="advanced", grid_name="HistoryListGrid" ),
StatusColumn( "Status", attach_popup=False ),
grids.GridColumn( "Created", key="create_time", format=time_ago ),
grids.GridColumn( "Last Updated", key="update_time", format=time_ago ),
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/web/controllers/tag.py
--- a/lib/galaxy/web/controllers/tag.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/controllers/tag.py Mon Nov 30 17:53:25 2009 -0500
@@ -28,28 +28,38 @@
@web.expose
@web.require_login( "Add tag to an item." )
- def add_tag_async( self, trans, id=None, item_class=None, new_tag=None ):
+ def add_tag_async( self, trans, id=None, item_class=None, new_tag=None, context=None ):
""" Add tag to an item. """
- item = self._get_item(trans, item_class, trans.security.decode_id(id))
- self._do_security_check(trans, item)
+ # Check that user owns item.
+ item = self._get_item(trans, item_class, trans.security.decode_id( id ) )
+ self._do_security_check( trans, item )
+ # Apply tag.
self.tag_handler.apply_item_tags( trans.sa_session, item, new_tag.encode('utf-8') )
trans.sa_session.flush()
+ # Log.
+ params = dict( item_id=item.id, item_class=item_class, tag=new_tag)
+ trans.log_action( unicode( "tag"), context, params )
+
@web.expose
@web.require_login( "Remove tag from an item." )
- def remove_tag_async( self, trans, id=None, item_class=None, tag_name=None ):
+ def remove_tag_async( self, trans, id=None, item_class=None, tag_name=None, context=None ):
""" Remove tag from an item. """
+
+ # Check that user owns item.
item = self._get_item(trans, item_class, trans.security.decode_id(id))
-
self._do_security_check(trans, item)
+ # Remove tag.
self.tag_handler.remove_item_tag( trans, item, tag_name.encode('utf-8') )
- #print tag_name
- #print unicode(tag_name)
trans.sa_session.flush()
+ # Log.
+ params = dict( item_id=item.id, item_class=item_class, tag=tag_name)
+ trans.log_action( unicode( "untag"), context, params )
+
# Retag an item. All previous tags are deleted and new tags are applied.
@web.expose
@web.require_login( "Apply a new set of tags to an item; previous tags are deleted." )
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/framework/__init__.py Mon Nov 30 17:53:25 2009 -0500
@@ -10,6 +10,7 @@
import base
import pickle
from galaxy import util
+from galaxy.util.json import to_json_string
pkg_resources.require( "simplejson" )
import simplejson
@@ -170,6 +171,22 @@
to allow migration toward a more SQLAlchemy 0.4 style of use.
"""
return self.app.model.context.current
+ def log_action( self, action, context, params):
+ """
+ Application-level logging of user actions.
+ """
+ if self.app.config.log_actions:
+ action = self.app.model.UserAction(action=action, context=context, params=unicode( to_json_string( params ) ) )
+ try:
+ action.user = self.user
+ except:
+ action.user = None
+ try:
+ action.session_id = self.galaxy_session.id
+ except:
+ action.session_id = None
+ self.sa_session.add( action )
+ self.sa_session.flush()
def log_event( self, message, tool_id=None, **kwargs ):
"""
Application level logging. Still needs fleshing out (log levels and such)
diff -r 9d4945bbdcf5 -r f98643c26eb7 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Mon Nov 30 15:33:45 2009 -0500
+++ b/lib/galaxy/web/framework/helpers/grids.py Mon Nov 30 17:53:25 2009 -0500
@@ -200,6 +200,13 @@
trans.get_user().preferences[pref_name] = unicode( to_json_string( sort_key ) )
trans.sa_session.flush()
+ # Log grid view.
+ context = unicode( self.__class__.__name__ )
+ params = cur_filter_dict.copy()
+ params['sort'] = sort_key
+ params['async'] = ( 'async' in kwargs )
+ trans.log_action( unicode( "grid.view"), context, params )
+
# Render grid.
def url( *args, **kwargs ):
# Only include sort/filter arguments if not linking to another
@@ -340,17 +347,19 @@
# Generic column that supports tagging.
class TagsColumn( TextColumn ):
- def __init__( self, col_name, key, model_class, model_tag_association_class, filterable ):
+ def __init__( self, col_name, key, model_class, model_tag_association_class, filterable, grid_name=None ):
GridColumn.__init__(self, col_name, key=key, model_class=model_class, filterable=filterable)
self.model_tag_association_class = model_tag_association_class
# Tags cannot be sorted.
self.sortable = False
+ # Column-specific attributes.
self.tag_elt_id_gen = 0
+ self.grid_name = grid_name
def get_value( self, trans, grid, item ):
self.tag_elt_id_gen += 1
elt_id="tagging-elt" + str( self.tag_elt_id_gen )
div_elt = "<div id=%s></div>" % elt_id
- return div_elt + trans.fill_template( "/tagging_common.mako", trans=trans, tagged_item=item,
+ return div_elt + trans.fill_template( "/tagging_common.mako", trans=trans, tagged_item=item, elt_context=self.grid_name,
elt_id = elt_id, in_form="true", input_size="20", tag_click_fn="add_tag_to_grid_filter" )
def filter( self, db_session, query, column_filter ):
""" Modify query to filter model_class by tag. Multiple filters are ANDed. """
diff -r 9d4945bbdcf5 -r f98643c26eb7 templates/dataset/edit_attributes.mako
--- a/templates/dataset/edit_attributes.mako Mon Nov 30 15:33:45 2009 -0500
+++ b/templates/dataset/edit_attributes.mako Mon Nov 30 17:53:25 2009 -0500
@@ -59,7 +59,7 @@
</div>
<div style="clear: both"></div>
</div>
- ${render_tagging_element(data, "dataset-tag-area", use_toggle_link="false", in_form="true", input_size="30")}
+ ${render_tagging_element(data, "dataset-tag-area", "edit_attributes.mako", use_toggle_link="false", in_form="true", input_size="30")}
%endif
%for name, spec in data.metadata.spec.items():
%if spec.visible:
diff -r 9d4945bbdcf5 -r f98643c26eb7 templates/history/view.mako
--- a/templates/history/view.mako Mon Nov 30 15:33:45 2009 -0500
+++ b/templates/history/view.mako Mon Nov 30 17:53:25 2009 -0500
@@ -327,7 +327,7 @@
%if trans.get_user() is not None:
<div id='history-tag-area' class="tag-element"></div>
- ${render_tagging_element(history, "history-tag-area", use_toggle_link='false', get_toggle_link_text_fn='get_toggle_link_text', editable=user_owns_history)}
+ ${render_tagging_element(history, "history-tag-area", "history/view.mako", use_toggle_link='false', get_toggle_link_text_fn='get_toggle_link_text', editable=user_owns_history)}
%endif
%if not datasets:
diff -r 9d4945bbdcf5 -r f98643c26eb7 templates/root/history.mako
--- a/templates/root/history.mako Mon Nov 30 15:33:45 2009 -0500
+++ b/templates/root/history.mako Mon Nov 30 17:53:25 2009 -0500
@@ -325,7 +325,7 @@
%if trans.get_user() is not None:
<div id='history-tag-area' class="tag-element"></div>
- ${render_tagging_element(history, "history-tag-area", get_toggle_link_text_fn='get_toggle_link_text')}
+ ${render_tagging_element( tagged_item=history, elt_id="history-tag-area", elt_context="history.mako", get_toggle_link_text_fn='get_toggle_link_text' )}
%endif
%if not datasets:
diff -r 9d4945bbdcf5 -r f98643c26eb7 templates/tagging_common.mako
--- a/templates/tagging_common.mako Mon Nov 30 15:33:45 2009 -0500
+++ b/templates/tagging_common.mako Mon Nov 30 17:53:25 2009 -0500
@@ -1,10 +1,10 @@
## Render a tagging element if there is a tagged_item.
%if tagged_item is not None and elt_id is not None:
- ${render_tagging_element(tagged_item, elt_id=elt_id, in_form=in_form, input_size=input_size, tag_click_fn=tag_click_fn)}
+ ${render_tagging_element(tagged_item=tagged_item, elt_id=elt_id, elt_context=elt_context, in_form=in_form, input_size=input_size, tag_click_fn=tag_click_fn)}
%endif
## Render the tags 'tags' as an autocomplete element.
-<%def name="render_tagging_element(tagged_item, elt_id, use_toggle_link='true', in_form='false', input_size='15', tag_click_fn='default_tag_click_fn', get_toggle_link_text_fn='default_get_toggle_link_text_fn', editable='true')">
+<%def name="render_tagging_element(tagged_item, elt_id, elt_context, use_toggle_link='true', in_form='false', input_size='15', tag_click_fn='default_tag_click_fn', get_toggle_link_text_fn='default_get_toggle_link_text_fn', editable='true')">
<script type="text/javascript">
//
// Set up autocomplete tagger.
@@ -75,8 +75,8 @@
tag_click_fn: ${tag_click_fn},
<% tagged_item_id = trans.security.encode_id(tagged_item.id) %>
ajax_autocomplete_tag_url: "${h.url_for( controller='tag', action='tag_autocomplete_data', id=tagged_item_id, item_class=tagged_item.__class__.__name__ )}",
- ajax_add_tag_url: "${h.url_for( controller='tag', action='add_tag_async', id=tagged_item_id, item_class=tagged_item.__class__.__name__ )}",
- ajax_delete_tag_url: "${h.url_for( controller='tag', action='remove_tag_async', id=tagged_item_id, item_class=tagged_item.__class__.__name__ )}",
+ ajax_add_tag_url: "${h.url_for( controller='tag', action='add_tag_async', id=tagged_item_id, item_class=tagged_item.__class__.__name__, context=elt_context )}",
+ ajax_delete_tag_url: "${h.url_for( controller='tag', action='remove_tag_async', id=tagged_item_id, item_class=tagged_item.__class__.__name__, context=elt_context )}",
delete_tag_img: "${h.url_for('/static/images/delete_tag_icon_gray.png')}",
delete_tag_img_rollover: "${h.url_for('/static/images/delete_tag_icon_white.png')}",
add_tag_img: "${h.url_for('/static/images/add_icon.png')}",
diff -r 9d4945bbdcf5 -r f98643c26eb7 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Mon Nov 30 15:33:45 2009 -0500
+++ b/universe_wsgi.ini.sample Mon Nov 30 17:53:25 2009 -0500
@@ -144,6 +144,9 @@
# Log events
log_events = True
+# Log user actions
+log_actions = True
+
# Configuration for debugging middleware
debug = True
use_lint = False
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/6e742ffb16a5
changeset: 3134:6e742ffb16a5
user: jeremy goecks <jeremy.goecks at emory.edu>
date: Tue Dec 01 11:07:20 2009 -0500
description:
Improved loading state for AJAXed grids: when grid is loading, gray out table and prevent further user actions.
diffstat:
templates/grid_base.mako | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diffs (47 lines):
diff -r e75b55cc9e08 -r 6e742ffb16a5 templates/grid_base.mako
--- a/templates/grid_base.mako Tue Dec 01 09:53:36 2009 -0500
+++ b/templates/grid_base.mako Tue Dec 01 11:07:20 2009 -0500
@@ -601,6 +601,7 @@
// If there's an operation in the args, do POST; otherwise, do GET.
var operation = url_args['operation'];
var method = (operation != null && operation != undefined ? "POST" : "GET" );
+ $('.loading-elt-overlay').show(); // Show overlay to indicate loading and prevent user actions.
$.ajax({
type: method,
url: "${h.url_for()}",
@@ -660,6 +661,9 @@
}
}
+ // Hide loading overlay.
+ $('.loading-elt-overlay').hide();
+
// Show message if there is one.
var message = $.trim( parsed_response_text[2] );
if (message != "")
@@ -711,6 +715,15 @@
.gray-background {
background-color: #DDDDDD;
}
+ .loading-elt-overlay {
+ background-color : white;
+ opacity : 0.5;
+ width : 100%;
+ height : 85%;
+ z-index : 14000;
+ position : absolute;
+ display: none;
+ }
</style>
</%def>
@@ -750,7 +763,8 @@
## Render grid.
<%def name="render_grid_table()">
<form action="${url()}" method="post" onsubmit="return false;">
- <table class="grid">
+ <div class='loading-elt-overlay'></div>
+ <table id='grid-table' class="grid">
<thead id="grid-table-header">
<tr>
<th></th>
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/eb317734e391
changeset: 3135:eb317734e391
user: guru
date: Tue Dec 01 11:49:07 2009 -0500
description:
Adding back 'wiggle to interval' converter
diffstat:
datatypes_conf.xml.sample | 1 +
lib/galaxy/datatypes/converters/wiggle_to_simple_converter.py | 44 +++++++
lib/galaxy/datatypes/converters/wiggle_to_simple_converter.xml | 11 +
test-data/3.wig | 37 ++++++
test-data/3_wig.bed | 26 ++++
tool_conf.xml.main | 1 +
tool_conf.xml.sample | 1 +
tools/filters/wiggle_to_simple.py | 43 +++++++
tools/filters/wiggle_to_simple.xml | 88 ++++++++++++++
9 files changed, 252 insertions(+), 0 deletions(-)
diffs (306 lines):
diff -r 6e742ffb16a5 -r eb317734e391 datatypes_conf.xml.sample
--- a/datatypes_conf.xml.sample Tue Dec 01 11:07:20 2009 -0500
+++ b/datatypes_conf.xml.sample Tue Dec 01 11:49:07 2009 -0500
@@ -58,6 +58,7 @@
<datatype extension="txtseq.zip" type="galaxy.datatypes.data:Txtseq" mimetype="application/zip" display_in_upload="true"/>
<datatype extension="wig" type="galaxy.datatypes.interval:Wiggle" display_in_upload="true">
<converter file="wiggle_to_array_tree_converter.xml" target_datatype="array_tree"/>
+ <converter file="wiggle_to_simple_converter.xml" target_datatype="interval"/>
</datatype>
<datatype extension="array_tree" type="galaxy.datatypes.data:Data" />
<datatype extension="interval_index" type="galaxy.datatypes.data:Data" />
diff -r 6e742ffb16a5 -r eb317734e391 lib/galaxy/datatypes/converters/wiggle_to_simple_converter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/datatypes/converters/wiggle_to_simple_converter.py Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+#code is same as ~/tools/stats/wiggle_to_simple.py
+
+"""
+Read a wiggle track and print out a series of lines containing
+"chrom position score". Ignores track lines, handles bed, variableStep
+and fixedStep wiggle lines.
+"""
+import sys
+from galaxy import eggs
+import pkg_resources; pkg_resources.require( "bx-python" )
+import bx.wiggle
+from galaxy.tools.exception_handling import *
+
+def stop_err( msg ):
+ sys.stderr.write( msg )
+ sys.exit()
+
+def main():
+ if len( sys.argv ) > 1:
+ in_file = open( sys.argv[1] )
+ else:
+ in_file = open( sys.stdin )
+
+ if len( sys.argv ) > 2:
+ out_file = open( sys.argv[2], "w" )
+ else:
+ out_file = sys.stdout
+
+ try:
+ for fields in bx.wiggle.IntervalReader( UCSCOutWrapper( in_file ) ):
+ out_file.write( "%s\n" % "\t".join( map( str, fields ) ) )
+ except UCSCLimitException:
+ # Wiggle data was truncated, at the very least need to warn the user.
+ print 'Encountered message from UCSC: "Reached output limit of 100000 data values", so be aware your data was truncated.'
+ except ValueError, e:
+ in_file.close()
+ out_file.close()
+ stop_err( str( e ) )
+
+ in_file.close()
+ out_file.close()
+
+if __name__ == "__main__": main()
diff -r 6e742ffb16a5 -r eb317734e391 lib/galaxy/datatypes/converters/wiggle_to_simple_converter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/datatypes/converters/wiggle_to_simple_converter.xml Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,11 @@
+<tool id="CONVERTER_wiggle_to_interval_0" name="Wiggle to Interval">
+ <!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
+ <!-- Used on the metadata edit page. -->
+ <command interpreter="python">wiggle_to_simple_converter.py $input $out_file1 </command>
+ <inputs>
+ <param format="wig" name="input" type="data" label="Convert"/>
+ </inputs>
+ <outputs>
+ <data format="interval" name="out_file1" />
+ </outputs>
+</tool>
diff -r 6e742ffb16a5 -r eb317734e391 test-data/3.wig
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/3.wig Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,37 @@
+track type=wiggle_0 name="LaminB1 (Tig3)" description="NKI LaminB1 DamID Map (log2-ratio scores, Tig3 cells)"
+# output date: 2009-07-22 15:55:44 UTC
+# chrom specified: chr20
+# position specified: 1-62435964
+# data values >= 4
+# This data has been compressed with a minor loss in resolution.
+# (Worst case: 0.0448672) The original source data
+# (before querying and compression) is available at
+# http://hgdownload.cse.ucsc.edu/downloads.html
+variableStep chrom=chr20 span=60
+1953668 4.029
+9749454 4.033
+12219969 4.053
+12571904 4.548
+12663417 4.207
+15198014 4.041
+16613945 4.526
+16994767 4.08
+19456653 4.014
+37706076 4.293
+38010695 4.14
+38418792 4.133
+38595669 4.032
+40038834 4.144
+50693133 4.206
+51294426 4
+52890600 4.12
+57414708 4.026
+57623989 4.031
+58977191 5.678
+59059925 4.325
+variableStep chrom=chr12 span=60
+1953668 -4.029
+9749454 -4.033
+12219969 -4.053
+12571904 -4.548
+12663417 -4.207
diff -r 6e742ffb16a5 -r eb317734e391 test-data/3_wig.bed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/3_wig.bed Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,26 @@
+chr20 1953667 1953727 + 4.029
+chr20 9749453 9749513 + 4.033
+chr20 12219968 12220028 + 4.053
+chr20 12571903 12571963 + 4.548
+chr20 12663416 12663476 + 4.207
+chr20 15198013 15198073 + 4.041
+chr20 16613944 16614004 + 4.526
+chr20 16994766 16994826 + 4.08
+chr20 19456652 19456712 + 4.014
+chr20 37706075 37706135 + 4.293
+chr20 38010694 38010754 + 4.14
+chr20 38418791 38418851 + 4.133
+chr20 38595668 38595728 + 4.032
+chr20 40038833 40038893 + 4.144
+chr20 50693132 50693192 + 4.206
+chr20 51294425 51294485 + 4.0
+chr20 52890599 52890659 + 4.12
+chr20 57414707 57414767 + 4.026
+chr20 57623988 57624048 + 4.031
+chr20 58977190 58977250 + 5.678
+chr20 59059924 59059984 + 4.325
+chr12 1953667 1953727 + -4.029
+chr12 9749453 9749513 + -4.033
+chr12 12219968 12220028 + -4.053
+chr12 12571903 12571963 + -4.548
+chr12 12663416 12663476 + -4.207
diff -r 6e742ffb16a5 -r eb317734e391 tool_conf.xml.main
--- a/tool_conf.xml.main Tue Dec 01 11:07:20 2009 -0500
+++ b/tool_conf.xml.main Tue Dec 01 11:49:07 2009 -0500
@@ -47,6 +47,7 @@
<tool file="maf/maf_to_fasta.xml" />
<tool file="fasta_tools/tabular_to_fasta.xml" />
<tool file="fastx_toolkit/fastq_to_fasta.xml" />
+ <tool file="filters/wiggle_to_simple.xml" />
</section>
<section name="FASTA manipulation" id="fasta_manipulation">
<tool file="fasta_tools/fasta_compute_length.xml" />
diff -r 6e742ffb16a5 -r eb317734e391 tool_conf.xml.sample
--- a/tool_conf.xml.sample Tue Dec 01 11:07:20 2009 -0500
+++ b/tool_conf.xml.sample Tue Dec 01 11:49:07 2009 -0500
@@ -71,6 +71,7 @@
<tool file="maf/maf_to_fasta.xml" />
<tool file="fasta_tools/tabular_to_fasta.xml" />
<tool file="fastx_toolkit/fastq_to_fasta.xml" />
+ <tool file="filters/wiggle_to_simple.xml" />
</section>
<section name="Extract Features" id="features">
<tool file="filters/ucsc_gene_bed_to_exon_bed.xml" />
diff -r 6e742ffb16a5 -r eb317734e391 tools/filters/wiggle_to_simple.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/filters/wiggle_to_simple.py Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+
+"""
+Read a wiggle track and print out a series of lines containing
+"chrom position score". Ignores track lines, handles bed, variableStep
+and fixedStep wiggle lines.
+"""
+import sys
+from galaxy import eggs
+import pkg_resources; pkg_resources.require( "bx-python" )
+import bx.wiggle
+from galaxy.tools.exception_handling import *
+
+def stop_err( msg ):
+ sys.stderr.write( msg )
+ sys.exit()
+
+def main():
+ if len( sys.argv ) > 1:
+ in_file = open( sys.argv[1] )
+ else:
+ in_file = open( sys.stdin )
+
+ if len( sys.argv ) > 2:
+ out_file = open( sys.argv[2], "w" )
+ else:
+ out_file = sys.stdout
+
+ try:
+ for fields in bx.wiggle.IntervalReader( UCSCOutWrapper( in_file ) ):
+ out_file.write( "%s\n" % "\t".join( map( str, fields ) ) )
+ except UCSCLimitException:
+ # Wiggle data was truncated, at the very least need to warn the user.
+ print 'Encountered message from UCSC: "Reached output limit of 100000 data values", so be aware your data was truncated.'
+ except ValueError, e:
+ in_file.close()
+ out_file.close()
+ stop_err( str( e ) )
+
+ in_file.close()
+ out_file.close()
+
+if __name__ == "__main__": main()
diff -r 6e742ffb16a5 -r eb317734e391 tools/filters/wiggle_to_simple.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/filters/wiggle_to_simple.xml Tue Dec 01 11:49:07 2009 -0500
@@ -0,0 +1,88 @@
+<tool id="wiggle2simple1" name="Wiggle-to-Interval">
+ <description>converter</description>
+ <command interpreter="python">wiggle_to_simple.py $input $out_file1 </command>
+ <inputs>
+ <param format="wig" name="input" type="data" label="Convert"/>
+ </inputs>
+ <outputs>
+ <data format="interval" name="out_file1" />
+ </outputs>
+ <tests>
+ <test>
+ <param name="input" value="2.wig" />
+ <output name="out_file1" file="2.interval"/>
+ </test>
+ <test>
+ <param name="input" value="3.wig" />
+ <output name="out_file1" file="3_wig.bed"/>
+ </test>
+ </tests>
+ <help>
+**Syntax**
+
+This tool converts wiggle data into interval type.
+
+- **Wiggle format**: The .wig format is line-oriented. Wiggle data is preceded by a UCSC track definition line. Following the track definition line is the track data, which can be entered in three different formats described below.
+
+ - **BED format** with no declaration line and four columns of data::
+
+ chromA chromStartA chromEndA dataValueA
+ chromB chromStartB chromEndB dataValueB
+
+ - **variableStep** two column data; started by a declaration line and followed with chromosome positions and data values::
+
+ variableStep chrom=chrN [span=windowSize]
+ chromStartA dataValueA
+ chromStartB dataValueB
+
+ - **fixedStep** single column data; started by a declaration line and followed with data values::
+
+ fixedStep chrom=chrN start=position step=stepInterval [span=windowSize]
+ dataValue1
+ dataValue2
+
+-----
+
+**Example**
+
+- input wiggle format file::
+
+ #track type=wiggle_0 name="Bed Format" description="BED format"
+ chr19 59302000 59302300 -1.0
+ chr19 59302300 59302600 -0.75
+ chr19 59302600 59302900 -0.50
+ chr19 59302900 59303200 -0.25
+ chr19 59303200 59303500 0.0
+ #track type=wiggle_0 name="variableStep" description="variableStep format"
+ variableStep chrom=chr19 span=150
+ 59304701 10.0
+ 59304901 12.5
+ 59305401 15.0
+ 59305601 17.5
+ #track type=wiggle_0 name="fixedStep" description="fixed step" visibility=full
+ fixedStep chrom=chr19 start=59307401 step=300 span=200
+ 1000
+ 900
+ 800
+ 700
+ 600
+
+- convert the above file to interval file::
+
+ chr19 59302000 59302300 + -1.0
+ chr19 59302300 59302600 + -0.75
+ chr19 59302600 59302900 + -0.5
+ chr19 59302900 59303200 + -0.25
+ chr19 59303200 59303500 + 0.0
+ chr19 59304701 59304851 + 10.0
+ chr19 59304901 59305051 + 12.5
+ chr19 59305401 59305551 + 15.0
+ chr19 59305601 59305751 + 17.5
+ chr19 59307701 59307901 + 1000.0
+ chr19 59308001 59308201 + 900.0
+ chr19 59308301 59308501 + 800.0
+ chr19 59308601 59308801 + 700.0
+ chr19 59308901 59309101 + 600.0
+
+</help>
+</tool>
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/fe853d8e062d
changeset: 3136:fe853d8e062d
user: Kelly Vincent <kpvincent(a)bx.psu.edu>
date: Tue Dec 01 16:18:25 2009 -0500
description:
Added some error checking to pileup_parser tool so that it exits with a meaningful message if the user tries to do some 6-column work on a 10-column file, or vice versa.
diffstat:
tools/samtools/pileup_interval.py | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diffs (40 lines):
diff -r eb317734e391 -r fe853d8e062d tools/samtools/pileup_interval.py
--- a/tools/samtools/pileup_interval.py Tue Dec 01 11:49:07 2009 -0500
+++ b/tools/samtools/pileup_interval.py Tue Dec 01 16:18:25 2009 -0500
@@ -1,7 +1,7 @@
#! /usr/bin/python
"""
-Creates a pileup file from a bam file and a reference.
+Condenses pileup format into ranges of bases.
usage: %prog [options]
-i, --input=i: Input pileup file
@@ -18,6 +18,7 @@
from galaxy import eggs
import pkg_resources; pkg_resources.require( "bx-python" )
from bx.cookbook import doc_optparse
+import sys
def stop_err( msg ):
sys.stderr.write( msg )
@@ -56,7 +57,18 @@
bases = []
while inLine.strip() != '':
lineParts = inLine.split('\t')
- seq, loc, base, cov = lineParts[seqIndex], int(lineParts[locIndex]), lineParts[baseIndex], int(lineParts[covIndex])
+ try:
+ seq, loc, base, cov = lineParts[seqIndex], int(lineParts[locIndex]), lineParts[baseIndex], int(lineParts[covIndex])
+ except IndexError, ei:
+ if options.format == 'ten':
+ stop_err( 'It appears that you have selected 10 columns while your file has 6. Make sure that the number of columns you specify matches the number in your file.\n' + str( ei ) )
+ else:
+ stop_err( 'There appears to be something wrong with your column index values.\n' + str( ei ) )
+ except ValueError, ev:
+ if options.format == 'six':
+ stop_err( 'It appears that you have selected 6 columns while your file has 10. Make sure that the number of columns you specify matches the number in your file.\n' + str( ev ) )
+ else:
+ stop_err( 'There appears to be something wrong with your column index values.\n' + str( ev ) )
# strout += str(startLoc) + '\n'
# strout += str(bases) + '\n'
# strout += '%s\t%s\t%s\t%s\n' % (seq, loc, base, cov)
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/92d6a9796b24
changeset: 3128:92d6a9796b24
user: Dan Blankenberg <dan(a)bx.psu.edu>
date: Mon Nov 30 14:55:30 2009 -0500
description:
When setting metadata externally, substitute a MetadataTempFile object for all populated metadata FileParameters. Fixes the problem with writting to metadata FileParameter files on cluster nodes with read-only database/files directory.
diffstat:
lib/galaxy/datatypes/metadata.py | 21 +++-
lib/galaxy/model/mapping.py | 1 +
lib/galaxy/model/migrate/versions/0028_external_metadata_file_override.py | 47 +++++++++
scripts/set_metadata.py | 23 ++++-
tools/regVariation/quality_filter.xml | 2 +-
5 files changed, 87 insertions(+), 7 deletions(-)
diffs (172 lines):
diff -r 9f7a2a3be0e7 -r 92d6a9796b24 lib/galaxy/datatypes/metadata.py
--- a/lib/galaxy/datatypes/metadata.py Mon Nov 30 11:59:54 2009 -0500
+++ b/lib/galaxy/datatypes/metadata.py Mon Nov 30 14:55:30 2009 -0500
@@ -429,7 +429,9 @@
if MetadataTempFile.is_JSONified_value( value ):
value = MetadataTempFile.from_JSON( value )
if isinstance( value, MetadataTempFile ):
- mf = self.new_file( dataset = parent, **value.kwds )
+ mf = parent.metadata.get( self.spec.name, None)
+ if mf is None:
+ mf = self.new_file( dataset = parent, **value.kwds )
shutil.move( value.file_name, mf.file_name )
value = mf.id
return value
@@ -521,7 +523,7 @@
if dataset_path.false_path and dataset_path.real_path == metadata_files.dataset.file_name:
return dataset_path.false_path
return ""
- return "%s,%s,%s,%s,%s" % ( metadata_files.filename_in, metadata_files.filename_kwds, metadata_files.filename_out, metadata_files.filename_results_code, __get_filename_override() )
+ return "%s,%s,%s,%s,%s,%s" % ( metadata_files.filename_in, metadata_files.filename_kwds, metadata_files.filename_out, metadata_files.filename_results_code, __get_filename_override(), metadata_files.filename_override_metadata )
if not isinstance( datasets, list ):
datasets = [ datasets ]
if exec_dir is None:
@@ -558,11 +560,22 @@
open( metadata_files.filename_out, 'wb+' ) # create the file on disk, so it cannot be reused by tempfile (unlikely, but possible)
#file to store a 'return code' indicating the results of the set_meta() call
#results code is like (True/False - if setting metadata was successful/failed , exception or string of reason of success/failure )
- metadata_files.filename_results_code = relpath( tempfile.NamedTemporaryFile( dir = tmp_dir, prefix = "metadata_out_%s_" % key ).name )
+ metadata_files.filename_results_code = relpath( tempfile.NamedTemporaryFile( dir = tmp_dir, prefix = "metadata_results_%s_" % key ).name )
simplejson.dump( ( False, 'External set_meta() not called' ), open( metadata_files.filename_results_code, 'wb+' ) ) # create the file on disk, so it cannot be reused by tempfile (unlikely, but possible)
#file to store kwds passed to set_meta()
metadata_files.filename_kwds = relpath( tempfile.NamedTemporaryFile( dir = tmp_dir, prefix = "metadata_kwds_%s_" % key ).name )
simplejson.dump( kwds, open( metadata_files.filename_kwds, 'wb+' ), ensure_ascii=True )
+ #existing metadata file parameters need to be overridden with cluster-writable file locations
+ metadata_files.filename_override_metadata = relpath( tempfile.NamedTemporaryFile( dir = tmp_dir, prefix = "metadata_override_%s_" % key ).name )
+ open( metadata_files.filename_override_metadata, 'wb+' ) # create the file on disk, so it cannot be reused by tempfile (unlikely, but possible)
+ override_metadata = []
+ for meta_key, spec_value in dataset.metadata.spec.iteritems():
+ if isinstance( spec_value.param, FileParameter ) and dataset.metadata.get( meta_key, None ) is not None:
+ metadata_temp = MetadataTempFile()
+ shutil.copy( dataset.metadata.get( meta_key, None ).file_name, metadata_temp.file_name )
+ override_metadata.append( ( meta_key, metadata_temp.to_JSON() ) )
+ simplejson.dump( override_metadata, open( metadata_files.filename_override_metadata, 'wb+' ) )
+ #add to session and flush
sa_session.add( metadata_files )
sa_session.flush()
metadata_files_list.append( metadata_files )
@@ -585,7 +598,7 @@
#can occur if the job was stopped before completion, but a MetadataTempFile is used in the set_meta
MetadataTempFile.cleanup_from_JSON_dict_filename( metadata_files.filename_out )
dataset_key = self.get_dataset_metadata_key( metadata_files.dataset )
- for key, fname in [ ( 'filename_in', metadata_files.filename_in ), ( 'filename_out', metadata_files.filename_out ), ( 'filename_results_code', metadata_files.filename_results_code ), ( 'filename_kwds', metadata_files.filename_kwds ) ]:
+ for key, fname in [ ( 'filename_in', metadata_files.filename_in ), ( 'filename_out', metadata_files.filename_out ), ( 'filename_results_code', metadata_files.filename_results_code ), ( 'filename_kwds', metadata_files.filename_kwds ), ( 'filename_override_metadata', metadata_files.filename_override_metadata ) ]:
try:
os.remove( fname )
except Exception, e:
diff -r 9f7a2a3be0e7 -r 92d6a9796b24 lib/galaxy/model/mapping.py
--- a/lib/galaxy/model/mapping.py Mon Nov 30 11:59:54 2009 -0500
+++ b/lib/galaxy/model/mapping.py Mon Nov 30 14:55:30 2009 -0500
@@ -358,6 +358,7 @@
Column( "filename_out", String( 255 ) ),
Column( "filename_results_code", String( 255 ) ),
Column( "filename_kwds", String( 255 ) ),
+ Column( "filename_override_metadata", String( 255 ) ),
Column( "job_runner_external_pid", String( 255 ) ) )
Event.table = Table( "event", metadata,
diff -r 9f7a2a3be0e7 -r 92d6a9796b24 lib/galaxy/model/migrate/versions/0028_external_metadata_file_override.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/model/migrate/versions/0028_external_metadata_file_override.py Mon Nov 30 14:55:30 2009 -0500
@@ -0,0 +1,47 @@
+"""
+This script adds the filename_override_metadata column to the JobExternalOutputMetadata table,
+allowing existing metadata files to be written when using external metadata and a cluster
+set up with read-only access to database/files
+"""
+from sqlalchemy import *
+from sqlalchemy.orm import *
+from sqlalchemy.exceptions import *
+from migrate import *
+from migrate.changeset import *
+import datetime
+now = datetime.datetime.utcnow
+import sys, logging
+# Need our custom types, but don't import anything else from model
+from galaxy.model.custom_types import *
+
+log = logging.getLogger( __name__ )
+log.setLevel(logging.DEBUG)
+handler = logging.StreamHandler( sys.stdout )
+format = "%(name)s %(levelname)s %(asctime)s %(message)s"
+formatter = logging.Formatter( format )
+handler.setFormatter( formatter )
+log.addHandler( handler )
+
+metadata = MetaData( migrate_engine )
+db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
+
+def display_migration_details():
+ print "========================================"
+ print "This script adds the filename_override_metadata column to the JobExternalOutputMetadata table,"
+ print" allowing existing metadata files to be written when using external metadata and a cluster"
+ print "set up with read-only access to database/files"
+ print "========================================"
+def upgrade():
+ display_migration_details()
+ # Load existing tables
+ metadata.reflect()
+ try:
+ job_external_output_metadata = Table( "job_external_output_metadata", metadata, autoload=True )
+ col = Column( "filename_override_metadata", String( 255 ) )
+ col.create( job_external_output_metadata )
+ assert col is job_external_output_metadata.c.filename_override_metadata
+ except Exception, e:
+ log.debug( "Adding column 'filename_override_metadata' to job_external_output_metadata table failed: %s" % ( str( e ) ) )
+
+def downgrade():
+ pass
diff -r 9f7a2a3be0e7 -r 92d6a9796b24 scripts/set_metadata.py
--- a/scripts/set_metadata.py Mon Nov 30 11:59:54 2009 -0500
+++ b/scripts/set_metadata.py Mon Nov 30 14:55:30 2009 -0500
@@ -50,17 +50,36 @@
except:
continue
for filenames in sys.argv[1:]:
- filename_in, filename_kwds, filename_out, filename_results_code, dataset_filename_override = filenames.split( ',' )
+ fields = filenames.split( ',' )
+ filename_in = fields.pop( 0 )
+ filename_kwds = fields.pop( 0 )
+ filename_out = fields.pop( 0 )
+ filename_results_code = fields.pop( 0 )
+ dataset_filename_override = fields.pop( 0 )
+ #Need to be careful with the way that these parameters are populated from the filename splitting,
+ #because if a job is running when the server is updated, any existing external metadata command-lines
+ #will not have info about the newly added override_metadata file
+ if fields:
+ override_metadata = fields.pop( 0 )
+ else:
+ override_metadata = None
try:
dataset = cPickle.load( open( filename_in ) ) #load DatasetInstance
if dataset_filename_override:
dataset.dataset.external_filename = dataset_filename_override
if ext_override.get( dataset.dataset.id, None ):
dataset.extension = ext_override[ dataset.dataset.id ]
+ #Metadata FileParameter types may not be writable on a cluster node, and are therefore temporarily substituted with MetadataTempFiles
+ if override_metadata:
+ override_metadata = simplejson.load( open( override_metadata ) )
+ for metadata_name, metadata_file_override in override_metadata:
+ if galaxy.datatypes.metadata.MetadataTempFile.is_JSONified_value( metadata_file_override ):
+ metadata_file_override = galaxy.datatypes.metadata.MetadataTempFile.from_JSON( metadata_file_override )
+ setattr( dataset.metadata, metadata_name, metadata_file_override )
kwds = stringify_dictionary_keys( simplejson.load( open( filename_kwds ) ) )#load kwds; need to ensure our keywords are not unicode
dataset.datatype.set_meta( dataset, **kwds )
dataset.metadata.to_JSON_dict( filename_out ) # write out results of set_meta
- simplejson.dump( ( True, 'Metadata has been set successfully' ), open( filename_results_code, 'wb+' ) ) #setting metadata has suceeded
+ simplejson.dump( ( True, 'Metadata has been set successfully' ), open( filename_results_code, 'wb+' ) ) #setting metadata has succeeded
except Exception, e:
simplejson.dump( ( False, str( e ) ), open( filename_results_code, 'wb+' ) ) #setting metadata has failed somehow
clear_mappers()
diff -r 9f7a2a3be0e7 -r 92d6a9796b24 tools/regVariation/quality_filter.xml
--- a/tools/regVariation/quality_filter.xml Mon Nov 30 11:59:54 2009 -0500
+++ b/tools/regVariation/quality_filter.xml Mon Nov 30 14:55:30 2009 -0500
@@ -61,7 +61,7 @@
</conditional>
</inputs>
<outputs>
- <data format="maf" name="out_file1"/>
+ <data format="maf" name="out_file1" metadata_source="input"/>
</outputs>
<requirements>
<requirement type="python-module">numpy</requirement>
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/9d4945bbdcf5
changeset: 3129:9d4945bbdcf5
user: Dan Blankenberg <dan(a)bx.psu.edu>
date: Mon Nov 30 15:33:45 2009 -0500
description:
Fix MAF to BED tool. This tool should be rewritten to not use a code file, but instead use one of the standard ways to create additional outputs, similar to how maf_to_interval functions.
diffstat:
tools/maf/maf_to_bed.py | 3 +--
tools/maf/maf_to_bed.xml | 4 ++--
tools/maf/maf_to_bed_code.py | 1 +
3 files changed, 4 insertions(+), 4 deletions(-)
diffs (36 lines):
diff -r 92d6a9796b24 -r 9d4945bbdcf5 tools/maf/maf_to_bed.py
--- a/tools/maf/maf_to_bed.py Mon Nov 30 14:55:30 2009 -0500
+++ b/tools/maf/maf_to_bed.py Mon Nov 30 15:33:45 2009 -0500
@@ -15,8 +15,7 @@
input_filename = sys.argv[1]
output_filename = sys.argv[2]
#where to store files that become additional output
- database_tmp_dir = './database/tmp' #os.path.join(os.path.split(os.path.split(os.path.realpath(output_filename))[0])[0],'tmp') #database/tmp
-
+ database_tmp_dir = sys.argv[5]
species = sys.argv[3].split(',')
partial = sys.argv[4]
diff -r 92d6a9796b24 -r 9d4945bbdcf5 tools/maf/maf_to_bed.xml
--- a/tools/maf/maf_to_bed.xml Mon Nov 30 14:55:30 2009 -0500
+++ b/tools/maf/maf_to_bed.xml Mon Nov 30 15:33:45 2009 -0500
@@ -1,6 +1,6 @@
-<tool id="MAF_To_BED1" name="Maf to BED">
+<tool id="MAF_To_BED1" name="Maf to BED" force_history_refresh="True">
<description>Converts a MAF formated file to the BED format</description>
- <command interpreter="python">maf_to_bed.py $input1 $out_file1 $species $complete_blocks</command>
+ <command interpreter="python">maf_to_bed.py $input1 $out_file1 $species $complete_blocks $__new_file_path__</command>
<inputs>
<param format="maf" name="input1" type="data" label="MAF file to convert"/>
<param name="species" type="select" label="Select species" display="checkboxes" multiple="true" help="a separate history item will be created for each checked species">
diff -r 92d6a9796b24 -r 9d4945bbdcf5 tools/maf/maf_to_bed_code.py
--- a/tools/maf/maf_to_bed_code.py Mon Nov 30 14:55:30 2009 -0500
+++ b/tools/maf/maf_to_bed_code.py Mon Nov 30 15:33:45 2009 -0500
@@ -46,6 +46,7 @@
newdata.state = newdata.states.ERROR
newdata.dbkey = dbkey
newdata.init_meta()
+ newdata.set_meta()
newdata.set_peek()
app.model.context.flush()
output_data_list.append(newdata)
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/efdb6fb5de34
changeset: 3123:efdb6fb5de34
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Fri Nov 27 10:53:50 2009 -0500
description:
First pass of the lastz tool wrapper that includes job splitting - works but needs polishing.
diffstat:
test-data/B1.fa | 1000 ----------------------------------------
test-data/b1.fasta | 1000 ++++++++++++++++++++++++++++++++++++++++
test-data/lastz_wrapper_out1.sam | 494 +++++++++++++++++++
test-data/lastz_wrapper_out3.tabular | 26 +
test-data/phiX.fa | 79 ---
test-data/phiX.fasta | 79 +++
tool-data/lastz_seqs.loc | 2 +
tool_conf.xml.sample | 2 +-
tools/sr_mapping/bwa_wrapper.xml | 2 +-
tools/sr_mapping/lastz_wrapper.py | 133 +++++
tools/sr_mapping/lastz_wrapper.xml | 300 +++++++----
11 files changed, 1913 insertions(+), 1204 deletions(-)
diffs (truncated from 3185 to 3000 lines):
diff -r 8d149264b777 -r efdb6fb5de34 test-data/B1.fa
--- a/test-data/B1.fa Wed Nov 25 14:06:28 2009 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1000 +0,0 @@
->HWI-EAS91_1_306UPAAXX:6:1:1503:1160
-GGTGGTCTATAGTGTTATTAATATCAAGTTGGGGGG
->HWI-EAS91_1_306UPAAXX:6:1:1564:1179
-GCGAGCAGTAGACTCCTTCTGTTGATAAGCAAGCAT
->HWI-EAS91_1_306UPAAXX:6:1:1704:1082
-GATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTC
->HWI-EAS91_1_306UPAAXX:6:1:1588:1797
-GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT
->HWI-EAS91_1_306UPAAXX:6:1:1304:1526
-GTAGTTGAAATGGTAATAAGACGACCAATCTGACCT
->HWI-EAS91_1_306UPAAXX:6:1:1490:1582
-GTCGTGTTCAACAGACCTATAAACATTCTGTGCCGC
->HWI-EAS91_1_306UPAAXX:6:1:1356:1339
-GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC
->HWI-EAS91_1_306UPAAXX:6:1:1311:853
-GGTTGGTTTATCGTTTTTGACACTCTCACGTTGTCT
->HWI-EAS91_1_306UPAAXX:6:1:1257:1552
-GTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC
->HWI-EAS91_1_306UPAAXX:6:1:1486:1402
-GTTACTGAGAAGTTAATGGATGAATTGGCACAATGC
->HWI-EAS91_1_306UPAAXX:6:1:1028:1081
-GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT
->HWI-EAS91_1_306UPAAXX:6:1:1167:752
-GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC
->HWI-EAS91_1_306UPAAXX:6:1:1507:1113
-GTCAACGTTATATTTTGATAGTTTGACGGTTAATTC
->HWI-EAS91_1_306UPAAXX:6:1:1654:1311
-GGATGAAAATGCTCACAATGACAAATCTGTCCACGG
->HWI-EAS91_1_306UPAAXX:6:1:1386:1060
-GTTCTTGGTCAGTATGCAAATTAGCATAAGCAGCTT
->HWI-EAS91_1_306UPAAXX:6:1:1070:1356
-GGTTACAGTATGCCCATCGCAGTTCGCTACACGCAG
->HWI-EAS91_1_306UPAAXX:6:1:787:1032
-GCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCA
->HWI-EAS91_1_306UPAAXX:6:1:834:1017
-GCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGT
->HWI-EAS91_1_306UPAAXX:6:1:1703:1155
-GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT
->HWI-EAS91_1_306UPAAXX:6:1:1406:593
-GTTGAGTTCGATAATGGTGATATGTATGTTTACGGC
->HWI-EAS91_1_306UPAAXX:6:1:1411:886
-GTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCAT
->HWI-EAS91_1_306UPAAXX:6:1:923:972
-GCATGACAAGTAAAGGACGGTTGTCAGCGTCATAAG
->HWI-EAS91_1_306UPAAXX:6:1:1279:1004
-GCCATAGCACCAGAAACAAAACTAGGGGCGGCCTCT
->HWI-EAS91_1_306UPAAXX:6:1:1070:840
-GGTTGTCAGCGTCATAAGAGGTTTTACCTCCAAATG
->HWI-EAS91_1_306UPAAXX:6:1:1595:1040
-GTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGT
->HWI-EAS91_1_306UPAAXX:6:1:1002:559
-GAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAG
->HWI-EAS91_1_306UPAAXX:6:1:999:974
-GTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGC
->HWI-EAS91_1_306UPAAXX:6:1:896:982
-GTGGCTGGAGACAAATAATCTCTTTAATAACCTTAT
->HWI-EAS91_1_306UPAAXX:6:1:1366:741
-GTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGC
->HWI-EAS91_1_306UPAAXX:6:1:749:1469
-GTTTATGGTGAACAGTGGATTAAGTTCATGAAGGAT
->HWI-EAS91_1_306UPAAXX:6:1:1010:592
-GAGTTTATTGCTGCCGTCATTGCTTATTATGTTCAT
->HWI-EAS91_1_306UPAAXX:6:1:1393:650
-GTGACTCATATCTAAACCAGTCCTTGACGAACGTGC
->HWI-EAS91_1_306UPAAXX:6:1:1238:1731
-GAGAAATAAAAGTCTGAAACATGATTAAACTCCTAA
->HWI-EAS91_1_306UPAAXX:6:1:1629:908
-GATGCGGTTATCCATCTGCTTATGGAAGCCAAGCAT
->HWI-EAS91_1_306UPAAXX:6:1:1560:849
-GCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAG
->HWI-EAS91_1_306UPAAXX:6:1:1029:783
-GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT
->HWI-EAS91_1_306UPAAXX:6:1:1152:1324
-GACAATCAGAAAGAGATTGCCGAGATGCAAAATGAG
->HWI-EAS91_1_306UPAAXX:6:1:1614:2042
-GAAATGCCACAAGCCTCAATAGCAGGTTTAAGAGCC
->HWI-EAS91_1_306UPAAXX:6:1:1398:439
-GATGGTTGGTTTATCGTTTTTGACACTCTCACGTTG
->HWI-EAS91_1_306UPAAXX:6:1:955:616
-GACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGC
->HWI-EAS91_1_306UPAAXX:6:1:1672:753
-GAATGCCAGCAATCTCTTTTTGAGTCTCATTTTGCT
->HWI-EAS91_1_306UPAAXX:6:1:1195:1293
-GCAATGCGACAGGCTCATGCTGATGGTTGGTTTATC
->HWI-EAS91_1_306UPAAXX:6:1:1074:755
-GCAAGAGTAAACATAGTGCCATGCTCAGGAACAAAG
->HWI-EAS91_1_306UPAAXX:6:1:984:499
-GACTTAGTTCATCAGCAAACGCAGAATCAGCGGTAT
->HWI-EAS91_1_306UPAAXX:6:1:1452:1833
-GCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGT
->HWI-EAS91_1_306UPAAXX:6:1:863:710
-GAGTTCGATAATGGTGATATGTATGTTGACGGCCAT
->HWI-EAS91_1_306UPAAXX:6:1:885:649
-GCAGAAGTTAACACTTTCGGATATTTCTGATGAGTC
->HWI-EAS91_1_306UPAAXX:6:1:917:1214
-GACAGATGTATCCATCTGAATGCAATGAAGAAAACC
->HWI-EAS91_1_306UPAAXX:6:1:892:1254
-GCTCAGGAAATGCAGCAGCAAGATAATCACGAGTAT
->HWI-EAS91_1_306UPAAXX:6:1:1555:1005
-GCATTTGGCGCATAATCTCGGAAACCTGCTGTTGCT
->HWI-EAS91_1_306UPAAXX:6:1:1637:1413
-GATGCTGTTCAACCACTAATAGGTAAGAAATCATGT
->HWI-EAS91_1_306UPAAXX:6:1:1102:1567
-GGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAA
->HWI-EAS91_1_306UPAAXX:6:1:799:1337
-GTATATGCACAAAATGAGATGCTTGCTTATCAACAG
->HWI-EAS91_1_306UPAAXX:6:1:1353:1843
-GCAGACCCATAATGTCAATAGATGTGGTAGAAGTCG
->HWI-EAS91_1_306UPAAXX:6:1:1196:789
-GCGGCATACGCTCGGCGCCAGTTTGAATATTAGACA
->HWI-EAS91_1_306UPAAXX:6:1:1056:1676
-GTAAAATACTGACCAGCCGTTTGAGCTTGAGTAAGC
->HWI-EAS91_1_306UPAAXX:6:1:1349:1836
-GGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTC
->HWI-EAS91_1_306UPAAXX:6:1:1027:788
-GGTGTTAATGCCACTCCTCTCCCGACTGTTAACACT
->HWI-EAS91_1_306UPAAXX:6:1:990:1283
-GCTTAGGGATTTTATTGGTATCAGGGTTAATCGTGC
->HWI-EAS91_1_306UPAAXX:6:1:904:939
-GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT
->HWI-EAS91_1_306UPAAXX:6:1:1732:793
-GTCAACATACATATCACCATTATCGAACTCAACGCC
->HWI-EAS91_1_306UPAAXX:6:1:1355:2003
-GTTAGACCAAACCATGAAACCAACATAAACATTATT
->HWI-EAS91_1_306UPAAXX:6:1:1337:977
-GCACCAGAAACAAAACTAGGGGCGGCCTCATCAGGG
->HWI-EAS91_1_306UPAAXX:6:1:1605:1175
-GGAGGTAAAACCTCTTATGACGCTGACAACCGTCCT
->HWI-EAS91_1_306UPAAXX:6:1:1763:1192
-GACAGGCCGTTTGAATGTTGACGGGATGAACATAAT
->HWI-EAS91_1_306UPAAXX:6:1:722:483
-GTTATTATACCGTCAAGGACTGTGTGACTATTGACT
->HWI-EAS91_1_306UPAAXX:6:1:1760:1136
-GCAAAGCATTGGGATTATCATAAAACGCCTCTAATC
->HWI-EAS91_1_306UPAAXX:6:1:1088:798
-GGAAACCTGCTGTTGCTTGGAAAGATTGGTGTTTTC
->HWI-EAS91_1_306UPAAXX:6:1:633:1076
-GCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAG
->HWI-EAS91_1_306UPAAXX:6:1:673:754
-GTCATGGAAGCGATAAAACTCTGCAGGTTGGATATT
->HWI-EAS91_1_306UPAAXX:6:1:1759:2019
-GTAAAGGACGGTTGTCAGCGTCATAAGAGGTTTTAC
->HWI-EAS91_1_306UPAAXX:6:1:1064:1797
-GCGGTTATCCATCTGCTTATGGAAGCCAAGCATTGG
->HWI-EAS91_1_306UPAAXX:6:1:1112:1669
-GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACT
->HWI-EAS91_1_306UPAAXX:6:1:510:1447
-GCATTAAGCTCAGGAAATGCAGCAGCAAGATAATCA
->HWI-EAS91_1_306UPAAXX:6:1:877:1573
-GTGCTATTGCTGGCGGTATTTCTTCTTCTTTTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:870:542
-GAATGTCACGCTGATTATTTTGACTTTGAGCGTATC
->HWI-EAS91_1_306UPAAXX:6:1:966:384
-GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA
->HWI-EAS91_1_306UPAAXX:6:1:1186:1903
-GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
->HWI-EAS91_1_306UPAAXX:6:1:1632:1742
-GCATCACCCATGCCTACAGTATTGTTATCGGTAGCC
->HWI-EAS91_1_306UPAAXX:6:1:1521:559
-GAGAGCGCCAACGGCGTCCATCTCGAAGGAGTCGCC
->HWI-EAS91_1_306UPAAXX:6:1:683:454
-GCTTATTATGTTCATCCCGTCAACATTCAAACGTCC
->HWI-EAS91_1_306UPAAXX:6:1:112:1280
-GTTGGCGCTCTCCGTCTTTCTCCATTTCGTCGTGTC
->HWI-EAS91_1_306UPAAXX:6:1:891:381
-GACCAGGGCGAGCGCCAGAACGTTTTTTACCTTTAG
->HWI-EAS91_1_306UPAAXX:6:1:1348:958
-GATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTT
->HWI-EAS91_1_306UPAAXX:6:1:1785:1915
-GCCCCGAAGGGGACNANAAATGGTTTTTAGAGAACG
->HWI-EAS91_1_306UPAAXX:6:1:1418:42
-GTATGCCCATCGCAGTTCGCTACACGCAGGACGCTT
->HWI-EAS91_1_306UPAAXX:6:1:1421:743
-GGTCAACGCTACCTGTAGGAAGTGTCCGCATAAAAT
->HWI-EAS91_1_306UPAAXX:6:1:1079:790
-GCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGT
->HWI-EAS91_1_306UPAAXX:6:1:663:740
-GGTATTAAGGATGAGTGTTCAAGATTGCTGGATGCC
->HWI-EAS91_1_306UPAAXX:6:1:1245:413
-GTTTGAATGTTGACGGGATGAACATAATAAGCAATG
->HWI-EAS91_1_306UPAAXX:6:1:1378:1035
-GCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGG
->HWI-EAS91_1_306UPAAXX:6:1:903:1746
-GTACGGGGAAGGACGTCAATAGTCACACAGTCCTTG
->HWI-EAS91_1_306UPAAXX:6:1:1713:1134
-GGCGTACGGGGAAGGACGTCAATAGTCACACAGTCC
->HWI-EAS91_1_306UPAAXX:6:1:1246:1887
-GCTCTAATCTCTGGGCATCTGGCTATGATGTTGATG
->HWI-EAS91_1_306UPAAXX:6:1:872:1731
-GGGCGGCCTCATCAGGGTTAGGAACATTAGAGCCTT
->HWI-EAS91_1_306UPAAXX:6:1:1714:1582
-GCTTTCCTGCTCCTGTTGAGTTTATTGCTTCCGTCT
->HWI-EAS91_1_306UPAAXX:6:1:1785:763
-GNCGAGAAATAAAANNNTGAAACATGATTAAANTCC
->HWI-EAS91_1_306UPAAXX:6:1:1684:542
-GAAAAGACAGAATCTCTTCCAAGAGCTTGATGCGGT
->HWI-EAS91_1_306UPAAXX:6:1:1581:1665
-GACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATT
->HWI-EAS91_1_306UPAAXX:6:1:901:1581
-GTGCTGATATTGCTTTTGATGCCGACCCTAAATTTT
->HWI-EAS91_1_306UPAAXX:6:1:1128:239
-GGTTATTATACCGTCAAGGACTGTGTGACTATTGAC
->HWI-EAS91_1_306UPAAXX:6:1:969:441
-GGTAAGAAATCATGAGTCAAGTTACTGAACAATCCG
->HWI-EAS91_1_306UPAAXX:6:1:630:1087
-GCCACCATGATTATGACCAGTGTTTCCAGTCCGTTC
->HWI-EAS91_1_306UPAAXX:6:1:606:1852
-GGAGACAAATAATCTCTTTAATAACCTGATTCAGCG
->HWI-EAS91_1_306UPAAXX:6:1:489:1315
-GAAAGCTCAGTCTCAGGAGGAAGCGGAGCAGTCCAC
->HWI-EAS91_1_306UPAAXX:6:1:465:1983
-GAGCCAATACCATCAGCTTTACCGTCTTTCCAGAAA
->HWI-EAS91_1_306UPAAXX:6:1:559:1028
-GAGTGCTTAATCCAACTTACCAAGCTGGGTTACGAC
->HWI-EAS91_1_306UPAAXX:6:1:1655:1413
-GTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCG
->HWI-EAS91_1_306UPAAXX:6:1:980:605
-GCCGTTTGAATGTTGACGGGATGAACATAATAAGCA
->HWI-EAS91_1_306UPAAXX:6:1:1629:1865
-GAAAAGCGGCATGGTCAATATAACCAGTAGTGTTAT
->HWI-EAS91_1_306UPAAXX:6:1:1180:1920
-GCACTCCGTGGACAGATTTGTCATTGTGAGCATTTT
->HWI-EAS91_1_306UPAAXX:6:1:1116:383
-GCGCAGGAAACACTGACGTTCTTACTGACGCAGAAG
->HWI-EAS91_1_306UPAAXX:6:1:906:2041
-GTCACGTTTATGGTGAACAGTGGATTAAGTTCATGA
->HWI-EAS91_1_306UPAAXX:6:1:1514:157
-GTCAATAGATGTGGTAGAAGTCGTCATTTGGCGTGG
->HWI-EAS91_1_306UPAAXX:6:1:1032:1857
-GCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGT
->HWI-EAS91_1_306UPAAXX:6:1:638:609
-GATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAT
->HWI-EAS91_1_306UPAAXX:6:1:74:750
-GATAATCACGAGTATCCTTTCCTTTATCATCTTCAT
->HWI-EAS91_1_306UPAAXX:6:1:486:822
-GTTGACGATGTAGCTTTAGGTGTCTTTAAAACAGGT
->HWI-EAS91_1_306UPAAXX:6:1:899:473
-GAACAGCATCGGACTCAGATAGTAATCCACGCTCTT
->HWI-EAS91_1_306UPAAXX:6:1:1613:197
-GTGACATTCAGAAGGGTAATAAGAACGAACCATAAA
->HWI-EAS91_1_306UPAAXX:6:1:326:1747
-GTTGAGGCTTTCGTTTATTGTACGCTTTGCTTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:1487:526
-GCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
->HWI-EAS91_1_306UPAAXX:6:1:629:665
-GAAATGCAGCAGCAAGATAATCACGAGTATCCTTTC
->HWI-EAS91_1_306UPAAXX:6:1:766:744
-GGCCGTCAACATACATATCACCATTATCGAACTCAA
->HWI-EAS91_1_306UPAAXX:6:1:391:1771
-GTGGTTGATATTTTTCATGGTATTGATAAATCTTTT
->HWI-EAS91_1_306UPAAXX:6:1:591:1102
-GCTTTGCGTGACTATTTTCGTGATATTGTTCGTTTG
->HWI-EAS91_1_306UPAAXX:6:1:917:664
-GCCATGATGGTGGTTATTATACCGTCAAGGACTGTG
->HWI-EAS91_1_306UPAAXX:6:1:217:737
-GTTCAGTTGTTGCATTGGAATATTCAGTTTAAATTT
->HWI-EAS91_1_306UPAAXX:6:1:1047:839
-GACCATTCAAAGGATAAACATCATAGGCAGTCGGGG
->HWI-EAS91_1_306UPAAXX:6:1:558:1040
-GCCACCAGCAAGAGCAGAAGCAATACCGCCAGCAAT
->HWI-EAS91_1_306UPAAXX:6:1:1207:524
-GCCAATACCATCAGCTTTACCGTCTTTCCAGAAATT
->HWI-EAS91_1_306UPAAXX:6:1:708:1634
-GCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAG
->HWI-EAS91_1_306UPAAXX:6:1:576:1851
-GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAG
->HWI-EAS91_1_306UPAAXX:6:1:906:460
-GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC
->HWI-EAS91_1_306UPAAXX:6:1:693:1260
-GCGAAAGGTCGCAAAGTAAGAGCTTCTCGAGCTGCG
->HWI-EAS91_1_306UPAAXX:6:1:1373:286
-GGACACTTCCTACAGGTAGCGTTGACCCTAATTTTG
->HWI-EAS91_1_306UPAAXX:6:1:762:41
-GATACTTGGAACAATTTCTGGAAAGACGGTAAAGCT
->HWI-EAS91_1_306UPAAXX:6:1:475:1091
-GTCACACAGTCCTTGACGGTATAATAACCACCATCT
->HWI-EAS91_1_306UPAAXX:6:1:791:627
-GCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACC
->HWI-EAS91_1_306UPAAXX:6:1:336:1791
-GAAGGAGTCGCCAGCGATAACCGGAGTAGTTGAAAT
->HWI-EAS91_1_306UPAAXX:6:1:1483:943
-GCACGTAATTTTTGACGCACGTTTTCTTCTGCGTCT
->HWI-EAS91_1_306UPAAXX:6:1:641:1071
-GATGGGCATACTGTAACCATAAGGCCACGTATTTTG
->HWI-EAS91_1_306UPAAXX:6:1:196:755
-GAACGCCCTCTTAAGGATATTCGCGATGAGTATAAT
->HWI-EAS91_1_306UPAAXX:6:1:463:1398
-GTCATAAGAGGTTTTACCTCCAAATGAAGAAATAAC
->HWI-EAS91_1_306UPAAXX:6:1:1559:460
-GCTCACAATGACAAATCTGTCCACGGAGTGCTTAAT
->HWI-EAS91_1_306UPAAXX:6:1:1625:1561
-GAGGAGTGGCATTAACACCATCCTTCATGAACTTAC
->HWI-EAS91_1_306UPAAXX:6:1:1729:1588
-GCTGATAAAGGAAAGGATACTCGTGATTATCTTGCT
->HWI-EAS91_1_306UPAAXX:6:1:945:393
-GGCCTCATCAGGGTTAGGAACATTAGAGCCTTGAAT
->HWI-EAS91_1_306UPAAXX:6:1:298:1391
-GTAAAGTTAGACCAAACCATGAAACCAACATAAACA
->HWI-EAS91_1_306UPAAXX:6:1:1270:1500
-GAATTACTACTGCTTGTTTACGAATTAAATATATGT
->HWI-EAS91_1_306UPAAXX:6:1:481:1546
-GCTGGCATTCAGTCGGCGACTTCACGCCAGAATACG
->HWI-EAS91_1_306UPAAXX:6:1:473:1729
-GTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAT
->HWI-EAS91_1_306UPAAXX:6:1:801:1831
-GCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAAT
->HWI-EAS91_1_306UPAAXX:6:1:536:639
-GCCGACCCTAAATTTTTTGCCTGTTTGGTTCTCTTT
->HWI-EAS91_1_306UPAAXX:6:1:259:938
-GTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTG
->HWI-EAS91_1_306UPAAXX:6:1:907:1513
-GGCATGGGTGATGCTGGTATTAAATCTGCCATTCAC
->HWI-EAS91_1_306UPAAXX:6:1:372:1409
-GATGAGTATAATTACCCCAAAAAGAAAGGTATTAAG
->HWI-EAS91_1_306UPAAXX:6:1:485:1626
-GATGGCAGCAACGGAAACCATAACGAGCATCATCTT
->HWI-EAS91_1_306UPAAXX:6:1:583:1679
-GCTCAAAGTCAAAATAATCAGCGTGACATTCAGAAG
->HWI-EAS91_1_306UPAAXX:6:1:690:1610
-GACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTT
->HWI-EAS91_1_306UPAAXX:6:1:257:918
-GCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTTCT
->HWI-EAS91_1_306UPAAXX:6:1:818:33
-GTGTTAATGCCACTCCTCTCCCGACTGTTAACTCTG
->HWI-EAS91_1_306UPAAXX:6:1:541:1242
-GGGATTATCATAAAACGCCTCTAATCGGTCGTCAGC
->HWI-EAS91_1_306UPAAXX:6:1:1014:279
-GTAAAAATGTCTACAGTAGAGTCAATAGCAAGGCCC
->HWI-EAS91_1_306UPAAXX:6:1:672:1790
-GGCCGTTTGAATGTTGACGGGATGAACATAATAAGC
->HWI-EAS91_1_306UPAAXX:6:1:708:464
-GGAGACAAATAATCTCTTTAATAACCTGATTCAGCG
->HWI-EAS91_1_306UPAAXX:6:1:633:1486
-GGGAAAGGTCATGCGGCATACGCTCGGCGCCAGTTT
->HWI-EAS91_1_306UPAAXX:6:1:328:696
-GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT
->HWI-EAS91_1_306UPAAXX:6:1:259:1389
-GCGTACTTATTCGCCACCATGATTATTACCAGTGTT
->HWI-EAS91_1_306UPAAXX:6:1:1315:41
-GCTTTCCGTGATGTCACAGCCTGCTTTGATGTGTCG
->HWI-EAS91_1_306UPAAXX:6:1:1647:549
-GCTTAATCCAACTTACCAAGCTGGGTTACGACGCGC
->HWI-EAS91_1_306UPAAXX:6:1:300:886
-GTTCTTGGTCAGTATGCAAATTAGCATAAGCAGCTT
->HWI-EAS91_1_306UPAAXX:6:1:317:1411
-GTACGCTGTACTTTGTGGGATACCCTCGCTTTCCTT
->HWI-EAS91_1_306UPAAXX:6:1:321:1819
-GGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGT
->HWI-EAS91_1_306UPAAXX:6:1:631:70
-GTGGATTACTATCTGAGTCCGATGCTGTTCAACCAC
->HWI-EAS91_1_306UPAAXX:6:1:624:1040
-GCTGGCGACTCCTTCGAGATGGACGCCGTTTGCGCT
->HWI-EAS91_1_306UPAAXX:6:1:662:1187
-GGGAGAGGAGTGGCATTAACACCATCCTTCATGACC
->HWI-EAS91_1_306UPAAXX:6:1:1440:1959
-GAATCAGCGGTATGGCTCCTCTCCTATTTTTGCTTC
->HWI-EAS91_1_306UPAAXX:6:1:458:1629
-GCTGGTGGCGCCATGTCTAAATTTTTTGGAGGCGGT
->HWI-EAS91_1_306UPAAXX:6:1:216:790
-GGGATGAAAATGCTCACAATGACAAATCTGTCCACG
->HWI-EAS91_1_306UPAAXX:6:1:1407:1174
-TTACCTATTAGTGGTTGAACAGCATCGGACTCAGAT
->HWI-EAS91_1_306UPAAXX:6:1:999:1790
-GTCCTGCGTGTAGCGAACTGCGATGGGCATACTGTC
->HWI-EAS91_1_306UPAAXX:6:1:141:1994
-GGCTTTTTTATGGTTCGTTCTTATTACCCTTCTTAT
->HWI-EAS91_1_306UPAAXX:6:1:225:465
-GTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGC
->HWI-EAS91_1_306UPAAXX:6:1:649:1760
-GACCCATAATGTCAATAGATGTGGTAGAAGTCGTCT
->HWI-EAS91_1_306UPAAXX:6:1:300:986
-GTTGAACACGACCAGAAAACTGGCCTAACGACGTTT
->HWI-EAS91_1_306UPAAXX:6:1:478:605
-GAGACTGAGCTTTCTCGCCAAATGACGACTTCTACC
->HWI-EAS91_1_306UPAAXX:6:1:622:395
-GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGG
->HWI-EAS91_1_306UPAAXX:6:1:1701:574
-GTAAAGCCTCTACGCGATTTCATAGTGGAGGCCTCC
->HWI-EAS91_1_306UPAAXX:6:1:646:59
-GGAAGTGTCCGCATAAAATGCACCGCATGGAAATGT
->HWI-EAS91_1_306UPAAXX:6:1:284:2031
-GACAGAATCGTTAGTTGATGGCGAAAGGTCGCAAAG
->HWI-EAS91_1_306UPAAXX:6:1:22:1009
-GATGGATACATCTGTCAACGCCGCTAATCAGGTTGT
->HWI-EAS91_1_306UPAAXX:6:1:47:1826
-GCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCG
->HWI-EAS91_1_306UPAAXX:6:1:1025:1236
-TGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGT
->HWI-EAS91_1_306UPAAXX:6:1:773:591
-GAGCAGGAAAGCGAGGGTATCCCACAAAGTCCAGCG
->HWI-EAS91_1_306UPAAXX:6:1:1753:527
-GGTGGCATTCAAGGTGATGTGCTTGCTACCGATAAC
->HWI-EAS91_1_306UPAAXX:6:1:426:1717
-GTAGCGCCAATATGAGAAGAGCCATACCGCTGATTC
->HWI-EAS91_1_306UPAAXX:6:1:959:818
-TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC
->HWI-EAS91_1_306UPAAXX:6:1:459:1344
-GCCTATGATGTTTATCCTTTGAATGGTCGCCATGAT
->HWI-EAS91_1_306UPAAXX:6:1:973:1367
-TTCGTGATGAGTTTGTATCTGTTACTGATAAGTTAT
->HWI-EAS91_1_306UPAAXX:6:1:201:871
-GATTAGAGGCGTTTTATGATAATCCCAATGCTTTTC
->HWI-EAS91_1_306UPAAXX:6:1:713:1672
-GGCGTACGGGGAAGGACGTCAATAGTCACACAGTCC
->HWI-EAS91_1_306UPAAXX:6:1:444:1435
-TTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGTG
->HWI-EAS91_1_306UPAAXX:6:1:288:1136
-GCCTTCCATGATGAGACAGGCCGTTTTAATTTTTTC
->HWI-EAS91_1_306UPAAXX:6:1:1653:225
-GCAAGGCCACGACGCAATGGAGAAAGACGGAGAGCG
->HWI-EAS91_1_306UPAAXX:6:1:537:1764
-GCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAA
->HWI-EAS91_1_306UPAAXX:6:1:196:1854
-GTATCGAGGCTCTTAAACCTGCTATTTAGGCTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:312:1707
-GCGTCATAAGAGGTTTTACCTCCAAATGAAGAAATA
->HWI-EAS91_1_306UPAAXX:6:1:651:183
-GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT
->HWI-EAS91_1_306UPAAXX:6:1:295:694
-GTGATTACTTCATGCAGCGTTACCGTGATGTTATTT
->HWI-EAS91_1_306UPAAXX:6:1:330:1895
-GCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTG
->HWI-EAS91_1_306UPAAXX:6:1:590:331
-GAAATTTCTATGAATGATGTTTTCCGTTCTGGTGAT
->HWI-EAS91_1_306UPAAXX:6:1:481:1687
-GCAGATTGCGATAAACGGTCACATTAAATTTAACCT
->HWI-EAS91_1_306UPAAXX:6:1:1112:1279
-TGTGCATATACCTGGTCTTTCGTATTCTGTCGTGAT
->HWI-EAS91_1_306UPAAXX:6:1:1099:1216
-TTAGAGCGCATGACAAGTAAAGGACGGTTGTCAGCG
->HWI-EAS91_1_306UPAAXX:6:1:221:1238
-GTATCCTTTCCTTTATCATCGGCAGACTTTTCACCT
->HWI-EAS91_1_306UPAAXX:6:1:1015:364
-GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
->HWI-EAS91_1_306UPAAXX:6:1:735:1806
-TGTTATTAATATCAAGTTGGGGGAGCACATTGTAGC
->HWI-EAS91_1_306UPAAXX:6:1:320:411
-GCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGTG
->HWI-EAS91_1_306UPAAXX:6:1:1273:1031
-TTAAGGATATTCGCGATGAGTATAATTACCCCAAAA
->HWI-EAS91_1_306UPAAXX:6:1:1456:1088
-AATAATCAGCGTGACATTCAGAAGGGTAATAAGAAC
->HWI-EAS91_1_306UPAAXX:6:1:1365:307
-GACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAG
->HWI-EAS91_1_306UPAAXX:6:1:478:252
-GATGCGGTTATCCATCTGCTTATTGAAGCCAAGCAT
->HWI-EAS91_1_306UPAAXX:6:1:915:1232
-TATTAATAACACTATAGACCACCGCCCCGAAGGGGC
->HWI-EAS91_1_306UPAAXX:6:1:680:1357
-TTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGC
->HWI-EAS91_1_306UPAAXX:6:1:238:1279
-GCCGAAGCCCCTGCAATTAAAATTGTTGACCACCTA
->HWI-EAS91_1_306UPAAXX:6:1:1583:35
-GCAAATTAGCATAAGCAGCTTGCAGACCCATAATGT
->HWI-EAS91_1_306UPAAXX:6:1:502:283
-GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT
->HWI-EAS91_1_306UPAAXX:6:1:418:1730
-GAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGT
->HWI-EAS91_1_306UPAAXX:6:1:596:647
-GCCTCAACGCAGCGACGAGCACGAGAGCGGTCAGTA
->HWI-EAS91_1_306UPAAXX:6:1:92:1591
-GTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCC
->HWI-EAS91_1_306UPAAXX:6:1:430:1938
-GCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGTCC
->HWI-EAS91_1_306UPAAXX:6:1:212:527
-GGTATTGATAAAGCTGTTGCCGATACTTGTAACAAT
->HWI-EAS91_1_306UPAAXX:6:1:594:942
-GACGACATTAGAAATATCCTTTGCAGTAGCGCCAAT
->HWI-EAS91_1_306UPAAXX:6:1:169:1774
-GCCTTCCATGATGAGACAGGCCGTTTTAATTTTTAC
->HWI-EAS91_1_306UPAAXX:6:1:1090:210
-GGAGAGCGCCAACGGCGTCCATCTCGAAGGAGTCGC
->HWI-EAS91_1_306UPAAXX:6:1:589:96
-GGCGGCCCCATCAGGGTTAGGAACATTAGAGCCTTG
->HWI-EAS91_1_306UPAAXX:6:1:1477:1231
-TAGGAACATTAGAGCCTTGAATGGCAGATTTAATAC
->HWI-EAS91_1_306UPAAXX:6:1:707:1076
-TCTGACGTTCGTGATGAGTTTGTATCTTTTTCTTTG
->HWI-EAS91_1_306UPAAXX:6:1:749:1715
-GAACATAATAAGCAATGACGGCAGCAATAAACTCAA
->HWI-EAS91_1_306UPAAXX:6:1:1738:1884
-GCTCACCTTTAGCATCAACAGGCCACAACCAACCAG
->HWI-EAS91_1_306UPAAXX:6:1:1160:1088
-TCACATTTTGTTCATGGTAGAGATTCTCTTGTTGAC
->HWI-EAS91_1_306UPAAXX:6:1:517:119
-GCAAGGCTAATGATTCACACGCCGACTGCTATCAGT
->HWI-EAS91_1_306UPAAXX:6:1:1472:716
-TGGTAATGGTGGTTTTCTTCATTTCATTCAGTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:281:441
-GAGCAGTAGACTCCTTCTGTTGATAAGCAAGCATCT
->HWI-EAS91_1_306UPAAXX:6:1:1101:324
-AATACCATCAGCTTTACCGTCTTTCCAGAAATTGTT
->HWI-EAS91_1_306UPAAXX:6:1:1225:1494
-TTCTCAAATCCGGCGTCAACCATACCAGCAGAGGAA
->HWI-EAS91_1_306UPAAXX:6:1:1509:1025
-TTCTTGCTGCCGAGGGTCGCAAGGCTATTGTTTCAC
->HWI-EAS91_1_306UPAAXX:6:1:592:510
-GATACCAATAAAATCCCTAAGCATTTGTTTCTGGTT
->HWI-EAS91_1_306UPAAXX:6:1:324:1729
-GAACAAAGAAACGCGGCACAGAATGTTTATAGGTCT
->HWI-EAS91_1_306UPAAXX:6:1:128:1925
-GGAACAACTCACTAAAAACCAAGCTGTCGCTACTTC
->HWI-EAS91_1_306UPAAXX:6:1:786:893
-TACGGGGAAGGACGTCAATAGTCACACAGTCCTTGC
->HWI-EAS91_1_306UPAAXX:6:1:248:955
-GCTACAATGTGCTCCCCCAACTTGATATTAATAACA
->HWI-EAS91_1_306UPAAXX:6:1:388:1127
-GATATTGGTCGTATGGTTCTTGCTGCCTAGTGTCTC
->HWI-EAS91_1_306UPAAXX:6:1:721:1156
-TCTGGTTGGTTGTGGCCTTTTTATGCTAAATGTTAG
->HWI-EAS91_1_306UPAAXX:6:1:1564:1468
-TTACTTTTTATGTCCCTCATCGTCACGTTTATGTTG
->HWI-EAS91_1_306UPAAXX:6:1:750:77
-GGCTCATTCTGATTCTGAACAGCTTCTTGGGAAGTA
->HWI-EAS91_1_306UPAAXX:6:1:405:487
-GTTGGATTAAGCACTCCGTGGACAGATTTGTCATTT
->HWI-EAS91_1_306UPAAXX:6:1:836:1204
-TTGCTTCTGCTCTTGCTTGTGGCGCCATGTCTAAAT
->HWI-EAS91_1_306UPAAXX:6:1:224:1548
-GCTGCCGTCATTGCTTATTATGTTCATCCCTTCAAC
->HWI-EAS91_1_306UPAAXX:6:1:931:1015
-TTAAGGTACTGAATCTCTTTAGTCGCAGTAGGCGGT
->HWI-EAS91_1_306UPAAXX:6:1:329:579
-GTCCCTCATCGTCACGTTTATGGTGAACAGTGGATT
->HWI-EAS91_1_306UPAAXX:6:1:260:1145
-GCTTGCGTTTATGGTACGCTGGACTTTTTGTGATAC
->HWI-EAS91_1_306UPAAXX:6:1:1523:1253
-TTGGTAAAATACTGACCAGCCGTTTGAGCTTGAGTA
->HWI-EAS91_1_306UPAAXX:6:1:326:1271
-GACCACTCGCGATTCAATCATGACTTCGTGATAAAT
->HWI-EAS91_1_306UPAAXX:6:1:213:622
-GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA
->HWI-EAS91_1_306UPAAXX:6:1:274:712
-GCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTG
->HWI-EAS91_1_306UPAAXX:6:1:1549:627
-TATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATGT
->HWI-EAS91_1_306UPAAXX:6:1:1714:737
-TCTTTCGTATTCTGGCGTGAAGTCGCCGACTGAATG
->HWI-EAS91_1_306UPAAXX:6:1:760:1217
-TACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTT
->HWI-EAS91_1_306UPAAXX:6:1:174:768
-GTTGGCTGACGACCGATTAGAGGCGTTTTTTTATAT
->HWI-EAS91_1_306UPAAXX:6:1:172:1412
-GGTCGGCAGATTGCGATAAACGTTCACATTAAATTT
->HWI-EAS91_1_306UPAAXX:6:1:1393:869
-TTCATCCCGTCAACATTCAAACGGCCTGTCTCATCT
->HWI-EAS91_1_306UPAAXX:6:1:301:481
-GTTATAGATATTCAAATAACCCTGAAACAAATGCTT
->HWI-EAS91_1_306UPAAXX:6:1:648:1093
-TAACGCTGCATGAAGTAATCACGTTCTTGGTCAGTT
->HWI-EAS91_1_306UPAAXX:6:1:1233:591
-TTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTCT
->HWI-EAS91_1_306UPAAXX:6:1:540:1415
-TTATTAAAGAGATTATTTTTCTCCAGCCACTTATGT
->HWI-EAS91_1_306UPAAXX:6:1:151:1792
-GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA
->HWI-EAS91_1_306UPAAXX:6:1:748:1378
-TGGATTACTATCTGAGTCCGATGCTGTTCAACCACT
->HWI-EAS91_1_306UPAAXX:6:1:1526:1479
-TGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCC
->HWI-EAS91_1_306UPAAXX:6:1:985:1093
-TAACCGTCTTCTCGTTCTCTAAAAACCATTTTTCTT
->HWI-EAS91_1_306UPAAXX:6:1:480:1378
-TCAACCTCAGCACTAACCTTGCGAGTCATTTCTTTG
->HWI-EAS91_1_306UPAAXX:6:1:903:753
-TGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG
->HWI-EAS91_1_306UPAAXX:6:1:1697:1737
-GGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGT
->HWI-EAS91_1_306UPAAXX:6:1:803:1037
-TGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCTACT
->HWI-EAS91_1_306UPAAXX:6:1:1727:1244
-TTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCT
->HWI-EAS91_1_306UPAAXX:6:1:253:1162
-GCATTTAGTAGCGGTAAAGTTTGACCAAACCATTAT
->HWI-EAS91_1_306UPAAXX:6:1:216:856
-GTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCT
->HWI-EAS91_1_306UPAAXX:6:1:825:886
-TCCCACAAAGTCCAGCGTACCATAAACGCAAGCCTC
->HWI-EAS91_1_306UPAAXX:6:1:1699:962
-TGATTTCGATTTTCTGACGAGTAACAAAGTTTGGAT
->HWI-EAS91_1_306UPAAXX:6:1:1210:625
-TCAGATAGTAATCCACGCTCTTTTAAAATGTCAACA
->HWI-EAS91_1_306UPAAXX:6:1:538:616
-TAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGT
->HWI-EAS91_1_306UPAAXX:6:1:184:1849
-GCTCACCTTTAGCATCAACAGGCCACAACCAACCAG
->HWI-EAS91_1_306UPAAXX:6:1:1636:1103
-TATCTGACTTTTTGTTAACGTATTTAGCCACATAGA
->HWI-EAS91_1_306UPAAXX:6:1:605:223
-GGTTATTTGAATATCTATAACAACTATTTTAAATCG
->HWI-EAS91_1_306UPAAXX:6:1:256:1052
-GGTAAAGGACTTCTTGAAGGTACGTTGCAGTCTGGC
->HWI-EAS91_1_306UPAAXX:6:1:300:1515
-GCCATGATGGTGGTTATTATACCGTCAAGGACTTTT
->HWI-EAS91_1_306UPAAXX:6:1:1684:1320
-TGCTTGGCTTCCATAAGCAGATGGATAACCGCATCA
->HWI-EAS91_1_306UPAAXX:6:1:1186:895
-TCAGATGGATACATCTGTCAACGCCGCTAATCAGGT
->HWI-EAS91_1_306UPAAXX:6:1:1463:754
-TCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTT
->HWI-EAS91_1_306UPAAXX:6:1:808:1053
-TGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGG
->HWI-EAS91_1_306UPAAXX:6:1:960:1218
-TTTCTAATGTCGTCACTGATGCTGCTTCTGTTGTTT
->HWI-EAS91_1_306UPAAXX:6:1:521:1646
-GGAAAACGAACAAGCGCAAGAGTAAACATAGTGCCA
->HWI-EAS91_1_306UPAAXX:6:1:289:1885
-GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
->HWI-EAS91_1_306UPAAXX:6:1:471:170
-GGTCAGTTCCATCAACATCATAGCCAGATGCCCAGA
->HWI-EAS91_1_306UPAAXX:6:1:828:754
-TTTGCGTGACTATTTTCGTGATATTGTTCGTATGGT
->HWI-EAS91_1_306UPAAXX:6:1:924:1679
-TTTAATGTGACCGTTTATCGCAATCTGCCGACCACT
->HWI-EAS91_1_306UPAAXX:6:1:837:901
-TGCATTTTAGTAAGCTCTTTTTGATTCTCAAATCCG
->HWI-EAS91_1_306UPAAXX:6:1:543:16
-GCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTC
->HWI-EAS91_1_306UPAAXX:6:1:1482:578
-TCTTTAGCTCCTAGACCTTTAGCAGCAAGGTCCATA
->HWI-EAS91_1_306UPAAXX:6:1:1254:1668
-TTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCT
->HWI-EAS91_1_306UPAAXX:6:1:1402:898
-TCATGAGTCAAGTTACTGAACAATCCGTACGTTTCC
->HWI-EAS91_1_306UPAAXX:6:1:764:1534
-TTATACCGTCAAGGACTGTGTGACTATTGACGTCCT
->HWI-EAS91_1_306UPAAXX:6:1:681:1079
-TGGCGAATAAGTACGCGTTCTTGCAAATCACCAGAA
->HWI-EAS91_1_306UPAAXX:6:1:672:1350
-TTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTT
->HWI-EAS91_1_306UPAAXX:6:1:1266:493
-TGACCAGCCGTTTGAGCTTGAGTAAGCATTTGGCGC
->HWI-EAS91_1_306UPAAXX:6:1:118:238
-GACGGTATAATAACCACCATCATGGCGACCATTCAA
->HWI-EAS91_1_306UPAAXX:6:1:699:433
-TTATTGCCCGGCGTACGGGGAAGGACGTCAATAGTC
->HWI-EAS91_1_306UPAAXX:6:1:708:1387
-TGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTAC
->HWI-EAS91_1_306UPAAXX:6:1:498:1085
-TTATGATAATCCCAATGCTTTGCGTGACTATTTTCT
->HWI-EAS91_1_306UPAAXX:6:1:1101:1301
-TCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAAT
->HWI-EAS91_1_306UPAAXX:6:1:261:213
-GAATGGTCGCCATGATGGTGGTTATTATACCGTCAC
->HWI-EAS91_1_306UPAAXX:6:1:1287:1267
-TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGT
->HWI-EAS91_1_306UPAAXX:6:1:744:331
-TTAATGGATGAATTGGCACAATGCTACAATGTGCTC
->HWI-EAS91_1_306UPAAXX:6:1:614:814
-TGTCAGCGTCATAAGAGGTTTTACCTCCAAATGAAG
->HWI-EAS91_1_306UPAAXX:6:1:1362:1063
-TAAACGCAAGCCTCAACGCAGCGACGAGCACGAGAG
->HWI-EAS91_1_306UPAAXX:6:1:1238:1508
-TCAACTAACGATTCTGTCAAAAACTGACGCGTTGGT
->HWI-EAS91_1_306UPAAXX:6:1:904:1130
-TTATCGCAATCTGCCGACCACTCGCGATTCAATCAT
->HWI-EAS91_1_306UPAAXX:6:1:465:216
-GACCATGCCGCTTTTCTTGGCACGATTAACCCTTAT
->HWI-EAS91_1_306UPAAXX:6:1:844:628
-TAATGTCAATAGATGTGGTAGAAGTCGTCATTTGGC
->HWI-EAS91_1_306UPAAXX:6:1:684:1444
-TATCCCACAAAGTCCAGCGTACCATAAACGCAAGCC
->HWI-EAS91_1_306UPAAXX:6:1:515:1373
-TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCT
->HWI-EAS91_1_306UPAAXX:6:1:764:1667
-TTGAGTTCGATAATGGTGATATGTATGTTGACGTCC
->HWI-EAS91_1_306UPAAXX:6:1:1722:598
-TGAGTTTATTGCTGCCGTCATTGCTTATTATGTTCT
->HWI-EAS91_1_306UPAAXX:6:1:670:1188
-TTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGT
->HWI-EAS91_1_306UPAAXX:6:1:1682:1705
-TAGCCACATAGAAACCAACAGCCATATAACTGGTAG
->HWI-EAS91_1_306UPAAXX:6:1:1008:1616
-TCCTTTACTTGTCATGCGCTCTAATCTCTGTGCATC
->HWI-EAS91_1_306UPAAXX:6:1:490:1220
-TAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCT
->HWI-EAS91_1_306UPAAXX:6:1:891:1437
-TAATGGTGATATGTATGTTTACGTCCATAAGGCTGT
->HWI-EAS91_1_306UPAAXX:6:1:1310:321
-TCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGT
->HWI-EAS91_1_306UPAAXX:6:1:827:1597
-TGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTC
->HWI-EAS91_1_306UPAAXX:6:1:1062:1158
-TAGAGTCAATAGCAAGGCCACGACGCAATGGAGAAA
->HWI-EAS91_1_306UPAAXX:6:1:1419:208
-TGGCGCATAATCTCGGAAACCTGCTGTTGCTTGGAA
->HWI-EAS91_1_306UPAAXX:6:1:691:1018
-AAATATCAACCACACCAGAAGCAGCATCAGTGACGA
->HWI-EAS91_1_306UPAAXX:6:1:374:113
-GATAAAGCTGTTGCCGATACTTGGAACAATTTCTGT
->HWI-EAS91_1_306UPAAXX:6:1:1720:784
-TGAGGATAAATTATGTCTAATATTCAAACTGGCGCC
->HWI-EAS91_1_306UPAAXX:6:1:1424:1394
-ATAAAAATGATTGGCGTATCCAACCTGCAGAGTTTT
->HWI-EAS91_1_306UPAAXX:6:1:1063:1760
-TAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCT
->HWI-EAS91_1_306UPAAXX:6:1:1235:729
-TTTTTATGTCCCTCATCGTCACGTTTATGGTGAACA
->HWI-EAS91_1_306UPAAXX:6:1:167:1507
-TAGTGTTATTAATATCAAGTTTTTGGAGCACATTGT
->HWI-EAS91_1_306UPAAXX:6:1:717:1569
-TCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGT
->HWI-EAS91_1_306UPAAXX:6:1:610:765
-TTCAGCGCCTTCCATGATGAGACAGGCCGTTTGAAT
->HWI-EAS91_1_306UPAAXX:6:1:663:380
-TAAACATTCTGTGCCGCGTTTCTTTGTTCCTTATCT
->HWI-EAS91_1_306UPAAXX:6:1:790:1358
-TTATCACCTTATTGAAGGCTTATCATTCATTTAGGT
->HWI-EAS91_1_306UPAAXX:6:1:965:1633
-TAGATGTGGTAGAAGTCGTCATTTGGCGAGAAAGCT
->HWI-EAS91_1_306UPAAXX:6:1:673:319
-TTCTTGCAAATCACCAGAAGGCGGTTCCTGAATGAT
->HWI-EAS91_1_306UPAAXX:6:1:684:371
-TAGCGGTAAAGTTAGACCAAACCATGAAACCAACAT
->HWI-EAS91_1_306UPAAXX:6:1:1147:1444
-ATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGC
->HWI-EAS91_1_306UPAAXX:6:1:983:678
-ATACCTGGTCTTTCGTATTCTGGCGTGAAGTCGCCG
->HWI-EAS91_1_306UPAAXX:6:1:1608:1119
-TCACGCGGCGGCAAGTTGCCATACAAAACAGGGTCG
->HWI-EAS91_1_306UPAAXX:6:1:1048:1193
-TAGTCAGGTTAAATTTAATGTGACCGTTTATCGCAT
->HWI-EAS91_1_306UPAAXX:6:1:1265:1429
-ATATTTTTCATGGTATTGATAAAGCTGTTGCCGATT
->HWI-EAS91_1_306UPAAXX:6:1:1607:1677
-TGTTGCTTGGAAAGATTGGTGTTTTCCATAATAGAC
->HWI-EAS91_1_306UPAAXX:6:1:1087:1421
-ACGAACGTCAGAAGCAGCCTTATGGCCGTCAACATC
->HWI-EAS91_1_306UPAAXX:6:1:324:490
-GCACCAAACATAAATCACCTCACTTAAGTGGCTGGG
->HWI-EAS91_1_306UPAAXX:6:1:1596:614
-TTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGT
->HWI-EAS91_1_306UPAAXX:6:1:343:83
-GTTACGCAGTTTTGCCGCAAGCTGGCTGCTGTACGC
->HWI-EAS91_1_306UPAAXX:6:1:203:667
-GCATGAATGTGCTTAATAGAGGCCAAGGCGGTCTAG
->HWI-EAS91_1_306UPAAXX:6:1:34:480
-GGCAAGTTGCCATACAAAACAGGGTCGCCAGCAATT
->HWI-EAS91_1_306UPAAXX:6:1:606:1743
-TAGCGACAGCTTGGTTTTTAGTGAGTTGTTCCATTC
->HWI-EAS91_1_306UPAAXX:6:1:254:1391
-TATAATTACCCCAAAAAGAAAGGTATTAAGGATGAG
->HWI-EAS91_1_306UPAAXX:6:1:1568:1750
-TAACCAGTAGTGTTAACAGTCGGGAGAGGAGTGGCT
->HWI-EAS91_1_306UPAAXX:6:1:1538:869
-TACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCA
->HWI-EAS91_1_306UPAAXX:6:1:255:38
-GTCAGGATTGACACCCTCCCAATTGTATGTTTTCAT
->HWI-EAS91_1_306UPAAXX:6:1:1543:1555
-TAAAACGCCTCTAATCGGTCGTCAGCCAACGTGAGG
->HWI-EAS91_1_306UPAAXX:6:1:1365:733
-AGAATCAGCGGTATGGCTCTTCTCCTTTTTTCGCTT
->HWI-EAS91_1_306UPAAXX:6:1:1604:943
-TACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCT
->HWI-EAS91_1_306UPAAXX:6:1:1574:1632
-TCAGTATGCAAATTAGCATAAGCAGCTTGCAGACCC
->HWI-EAS91_1_306UPAAXX:6:1:565:1799
-TCTTGGTCAGTATGCAAATTAGCATAAGCAGCTTGC
->HWI-EAS91_1_306UPAAXX:6:1:1004:380
-TATTGACTCTACTGTAGACATTTTTACTTTTTATTT
->HWI-EAS91_1_306UPAAXX:6:1:1345:965
-ATTCAAAGGATAAACATCATAGGCAGTCGGGAGGGT
->HWI-EAS91_1_306UPAAXX:6:1:1704:756
-TGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGG
->HWI-EAS91_1_306UPAAXX:6:1:310:1346
-TATAACGTTGACGATGTAGCTTTAGTTTTCTTTAAA
->HWI-EAS91_1_306UPAAXX:6:1:900:1858
-TTTACCGCTTCGGCGTTATAACCTCACACTCAATCT
->HWI-EAS91_1_306UPAAXX:6:1:1250:1741
-TAAATCCAAAACGGCAGAAGCCTGAATGAGCTTAAT
->HWI-EAS91_1_306UPAAXX:6:1:1170:1317
-TCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTC
->HWI-EAS91_1_306UPAAXX:6:1:149:1896
-GCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATC
->HWI-EAS91_1_306UPAAXX:6:1:1504:494
-TGTCTACAGTAGAGTCAATAGCAAGGCCACGACGCC
->HWI-EAS91_1_306UPAAXX:6:1:395:256
-GTCCATATCTGACTTTTTGTTAACGTATTTATCCAC
->HWI-EAS91_1_306UPAAXX:6:1:1110:1109
-ACCGCTTCGGCGTTATAACCTCACACTCAATCTTTT
->HWI-EAS91_1_306UPAAXX:6:1:895:649
-TTCTGCACGTAATTTTTGACGCACGTTTTCTTCTGC
->HWI-EAS91_1_306UPAAXX:6:1:827:1378
-TGCAAGCTGCTTATGCTAATTTGCATACTGACCAAG
->HWI-EAS91_1_306UPAAXX:6:1:1051:1587
-TTTGACACTCTCACGTTGGCTGACGACCGATTAGAG
->HWI-EAS91_1_306UPAAXX:6:1:1656:1549
-AACCTGCTGTTGCTTGGAAAGATTGGTGTTTTCCAT
->HWI-EAS91_1_306UPAAXX:6:1:366:150
-GGTCAGTAGCAATCCAAACTTTGTTACTCGTCAGAA
->HWI-EAS91_1_306UPAAXX:6:1:955:1792
-ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA
->HWI-EAS91_1_306UPAAXX:6:1:1340:1403
-ATAAAATGCACCGCATGGAAATGAAGACGGCCATTA
->HWI-EAS91_1_306UPAAXX:6:1:1693:1017
-TGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGT
->HWI-EAS91_1_306UPAAXX:6:1:1099:1572
-AATTTTTACCGCTTCGGCGTTATAACCTCACACTCA
->HWI-EAS91_1_306UPAAXX:6:1:218:1148
-TATGCAAATTAGCATAAGCAGCTTGCAGACCCATAT
->HWI-EAS91_1_306UPAAXX:6:1:403:614
-TGGTGCTGATGCTTCCTCTGCTGGTATGGTTTACGC
->HWI-EAS91_1_306UPAAXX:6:1:1651:646
-TCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGC
->HWI-EAS91_1_306UPAAXX:6:1:1566:499
-TGCGGTGCATTTTATGCGGACACTTCCTACAGGTAG
->HWI-EAS91_1_306UPAAXX:6:1:825:951
-ACAGGCCGTTTGAATGTTTACGGGGTGTACATAATA
->HWI-EAS91_1_306UPAAXX:6:1:1745:1865
-TTAACTTCTGCGTCATGGAAGCGATAAAACTCTGCG
->HWI-EAS91_1_306UPAAXX:6:1:973:1992
-TAGTAATTCCTGCTTTATCAAGATAATTTTTCGACT
->HWI-EAS91_1_306UPAAXX:6:1:171:1653
-TAATAATGTTTTCCGTAAATTCAGCGCCTTCCATGT
->HWI-EAS91_1_306UPAAXX:6:1:397:363
-TGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGT
->HWI-EAS91_1_306UPAAXX:6:1:1336:1155
-ATATGTATGTTGACGGCCATAAGGCTGCTTCTGACG
->HWI-EAS91_1_306UPAAXX:6:1:685:629
-AGTATGCAAATTAGCATAAGCAGCTTGCAGACCCAT
->HWI-EAS91_1_306UPAAXX:6:1:1409:510
-ACATAATAAGCAATGACGGCAGCAATAAACTCAACA
->HWI-EAS91_1_306UPAAXX:6:1:1631:998
-AACCATCAGCATGAGCCTGTCGCATTGCATTCATCC
->HWI-EAS91_1_306UPAAXX:6:1:260:1698
-TTATTATGTTCATCCCGTCAACATTCAAACTGCCTT
->HWI-EAS91_1_306UPAAXX:6:1:578:971
-TTAACGCTACTAAATTCCGCGGATTGGTTTCGTTGT
->HWI-EAS91_1_306UPAAXX:6:1:1613:642
-ATAGAAATTTCACGCGGCGGCAAGTTGCCATACAAA
->HWI-EAS91_1_306UPAAXX:6:1:237:650
-GACGGTATAATAACCACCATCATGGCGACCATTCAA
->HWI-EAS91_1_306UPAAXX:6:1:1100:1875
-TTATGGTTCGTTCTTATTACCCTTCTGAATGTCACG
->HWI-EAS91_1_306UPAAXX:6:1:352:32
-GTACCATAAACGCAAGCCTCAACGCAGCGACGAGCC
->HWI-EAS91_1_306UPAAXX:6:1:443:229
-GCAGTAGGCGGAAAACGAACAAGCGCAAGAGTAAAC
->HWI-EAS91_1_306UPAAXX:6:1:1131:731
-AGCAGTCGGCGTGTGAATCATTAGCCTTGCGACCCT
->HWI-EAS91_1_306UPAAXX:6:1:133:1089
-AAGGTTAGTGCTGAGGTTGACTTAGTTCATCATCAA
->HWI-EAS91_1_306UPAAXX:6:1:65:1307
-TGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTT
->HWI-EAS91_1_306UPAAXX:6:1:905:1493
-TCAGCTTTACCGTCTTTCCAGAAATTGTTCCAAGTT
->HWI-EAS91_1_306UPAAXX:6:1:733:540
-TGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAT
->HWI-EAS91_1_306UPAAXX:6:1:161:1707
-TAATGTCGTCACTGATGCTGCTTCTGTTGTTGTTTT
->HWI-EAS91_1_306UPAAXX:6:1:380:1861
-TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC
->HWI-EAS91_1_306UPAAXX:6:1:1761:566
-TATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAT
->HWI-EAS91_1_306UPAAXX:6:1:1486:651
-TGGCGGTATTTCTTCTTCTCTTTCTTGTTGCGCCCT
->HWI-EAS91_1_306UPAAXX:6:1:508:1380
-TCCATCAACATCATAGCCAGATGCCCAGAGATTAGA
->HWI-EAS91_1_306UPAAXX:6:1:1763:855
-TGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTC
->HWI-EAS91_1_306UPAAXX:6:1:1553:553
-TAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAA
->HWI-EAS91_1_306UPAAXX:6:1:1424:507
-TCCACTGCAACAACTGAACGGACTGGAAACACTGGT
->HWI-EAS91_1_306UPAAXX:6:1:988:135
-TAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTC
->HWI-EAS91_1_306UPAAXX:6:1:810:1918
-TTTTCATCCCGAAGTTGCGGCTCATTCTGATTCTGT
->HWI-EAS91_1_306UPAAXX:6:1:588:559
-TCTGGTTGAACGGCGTCGCGTCGTAACCCAGCTTGG
->HWI-EAS91_1_306UPAAXX:6:1:1264:1214
-ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC
->HWI-EAS91_1_306UPAAXX:6:1:1000:1475
-TCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTG
->HWI-EAS91_1_306UPAAXX:6:1:1389:160
-TTATTCGCCACCATGATTATGACCAGTGTTTCCAGT
->HWI-EAS91_1_306UPAAXX:6:1:422:1296
-TTCAACTACTCCGGTTATCGCTGGCGACTCCTTCGT
->HWI-EAS91_1_306UPAAXX:6:1:1273:856
-TAGCCATAGCACCAGAAACAAAACTAGGGGCGGCCT
->HWI-EAS91_1_306UPAAXX:6:1:450:969
-TGTTTTCCATAATAGACGCAACGCGAGCAGTAGACT
->HWI-EAS91_1_306UPAAXX:6:1:1202:828
-ATCGTCAACGTTATATTTTGATAGTTTGACGTTTAT
->HWI-EAS91_1_306UPAAXX:6:1:1721:1800
-GGGTTAGGGACATTAGAGCCTTGACTGACTGAGTTT
->HWI-EAS91_1_306UPAAXX:6:1:228:2019
-TTGAGTAAGCATTTGGCGCATAATCTCGGAAACCTG
->HWI-EAS91_1_306UPAAXX:6:1:1579:1214
-ACGTTTGGTCAGTTCCATCAACATCATAGCCAGATG
->HWI-EAS91_1_306UPAAXX:6:1:429:1055
-TTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTCTTT
->HWI-EAS91_1_306UPAAXX:6:1:1359:1689
-AAGAGCAGAAGCAATACCGCCAGCAATAGCACCAAA
->HWI-EAS91_1_306UPAAXX:6:1:1474:1056
-TCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGAC
->HWI-EAS91_1_306UPAAXX:6:1:105:1818
-TTGGGGATTGAGAAAGAGTAGAAATGCCACAAGCCT
->HWI-EAS91_1_306UPAAXX:6:1:208:1538
-TAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
->HWI-EAS91_1_306UPAAXX:6:1:1361:1623
-AATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTA
->HWI-EAS91_1_306UPAAXX:6:1:595:1670
-TGAATCTCTTTAGTCGCAGTAGGCGGAAAACGAACA
->HWI-EAS91_1_306UPAAXX:6:1:6:1885
-TCTAATGTCGTCACTGATGCTGCTTCTGGTGTGTTT
->HWI-EAS91_1_306UPAAXX:6:1:706:1085
-TGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTG
->HWI-EAS91_1_306UPAAXX:6:1:1307:825
-AGCGGTAAAGTTAGACCAAACCATGAAACCAACATA
->HWI-EAS91_1_306UPAAXX:6:1:762:802
-TGGCATTAACACCATCCTTCATGAACTTAATCCACT
->HWI-EAS91_1_306UPAAXX:6:1:1657:506
-TTGCGACCCTCGGCAGCAAGAACCATACGACCAATT
->HWI-EAS91_1_306UPAAXX:6:1:184:811
-TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC
->HWI-EAS91_1_306UPAAXX:6:1:1469:1718
-TGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTTT
->HWI-EAS91_1_306UPAAXX:6:1:815:1640
-TGGCGGCGATTGCGTACCCGACGACCCAAATTAGGG
->HWI-EAS91_1_306UPAAXX:6:1:1580:1388
-AAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTG
->HWI-EAS91_1_306UPAAXX:6:1:1617:1554
-TACGGGGAAGGACGTCAATAGTCACACAGTCCTTGA
->HWI-EAS91_1_306UPAAXX:6:1:1544:431
-TGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTA
->HWI-EAS91_1_306UPAAXX:6:1:1604:1541
-TCAGTGACGACATTAGAAATATCCTTTGCAGTAGCG
->HWI-EAS91_1_306UPAAXX:6:1:1485:741
-ATCAAACGCTGAATAGTAAAGCCTCTACGCGATTTC
->HWI-EAS91_1_306UPAAXX:6:1:1226:393
-TGCCACAAGCCTCAATAGCAGGTTTAAGAGCCTCGA
->HWI-EAS91_1_306UPAAXX:6:1:1506:973
-ATTAGGGTCAACGCTACCTGTAGGAAGTGTCCGCAT
->HWI-EAS91_1_306UPAAXX:6:1:890:1838
-TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC
->HWI-EAS91_1_306UPAAXX:6:1:453:1527
-TAAGAGGGCGTTCAGCAGCCAGCTTGCGGCAAAACT
->HWI-EAS91_1_306UPAAXX:6:1:1056:570
-ACATTGTAGCATTGTGCCAATTCATCCATTAACTTC
->HWI-EAS91_1_306UPAAXX:6:1:1736:74
-TATCCGAAAGTGTTAACTTCTGCGTCATGGAAGCGT
->HWI-EAS91_1_306UPAAXX:6:1:169:1896
-GTATGCAAATTAGCATAAGCAGCTTGCAGACCCATA
->HWI-EAS91_1_306UPAAXX:6:1:259:949
-TGAGGATAAATTATGTCTAATATTCAAACTTGCTCC
->HWI-EAS91_1_306UPAAXX:6:1:1205:893
-ATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCT
->HWI-EAS91_1_306UPAAXX:6:1:732:1335
-TACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCT
->HWI-EAS91_1_306UPAAXX:6:1:667:664
-TCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAG
->HWI-EAS91_1_306UPAAXX:6:1:535:587
-TTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGT
->HWI-EAS91_1_306UPAAXX:6:1:412:446
-GTGTGGTTGATATTTTTCATGGTATTGATAAAGCTT
->HWI-EAS91_1_306UPAAXX:6:1:507:1599
-TTGCTGGCGGTTTTTCTTTTTTTTTTTTTTTTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:575:1818
-TAAAATGCACCGCATGGAAATGAAGACGGCCATTAG
->HWI-EAS91_1_306UPAAXX:6:1:1568:1428
-ACCAGTTATATGGCTGGTTGTTTTTTTTTTTTTTTT
->HWI-EAS91_1_306UPAAXX:6:1:1417:982
-AACAAGAGAATCTCTACCATGAACAAAATGTGACTC
->HWI-EAS91_1_306UPAAXX:6:1:280:1340
-GGCCAAACCAGTGGCGATGGCCGCGCTGGAGGTTTT
->HWI-EAS91_1_306UPAAXX:6:1:966:144
-TACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGT
->HWI-EAS91_1_306UPAAXX:6:1:1391:1987
-TAATAATGTTTTCCGTAAATTCAGCGCCTTCCATGT
->HWI-EAS91_1_306UPAAXX:6:1:1280:278
-ATGGAAATGAAGACGGCCATTAGCTGTACCATACTC
->HWI-EAS91_1_306UPAAXX:6:1:631:858
-TGATATTGGTCGTATGGTTCTTGCTTCCGTGGGTCT
->HWI-EAS91_1_306UPAAXX:6:1:518:573
-TTAGGTGTCTGTAAAACAGGTGCCGAAGAAGCTGGT
->HWI-EAS91_1_306UPAAXX:6:1:54:981
-TTGACATTTTAAAAGAGCGTGGATTACTATCTGATT
->HWI-EAS91_1_306UPAAXX:6:1:218:1165
-TATTGACTCTACTGTAGACATTTTTACTTTTTATTT
->HWI-EAS91_1_306UPAAXX:6:1:1727:1530
-TCAACGCAGCGACGAGCACGAGAGCGGTCAGTAGCA
->HWI-EAS91_1_306UPAAXX:6:1:519:657
-TGAACAGCATCGGACTCAGATAGTAATCCACGCTCT
->HWI-EAS91_1_306UPAAXX:6:1:939:967
-ATACCGTCAAGGACTGTGTGACTATTGACGTCCTTC
->HWI-EAS91_1_306UPAAXX:6:1:299:1060
-TATAACTGGTAGCTTTAAGCGGCTCACCTTTAGCAT
->HWI-EAS91_1_306UPAAXX:6:1:438:665
-TAATTCGTAAACAAGCAGTAGTAATTCCTGCTTTAT
->HWI-EAS91_1_306UPAAXX:6:1:1303:1971
-AGCATTGTGCCAATTCATCCATTAACTTCTCAGTAA
->HWI-EAS91_1_306UPAAXX:6:1:214:1264
-TCAGCACCAACAGAAACAACCTGATTAGCGGCGTTG
->HWI-EAS91_1_306UPAAXX:6:1:1454:1423
-AACGGAAAACATCCTTCATAGAAATTTCACGCGGCG
->HWI-EAS91_1_306UPAAXX:6:1:1633:340
-TTCCATAATAGACGCAACGCGAGCAGTAGACTCCTT
->HWI-EAS91_1_306UPAAXX:6:1:671:1196
-ATACGAAAAGACAGAATCTCTTCCAAGAGCTTGATG
diff -r 8d149264b777 -r efdb6fb5de34 test-data/b1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/b1.fasta Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,1000 @@
+>HWI-EAS91_1_306UPAAXX:6:1:1503:1160
+GGTGGTCTATAGTGTTATTAATATCAAGTTGGGGGG
+>HWI-EAS91_1_306UPAAXX:6:1:1564:1179
+GCGAGCAGTAGACTCCTTCTGTTGATAAGCAAGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1704:1082
+GATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1588:1797
+GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1304:1526
+GTAGTTGAAATGGTAATAAGACGACCAATCTGACCT
+>HWI-EAS91_1_306UPAAXX:6:1:1490:1582
+GTCGTGTTCAACAGACCTATAAACATTCTGTGCCGC
+>HWI-EAS91_1_306UPAAXX:6:1:1356:1339
+GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC
+>HWI-EAS91_1_306UPAAXX:6:1:1311:853
+GGTTGGTTTATCGTTTTTGACACTCTCACGTTGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:1257:1552
+GTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC
+>HWI-EAS91_1_306UPAAXX:6:1:1486:1402
+GTTACTGAGAAGTTAATGGATGAATTGGCACAATGC
+>HWI-EAS91_1_306UPAAXX:6:1:1028:1081
+GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT
+>HWI-EAS91_1_306UPAAXX:6:1:1167:752
+GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC
+>HWI-EAS91_1_306UPAAXX:6:1:1507:1113
+GTCAACGTTATATTTTGATAGTTTGACGGTTAATTC
+>HWI-EAS91_1_306UPAAXX:6:1:1654:1311
+GGATGAAAATGCTCACAATGACAAATCTGTCCACGG
+>HWI-EAS91_1_306UPAAXX:6:1:1386:1060
+GTTCTTGGTCAGTATGCAAATTAGCATAAGCAGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1070:1356
+GGTTACAGTATGCCCATCGCAGTTCGCTACACGCAG
+>HWI-EAS91_1_306UPAAXX:6:1:787:1032
+GCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCA
+>HWI-EAS91_1_306UPAAXX:6:1:834:1017
+GCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1703:1155
+GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT
+>HWI-EAS91_1_306UPAAXX:6:1:1406:593
+GTTGAGTTCGATAATGGTGATATGTATGTTTACGGC
+>HWI-EAS91_1_306UPAAXX:6:1:1411:886
+GTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:923:972
+GCATGACAAGTAAAGGACGGTTGTCAGCGTCATAAG
+>HWI-EAS91_1_306UPAAXX:6:1:1279:1004
+GCCATAGCACCAGAAACAAAACTAGGGGCGGCCTCT
+>HWI-EAS91_1_306UPAAXX:6:1:1070:840
+GGTTGTCAGCGTCATAAGAGGTTTTACCTCCAAATG
+>HWI-EAS91_1_306UPAAXX:6:1:1595:1040
+GTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1002:559
+GAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAG
+>HWI-EAS91_1_306UPAAXX:6:1:999:974
+GTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGC
+>HWI-EAS91_1_306UPAAXX:6:1:896:982
+GTGGCTGGAGACAAATAATCTCTTTAATAACCTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1366:741
+GTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGC
+>HWI-EAS91_1_306UPAAXX:6:1:749:1469
+GTTTATGGTGAACAGTGGATTAAGTTCATGAAGGAT
+>HWI-EAS91_1_306UPAAXX:6:1:1010:592
+GAGTTTATTGCTGCCGTCATTGCTTATTATGTTCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1393:650
+GTGACTCATATCTAAACCAGTCCTTGACGAACGTGC
+>HWI-EAS91_1_306UPAAXX:6:1:1238:1731
+GAGAAATAAAAGTCTGAAACATGATTAAACTCCTAA
+>HWI-EAS91_1_306UPAAXX:6:1:1629:908
+GATGCGGTTATCCATCTGCTTATGGAAGCCAAGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1560:849
+GCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAG
+>HWI-EAS91_1_306UPAAXX:6:1:1029:783
+GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1152:1324
+GACAATCAGAAAGAGATTGCCGAGATGCAAAATGAG
+>HWI-EAS91_1_306UPAAXX:6:1:1614:2042
+GAAATGCCACAAGCCTCAATAGCAGGTTTAAGAGCC
+>HWI-EAS91_1_306UPAAXX:6:1:1398:439
+GATGGTTGGTTTATCGTTTTTGACACTCTCACGTTG
+>HWI-EAS91_1_306UPAAXX:6:1:955:616
+GACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGC
+>HWI-EAS91_1_306UPAAXX:6:1:1672:753
+GAATGCCAGCAATCTCTTTTTGAGTCTCATTTTGCT
+>HWI-EAS91_1_306UPAAXX:6:1:1195:1293
+GCAATGCGACAGGCTCATGCTGATGGTTGGTTTATC
+>HWI-EAS91_1_306UPAAXX:6:1:1074:755
+GCAAGAGTAAACATAGTGCCATGCTCAGGAACAAAG
+>HWI-EAS91_1_306UPAAXX:6:1:984:499
+GACTTAGTTCATCAGCAAACGCAGAATCAGCGGTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1452:1833
+GCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGT
+>HWI-EAS91_1_306UPAAXX:6:1:863:710
+GAGTTCGATAATGGTGATATGTATGTTGACGGCCAT
+>HWI-EAS91_1_306UPAAXX:6:1:885:649
+GCAGAAGTTAACACTTTCGGATATTTCTGATGAGTC
+>HWI-EAS91_1_306UPAAXX:6:1:917:1214
+GACAGATGTATCCATCTGAATGCAATGAAGAAAACC
+>HWI-EAS91_1_306UPAAXX:6:1:892:1254
+GCTCAGGAAATGCAGCAGCAAGATAATCACGAGTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1555:1005
+GCATTTGGCGCATAATCTCGGAAACCTGCTGTTGCT
+>HWI-EAS91_1_306UPAAXX:6:1:1637:1413
+GATGCTGTTCAACCACTAATAGGTAAGAAATCATGT
+>HWI-EAS91_1_306UPAAXX:6:1:1102:1567
+GGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAA
+>HWI-EAS91_1_306UPAAXX:6:1:799:1337
+GTATATGCACAAAATGAGATGCTTGCTTATCAACAG
+>HWI-EAS91_1_306UPAAXX:6:1:1353:1843
+GCAGACCCATAATGTCAATAGATGTGGTAGAAGTCG
+>HWI-EAS91_1_306UPAAXX:6:1:1196:789
+GCGGCATACGCTCGGCGCCAGTTTGAATATTAGACA
+>HWI-EAS91_1_306UPAAXX:6:1:1056:1676
+GTAAAATACTGACCAGCCGTTTGAGCTTGAGTAAGC
+>HWI-EAS91_1_306UPAAXX:6:1:1349:1836
+GGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1027:788
+GGTGTTAATGCCACTCCTCTCCCGACTGTTAACACT
+>HWI-EAS91_1_306UPAAXX:6:1:990:1283
+GCTTAGGGATTTTATTGGTATCAGGGTTAATCGTGC
+>HWI-EAS91_1_306UPAAXX:6:1:904:939
+GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1732:793
+GTCAACATACATATCACCATTATCGAACTCAACGCC
+>HWI-EAS91_1_306UPAAXX:6:1:1355:2003
+GTTAGACCAAACCATGAAACCAACATAAACATTATT
+>HWI-EAS91_1_306UPAAXX:6:1:1337:977
+GCACCAGAAACAAAACTAGGGGCGGCCTCATCAGGG
+>HWI-EAS91_1_306UPAAXX:6:1:1605:1175
+GGAGGTAAAACCTCTTATGACGCTGACAACCGTCCT
+>HWI-EAS91_1_306UPAAXX:6:1:1763:1192
+GACAGGCCGTTTGAATGTTGACGGGATGAACATAAT
+>HWI-EAS91_1_306UPAAXX:6:1:722:483
+GTTATTATACCGTCAAGGACTGTGTGACTATTGACT
+>HWI-EAS91_1_306UPAAXX:6:1:1760:1136
+GCAAAGCATTGGGATTATCATAAAACGCCTCTAATC
+>HWI-EAS91_1_306UPAAXX:6:1:1088:798
+GGAAACCTGCTGTTGCTTGGAAAGATTGGTGTTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:633:1076
+GCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAG
+>HWI-EAS91_1_306UPAAXX:6:1:673:754
+GTCATGGAAGCGATAAAACTCTGCAGGTTGGATATT
+>HWI-EAS91_1_306UPAAXX:6:1:1759:2019
+GTAAAGGACGGTTGTCAGCGTCATAAGAGGTTTTAC
+>HWI-EAS91_1_306UPAAXX:6:1:1064:1797
+GCGGTTATCCATCTGCTTATGGAAGCCAAGCATTGG
+>HWI-EAS91_1_306UPAAXX:6:1:1112:1669
+GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACT
+>HWI-EAS91_1_306UPAAXX:6:1:510:1447
+GCATTAAGCTCAGGAAATGCAGCAGCAAGATAATCA
+>HWI-EAS91_1_306UPAAXX:6:1:877:1573
+GTGCTATTGCTGGCGGTATTTCTTCTTCTTTTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:870:542
+GAATGTCACGCTGATTATTTTGACTTTGAGCGTATC
+>HWI-EAS91_1_306UPAAXX:6:1:966:384
+GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA
+>HWI-EAS91_1_306UPAAXX:6:1:1186:1903
+GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
+>HWI-EAS91_1_306UPAAXX:6:1:1632:1742
+GCATCACCCATGCCTACAGTATTGTTATCGGTAGCC
+>HWI-EAS91_1_306UPAAXX:6:1:1521:559
+GAGAGCGCCAACGGCGTCCATCTCGAAGGAGTCGCC
+>HWI-EAS91_1_306UPAAXX:6:1:683:454
+GCTTATTATGTTCATCCCGTCAACATTCAAACGTCC
+>HWI-EAS91_1_306UPAAXX:6:1:112:1280
+GTTGGCGCTCTCCGTCTTTCTCCATTTCGTCGTGTC
+>HWI-EAS91_1_306UPAAXX:6:1:891:381
+GACCAGGGCGAGCGCCAGAACGTTTTTTACCTTTAG
+>HWI-EAS91_1_306UPAAXX:6:1:1348:958
+GATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1785:1915
+GCCCCGAAGGGGACNANAAATGGTTTTTAGAGAACG
+>HWI-EAS91_1_306UPAAXX:6:1:1418:42
+GTATGCCCATCGCAGTTCGCTACACGCAGGACGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1421:743
+GGTCAACGCTACCTGTAGGAAGTGTCCGCATAAAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1079:790
+GCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGT
+>HWI-EAS91_1_306UPAAXX:6:1:663:740
+GGTATTAAGGATGAGTGTTCAAGATTGCTGGATGCC
+>HWI-EAS91_1_306UPAAXX:6:1:1245:413
+GTTTGAATGTTGACGGGATGAACATAATAAGCAATG
+>HWI-EAS91_1_306UPAAXX:6:1:1378:1035
+GCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGG
+>HWI-EAS91_1_306UPAAXX:6:1:903:1746
+GTACGGGGAAGGACGTCAATAGTCACACAGTCCTTG
+>HWI-EAS91_1_306UPAAXX:6:1:1713:1134
+GGCGTACGGGGAAGGACGTCAATAGTCACACAGTCC
+>HWI-EAS91_1_306UPAAXX:6:1:1246:1887
+GCTCTAATCTCTGGGCATCTGGCTATGATGTTGATG
+>HWI-EAS91_1_306UPAAXX:6:1:872:1731
+GGGCGGCCTCATCAGGGTTAGGAACATTAGAGCCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1714:1582
+GCTTTCCTGCTCCTGTTGAGTTTATTGCTTCCGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:1785:763
+GNCGAGAAATAAAANNNTGAAACATGATTAAANTCC
+>HWI-EAS91_1_306UPAAXX:6:1:1684:542
+GAAAAGACAGAATCTCTTCCAAGAGCTTGATGCGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1581:1665
+GACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATT
+>HWI-EAS91_1_306UPAAXX:6:1:901:1581
+GTGCTGATATTGCTTTTGATGCCGACCCTAAATTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1128:239
+GGTTATTATACCGTCAAGGACTGTGTGACTATTGAC
+>HWI-EAS91_1_306UPAAXX:6:1:969:441
+GGTAAGAAATCATGAGTCAAGTTACTGAACAATCCG
+>HWI-EAS91_1_306UPAAXX:6:1:630:1087
+GCCACCATGATTATGACCAGTGTTTCCAGTCCGTTC
+>HWI-EAS91_1_306UPAAXX:6:1:606:1852
+GGAGACAAATAATCTCTTTAATAACCTGATTCAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:489:1315
+GAAAGCTCAGTCTCAGGAGGAAGCGGAGCAGTCCAC
+>HWI-EAS91_1_306UPAAXX:6:1:465:1983
+GAGCCAATACCATCAGCTTTACCGTCTTTCCAGAAA
+>HWI-EAS91_1_306UPAAXX:6:1:559:1028
+GAGTGCTTAATCCAACTTACCAAGCTGGGTTACGAC
+>HWI-EAS91_1_306UPAAXX:6:1:1655:1413
+GTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCG
+>HWI-EAS91_1_306UPAAXX:6:1:980:605
+GCCGTTTGAATGTTGACGGGATGAACATAATAAGCA
+>HWI-EAS91_1_306UPAAXX:6:1:1629:1865
+GAAAAGCGGCATGGTCAATATAACCAGTAGTGTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1180:1920
+GCACTCCGTGGACAGATTTGTCATTGTGAGCATTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1116:383
+GCGCAGGAAACACTGACGTTCTTACTGACGCAGAAG
+>HWI-EAS91_1_306UPAAXX:6:1:906:2041
+GTCACGTTTATGGTGAACAGTGGATTAAGTTCATGA
+>HWI-EAS91_1_306UPAAXX:6:1:1514:157
+GTCAATAGATGTGGTAGAAGTCGTCATTTGGCGTGG
+>HWI-EAS91_1_306UPAAXX:6:1:1032:1857
+GCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGT
+>HWI-EAS91_1_306UPAAXX:6:1:638:609
+GATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAT
+>HWI-EAS91_1_306UPAAXX:6:1:74:750
+GATAATCACGAGTATCCTTTCCTTTATCATCTTCAT
+>HWI-EAS91_1_306UPAAXX:6:1:486:822
+GTTGACGATGTAGCTTTAGGTGTCTTTAAAACAGGT
+>HWI-EAS91_1_306UPAAXX:6:1:899:473
+GAACAGCATCGGACTCAGATAGTAATCCACGCTCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1613:197
+GTGACATTCAGAAGGGTAATAAGAACGAACCATAAA
+>HWI-EAS91_1_306UPAAXX:6:1:326:1747
+GTTGAGGCTTTCGTTTATTGTACGCTTTGCTTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1487:526
+GCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
+>HWI-EAS91_1_306UPAAXX:6:1:629:665
+GAAATGCAGCAGCAAGATAATCACGAGTATCCTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:766:744
+GGCCGTCAACATACATATCACCATTATCGAACTCAA
+>HWI-EAS91_1_306UPAAXX:6:1:391:1771
+GTGGTTGATATTTTTCATGGTATTGATAAATCTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:591:1102
+GCTTTGCGTGACTATTTTCGTGATATTGTTCGTTTG
+>HWI-EAS91_1_306UPAAXX:6:1:917:664
+GCCATGATGGTGGTTATTATACCGTCAAGGACTGTG
+>HWI-EAS91_1_306UPAAXX:6:1:217:737
+GTTCAGTTGTTGCATTGGAATATTCAGTTTAAATTT
+>HWI-EAS91_1_306UPAAXX:6:1:1047:839
+GACCATTCAAAGGATAAACATCATAGGCAGTCGGGG
+>HWI-EAS91_1_306UPAAXX:6:1:558:1040
+GCCACCAGCAAGAGCAGAAGCAATACCGCCAGCAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1207:524
+GCCAATACCATCAGCTTTACCGTCTTTCCAGAAATT
+>HWI-EAS91_1_306UPAAXX:6:1:708:1634
+GCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAG
+>HWI-EAS91_1_306UPAAXX:6:1:576:1851
+GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAG
+>HWI-EAS91_1_306UPAAXX:6:1:906:460
+GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC
+>HWI-EAS91_1_306UPAAXX:6:1:693:1260
+GCGAAAGGTCGCAAAGTAAGAGCTTCTCGAGCTGCG
+>HWI-EAS91_1_306UPAAXX:6:1:1373:286
+GGACACTTCCTACAGGTAGCGTTGACCCTAATTTTG
+>HWI-EAS91_1_306UPAAXX:6:1:762:41
+GATACTTGGAACAATTTCTGGAAAGACGGTAAAGCT
+>HWI-EAS91_1_306UPAAXX:6:1:475:1091
+GTCACACAGTCCTTGACGGTATAATAACCACCATCT
+>HWI-EAS91_1_306UPAAXX:6:1:791:627
+GCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACC
+>HWI-EAS91_1_306UPAAXX:6:1:336:1791
+GAAGGAGTCGCCAGCGATAACCGGAGTAGTTGAAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1483:943
+GCACGTAATTTTTGACGCACGTTTTCTTCTGCGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:641:1071
+GATGGGCATACTGTAACCATAAGGCCACGTATTTTG
+>HWI-EAS91_1_306UPAAXX:6:1:196:755
+GAACGCCCTCTTAAGGATATTCGCGATGAGTATAAT
+>HWI-EAS91_1_306UPAAXX:6:1:463:1398
+GTCATAAGAGGTTTTACCTCCAAATGAAGAAATAAC
+>HWI-EAS91_1_306UPAAXX:6:1:1559:460
+GCTCACAATGACAAATCTGTCCACGGAGTGCTTAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1625:1561
+GAGGAGTGGCATTAACACCATCCTTCATGAACTTAC
+>HWI-EAS91_1_306UPAAXX:6:1:1729:1588
+GCTGATAAAGGAAAGGATACTCGTGATTATCTTGCT
+>HWI-EAS91_1_306UPAAXX:6:1:945:393
+GGCCTCATCAGGGTTAGGAACATTAGAGCCTTGAAT
+>HWI-EAS91_1_306UPAAXX:6:1:298:1391
+GTAAAGTTAGACCAAACCATGAAACCAACATAAACA
+>HWI-EAS91_1_306UPAAXX:6:1:1270:1500
+GAATTACTACTGCTTGTTTACGAATTAAATATATGT
+>HWI-EAS91_1_306UPAAXX:6:1:481:1546
+GCTGGCATTCAGTCGGCGACTTCACGCCAGAATACG
+>HWI-EAS91_1_306UPAAXX:6:1:473:1729
+GTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAT
+>HWI-EAS91_1_306UPAAXX:6:1:801:1831
+GCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAAT
+>HWI-EAS91_1_306UPAAXX:6:1:536:639
+GCCGACCCTAAATTTTTTGCCTGTTTGGTTCTCTTT
+>HWI-EAS91_1_306UPAAXX:6:1:259:938
+GTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTG
+>HWI-EAS91_1_306UPAAXX:6:1:907:1513
+GGCATGGGTGATGCTGGTATTAAATCTGCCATTCAC
+>HWI-EAS91_1_306UPAAXX:6:1:372:1409
+GATGAGTATAATTACCCCAAAAAGAAAGGTATTAAG
+>HWI-EAS91_1_306UPAAXX:6:1:485:1626
+GATGGCAGCAACGGAAACCATAACGAGCATCATCTT
+>HWI-EAS91_1_306UPAAXX:6:1:583:1679
+GCTCAAAGTCAAAATAATCAGCGTGACATTCAGAAG
+>HWI-EAS91_1_306UPAAXX:6:1:690:1610
+GACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:257:918
+GCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTTCT
+>HWI-EAS91_1_306UPAAXX:6:1:818:33
+GTGTTAATGCCACTCCTCTCCCGACTGTTAACTCTG
+>HWI-EAS91_1_306UPAAXX:6:1:541:1242
+GGGATTATCATAAAACGCCTCTAATCGGTCGTCAGC
+>HWI-EAS91_1_306UPAAXX:6:1:1014:279
+GTAAAAATGTCTACAGTAGAGTCAATAGCAAGGCCC
+>HWI-EAS91_1_306UPAAXX:6:1:672:1790
+GGCCGTTTGAATGTTGACGGGATGAACATAATAAGC
+>HWI-EAS91_1_306UPAAXX:6:1:708:464
+GGAGACAAATAATCTCTTTAATAACCTGATTCAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:633:1486
+GGGAAAGGTCATGCGGCATACGCTCGGCGCCAGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:328:696
+GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:259:1389
+GCGTACTTATTCGCCACCATGATTATTACCAGTGTT
+>HWI-EAS91_1_306UPAAXX:6:1:1315:41
+GCTTTCCGTGATGTCACAGCCTGCTTTGATGTGTCG
+>HWI-EAS91_1_306UPAAXX:6:1:1647:549
+GCTTAATCCAACTTACCAAGCTGGGTTACGACGCGC
+>HWI-EAS91_1_306UPAAXX:6:1:300:886
+GTTCTTGGTCAGTATGCAAATTAGCATAAGCAGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:317:1411
+GTACGCTGTACTTTGTGGGATACCCTCGCTTTCCTT
+>HWI-EAS91_1_306UPAAXX:6:1:321:1819
+GGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:631:70
+GTGGATTACTATCTGAGTCCGATGCTGTTCAACCAC
+>HWI-EAS91_1_306UPAAXX:6:1:624:1040
+GCTGGCGACTCCTTCGAGATGGACGCCGTTTGCGCT
+>HWI-EAS91_1_306UPAAXX:6:1:662:1187
+GGGAGAGGAGTGGCATTAACACCATCCTTCATGACC
+>HWI-EAS91_1_306UPAAXX:6:1:1440:1959
+GAATCAGCGGTATGGCTCCTCTCCTATTTTTGCTTC
+>HWI-EAS91_1_306UPAAXX:6:1:458:1629
+GCTGGTGGCGCCATGTCTAAATTTTTTGGAGGCGGT
+>HWI-EAS91_1_306UPAAXX:6:1:216:790
+GGGATGAAAATGCTCACAATGACAAATCTGTCCACG
+>HWI-EAS91_1_306UPAAXX:6:1:1407:1174
+TTACCTATTAGTGGTTGAACAGCATCGGACTCAGAT
+>HWI-EAS91_1_306UPAAXX:6:1:999:1790
+GTCCTGCGTGTAGCGAACTGCGATGGGCATACTGTC
+>HWI-EAS91_1_306UPAAXX:6:1:141:1994
+GGCTTTTTTATGGTTCGTTCTTATTACCCTTCTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:225:465
+GTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGC
+>HWI-EAS91_1_306UPAAXX:6:1:649:1760
+GACCCATAATGTCAATAGATGTGGTAGAAGTCGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:300:986
+GTTGAACACGACCAGAAAACTGGCCTAACGACGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:478:605
+GAGACTGAGCTTTCTCGCCAAATGACGACTTCTACC
+>HWI-EAS91_1_306UPAAXX:6:1:622:395
+GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGG
+>HWI-EAS91_1_306UPAAXX:6:1:1701:574
+GTAAAGCCTCTACGCGATTTCATAGTGGAGGCCTCC
+>HWI-EAS91_1_306UPAAXX:6:1:646:59
+GGAAGTGTCCGCATAAAATGCACCGCATGGAAATGT
+>HWI-EAS91_1_306UPAAXX:6:1:284:2031
+GACAGAATCGTTAGTTGATGGCGAAAGGTCGCAAAG
+>HWI-EAS91_1_306UPAAXX:6:1:22:1009
+GATGGATACATCTGTCAACGCCGCTAATCAGGTTGT
+>HWI-EAS91_1_306UPAAXX:6:1:47:1826
+GCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCG
+>HWI-EAS91_1_306UPAAXX:6:1:1025:1236
+TGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGT
+>HWI-EAS91_1_306UPAAXX:6:1:773:591
+GAGCAGGAAAGCGAGGGTATCCCACAAAGTCCAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:1753:527
+GGTGGCATTCAAGGTGATGTGCTTGCTACCGATAAC
+>HWI-EAS91_1_306UPAAXX:6:1:426:1717
+GTAGCGCCAATATGAGAAGAGCCATACCGCTGATTC
+>HWI-EAS91_1_306UPAAXX:6:1:959:818
+TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC
+>HWI-EAS91_1_306UPAAXX:6:1:459:1344
+GCCTATGATGTTTATCCTTTGAATGGTCGCCATGAT
+>HWI-EAS91_1_306UPAAXX:6:1:973:1367
+TTCGTGATGAGTTTGTATCTGTTACTGATAAGTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:201:871
+GATTAGAGGCGTTTTATGATAATCCCAATGCTTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:713:1672
+GGCGTACGGGGAAGGACGTCAATAGTCACACAGTCC
+>HWI-EAS91_1_306UPAAXX:6:1:444:1435
+TTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGTG
+>HWI-EAS91_1_306UPAAXX:6:1:288:1136
+GCCTTCCATGATGAGACAGGCCGTTTTAATTTTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1653:225
+GCAAGGCCACGACGCAATGGAGAAAGACGGAGAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:537:1764
+GCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAA
+>HWI-EAS91_1_306UPAAXX:6:1:196:1854
+GTATCGAGGCTCTTAAACCTGCTATTTAGGCTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:312:1707
+GCGTCATAAGAGGTTTTACCTCCAAATGAAGAAATA
+>HWI-EAS91_1_306UPAAXX:6:1:651:183
+GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:295:694
+GTGATTACTTCATGCAGCGTTACCGTGATGTTATTT
+>HWI-EAS91_1_306UPAAXX:6:1:330:1895
+GCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTG
+>HWI-EAS91_1_306UPAAXX:6:1:590:331
+GAAATTTCTATGAATGATGTTTTCCGTTCTGGTGAT
+>HWI-EAS91_1_306UPAAXX:6:1:481:1687
+GCAGATTGCGATAAACGGTCACATTAAATTTAACCT
+>HWI-EAS91_1_306UPAAXX:6:1:1112:1279
+TGTGCATATACCTGGTCTTTCGTATTCTGTCGTGAT
+>HWI-EAS91_1_306UPAAXX:6:1:1099:1216
+TTAGAGCGCATGACAAGTAAAGGACGGTTGTCAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:221:1238
+GTATCCTTTCCTTTATCATCGGCAGACTTTTCACCT
+>HWI-EAS91_1_306UPAAXX:6:1:1015:364
+GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
+>HWI-EAS91_1_306UPAAXX:6:1:735:1806
+TGTTATTAATATCAAGTTGGGGGAGCACATTGTAGC
+>HWI-EAS91_1_306UPAAXX:6:1:320:411
+GCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGTG
+>HWI-EAS91_1_306UPAAXX:6:1:1273:1031
+TTAAGGATATTCGCGATGAGTATAATTACCCCAAAA
+>HWI-EAS91_1_306UPAAXX:6:1:1456:1088
+AATAATCAGCGTGACATTCAGAAGGGTAATAAGAAC
+>HWI-EAS91_1_306UPAAXX:6:1:1365:307
+GACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAG
+>HWI-EAS91_1_306UPAAXX:6:1:478:252
+GATGCGGTTATCCATCTGCTTATTGAAGCCAAGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:915:1232
+TATTAATAACACTATAGACCACCGCCCCGAAGGGGC
+>HWI-EAS91_1_306UPAAXX:6:1:680:1357
+TTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGC
+>HWI-EAS91_1_306UPAAXX:6:1:238:1279
+GCCGAAGCCCCTGCAATTAAAATTGTTGACCACCTA
+>HWI-EAS91_1_306UPAAXX:6:1:1583:35
+GCAAATTAGCATAAGCAGCTTGCAGACCCATAATGT
+>HWI-EAS91_1_306UPAAXX:6:1:502:283
+GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:418:1730
+GAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:596:647
+GCCTCAACGCAGCGACGAGCACGAGAGCGGTCAGTA
+>HWI-EAS91_1_306UPAAXX:6:1:92:1591
+GTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCC
+>HWI-EAS91_1_306UPAAXX:6:1:430:1938
+GCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGTCC
+>HWI-EAS91_1_306UPAAXX:6:1:212:527
+GGTATTGATAAAGCTGTTGCCGATACTTGTAACAAT
+>HWI-EAS91_1_306UPAAXX:6:1:594:942
+GACGACATTAGAAATATCCTTTGCAGTAGCGCCAAT
+>HWI-EAS91_1_306UPAAXX:6:1:169:1774
+GCCTTCCATGATGAGACAGGCCGTTTTAATTTTTAC
+>HWI-EAS91_1_306UPAAXX:6:1:1090:210
+GGAGAGCGCCAACGGCGTCCATCTCGAAGGAGTCGC
+>HWI-EAS91_1_306UPAAXX:6:1:589:96
+GGCGGCCCCATCAGGGTTAGGAACATTAGAGCCTTG
+>HWI-EAS91_1_306UPAAXX:6:1:1477:1231
+TAGGAACATTAGAGCCTTGAATGGCAGATTTAATAC
+>HWI-EAS91_1_306UPAAXX:6:1:707:1076
+TCTGACGTTCGTGATGAGTTTGTATCTTTTTCTTTG
+>HWI-EAS91_1_306UPAAXX:6:1:749:1715
+GAACATAATAAGCAATGACGGCAGCAATAAACTCAA
+>HWI-EAS91_1_306UPAAXX:6:1:1738:1884
+GCTCACCTTTAGCATCAACAGGCCACAACCAACCAG
+>HWI-EAS91_1_306UPAAXX:6:1:1160:1088
+TCACATTTTGTTCATGGTAGAGATTCTCTTGTTGAC
+>HWI-EAS91_1_306UPAAXX:6:1:517:119
+GCAAGGCTAATGATTCACACGCCGACTGCTATCAGT
+>HWI-EAS91_1_306UPAAXX:6:1:1472:716
+TGGTAATGGTGGTTTTCTTCATTTCATTCAGTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:281:441
+GAGCAGTAGACTCCTTCTGTTGATAAGCAAGCATCT
+>HWI-EAS91_1_306UPAAXX:6:1:1101:324
+AATACCATCAGCTTTACCGTCTTTCCAGAAATTGTT
+>HWI-EAS91_1_306UPAAXX:6:1:1225:1494
+TTCTCAAATCCGGCGTCAACCATACCAGCAGAGGAA
+>HWI-EAS91_1_306UPAAXX:6:1:1509:1025
+TTCTTGCTGCCGAGGGTCGCAAGGCTATTGTTTCAC
+>HWI-EAS91_1_306UPAAXX:6:1:592:510
+GATACCAATAAAATCCCTAAGCATTTGTTTCTGGTT
+>HWI-EAS91_1_306UPAAXX:6:1:324:1729
+GAACAAAGAAACGCGGCACAGAATGTTTATAGGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:128:1925
+GGAACAACTCACTAAAAACCAAGCTGTCGCTACTTC
+>HWI-EAS91_1_306UPAAXX:6:1:786:893
+TACGGGGAAGGACGTCAATAGTCACACAGTCCTTGC
+>HWI-EAS91_1_306UPAAXX:6:1:248:955
+GCTACAATGTGCTCCCCCAACTTGATATTAATAACA
+>HWI-EAS91_1_306UPAAXX:6:1:388:1127
+GATATTGGTCGTATGGTTCTTGCTGCCTAGTGTCTC
+>HWI-EAS91_1_306UPAAXX:6:1:721:1156
+TCTGGTTGGTTGTGGCCTTTTTATGCTAAATGTTAG
+>HWI-EAS91_1_306UPAAXX:6:1:1564:1468
+TTACTTTTTATGTCCCTCATCGTCACGTTTATGTTG
+>HWI-EAS91_1_306UPAAXX:6:1:750:77
+GGCTCATTCTGATTCTGAACAGCTTCTTGGGAAGTA
+>HWI-EAS91_1_306UPAAXX:6:1:405:487
+GTTGGATTAAGCACTCCGTGGACAGATTTGTCATTT
+>HWI-EAS91_1_306UPAAXX:6:1:836:1204
+TTGCTTCTGCTCTTGCTTGTGGCGCCATGTCTAAAT
+>HWI-EAS91_1_306UPAAXX:6:1:224:1548
+GCTGCCGTCATTGCTTATTATGTTCATCCCTTCAAC
+>HWI-EAS91_1_306UPAAXX:6:1:931:1015
+TTAAGGTACTGAATCTCTTTAGTCGCAGTAGGCGGT
+>HWI-EAS91_1_306UPAAXX:6:1:329:579
+GTCCCTCATCGTCACGTTTATGGTGAACAGTGGATT
+>HWI-EAS91_1_306UPAAXX:6:1:260:1145
+GCTTGCGTTTATGGTACGCTGGACTTTTTGTGATAC
+>HWI-EAS91_1_306UPAAXX:6:1:1523:1253
+TTGGTAAAATACTGACCAGCCGTTTGAGCTTGAGTA
+>HWI-EAS91_1_306UPAAXX:6:1:326:1271
+GACCACTCGCGATTCAATCATGACTTCGTGATAAAT
+>HWI-EAS91_1_306UPAAXX:6:1:213:622
+GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA
+>HWI-EAS91_1_306UPAAXX:6:1:274:712
+GCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTG
+>HWI-EAS91_1_306UPAAXX:6:1:1549:627
+TATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATGT
+>HWI-EAS91_1_306UPAAXX:6:1:1714:737
+TCTTTCGTATTCTGGCGTGAAGTCGCCGACTGAATG
+>HWI-EAS91_1_306UPAAXX:6:1:760:1217
+TACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:174:768
+GTTGGCTGACGACCGATTAGAGGCGTTTTTTTATAT
+>HWI-EAS91_1_306UPAAXX:6:1:172:1412
+GGTCGGCAGATTGCGATAAACGTTCACATTAAATTT
+>HWI-EAS91_1_306UPAAXX:6:1:1393:869
+TTCATCCCGTCAACATTCAAACGGCCTGTCTCATCT
+>HWI-EAS91_1_306UPAAXX:6:1:301:481
+GTTATAGATATTCAAATAACCCTGAAACAAATGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:648:1093
+TAACGCTGCATGAAGTAATCACGTTCTTGGTCAGTT
+>HWI-EAS91_1_306UPAAXX:6:1:1233:591
+TTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:540:1415
+TTATTAAAGAGATTATTTTTCTCCAGCCACTTATGT
+>HWI-EAS91_1_306UPAAXX:6:1:151:1792
+GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA
+>HWI-EAS91_1_306UPAAXX:6:1:748:1378
+TGGATTACTATCTGAGTCCGATGCTGTTCAACCACT
+>HWI-EAS91_1_306UPAAXX:6:1:1526:1479
+TGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCC
+>HWI-EAS91_1_306UPAAXX:6:1:985:1093
+TAACCGTCTTCTCGTTCTCTAAAAACCATTTTTCTT
+>HWI-EAS91_1_306UPAAXX:6:1:480:1378
+TCAACCTCAGCACTAACCTTGCGAGTCATTTCTTTG
+>HWI-EAS91_1_306UPAAXX:6:1:903:753
+TGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG
+>HWI-EAS91_1_306UPAAXX:6:1:1697:1737
+GGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGT
+>HWI-EAS91_1_306UPAAXX:6:1:803:1037
+TGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCTACT
+>HWI-EAS91_1_306UPAAXX:6:1:1727:1244
+TTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCT
+>HWI-EAS91_1_306UPAAXX:6:1:253:1162
+GCATTTAGTAGCGGTAAAGTTTGACCAAACCATTAT
+>HWI-EAS91_1_306UPAAXX:6:1:216:856
+GTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCT
+>HWI-EAS91_1_306UPAAXX:6:1:825:886
+TCCCACAAAGTCCAGCGTACCATAAACGCAAGCCTC
+>HWI-EAS91_1_306UPAAXX:6:1:1699:962
+TGATTTCGATTTTCTGACGAGTAACAAAGTTTGGAT
+>HWI-EAS91_1_306UPAAXX:6:1:1210:625
+TCAGATAGTAATCCACGCTCTTTTAAAATGTCAACA
+>HWI-EAS91_1_306UPAAXX:6:1:538:616
+TAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGT
+>HWI-EAS91_1_306UPAAXX:6:1:184:1849
+GCTCACCTTTAGCATCAACAGGCCACAACCAACCAG
+>HWI-EAS91_1_306UPAAXX:6:1:1636:1103
+TATCTGACTTTTTGTTAACGTATTTAGCCACATAGA
+>HWI-EAS91_1_306UPAAXX:6:1:605:223
+GGTTATTTGAATATCTATAACAACTATTTTAAATCG
+>HWI-EAS91_1_306UPAAXX:6:1:256:1052
+GGTAAAGGACTTCTTGAAGGTACGTTGCAGTCTGGC
+>HWI-EAS91_1_306UPAAXX:6:1:300:1515
+GCCATGATGGTGGTTATTATACCGTCAAGGACTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1684:1320
+TGCTTGGCTTCCATAAGCAGATGGATAACCGCATCA
+>HWI-EAS91_1_306UPAAXX:6:1:1186:895
+TCAGATGGATACATCTGTCAACGCCGCTAATCAGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1463:754
+TCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:808:1053
+TGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGG
+>HWI-EAS91_1_306UPAAXX:6:1:960:1218
+TTTCTAATGTCGTCACTGATGCTGCTTCTGTTGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:521:1646
+GGAAAACGAACAAGCGCAAGAGTAAACATAGTGCCA
+>HWI-EAS91_1_306UPAAXX:6:1:289:1885
+GCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAG
+>HWI-EAS91_1_306UPAAXX:6:1:471:170
+GGTCAGTTCCATCAACATCATAGCCAGATGCCCAGA
+>HWI-EAS91_1_306UPAAXX:6:1:828:754
+TTTGCGTGACTATTTTCGTGATATTGTTCGTATGGT
+>HWI-EAS91_1_306UPAAXX:6:1:924:1679
+TTTAATGTGACCGTTTATCGCAATCTGCCGACCACT
+>HWI-EAS91_1_306UPAAXX:6:1:837:901
+TGCATTTTAGTAAGCTCTTTTTGATTCTCAAATCCG
+>HWI-EAS91_1_306UPAAXX:6:1:543:16
+GCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1482:578
+TCTTTAGCTCCTAGACCTTTAGCAGCAAGGTCCATA
+>HWI-EAS91_1_306UPAAXX:6:1:1254:1668
+TTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCT
+>HWI-EAS91_1_306UPAAXX:6:1:1402:898
+TCATGAGTCAAGTTACTGAACAATCCGTACGTTTCC
+>HWI-EAS91_1_306UPAAXX:6:1:764:1534
+TTATACCGTCAAGGACTGTGTGACTATTGACGTCCT
+>HWI-EAS91_1_306UPAAXX:6:1:681:1079
+TGGCGAATAAGTACGCGTTCTTGCAAATCACCAGAA
+>HWI-EAS91_1_306UPAAXX:6:1:672:1350
+TTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1266:493
+TGACCAGCCGTTTGAGCTTGAGTAAGCATTTGGCGC
+>HWI-EAS91_1_306UPAAXX:6:1:118:238
+GACGGTATAATAACCACCATCATGGCGACCATTCAA
+>HWI-EAS91_1_306UPAAXX:6:1:699:433
+TTATTGCCCGGCGTACGGGGAAGGACGTCAATAGTC
+>HWI-EAS91_1_306UPAAXX:6:1:708:1387
+TGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTAC
+>HWI-EAS91_1_306UPAAXX:6:1:498:1085
+TTATGATAATCCCAATGCTTTGCGTGACTATTTTCT
+>HWI-EAS91_1_306UPAAXX:6:1:1101:1301
+TCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAAT
+>HWI-EAS91_1_306UPAAXX:6:1:261:213
+GAATGGTCGCCATGATGGTGGTTATTATACCGTCAC
+>HWI-EAS91_1_306UPAAXX:6:1:1287:1267
+TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGT
+>HWI-EAS91_1_306UPAAXX:6:1:744:331
+TTAATGGATGAATTGGCACAATGCTACAATGTGCTC
+>HWI-EAS91_1_306UPAAXX:6:1:614:814
+TGTCAGCGTCATAAGAGGTTTTACCTCCAAATGAAG
+>HWI-EAS91_1_306UPAAXX:6:1:1362:1063
+TAAACGCAAGCCTCAACGCAGCGACGAGCACGAGAG
+>HWI-EAS91_1_306UPAAXX:6:1:1238:1508
+TCAACTAACGATTCTGTCAAAAACTGACGCGTTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:904:1130
+TTATCGCAATCTGCCGACCACTCGCGATTCAATCAT
+>HWI-EAS91_1_306UPAAXX:6:1:465:216
+GACCATGCCGCTTTTCTTGGCACGATTAACCCTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:844:628
+TAATGTCAATAGATGTGGTAGAAGTCGTCATTTGGC
+>HWI-EAS91_1_306UPAAXX:6:1:684:1444
+TATCCCACAAAGTCCAGCGTACCATAAACGCAAGCC
+>HWI-EAS91_1_306UPAAXX:6:1:515:1373
+TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCT
+>HWI-EAS91_1_306UPAAXX:6:1:764:1667
+TTGAGTTCGATAATGGTGATATGTATGTTGACGTCC
+>HWI-EAS91_1_306UPAAXX:6:1:1722:598
+TGAGTTTATTGCTGCCGTCATTGCTTATTATGTTCT
+>HWI-EAS91_1_306UPAAXX:6:1:670:1188
+TTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGT
+>HWI-EAS91_1_306UPAAXX:6:1:1682:1705
+TAGCCACATAGAAACCAACAGCCATATAACTGGTAG
+>HWI-EAS91_1_306UPAAXX:6:1:1008:1616
+TCCTTTACTTGTCATGCGCTCTAATCTCTGTGCATC
+>HWI-EAS91_1_306UPAAXX:6:1:490:1220
+TAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCT
+>HWI-EAS91_1_306UPAAXX:6:1:891:1437
+TAATGGTGATATGTATGTTTACGTCCATAAGGCTGT
+>HWI-EAS91_1_306UPAAXX:6:1:1310:321
+TCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGT
+>HWI-EAS91_1_306UPAAXX:6:1:827:1597
+TGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTC
+>HWI-EAS91_1_306UPAAXX:6:1:1062:1158
+TAGAGTCAATAGCAAGGCCACGACGCAATGGAGAAA
+>HWI-EAS91_1_306UPAAXX:6:1:1419:208
+TGGCGCATAATCTCGGAAACCTGCTGTTGCTTGGAA
+>HWI-EAS91_1_306UPAAXX:6:1:691:1018
+AAATATCAACCACACCAGAAGCAGCATCAGTGACGA
+>HWI-EAS91_1_306UPAAXX:6:1:374:113
+GATAAAGCTGTTGCCGATACTTGGAACAATTTCTGT
+>HWI-EAS91_1_306UPAAXX:6:1:1720:784
+TGAGGATAAATTATGTCTAATATTCAAACTGGCGCC
+>HWI-EAS91_1_306UPAAXX:6:1:1424:1394
+ATAAAAATGATTGGCGTATCCAACCTGCAGAGTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1063:1760
+TAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCT
+>HWI-EAS91_1_306UPAAXX:6:1:1235:729
+TTTTTATGTCCCTCATCGTCACGTTTATGGTGAACA
+>HWI-EAS91_1_306UPAAXX:6:1:167:1507
+TAGTGTTATTAATATCAAGTTTTTGGAGCACATTGT
+>HWI-EAS91_1_306UPAAXX:6:1:717:1569
+TCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGT
+>HWI-EAS91_1_306UPAAXX:6:1:610:765
+TTCAGCGCCTTCCATGATGAGACAGGCCGTTTGAAT
+>HWI-EAS91_1_306UPAAXX:6:1:663:380
+TAAACATTCTGTGCCGCGTTTCTTTGTTCCTTATCT
+>HWI-EAS91_1_306UPAAXX:6:1:790:1358
+TTATCACCTTATTGAAGGCTTATCATTCATTTAGGT
+>HWI-EAS91_1_306UPAAXX:6:1:965:1633
+TAGATGTGGTAGAAGTCGTCATTTGGCGAGAAAGCT
+>HWI-EAS91_1_306UPAAXX:6:1:673:319
+TTCTTGCAAATCACCAGAAGGCGGTTCCTGAATGAT
+>HWI-EAS91_1_306UPAAXX:6:1:684:371
+TAGCGGTAAAGTTAGACCAAACCATGAAACCAACAT
+>HWI-EAS91_1_306UPAAXX:6:1:1147:1444
+ATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGC
+>HWI-EAS91_1_306UPAAXX:6:1:983:678
+ATACCTGGTCTTTCGTATTCTGGCGTGAAGTCGCCG
+>HWI-EAS91_1_306UPAAXX:6:1:1608:1119
+TCACGCGGCGGCAAGTTGCCATACAAAACAGGGTCG
+>HWI-EAS91_1_306UPAAXX:6:1:1048:1193
+TAGTCAGGTTAAATTTAATGTGACCGTTTATCGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1265:1429
+ATATTTTTCATGGTATTGATAAAGCTGTTGCCGATT
+>HWI-EAS91_1_306UPAAXX:6:1:1607:1677
+TGTTGCTTGGAAAGATTGGTGTTTTCCATAATAGAC
+>HWI-EAS91_1_306UPAAXX:6:1:1087:1421
+ACGAACGTCAGAAGCAGCCTTATGGCCGTCAACATC
+>HWI-EAS91_1_306UPAAXX:6:1:324:490
+GCACCAAACATAAATCACCTCACTTAAGTGGCTGGG
+>HWI-EAS91_1_306UPAAXX:6:1:1596:614
+TTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGT
+>HWI-EAS91_1_306UPAAXX:6:1:343:83
+GTTACGCAGTTTTGCCGCAAGCTGGCTGCTGTACGC
+>HWI-EAS91_1_306UPAAXX:6:1:203:667
+GCATGAATGTGCTTAATAGAGGCCAAGGCGGTCTAG
+>HWI-EAS91_1_306UPAAXX:6:1:34:480
+GGCAAGTTGCCATACAAAACAGGGTCGCCAGCAATT
+>HWI-EAS91_1_306UPAAXX:6:1:606:1743
+TAGCGACAGCTTGGTTTTTAGTGAGTTGTTCCATTC
+>HWI-EAS91_1_306UPAAXX:6:1:254:1391
+TATAATTACCCCAAAAAGAAAGGTATTAAGGATGAG
+>HWI-EAS91_1_306UPAAXX:6:1:1568:1750
+TAACCAGTAGTGTTAACAGTCGGGAGAGGAGTGGCT
+>HWI-EAS91_1_306UPAAXX:6:1:1538:869
+TACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCA
+>HWI-EAS91_1_306UPAAXX:6:1:255:38
+GTCAGGATTGACACCCTCCCAATTGTATGTTTTCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1543:1555
+TAAAACGCCTCTAATCGGTCGTCAGCCAACGTGAGG
+>HWI-EAS91_1_306UPAAXX:6:1:1365:733
+AGAATCAGCGGTATGGCTCTTCTCCTTTTTTCGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:1604:943
+TACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCT
+>HWI-EAS91_1_306UPAAXX:6:1:1574:1632
+TCAGTATGCAAATTAGCATAAGCAGCTTGCAGACCC
+>HWI-EAS91_1_306UPAAXX:6:1:565:1799
+TCTTGGTCAGTATGCAAATTAGCATAAGCAGCTTGC
+>HWI-EAS91_1_306UPAAXX:6:1:1004:380
+TATTGACTCTACTGTAGACATTTTTACTTTTTATTT
+>HWI-EAS91_1_306UPAAXX:6:1:1345:965
+ATTCAAAGGATAAACATCATAGGCAGTCGGGAGGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1704:756
+TGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGG
+>HWI-EAS91_1_306UPAAXX:6:1:310:1346
+TATAACGTTGACGATGTAGCTTTAGTTTTCTTTAAA
+>HWI-EAS91_1_306UPAAXX:6:1:900:1858
+TTTACCGCTTCGGCGTTATAACCTCACACTCAATCT
+>HWI-EAS91_1_306UPAAXX:6:1:1250:1741
+TAAATCCAAAACGGCAGAAGCCTGAATGAGCTTAAT
+>HWI-EAS91_1_306UPAAXX:6:1:1170:1317
+TCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTC
+>HWI-EAS91_1_306UPAAXX:6:1:149:1896
+GCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATC
+>HWI-EAS91_1_306UPAAXX:6:1:1504:494
+TGTCTACAGTAGAGTCAATAGCAAGGCCACGACGCC
+>HWI-EAS91_1_306UPAAXX:6:1:395:256
+GTCCATATCTGACTTTTTGTTAACGTATTTATCCAC
+>HWI-EAS91_1_306UPAAXX:6:1:1110:1109
+ACCGCTTCGGCGTTATAACCTCACACTCAATCTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:895:649
+TTCTGCACGTAATTTTTGACGCACGTTTTCTTCTGC
+>HWI-EAS91_1_306UPAAXX:6:1:827:1378
+TGCAAGCTGCTTATGCTAATTTGCATACTGACCAAG
+>HWI-EAS91_1_306UPAAXX:6:1:1051:1587
+TTTGACACTCTCACGTTGGCTGACGACCGATTAGAG
+>HWI-EAS91_1_306UPAAXX:6:1:1656:1549
+AACCTGCTGTTGCTTGGAAAGATTGGTGTTTTCCAT
+>HWI-EAS91_1_306UPAAXX:6:1:366:150
+GGTCAGTAGCAATCCAAACTTTGTTACTCGTCAGAA
+>HWI-EAS91_1_306UPAAXX:6:1:955:1792
+ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA
+>HWI-EAS91_1_306UPAAXX:6:1:1340:1403
+ATAAAATGCACCGCATGGAAATGAAGACGGCCATTA
+>HWI-EAS91_1_306UPAAXX:6:1:1693:1017
+TGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGT
+>HWI-EAS91_1_306UPAAXX:6:1:1099:1572
+AATTTTTACCGCTTCGGCGTTATAACCTCACACTCA
+>HWI-EAS91_1_306UPAAXX:6:1:218:1148
+TATGCAAATTAGCATAAGCAGCTTGCAGACCCATAT
+>HWI-EAS91_1_306UPAAXX:6:1:403:614
+TGGTGCTGATGCTTCCTCTGCTGGTATGGTTTACGC
+>HWI-EAS91_1_306UPAAXX:6:1:1651:646
+TCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGC
+>HWI-EAS91_1_306UPAAXX:6:1:1566:499
+TGCGGTGCATTTTATGCGGACACTTCCTACAGGTAG
+>HWI-EAS91_1_306UPAAXX:6:1:825:951
+ACAGGCCGTTTGAATGTTTACGGGGTGTACATAATA
+>HWI-EAS91_1_306UPAAXX:6:1:1745:1865
+TTAACTTCTGCGTCATGGAAGCGATAAAACTCTGCG
+>HWI-EAS91_1_306UPAAXX:6:1:973:1992
+TAGTAATTCCTGCTTTATCAAGATAATTTTTCGACT
+>HWI-EAS91_1_306UPAAXX:6:1:171:1653
+TAATAATGTTTTCCGTAAATTCAGCGCCTTCCATGT
+>HWI-EAS91_1_306UPAAXX:6:1:397:363
+TGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGT
+>HWI-EAS91_1_306UPAAXX:6:1:1336:1155
+ATATGTATGTTGACGGCCATAAGGCTGCTTCTGACG
+>HWI-EAS91_1_306UPAAXX:6:1:685:629
+AGTATGCAAATTAGCATAAGCAGCTTGCAGACCCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1409:510
+ACATAATAAGCAATGACGGCAGCAATAAACTCAACA
+>HWI-EAS91_1_306UPAAXX:6:1:1631:998
+AACCATCAGCATGAGCCTGTCGCATTGCATTCATCC
+>HWI-EAS91_1_306UPAAXX:6:1:260:1698
+TTATTATGTTCATCCCGTCAACATTCAAACTGCCTT
+>HWI-EAS91_1_306UPAAXX:6:1:578:971
+TTAACGCTACTAAATTCCGCGGATTGGTTTCGTTGT
+>HWI-EAS91_1_306UPAAXX:6:1:1613:642
+ATAGAAATTTCACGCGGCGGCAAGTTGCCATACAAA
+>HWI-EAS91_1_306UPAAXX:6:1:237:650
+GACGGTATAATAACCACCATCATGGCGACCATTCAA
+>HWI-EAS91_1_306UPAAXX:6:1:1100:1875
+TTATGGTTCGTTCTTATTACCCTTCTGAATGTCACG
+>HWI-EAS91_1_306UPAAXX:6:1:352:32
+GTACCATAAACGCAAGCCTCAACGCAGCGACGAGCC
+>HWI-EAS91_1_306UPAAXX:6:1:443:229
+GCAGTAGGCGGAAAACGAACAAGCGCAAGAGTAAAC
+>HWI-EAS91_1_306UPAAXX:6:1:1131:731
+AGCAGTCGGCGTGTGAATCATTAGCCTTGCGACCCT
+>HWI-EAS91_1_306UPAAXX:6:1:133:1089
+AAGGTTAGTGCTGAGGTTGACTTAGTTCATCATCAA
+>HWI-EAS91_1_306UPAAXX:6:1:65:1307
+TGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTT
+>HWI-EAS91_1_306UPAAXX:6:1:905:1493
+TCAGCTTTACCGTCTTTCCAGAAATTGTTCCAAGTT
+>HWI-EAS91_1_306UPAAXX:6:1:733:540
+TGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAT
+>HWI-EAS91_1_306UPAAXX:6:1:161:1707
+TAATGTCGTCACTGATGCTGCTTCTGTTGTTGTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:380:1861
+TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC
+>HWI-EAS91_1_306UPAAXX:6:1:1761:566
+TATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:1486:651
+TGGCGGTATTTCTTCTTCTCTTTCTTGTTGCGCCCT
+>HWI-EAS91_1_306UPAAXX:6:1:508:1380
+TCCATCAACATCATAGCCAGATGCCCAGAGATTAGA
+>HWI-EAS91_1_306UPAAXX:6:1:1763:855
+TGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1553:553
+TAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAA
+>HWI-EAS91_1_306UPAAXX:6:1:1424:507
+TCCACTGCAACAACTGAACGGACTGGAAACACTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:988:135
+TAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTC
+>HWI-EAS91_1_306UPAAXX:6:1:810:1918
+TTTTCATCCCGAAGTTGCGGCTCATTCTGATTCTGT
+>HWI-EAS91_1_306UPAAXX:6:1:588:559
+TCTGGTTGAACGGCGTCGCGTCGTAACCCAGCTTGG
+>HWI-EAS91_1_306UPAAXX:6:1:1264:1214
+ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC
+>HWI-EAS91_1_306UPAAXX:6:1:1000:1475
+TCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTG
+>HWI-EAS91_1_306UPAAXX:6:1:1389:160
+TTATTCGCCACCATGATTATGACCAGTGTTTCCAGT
+>HWI-EAS91_1_306UPAAXX:6:1:422:1296
+TTCAACTACTCCGGTTATCGCTGGCGACTCCTTCGT
+>HWI-EAS91_1_306UPAAXX:6:1:1273:856
+TAGCCATAGCACCAGAAACAAAACTAGGGGCGGCCT
+>HWI-EAS91_1_306UPAAXX:6:1:450:969
+TGTTTTCCATAATAGACGCAACGCGAGCAGTAGACT
+>HWI-EAS91_1_306UPAAXX:6:1:1202:828
+ATCGTCAACGTTATATTTTGATAGTTTGACGTTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1721:1800
+GGGTTAGGGACATTAGAGCCTTGACTGACTGAGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:228:2019
+TTGAGTAAGCATTTGGCGCATAATCTCGGAAACCTG
+>HWI-EAS91_1_306UPAAXX:6:1:1579:1214
+ACGTTTGGTCAGTTCCATCAACATCATAGCCAGATG
+>HWI-EAS91_1_306UPAAXX:6:1:429:1055
+TTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTCTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1359:1689
+AAGAGCAGAAGCAATACCGCCAGCAATAGCACCAAA
+>HWI-EAS91_1_306UPAAXX:6:1:1474:1056
+TCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGAC
+>HWI-EAS91_1_306UPAAXX:6:1:105:1818
+TTGGGGATTGAGAAAGAGTAGAAATGCCACAAGCCT
+>HWI-EAS91_1_306UPAAXX:6:1:208:1538
+TAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
+>HWI-EAS91_1_306UPAAXX:6:1:1361:1623
+AATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTA
+>HWI-EAS91_1_306UPAAXX:6:1:595:1670
+TGAATCTCTTTAGTCGCAGTAGGCGGAAAACGAACA
+>HWI-EAS91_1_306UPAAXX:6:1:6:1885
+TCTAATGTCGTCACTGATGCTGCTTCTGGTGTGTTT
+>HWI-EAS91_1_306UPAAXX:6:1:706:1085
+TGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTG
+>HWI-EAS91_1_306UPAAXX:6:1:1307:825
+AGCGGTAAAGTTAGACCAAACCATGAAACCAACATA
+>HWI-EAS91_1_306UPAAXX:6:1:762:802
+TGGCATTAACACCATCCTTCATGAACTTAATCCACT
+>HWI-EAS91_1_306UPAAXX:6:1:1657:506
+TTGCGACCCTCGGCAGCAAGAACCATACGACCAATT
+>HWI-EAS91_1_306UPAAXX:6:1:184:811
+TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC
+>HWI-EAS91_1_306UPAAXX:6:1:1469:1718
+TGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTTT
+>HWI-EAS91_1_306UPAAXX:6:1:815:1640
+TGGCGGCGATTGCGTACCCGACGACCCAAATTAGGG
+>HWI-EAS91_1_306UPAAXX:6:1:1580:1388
+AAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTG
+>HWI-EAS91_1_306UPAAXX:6:1:1617:1554
+TACGGGGAAGGACGTCAATAGTCACACAGTCCTTGA
+>HWI-EAS91_1_306UPAAXX:6:1:1544:431
+TGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTA
+>HWI-EAS91_1_306UPAAXX:6:1:1604:1541
+TCAGTGACGACATTAGAAATATCCTTTGCAGTAGCG
+>HWI-EAS91_1_306UPAAXX:6:1:1485:741
+ATCAAACGCTGAATAGTAAAGCCTCTACGCGATTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1226:393
+TGCCACAAGCCTCAATAGCAGGTTTAAGAGCCTCGA
+>HWI-EAS91_1_306UPAAXX:6:1:1506:973
+ATTAGGGTCAACGCTACCTGTAGGAAGTGTCCGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:890:1838
+TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC
+>HWI-EAS91_1_306UPAAXX:6:1:453:1527
+TAAGAGGGCGTTCAGCAGCCAGCTTGCGGCAAAACT
+>HWI-EAS91_1_306UPAAXX:6:1:1056:570
+ACATTGTAGCATTGTGCCAATTCATCCATTAACTTC
+>HWI-EAS91_1_306UPAAXX:6:1:1736:74
+TATCCGAAAGTGTTAACTTCTGCGTCATGGAAGCGT
+>HWI-EAS91_1_306UPAAXX:6:1:169:1896
+GTATGCAAATTAGCATAAGCAGCTTGCAGACCCATA
+>HWI-EAS91_1_306UPAAXX:6:1:259:949
+TGAGGATAAATTATGTCTAATATTCAAACTTGCTCC
+>HWI-EAS91_1_306UPAAXX:6:1:1205:893
+ATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCT
+>HWI-EAS91_1_306UPAAXX:6:1:732:1335
+TACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCT
+>HWI-EAS91_1_306UPAAXX:6:1:667:664
+TCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAG
+>HWI-EAS91_1_306UPAAXX:6:1:535:587
+TTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGT
+>HWI-EAS91_1_306UPAAXX:6:1:412:446
+GTGTGGTTGATATTTTTCATGGTATTGATAAAGCTT
+>HWI-EAS91_1_306UPAAXX:6:1:507:1599
+TTGCTGGCGGTTTTTCTTTTTTTTTTTTTTTTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:575:1818
+TAAAATGCACCGCATGGAAATGAAGACGGCCATTAG
+>HWI-EAS91_1_306UPAAXX:6:1:1568:1428
+ACCAGTTATATGGCTGGTTGTTTTTTTTTTTTTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:1417:982
+AACAAGAGAATCTCTACCATGAACAAAATGTGACTC
+>HWI-EAS91_1_306UPAAXX:6:1:280:1340
+GGCCAAACCAGTGGCGATGGCCGCGCTGGAGGTTTT
+>HWI-EAS91_1_306UPAAXX:6:1:966:144
+TACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGT
+>HWI-EAS91_1_306UPAAXX:6:1:1391:1987
+TAATAATGTTTTCCGTAAATTCAGCGCCTTCCATGT
+>HWI-EAS91_1_306UPAAXX:6:1:1280:278
+ATGGAAATGAAGACGGCCATTAGCTGTACCATACTC
+>HWI-EAS91_1_306UPAAXX:6:1:631:858
+TGATATTGGTCGTATGGTTCTTGCTTCCGTGGGTCT
+>HWI-EAS91_1_306UPAAXX:6:1:518:573
+TTAGGTGTCTGTAAAACAGGTGCCGAAGAAGCTGGT
+>HWI-EAS91_1_306UPAAXX:6:1:54:981
+TTGACATTTTAAAAGAGCGTGGATTACTATCTGATT
+>HWI-EAS91_1_306UPAAXX:6:1:218:1165
+TATTGACTCTACTGTAGACATTTTTACTTTTTATTT
+>HWI-EAS91_1_306UPAAXX:6:1:1727:1530
+TCAACGCAGCGACGAGCACGAGAGCGGTCAGTAGCA
+>HWI-EAS91_1_306UPAAXX:6:1:519:657
+TGAACAGCATCGGACTCAGATAGTAATCCACGCTCT
+>HWI-EAS91_1_306UPAAXX:6:1:939:967
+ATACCGTCAAGGACTGTGTGACTATTGACGTCCTTC
+>HWI-EAS91_1_306UPAAXX:6:1:299:1060
+TATAACTGGTAGCTTTAAGCGGCTCACCTTTAGCAT
+>HWI-EAS91_1_306UPAAXX:6:1:438:665
+TAATTCGTAAACAAGCAGTAGTAATTCCTGCTTTAT
+>HWI-EAS91_1_306UPAAXX:6:1:1303:1971
+AGCATTGTGCCAATTCATCCATTAACTTCTCAGTAA
+>HWI-EAS91_1_306UPAAXX:6:1:214:1264
+TCAGCACCAACAGAAACAACCTGATTAGCGGCGTTG
+>HWI-EAS91_1_306UPAAXX:6:1:1454:1423
+AACGGAAAACATCCTTCATAGAAATTTCACGCGGCG
+>HWI-EAS91_1_306UPAAXX:6:1:1633:340
+TTCCATAATAGACGCAACGCGAGCAGTAGACTCCTT
+>HWI-EAS91_1_306UPAAXX:6:1:671:1196
+ATACGAAAAGACAGAATCTCTTCCAAGAGCTTGATG
diff -r 8d149264b777 -r efdb6fb5de34 test-data/lastz_wrapper_out1.sam
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/lastz_wrapper_out1.sam Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,494 @@
+@HD VN:1.0 SO:unsorted
+@SQ SN:phiX LN:5386
+HWI-EAS91_1_306UPAAXX 16 phiX 4295 255 1H35M * 0 0 CCCCCAACTTGATATTAATAACACTATAGACCACC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3522 255 36M * 0 0 ATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 229 255 36M * 0 0 GATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2071 255 36M * 0 0 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1067 255 1H35M * 0 0 GGTCAGATTGGTCGTCTTATTACCATTTCAACTAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1788 255 36M * 0 0 GTCGTGTTCAACAGACCTATAAACATTCTGTGCCGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1193 255 36M * 0 0 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4563 255 33M3H * 0 0 GGTTGGTTTATCGTTTTTGACACTCTCACGTTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2668 255 36M * 0 0 GTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4248 255 36M * 0 0 GTTACTGAGAAGTTAATGGATGAATTGGCACAATGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2863 255 36M * 0 0 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2557 255 36M * 0 0 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2511 255 34M2H * 0 0 GTCAACGTTATATTTTGATAGTTTGACGGTTAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 5152 255 36M * 0 0 GGATGAAAATGCTCACAATGACAAATCTGTCCACGG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1590 255 36M * 0 0 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4884 255 36M * 0 0 GGTTACAGTATGCCCATCGCAGTTCGCTACACGCAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 5052 255 36M * 0 0 GCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4909 255 36M * 0 0 GCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2863 255 36M * 0 0 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4173 255 30M6H * 0 0 GTTGAGTTCGATAATGGTGATATGTATGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1701 255 36M * 0 0 GTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1683 255 36M * 0 0 CTTATGACGCTGACAACCGTCCTTTACTTGTCATGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3126 255 1H35M * 0 0 GAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1665 255 36M * 0 0 CATTTGGAGGTAAAACCTCTTATGACGCTGACAACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3213 255 36M * 0 0 GTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3420 255 36M * 0 0 GAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 513 255 36M * 0 0 GTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2882 255 3H33M * 0 0 AGGTTATTAAAGAGATTATTTGTCTCCAGCCAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4471 255 36M * 0 0 GTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1229 255 36M * 0 0 GTTTATGGTGAACAGTGGATTAAGTTCATGAAGGAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 615 255 36M * 0 0 GAGTTTATTGCTGCCGTCATTGCTTATTATGTTCAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 257 255 36M * 0 0 GCACGTTCGTCAAGGACTGGTTTAGATATGAGTCAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2381 255 36M * 0 0 TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4098 255 36M * 0 0 ATGCTTGGCTTCCATAAGCAGATGGATAACCGCATC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5099 255 36M * 0 0 GCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4254 255 36M * 0 0 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3408 255 36M * 0 0 GACAATCAGAAAGAGATTGCCGAGATGCAAAATGAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 4043 255 36M * 0 0 GGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4560 255 36M * 0 0 GATGGTTGGTTTATCGTTTTTGACACTCTCACGTTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1888 255 36M * 0 0 GACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3434 255 1H35M * 0 0 GCAAAATGAGACTCAAAAAGAGATTGCTGGCATTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4539 255 36M * 0 0 GCAATGCGACAGGCTCATGCTGATGGTTGGTTTATC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1828 255 36M * 0 0 CTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3708 255 36M * 0 0 GACTTAGTTCATCAGCAAACGCAGAATCAGCGGTAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3326 255 36M * 0 0 GCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4176 255 36M * 0 0 GAGTTCGATAATGGTGATATGTATGTTGACGGCCAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 22 255 36M * 0 0 GCAGAAGTTAACACTTTCGGATATTTCTGATGAGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2557 255 36M * 0 0 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3277 255 36M * 0 0 ATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3592 255 36M * 0 0 AGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 358 255 35M1H * 0 0 GATGCTGTTCAACCACTAATAGGTAAGAAATCATG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1775 255 36M * 0 0 GGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3504 255 36M * 0 0 GTATATGCACAAAATGAGATGCTTGCTTATCAACAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1554 255 36M * 0 0 CGACTTCTACCACATCTATTGACATTATGGGTCTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1002 255 36M * 0 0 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3626 255 36M * 0 0 GCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3572 255 36M * 0 0 GGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1265 255 36M * 0 0 GGTGTTAATGCCACTCCTCTCCCGACTGTTAACACT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1332 255 36M * 0 0 GCACGATTAACCCTGATACCAATAAAATCCCTAAGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4254 255 36M * 0 0 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4170 255 36M * 0 0 GGCGTTGAGTTCGATAATGGTGATATGTATGTTGAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2812 255 6H30M * 0 0 GTTTATGTTGGTTTCATGGTTTGGTCTAAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3119 255 36M * 0 0 CCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1670 255 36M * 0 0 GGAGGTAAAACCTCTTATGACGCTGACAACCGTCCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 640 255 36M * 0 0 ATTATGTTCATCCCGTCAACATTCAAACGGCCTGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2750 255 35M1H * 0 0 GTTATTATACCGTCAAGGACTGTGTGACTATTGAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4606 255 36M * 0 0 GATTAGAGGCGTTTTATGATAATCCCAATGCTTTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3573 255 36M * 0 0 GAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5105 255 36M * 0 0 GCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1 255 15H21M * 0 0 GAGTTTTATCGCTTCCATGAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1674 255 36M * 0 0 GTAAAACCTCTTATGACGCTGACAACCGTCCTTTAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4095 255 36M * 0 0 CCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4551 255 36M * 0 0 GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3284 255 36M * 0 0 TGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2938 255 20M16H * 0 0 GTGCTATTGCTGGCGGTATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4005 255 36M * 0 0 GAATGTCACGCTGATTATTTTGACTTTGAGCGTATC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2479 255 36M * 0 0 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1082 255 36M * 0 0 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3045 255 1H35M * 0 0 GCTACCGATAACAATACTGTAGGCATGGGTGATGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1115 255 36M * 0 0 GGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 636 255 33M3H * 0 0 GCTTATTATGTTCATCCCGTCAACATTCAAACG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1139 255 34M2H * 0 0 GTTGGCGCTCTCCGTCTTTCTCCATTTCGTCGTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 852 255 36M * 0 0 CTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5272 255 36M * 0 0 GATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4330 255 36M * 0 0 GCCCCGAAGGGGACNANAAATGGTTTTTAGAGAACG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4891 255 36M * 0 0 GTATGCCCATCGCAGTTCGCTACACGCAGGACGCTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4785 255 2H34M * 0 0 TTTATGCGGACACTTCCTACAGGTAGCGTTGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3619 255 36M * 0 0 GCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4455 255 32M4H * 0 0 GGTATTAAGGATGAGTGTTCAAGATTGCTGGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 632 255 36M * 0 0 CATTGCTTATTATGTTCATCCCGTCAACATTCAAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2964 255 35M1H * 0 0 GCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGG *
+HWI-EAS91_1_306UPAAXX 16 phiX 2763 255 36M * 0 0 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2766 255 36M * 0 0 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1719 255 36M * 0 0 GCTCTAATCTCTGGGCATCTGGCTATGATGTTGATG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3100 255 36M * 0 0 AAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 598 255 29M7H * 0 0 GCTTTCCTGCTCCTGTTGAGTTTATTGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4126 255 36M * 0 0 ACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4026 255 36M * 0 0 GACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2621 255 36M * 0 0 GTGCTGATATTGCTTTTGATGCCGACCCTAAATTTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2749 255 36M * 0 0 GGTTATTATACCGTCAAGGACTGTGTGACTATTGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 379 255 36M * 0 0 GGTAAGAAATCATGAGTCAAGTTACTGAACAATCCG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2160 255 36M * 0 0 GCCACCATGATTATGACCAGTGTTTCCAGTCCGTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2873 255 36M * 0 0 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1508 255 1H35M * 0 0 TGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3863 255 36M * 0 0 TTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5187 255 36M * 0 0 GAGTGCTTAATCCAACTTACCAAGCTGGGTTACGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4196 255 36M * 0 0 GTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCG *
+HWI-EAS91_1_306UPAAXX 16 phiX 635 255 36M * 0 0 TGCTTATTATGTTCATCCCGTCAACATTCAAACGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1294 255 1H35M * 0 0 TAACACTACTGGTTATATTGACCATGCCGCTTTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5157 255 36M * 0 0 AAAATGCTCACAATGACAAATCTGTCCACGGAGTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 772 255 36M * 0 0 GCGCAGGAAACACTGACGTTCTTACTGACGCAGAAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1224 255 36M * 0 0 GTCACGTTTATGGTGAACAGTGGATTAAGTTCATGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1544 255 3H33M * 0 0 CGCCAAATGACGACTTCTACCACATCTATTGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4840 255 36M * 0 0 GCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 204 255 35M1H * 0 0 GATTCTGTCAAAAACTGACGCGTTGGATGAGGAGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3263 255 7H29M * 0 0 TGATAAAGGAAAGGATACTCGTGATTATC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2481 255 36M * 0 0 ACCTGTTTTAAAGACACCTAAAGCTACATCGTCAAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 332 255 36M * 0 0 AAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3978 255 36M * 0 0 TTTATGGTTCGTTCTTATTACCCTTCTGAATGTCAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4865 255 36M * 0 0 GCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3271 255 36M * 0 0 GAAAGGATACTCGTGATTATCTTGCTGCTGCATTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4174 255 36M * 0 0 TTGAGTTCGATAATGGTGATATGTATGTTGACGGCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3810 255 30M6H * 0 0 GTGGTTGATATTTTTCATGGTATTGATAAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4635 255 28M8H * 0 0 GCTTTGCGTGACTATTTTCGTGATATTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2738 255 36M * 0 0 GCCATGATGGTGGTTATTATACCGTCAAGGACTGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2192 255 22M14H * 0 0 GTTCAGTTGTTGCATTGGAATA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2703 255 1H35M * 0 0 CCCGACTGCCTATGATGTTTATCCTTTGAATGGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2943 255 36M * 0 0 ATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3861 255 36M * 0 0 AATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3093 255 36M * 0 0 GCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3151 255 36M * 0 0 GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1193 255 36M * 0 0 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 157 255 36M * 0 0 CGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4792 255 36M * 0 0 GGACACTTCCTACAGGTAGCGTTGACCCTAATTTTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3849 255 36M * 0 0 GATACTTGGAACAATTTCTGGAAAGACGGTAAAGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2743 255 1H35M * 0 0 GATGGTGGTTATTATACCGTCAAGGACTGTGTGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3015 255 36M * 0 0 GCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1091 255 36M * 0 0 ATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 798 255 1H35M * 0 0 GACGCAGAAGAAAACGTGCGTCAAAAATTACGTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4866 255 36M * 0 0 CAAAATACGTGGCCTTATGGTTACAGTATGCCCATC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4404 255 36M * 0 0 GAACGCCCTCTTAAGGATATTCGCGATGAGTATAAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1655 255 36M * 0 0 GTTATTTCTTCATTTGGAGGTAAAACCTCTTATGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5162 255 36M * 0 0 GCTCACAATGACAAATCTGTCCACGGAGTGCTTAAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1249 255 1H35M * 0 0 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3261 255 36M * 0 0 GCTGATAAAGGAAAGGATACTCGTGATTATCTTGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3096 255 36M * 0 0 ATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2812 255 1H35M * 0 0 GTTTATGTTGGTTTCATGGTTTGGTCTAACTTTAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 81 255 30M6H * 0 0 GAATTACTACTGCTTGTTTACGAATTAAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3459 255 36M * 0 0 GCTGGCATTCAGTCGGCGACTTCACGCCAGAATACG *
+HWI-EAS91_1_306UPAAXX 0 phiX 789 255 35M1H * 0 0 GTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3699 255 36M * 0 0 GCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2641 255 31M5H * 0 0 GCCGACCCTAAATTTTTTGCCTGTTTGGTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 305 255 36M * 0 0 GTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3066 255 35M1H * 0 0 GGCATGGGTGATGCTGGTATTAAATCTGCCATTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4428 255 36M * 0 0 GATGAGTATAATTACCCCAAAAAGAAAGGTATTAAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1461 255 36M * 0 0 AAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4000 255 36M * 0 0 CTTCTGAATGTCACGCTGATTATTTTGACTTTGAGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 220 255 36M * 0 0 GACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3194 255 33M3H * 0 0 GCAGGCTGGCACTTCTGCCGTTTCTGATAAGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1266 255 32M4H * 0 0 GTGTTAATGCCACTCCTCTCCCGACTGTTAAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4596 255 36M * 0 0 GCTGACGACCGATTAGAGGCGTTTTATGATAATCCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1172 255 1H35M * 0 0 GGCCTTGCTATTGACTCTACTGTAGACATTTTTAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 636 255 36M * 0 0 GCTTATTATGTTCATCCCGTCAACATTCAAACGGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2873 255 36M * 0 0 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1014 255 36M * 0 0 AAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2689 255 36M * 0 0 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2148 255 36M * 0 0 GCGTACTTATTCGCCACCATGATTATTACCAGTGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 5191 255 35M1H * 0 0 GCTTAATCCAACTTACCAAGCTGGGTTACGACGCG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1590 255 36M * 0 0 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 571 255 35M1H * 0 0 GTACGCTGTACTTTGTGGGATACCCTCGCTTTCCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 242 255 36M * 0 0 GGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 338 255 36M * 0 0 GTGGATTACTATCTGAGTCCGATGCTGTTCAACCAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1112 255 30M6H * 0 0 GCTGGCGACTCCTTCGAGATGGACGCCGTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1254 255 2H34M * 0 0 TCATGAAGGATGGTGTTAATGCCACTCCTCTCCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3731 255 18M18H * 0 0 GAATCAGCGGTATGGCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2970 255 36M * 0 0 GCTGGTGGCGCCATGTCTAAATTTTTTGGAGGCGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 5151 255 36M * 0 0 GGGATGAAAATGCTCACAATGACAAATCTGTCCACG *
+HWI-EAS91_1_306UPAAXX 16 phiX 348 255 36M * 0 0 ATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4888 255 1H35M * 0 0 ACAGTATGCCCATCGCAGTTCGCTACACGCAGGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3972 255 33M3H * 0 0 GGCTTTTTTATGGTTCGTTCTTATTACCCTTCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 5033 255 36M * 0 0 GTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1552 255 1H35M * 0 0 GACGACTTCTACCACATCTATTGACATTATGGGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1764 255 36M * 0 0 AAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1529 255 36M * 0 0 GAGACTGAGCTTTCTCGCCAAATGACGACTTCTACC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4950 255 36M * 0 0 CCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4484 255 34M2H * 0 0 GGAGGCCTCCACTATGAAATCGCGTAGAGGCTTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4767 255 1H35M * 0 0 CATTTCCATGCGGTGCATTTTATGCGGACACTTCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 177 255 36M * 0 0 CTTTGCGACCTTTCGCCATCAACTAACGATTCTGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2577 255 36M * 0 0 GATGGATACATCTGTCAACGCCGCTAATCAGGTTGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 156 255 36M * 0 0 GCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCG *
+HWI-EAS91_1_306UPAAXX 0 phiX 227 255 36M * 0 0 TGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 574 255 36M * 0 0 CGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3021 255 36M * 0 0 GGTGGCATTCAAGGTGATGTGCTTGCTACCGATAAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3731 255 36M * 0 0 GAATCAGCGGTATGGCTCTTCTCATATTGGCGCTAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2436 255 36M * 0 0 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2710 255 36M * 0 0 GCCTATGATGTTTATCCTTTGAATGGTCGCCATGAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4228 255 28M8H * 0 0 TTCGTGATGAGTTTGTATCTGTTACTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4606 255 34M2H * 0 0 GATTAGAGGCGTTTTATGATAATCCCAATGCTTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2766 255 36M * 0 0 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 582 255 34M2H * 0 0 TTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 664 255 10H26M * 0 0 AAACGGCCTGTCTCATCATGGAAGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1144 255 36M * 0 0 CGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1514 255 36M * 0 0 GCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4036 255 26M10H * 0 0 GTATCGAGGCTCTTAAACCTGCTATT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1657 255 36M * 0 0 TATTTCTTCATTTGGAGGTAAAACCTCTTATGACGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2071 255 36M * 0 0 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1626 255 36M * 0 0 GTGATTACTTCATGCAGCGTTACCGTGATGTTATTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3250 255 36M * 0 0 GCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1982 255 36M * 0 0 GAAATTTCTATGAATGATGTTTTCCGTTCTGGTGAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2217 255 36M * 0 0 AGGTTAAATTTAATGTGACCGTTTATCGCAATCTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3486 255 7H29M * 0 0 CAGAATACGAAAGACCAGGTATATGCACA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1690 255 36M * 0 0 CGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3252 255 7H29M * 0 0 AAGTCTGCCGATGATAAAGGAAAGGATAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1082 255 36M * 0 0 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4282 255 36M * 0 0 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4136 255 34M2H * 0 0 GCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4414 255 36M * 0 0 TTAAGGATATTCGCGATGAGTATAATTACCCCAAAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3988 255 36M * 0 0 GTTCTTATTACCCTTCTGAATGTCACGCTGATTATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4203 255 36M * 0 0 GACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 4098 255 36M * 0 0 ATGCTTGGCTTCAATAAGCAGATGGATAACCGCATC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4307 255 35M1H * 0 0 TATTAATAACACTATAGACCACCGCCCCGAAGGGG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1521 255 35M1H * 0 0 TTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACG *
+HWI-EAS91_1_306UPAAXX 16 phiX 945 255 36M * 0 0 TAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1575 255 36M * 0 0 ACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2689 255 36M * 0 0 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2099 255 36M * 0 0 GAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 524 255 36M * 0 0 TACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1252 255 36M * 0 0 GTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4916 255 33M3H * 0 0 GCAGGACGCTTTTTCACGTTCTGGTTGGTTGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3828 255 29M7H * 0 0 GGTATTGATAAAGCTGTTGCCGATACTTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3756 255 36M * 0 0 ATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 664 255 10H26M * 0 0 AAACGGCCTGTCTCATCATGGAAGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1116 255 36M * 0 0 GCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3099 255 36M * 0 0 CAAGGCTCTAATGTTCCTAACCCTGATGGGGCCGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3082 255 36M * 0 0 GTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4221 255 27M9H * 0 0 TCTGACGTTCGTGATGAGTTTGTATCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 613 255 36M * 0 0 TTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4936 255 36M * 0 0 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 289 255 36M * 0 0 TCACATTTTGTTCATGGTAGAGATTCTCTTGTTGAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4690 255 36M * 0 0 GCAAGGCTAATGATTCACACGCCGACTGCTATCAGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2547 255 31M5H * 0 0 TGGTAATGGTGGTTTTCTTCATTTCATTCAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3520 255 36M * 0 0 AGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3858 255 36M * 0 0 AACAATTTCTGGAAAGACGGTAAAGCTGATGGTATT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3344 255 36M * 0 0 TTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4672 255 27M9H * 0 0 TTCTTGCTGCCGAGGGTCGCAAGGCTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1346 255 31M5H * 0 0 GATACCAATAAAATCCCTAAGCATTTGTTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1800 255 36M * 0 0 AGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5077 255 36M * 0 0 GGAACAACTCACTAAAAACCAAGCTGTCGCTACTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2763 255 1H35M * 0 0 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4282 255 36M * 0 0 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4656 255 27M9H * 0 0 GATATTGGTCGTATGGTTCTTGCTGCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4935 255 18M18H * 0 0 TCTGGTTGGTTGTGGCCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1203 255 33M3H * 0 0 TTACTTTTTATGTCCCTCATCGTCACGTTTATG *
+HWI-EAS91_1_306UPAAXX 16 phiX 5107 255 36M * 0 0 TACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5168 255 1H35M * 0 0 AATGACAAATCTGTCCACGGAGTGCTTAATCCAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2956 255 36M * 0 0 TTGCTTCTGCTCTTGCTTGTGGCGCCATGTCTAAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 624 255 30M6H * 0 0 GCTGCCGTCATTGCTTATTATGTTCATCCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1877 255 1H35M * 0 0 CCGCCTACTGCGACTAAAGAGATTCAGTACCTTAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1214 255 36M * 0 0 GTCCCTCATCGTCACGTTTATGGTGAACAGTGGATT *
+HWI-EAS91_1_306UPAAXX 0 phiX 558 255 27M9H * 0 0 GCTTGCGTTTATGGTACGCTGGACTTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3629 255 36M * 0 0 TACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2254 255 35M1H * 0 0 GACCACTCGCGATTCAATCATGACTTCGTGATAAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2479 255 36M * 0 0 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3001 255 36M * 0 0 GCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4667 255 35M1H * 0 0 TATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3464 255 36M * 0 0 CATTCAGTCGGCGACTTCACGCCAGAATACGAAAGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4911 255 35M1H * 0 0 TACACGCAGGACGCTTTTTCACGTTCTGGTTGGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4592 255 29M7H * 0 0 GTTGGCTGACGACCGATTAGAGGCGTTTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2222 255 36M * 0 0 AAATTTAATGTGAACGTTTATCGCAATCTGCCGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 646 255 35M1H * 0 0 TTCATCCCGTCAACATTCAAACGGCCTGTCTCATC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1364 255 36M * 0 0 AAGCATTTGTTTCAGGGTTATTTGAATATCTATAAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1613 255 1H35M * 0 0 ACTGACCAAGAACGTGATTACTTCATGCAGCGTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1045 255 35M1H * 0 0 TTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2885 255 33M3H * 0 0 TTATTAAAGAGATTATTTTTCTCCAGCCACTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1588 255 36M * 0 0 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 339 255 36M * 0 0 TGGATTACTATCTGAGTCCGATGCTGTTCAACCACT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4937 255 36M * 0 0 TGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4344 255 2H34M * 0 0 GAAAAATGGTTTTTAGAGAACGAGAAGACGGTTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3674 255 36M * 0 0 CAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4945 255 36M * 0 0 TGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1946 255 36M * 0 0 GGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2662 255 32M4H * 0 0 TGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3313 255 36M * 0 0 TTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2827 255 3H33M * 0 0 ATGGTTTGGTCAAACTTTACCGCTACTAAATGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 727 255 36M * 0 0 GTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 555 255 36M * 0 0 GAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 485 255 36M * 0 0 TGATTTCGATTTTCTGACGAGTAACAAAGTTTGGAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 318 255 36M * 0 0 TGTTGACATTTTAAAAGAGCGTGGATTACTATCTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 910 255 36M * 0 0 TAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4936 255 36M * 0 0 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5005 255 36M * 0 0 TCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1379 255 33M3H * 0 0 GGTTATTTGAATATCTATAACAACTATTTTAAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3168 255 30M6H * 0 0 GGTAAAGGACTTCTTGAAGGTACGTTGCAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2738 255 33M3H * 0 0 GCCATGATGGTGGTTATTATACCGTCAAGGACT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4099 255 36M * 0 0 TGCTTGGCTTCCATAAGCAGATGGATAACCGCATCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2574 255 36M * 0 0 TCAGATGGATACATCTGTCAACGCCGCTAATCAGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2453 255 36M * 0 0 TCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 5179 255 36M * 0 0 TGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3778 255 30M6H * 0 0 TTTCTAATGTCGTCACTGATGCTGCTTCTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1843 255 36M * 0 0 TGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1082 255 36M * 0 0 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1728 255 36M * 0 0 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4637 255 36M * 0 0 TTTGCGTGACTATTTTCGTGATATTGTTCGTATGGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2225 255 36M * 0 0 TTTAATGTGACCGTTTATCGCAATCTGCCGACCACT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3368 255 36M * 0 0 CGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3311 255 36M * 0 0 GCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5039 255 36M * 0 0 TATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2059 255 36M * 0 0 TTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 388 255 36M * 0 0 TCATGAGTCAAGTTACTGAACAATCCGTACGTTTCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2754 255 36M * 0 0 TTATACCGTCAAGGACTGTGTGACTATTGACGTCCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2128 255 36M * 0 0 TTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 154 255 36M * 0 0 TTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3617 255 36M * 0 0 GCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2728 255 36M * 0 0 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2775 255 36M * 0 0 GACTATTGACGTCCTTCCCCGTACGCCGGGCAATAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4217 255 36M * 0 0 TGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4619 255 35M1H * 0 0 TTATGATAATCCCAATGCTTTGCGTGACTATTTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 411 255 35M1H * 0 0 TCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2730 255 35M1H * 0 0 GAATGGTCGCCATGATGGTGGTTATTATACCGTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 521 255 35M1H * 0 0 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4260 255 36M * 0 0 TTAATGGATGAATTGGCACAATGCTACAATGTGCTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1662 255 36M * 0 0 CTTCATTTGGAGGTAAAACCTCTTATGACGCTGACA *
+HWI-EAS91_1_306UPAAXX 16 phiX 533 255 36M * 0 0 CTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 195 255 35M1H * 0 0 TCAACTAACGATTCTGTCAAAAACTGACGCGTTGG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2239 255 36M * 0 0 TTATCGCAATCTGCCGACCACTCGCGATTCAATCAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1313 255 33M3H * 0 0 GACCATGCCGCTTTTCTTGGCACGATTAACCCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1545 255 36M * 0 0 GCCAAATGACGACTTCTACCACATCTATTGACATTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 557 255 36M * 0 0 GGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1249 255 36M * 0 0 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4174 255 33M3H * 0 0 TTGAGTTCGATAATGGTGATATGTATGTTGACG *
+HWI-EAS91_1_306UPAAXX 0 phiX 614 255 35M1H * 0 0 TGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 206 255 36M * 0 0 TTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4981 255 36M * 0 0 CTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1702 255 30M6H * 0 0 TCCTTTACTTGTCATGCGCTCTAATCTCTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2321 255 35M1H * 0 0 TAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4184 255 35M1H * 0 0 TAATGGTGATATGTATGTTTACGTCCATAAGGCTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4088 255 35M1H * 0 0 TCAATCCCCAATGCTTGGCTTCCATAAGCAGATGG *
+HWI-EAS91_1_306UPAAXX 0 phiX 900 255 36M * 0 0 TGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1155 255 36M * 0 0 TTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3587 255 36M * 0 0 TTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3787 255 36M * 0 0 TCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3834 255 35M1H * 0 0 GATAAAGCTGTTGCCGATACTTGGAACAATTTCTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 989 255 36M * 0 0 TGAGGATAAATTATGTCTAATATTCAAACTGGCGCC *
+HWI-EAS91_1_306UPAAXX 0 phiX 5358 255 29M7H * 0 0 ATAAAAATGATTGGCGTATCCAACCTGCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3712 255 36M * 0 0 TAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1207 255 36M * 0 0 TTTTTATGTCCCTCATCGTCACGTTTATGGTGAACA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4300 255 15H21M * 0 0 AACTTGATATTAATAACACTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2116 255 36M * 0 0 TCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 660 255 36M * 0 0 ATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1807 255 31M5H * 0 0 TAAACATTCTGTGCCGCGTTTCTTTGTTCCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1536 255 36M * 0 0 AGCTTTCTCGCCAAATGACGACTTCTACCACATCTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2112 255 1H35M * 0 0 TCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2816 255 36M * 0 0 ATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 5176 255 36M * 0 0 ATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3472 255 36M * 0 0 CGGCGACTTCACGCCAGAATACGAAAGACCAGGTAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1948 255 36M * 0 0 CGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2212 255 35M1H * 0 0 TAGTCAGGTTAAATTTAATGTGACCGTTTATCGCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3817 255 35M1H * 0 0 ATATTTTTCATGGTATTGATAAAGCTGTTGCCGAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3563 255 36M * 0 0 GTCTATTATGGAAAACACCAATCTTTCCAAGCAACA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4198 255 1H35M * 0 0 ATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2907 255 1H35M * 0 0 CCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2843 255 35M1H * 0 0 TTACCGCTACTAAATGCCGCGGATTGGTTTCGCTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4374 255 31M5H * 0 0 GTTACGCAGTTTTGCCGCAAGCTGGCTGCTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 424 255 2H24M10H * 0 0 AGACCGCCTTGGCCTCTATTAAGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1940 255 1H35M * 0 0 ATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5073 255 36M * 0 0 GAATGGAACAACTCACTAAAAACCAAGCTGTCGCTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4434 255 36M * 0 0 TATAATTACCCCAAAAAGAAAGGTATTAAGGATGAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1274 255 1H35M * 0 0 GCCACTCCTCTCCCGACTGTTAACACTACTGGTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4440 255 36M * 0 0 TACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3920 255 36M * 0 0 GTCAGGATTGACACCCTCCCAATTGTATGTTTTCAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4587 255 1H35M * 0 0 CTCACGTTGGCTGACGACCGATTAGAGGCGTTTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3730 255 24M12H * 0 0 AGAATCAGCGGTATGGCTCTTCTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1707 255 36M * 0 0 TACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1582 255 36M * 0 0 GGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1588 255 36M * 0 0 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1180 255 34M2H * 0 0 TATTGACTCTACTGTAGACATTTTTACTTTTTAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2698 255 36M * 0 0 ACCCTCCCGACTGCCTATGATGTTTATCCTTTGAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3167 255 36M * 0 0 TGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGG *
+HWI-EAS91_1_306UPAAXX 16 phiX 2498 255 11H25M * 0 0 CTAAAGCTACATCGTCAACGTTATA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2289 255 36M * 0 0 AGATTGAGTGTGAGGTTATAACGCCGAAGCGGTAAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 441 255 36M * 0 0 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1012 255 36M * 0 0 TCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 161 255 36M * 0 0 GCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1165 255 1H35M * 0 0 GCGTCGTGGCCTTGCTATTGACTCTACTGTAGACA *
+HWI-EAS91_1_306UPAAXX 16 phiX 5015 255 5H31M * 0 0 TAAATACGTTAACAAAAAGTCAGATATGGAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2286 255 36M * 0 0 AAAAGATTGAGTGTGAGGTTATAACGCCGAAGCGGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 801 255 32M4H * 0 0 GCAGAAGAAAACGTGCGTCAAAAATTACGTGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 1587 255 36M * 0 0 TGCAAGCTGCTTATGCTAATTTGCATACTGACCAAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4578 255 36M * 0 0 TTTGACACTCTCACGTTGGCTGACGACCGATTAGAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3570 255 36M * 0 0 ATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 496 255 36M * 0 0 TTCTGACGAGTAACAAAGTTTGGATTGCTACTGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 441 255 36M * 0 0 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4754 255 30M6H * 0 0 TAATGGCCGTCTTCATTTCCATGCGGTGCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4235 255 35M1H * 0 0 TGAGTTTGTATCTGTTACTGAGAAGTTAATGGATG *
+HWI-EAS91_1_306UPAAXX 16 phiX 2293 255 36M * 0 0 TGAGTGTGAGGTTATAACGCCGAAGCGGTAAAAATT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1579 255 1H35M * 0 0 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3332 255 31M5H * 0 0 TGGTGCTGATGCTTCCTCTGCTGGTATGGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4132 255 36M * 0 0 TCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4775 255 36M * 0 0 TGCGGTGCATTTTATGCGGACACTTCCTACAGGTAG *
+HWI-EAS91_1_306UPAAXX 16 phiX 657 255 18H18M * 0 0 AACATTCAAACGGCCTGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1 255 4H32M * 0 0 GAGTTTTATCGCTTCCATGACGCAGAAGTTAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 54 255 36M * 0 0 AGTCGAAAAATTATCTTGATAAAGCAGGAATTACTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 680 255 1H35M * 0 0 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 231 255 36M * 0 0 TGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4192 255 36M * 0 0 ATATGTATGTTGACGGCCATAAGGCTGCTTCTGACG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1580 255 36M * 0 0 ATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACT *
+HWI-EAS91_1_306UPAAXX 16 phiX 611 255 36M * 0 0 TGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4532 255 1H35M * 0 0 GATGAATGCAATGCGACAGGCTCATGCTGATGGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 638 255 30M6H * 0 0 TTATTATGTTCATCCCGTCAACATTCAAAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2847 255 4H28M4H * 0 0 CGCTACTAAATTCCGCGGATTGGTTTCG *
+HWI-EAS91_1_306UPAAXX 16 phiX 1957 255 36M * 0 0 TTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2728 255 36M * 0 0 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 3979 255 36M * 0 0 TTATGGTTCGTTCTTATTACCCTTCTGAATGTCACG *
+HWI-EAS91_1_306UPAAXX 16 phiX 540 255 1H35M * 0 0 GCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 1852 255 36M * 0 0 GTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4684 255 36M * 0 0 AGGGTCGCAAGGCTAATGATTCACACGCCGACTGCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3690 255 32M4H * 0 0 AAGGTTAGTGCTGAGGTTGACTTAGTTCATCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 584 255 36M * 0 0 TGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3852 255 1H35M * 0 0 ACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2857 255 35M1H * 0 0 TGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3782 255 26M10H * 0 0 TAATGTCGTCACTGATGCTGCTTCTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 1728 255 36M * 0 0 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC *
+HWI-EAS91_1_306UPAAXX 0 phiX 4658 255 35M1H * 0 0 TATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1721 255 36M * 0 0 TCTAATCTCTGGGCATCTGGCTATGATGTTGATGGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1954 255 36M * 0 0 TGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTC *
+HWI-EAS91_1_306UPAAXX 0 phiX 962 255 36M * 0 0 TAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 2175 255 36M * 0 0 ACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2442 255 36M * 0 0 TAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 5126 255 1H35M * 0 0 CAGAATCAGAATGAGCCGCAACTTCGGGATGAAAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 5206 255 36M * 0 0 CCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2879 255 36M * 0 0 ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 2004 255 36M * 0 0 TCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 2154 255 36M * 0 0 TTATTCGCCACCATGATTATGACCAGTGTTTCCAGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1093 255 35M1H * 0 0 TTCAACTACTCCGGTTATCGCTGGCGACTCCTTCG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3127 255 36M * 0 0 AGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3544 255 36M * 0 0 AGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2508 255 31M5H * 0 0 ATCGTCAACGTTATATTTTGATAGTTTGACG *
+HWI-EAS91_1_306UPAAXX 16 phiX 3098 255 12H24M * 0 0 TCAAGGCTCTAATGTCCCTAACCC *
+HWI-EAS91_1_306UPAAXX 16 phiX 3600 255 36M * 0 0 CAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1734 255 36M * 0 0 CATCTGGCTATGATGTTGATGGAACTGACCAAACGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2655 255 33M3H * 0 0 TTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 2934 255 36M * 0 0 TTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1522 255 36M * 0 0 TCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGAC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4063 255 36M * 0 0 AGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3395 255 36M * 0 0 TAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 409 255 36M * 0 0 AATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1867 255 36M * 0 0 TGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 3780 255 33M3H * 0 0 TCTAATGTCGTCACTGATGCTGCTTCTGGTGTG *
+HWI-EAS91_1_306UPAAXX 0 phiX 3982 255 36M * 0 0 TGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 2815 255 36M * 0 0 TATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 1242 255 36M * 0 0 AGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4659 255 1H35M * 0 0 ATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2436 255 36M * 0 0 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC *
+HWI-EAS91_1_306UPAAXX 0 phiX 527 255 35M1H * 0 0 TGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4817 255 36M * 0 0 CCCTAATTTGGGTCGTCGGGTACGCAATCGCCGCCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2100 255 36M * 0 0 AAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTG *
+HWI-EAS91_1_306UPAAXX 16 phiX 2762 255 36M * 0 0 TCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA *
+HWI-EAS91_1_306UPAAXX 0 phiX 4955 255 36M * 0 0 TGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 3761 255 36M * 0 0 CGCTACTGCAAAGGATATTTCTAATGTCGTCACTGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4499 255 36M * 0 0 GAAATCGCGTAGAGGCTTTACTATTCAGCGTTTGAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4039 255 36M * 0 0 TCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4788 255 36M * 0 0 ATGCGGACACTTCCTACAGGTAGCGTTGACCCTAAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 1002 255 36M * 0 0 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4381 255 36M * 0 0 AGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4256 255 36M * 0 0 GAAGTTAATGGATGAATTGGCACAATGCTACAATGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 10 255 1H35M * 0 0 CGCTTCCATGACGCAGAAGTTAACACTTTCGGATA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1579 255 36M * 0 0 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATAC *
+HWI-EAS91_1_306UPAAXX 0 phiX 989 255 30M6H * 0 0 TGAGGATAAATTATGTCTAATATTCAAACT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3862 255 36M * 0 0 ATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3278 255 36M * 0 0 TACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCT *
+HWI-EAS91_1_306UPAAXX 0 phiX 349 255 36M * 0 0 TCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAG *
+HWI-EAS91_1_306UPAAXX 0 phiX 4608 255 36M * 0 0 TTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGT *
+HWI-EAS91_1_306UPAAXX 0 phiX 3808 255 35M1H * 0 0 GTGTGGTTGATATTTTTCATGGTATTGATAAAGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 4753 255 31M5H * 0 0 CTAATGGCCGTCTTCATTTCCATGCGGTGCA *
+HWI-EAS91_1_306UPAAXX 16 phiX 286 255 36M * 0 0 GAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTT *
+HWI-EAS91_1_306UPAAXX 0 phiX 2850 255 36M * 0 0 TACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGT *
+HWI-EAS91_1_306UPAAXX 16 phiX 680 255 1H35M * 0 0 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4740 255 36M * 0 0 GAGTATGGTACAGCTAATGGCCGTCTTCATTTCCAT *
+HWI-EAS91_1_306UPAAXX 0 phiX 4655 255 25M11H * 0 0 TGATATTGGTCGTATGGTTCTTGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2467 255 1H35M * 0 0 CCAGCTTCTTCGGCACCTGTTTTACAGACACCTAA *
+HWI-EAS91_1_306UPAAXX 0 phiX 320 255 34M2H * 0 0 TTGACATTTTAAAAGAGCGTGGATTACTATCTGA *
+HWI-EAS91_1_306UPAAXX 0 phiX 1180 255 34M2H * 0 0 TATTGACTCTACTGTAGACATTTTTACTTTTTAT *
+HWI-EAS91_1_306UPAAXX 16 phiX 521 255 36M * 0 0 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 333 255 36M * 0 0 AGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCA *
+HWI-EAS91_1_306UPAAXX 0 phiX 2756 255 36M * 0 0 ATACCGTCAAGGACTGTGTGACTATTGACGTCCTTC *
+HWI-EAS91_1_306UPAAXX 16 phiX 4957 255 36M * 0 0 ATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATA *
+HWI-EAS91_1_306UPAAXX 16 phiX 72 255 36M * 0 0 ATAAAGCAGGAATTACTACTGCTTGTTTACGAATTA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4249 255 36M * 0 0 TTACTGAGAAGTTAATGGATGAATTGGCACAATGCT *
+HWI-EAS91_1_306UPAAXX 16 phiX 2592 255 36M * 0 0 CAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGA *
+HWI-EAS91_1_306UPAAXX 16 phiX 1974 255 36M * 0 0 CGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTT *
+HWI-EAS91_1_306UPAAXX 16 phiX 3540 255 36M * 0 0 AAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAA *
+HWI-EAS91_1_306UPAAXX 16 phiX 4130 255 36M * 0 0 CATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTAT *
diff -r 8d149264b777 -r efdb6fb5de34 test-data/lastz_wrapper_out3.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/lastz_wrapper_out3.tabular Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,26 @@
+phiX 1164 1165 + 5386 HWI-EAS91_1_306UPAAXX:6:1:112:1280 26 27 + 36 G T GTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTG GTTGGCGCTCTCCGTCTTTCTCCATTTCGTCGTG
+phiX 2490 2491 + 5386 HWI-EAS91_1_306UPAAXX:6:1:486:822 10 11 - 36 C A ACCTGTTTTACAGACACCTAAAGCTACATCGTCAAC ACCTGTTTTAAAGACACCTAAAGCTACATCGTCAAC
+phiX 2205 2206 + 5386 HWI-EAS91_1_306UPAAXX:6:1:217:737 14 15 + 36 G T GTTCAGTTGTTGCAGTGGAATA GTTCAGTTGTTGCATTGGAATA
+phiX 2173 2174 + 5386 HWI-EAS91_1_306UPAAXX:6:1:259:1389 26 27 + 36 G T GCGTACTTATTCGCCACCATGATTATGACCAGTGTT GCGTACTTATTCGCCACCATGATTATTACCAGTGTT
+phiX 578 579 + 5386 HWI-EAS91_1_306UPAAXX:6:1:317:1411 8 9 + 36 G T GTACGCTGGACTTTGTGGGATACCCTCGCTTTCCT GTACGCTGTACTTTGTGGGATACCCTCGCTTTCCT
+phiX 2992 2993 + 5386 HWI-EAS91_1_306UPAAXX:6:1:458:1629 23 24 + 36 G T GCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGT GCTGGTGGCGCCATGTCTAAATTTTTTGGAGGCGGT
+phiX 4783 4784 + 5386 HWI-EAS91_1_306UPAAXX:6:1:646:59 18 19 - 36 C T CATTTCCATGCGGTGCACTTTATGCGGACACTTCC CATTTCCATGCGGTGCATTTTATGCGGACACTTCC
+phiX 1649 1650 + 5386 HWI-EAS91_1_306UPAAXX:6:1:295:694 24 25 + 36 A G GTGATTACTTCATGCAGCGTTACCATGATGTTATTT GTGATTACTTCATGCAGCGTTACCGTGATGTTATTT
+phiX 1995 1996 + 5386 HWI-EAS91_1_306UPAAXX:6:1:590:331 14 15 + 36 G T GAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGAT GAAATTTCTATGAATGATGTTTTCCGTTCTGGTGAT
+phiX 3261 3262 + 5386 HWI-EAS91_1_306UPAAXX:6:1:221:1238 17 18 - 36 C A AAGTCTGCCGCTGATAAAGGAAAGGATAC AAGTCTGCCGATGATAAAGGAAAGGATAC
+phiX 4109 4110 + 5386 HWI-EAS91_1_306UPAAXX:6:1:478:252 12 13 - 36 C A ATGCTTGGCTTCCATAAGCAGATGGATAACCGCATC ATGCTTGGCTTCAATAAGCAGATGGATAACCGCATC
+phiX 3126 3127 + 5386 HWI-EAS91_1_306UPAAXX:6:1:589:96 28 29 - 36 A G CAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCC CAAGGCTCTAATGTTCCTAACCCTGATGGGGCCGCC
+phiX 2569 2570 + 5386 HWI-EAS91_1_306UPAAXX:6:1:1472:716 23 24 + 36 G T TGGTAATGGTGGTTTTCTTCATTGCATTCAG TGGTAATGGTGGTTTTCTTCATTTCATTCAG
+phiX 2972 2973 + 5386 HWI-EAS91_1_306UPAAXX:6:1:836:1204 17 18 + 36 G T TTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAAT TTGCTTCTGCTCTTGCTTGTGGCGCCATGTCTAAAT
+phiX 2234 2235 + 5386 HWI-EAS91_1_306UPAAXX:6:1:172:1412 13 14 - 36 C A AAATTTAATGTGACCGTTTATCGCAATCTGCCGACC AAATTTAATGTGAACGTTTATCGCAATCTGCCGACC
+phiX 2902 2903 + 5386 HWI-EAS91_1_306UPAAXX:6:1:540:1415 18 19 + 36 G T TTATTAAAGAGATTATTTGTCTCCAGCCACTTA TTATTAAAGAGATTATTTTTCTCCAGCCACTTA
+phiX 2837 2838 + 5386 HWI-EAS91_1_306UPAAXX:6:1:253:1162 14 15 - 36 T A ATGGTTTGGTCTAACTTTACCGCTACTAAATGC ATGGTTTGGTCAAACTTTACCGCTACTAAATGC
+phiX 4662 4663 + 5386 HWI-EAS91_1_306UPAAXX:6:1:828:754 26 27 + 36 G T TTTGCGTGACTATTTTCGTGATATTGGTCGTATGGT TTTGCGTGACTATTTTCGTGATATTGTTCGTATGGT
+phiX 4202 4203 + 5386 HWI-EAS91_1_306UPAAXX:6:1:891:1437 19 20 + 36 G T TAATGGTGATATGTATGTTGACGGCCATAAGGCTG TAATGGTGATATGTATGTTTACGTCCATAAGGCTG
+phiX 4206 4207 + 5386 HWI-EAS91_1_306UPAAXX:6:1:891:1437 23 24 + 36 G T TAATGGTGATATGTATGTTGACGGCCATAAGGCTG TAATGGTGATATGTATGTTTACGTCCATAAGGCTG
+phiX 430 431 + 5386 HWI-EAS91_1_306UPAAXX:6:1:203:667 9 10 - 36 T C AGACCGCTTTGGCCTCTATTAAGC AGACCGCCTTGGCCTCTATTAAGC
+phiX 4783 4784 + 5386 HWI-EAS91_1_306UPAAXX:6:1:1566:499 9 10 + 36 C T TGCGGTGCACTTTATGCGGACACTTCCTACAGGTAG TGCGGTGCATTTTATGCGGACACTTCCTACAGGTAG
+phiX 2857 2858 + 5386 HWI-EAS91_1_306UPAAXX:6:1:578:971 15 16 + 36 G T CGCTACTAAATGCCGCGGATTGGTTTCG CGCTACTAAATTCCGCGGATTGGTTTCG
+phiX 3112 3113 + 5386 HWI-EAS91_1_306UPAAXX:6:1:1721:1800 27 28 - 36 T C TCAAGGCTCTAATGTTCCTAACCC TCAAGGCTCTAATGTCCCTAACCC
+phiX 4825 4826 + 5386 HWI-EAS91_1_306UPAAXX:6:1:815:1640 9 10 - 36 T G CCCTAATTTTGGTCGTCGGGTACGCAATCGCCGCCA CCCTAATTTGGGTCGTCGGGTACGCAATCGCCGCCA
+phiX 4517 4518 + 5386 HWI-EAS91_1_306UPAAXX:6:1:1485:741 19 20 - 36 G A GAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGAT GAAATCGCGTAGAGGCTTTACTATTCAGCGTTTGAT
diff -r 8d149264b777 -r efdb6fb5de34 test-data/phiX.fa
--- a/test-data/phiX.fa Wed Nov 25 14:06:28 2009 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
->phiX
-GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTT
-GATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAA
-ATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTG
-TCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTA
-GATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATC
-TGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTT
-TCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTT
-CGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCT
-TGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCG
-TCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTAC
-GGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTA
-CGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAG
-TGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACT
-AAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC
-CCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCA
-TCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGAC
-TCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA
-CTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAA
-GGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTT
-GGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACA
-ACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGC
-TCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTT
-TCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC
-ATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAAC
-CTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTT
-GATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGC
-CGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGAC
-TAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTG
-TATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGT
-TTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGA
-AGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGAT
-TATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCGTTT
-ATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGAGTGTGAGGTTATAAC
-GCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGC
-TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGT
-TCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTA
-TATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTG
-TCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGC
-CTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTG
-AATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGC
-CGGGCAATAACGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGT
-TTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTG
-CTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAA
-AGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCT
-GGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTG
-GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGA
-TAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTAT
-CTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGG
-TTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
-GATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGAC
-CAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTA
-TGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCA
-AACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGAC
-TTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTT
-CTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGA
-TACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCG
-TCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTT
-CTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTAT
-TGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC
-ATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATG
-TTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGA
-ATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGG
-GACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCC
-CTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATT
-GCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGATGAATGCAATGCGACAG
-GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTT
-ATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCG
-CAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGC
-CGTCTTCATTTCCATGCGGTGCACTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTC
-GTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
-CGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAG
-CCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA
-TGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACT
-TCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTG
-TCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGC
-AGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACC
-TGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCA
-
diff -r 8d149264b777 -r efdb6fb5de34 test-data/phiX.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/phiX.fasta Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,79 @@
+>phiX
+GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTT
+GATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAA
+ATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTG
+TCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTA
+GATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATC
+TGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTT
+TCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTT
+CGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCT
+TGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCG
+TCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTAC
+GGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTA
+CGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAG
+TGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACT
+AAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC
+CCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCA
+TCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGAC
+TCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA
+CTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAA
+GGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTT
+GGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACA
+ACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGC
+TCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTT
+TCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC
+ATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAAC
+CTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTT
+GATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGC
+CGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGAC
+TAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTG
+TATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGT
+TTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGA
+AGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGAT
+TATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCGTTT
+ATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGAGTGTGAGGTTATAAC
+GCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGC
+TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGT
+TCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTA
+TATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTG
+TCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGC
+CTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTG
+AATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGC
+CGGGCAATAACGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGT
+TTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTG
+CTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAA
+AGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCT
+GGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTG
+GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGA
+TAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTAT
+CTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGG
+TTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
+GATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGAC
+CAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTA
+TGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCA
+AACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGAC
+TTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTT
+CTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGA
+TACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCG
+TCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTT
+CTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTAT
+TGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC
+ATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATG
+TTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGA
+ATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGG
+GACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCC
+CTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATT
+GCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGATGAATGCAATGCGACAG
+GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTT
+ATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCG
+CAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGC
+CGTCTTCATTTCCATGCGGTGCACTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTC
+GTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
+CGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAG
+CCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA
+TGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACT
+TCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTG
+TCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGC
+AGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACC
+TGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCA
+
diff -r 8d149264b777 -r efdb6fb5de34 tool-data/lastz_seqs.loc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/lastz_seqs.loc Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,2 @@
+#ref path
+hg19 /depot/data2/galaxy/hg19/seq/hg19.2bit
diff -r 8d149264b777 -r efdb6fb5de34 tool_conf.xml.sample
--- a/tool_conf.xml.sample Wed Nov 25 14:06:28 2009 -0500
+++ b/tool_conf.xml.sample Fri Nov 27 10:53:50 2009 -0500
@@ -187,7 +187,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="sr_mapping/bowtie_wrapper.xml" />
<tool file="sr_mapping/bwa_wrapper.xml" />
<tool file="metag_tools/megablast_wrapper.xml" />
diff -r 8d149264b777 -r efdb6fb5de34 tools/sr_mapping/bwa_wrapper.xml
--- a/tools/sr_mapping/bwa_wrapper.xml Wed Nov 25 14:06:28 2009 -0500
+++ b/tools/sr_mapping/bwa_wrapper.xml Fri Nov 27 10:53:50 2009 -0500
@@ -169,7 +169,7 @@
<test>
<param name="solidSolexa" value="solid" />
<param name="refGenomeSource" value="history" />
- <param name="ownFile" value="phiX.fa" />
+ <param name="ownFile" value="phiX.fasta" />
<param name="sPaired" value="single" />
<param name="input1" value="bwa_wrapper_in0.fastq" ftype="fastqsanger" />
<param name="source_select" value="pre_set" />
diff -r 8d149264b777 -r efdb6fb5de34 tools/sr_mapping/lastz_wrapper.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/sr_mapping/lastz_wrapper.py Fri Nov 27 10:53:50 2009 -0500
@@ -0,0 +1,133 @@
+#! /usr/bin/python
+
+"""
+ --lastzSeqsFileDir: Directory of local lastz_seqs.loc file
+"""
+import optparse, os, subprocess, shutil, sys, tempfile, threading
+from Queue import Queue
+
+from galaxy import eggs
+import pkg_resources
+pkg_resources.require( 'bx-python' )
+from bx.seq.twobit import *
+
+def stop_err( msg ):
+ sys.stderr.write( "%s\n" % msg )
+ sys.exit()
+
+class LastzJobRunner( object ):
+ """
+ Lastz job runner backed by a pool of "num_threads" worker threads. FIFO scheduling
+ """
+ def __init__( self, num_threads, commands ):
+ """Start the job runner with "num_threads" worker threads"""
+ # start workers
+ self.queue = Queue()
+ for command in commands:
+ self.queue.put( command )
+ self.threads = []
+ for i in range( num_threads ):
+ worker = threading.Thread( target=self.run_next )
+ worker.start()
+ self.threads.append( worker )
+ def run_next( self ):
+ """Run the next command, waiting until one is available if necessary"""
+ while not self.queue.empty():
+ command = self.queue.get()
+ self.run_job( command )
+ def run_job( self, command ):
+ try:
+ proc = subprocess.Popen( args=command, shell=True )
+ sts = os.waitpid( proc.pid, 0 )
+ except Exception, e:
+ stop_err( "Error executing command (%s) - %s" % ( str( command ), str( e ) ) )
+
+def __main__():
+ #Parse Command Line
+ parser = optparse.OptionParser()
+ parser.add_option( '', '--ref_name', dest='ref_name', help='' )
+ parser.add_option( '', '--ref_source', dest='ref_source', help='' )
+ parser.add_option( '', '--ref_sequences', dest='ref_sequences', help='Number of sequences in the reference dataset' )
+ parser.add_option( '', '--source_select', dest='source_select', help='' )
+ parser.add_option( '', '--out_format', dest='out_format', help='' )
+ parser.add_option( '', '--input1', dest='input1', help='' )
+ parser.add_option( '', '--input2', dest='input2', help='' )
+ parser.add_option( '', '--pre_set_options', dest='pre_set_options', help='' )
+ parser.add_option( '', '--strand', dest='strand', help='' )
+ parser.add_option( '', '--seed', dest='seed', help='' )
+ parser.add_option( '', '--transition', dest='transition', help='' )
+ parser.add_option( '', '--gfextend', dest='gfextend', help='' )
+ parser.add_option( '', '--nogfextend', dest='nogfextend', help='' )
+ parser.add_option( '', '--chain', dest='chain', help='' )
+ parser.add_option( '', '--nochain', dest='nochain', help='' )
+ parser.add_option( '', '--gapped', dest='gapped', help='' )
+ parser.add_option( '', '--nogapped', dest='nogapped', help='' )
+ parser.add_option( '', '--O', dest='O', help='' )
+ parser.add_option( '', '--E', dest='E', help='' )
+ parser.add_option( '', '--X', dest='X', help='' )
+ parser.add_option( '', '--Y', dest='Y', help='' )
+ parser.add_option( '', '--K', dest='K', help='' )
+ parser.add_option( '', '--L', dest='L', help='' )
+ parser.add_option( '', '--entropy', dest='entropy', help='' )
+ parser.add_option( '', '--identity_min', dest='identity_min', help='' )
+ parser.add_option( '', '--identity_max', dest='identity_max', help='' )
+ parser.add_option( '', '--coverage', dest='coverage', help='' )
+ parser.add_option( '', '--format', dest='format', help='' )
+ parser.add_option( '', '--output', dest='output', help='The output file' )
+ parser.add_option( '', '--num_threads', dest='num_threads', help='' )
+ parser.add_option( '', '--lastzSeqsFileDir', dest='lastzSeqsFileDir', help='Directory of local lastz_seqs.loc file' )
+ ( options, args ) = parser.parse_args()
+
+ commands = []
+ if options.ref_name != 'None':
+ ref_name = '%s::' % options.ref_name
+ else:
+ ref_name = ''
+ # Prepare for commonly-used preset options
+ if options.source_select == 'pre_set':
+ set_options = '--%s' % options.pre_set_options
+ # Prepare for user-specified options
+ else:
+ set_options = '%s %s --%s --%s --%s --%s O=%s E=%s X=%s Y=%s K=%s L=%s %s' % \
+ ( options.gfextend, options.chain, options.gapped, options.strand,
+ options.seed, options.transition, options.O, options.E, options.X,
+ options.Y, options.K, options.L, options.entropy )
+ # Specify input2 and add [fullnames] modifier if output format is diffs
+ if options.format == 'diffs':
+ input2 = '%s[fullnames]' % options.input2
+ else:
+ input2 = options.input2
+ if options.format == 'tabular':
+ # Change output format to general if it's tabular and add field names for tabular output
+ format = 'general'
+ tabular_fields = ':score,name1,strand1,size1,start1,zstart1,end1,length1,text1,name2,strand2,size2,start2,zstart2,end2,start2+,zstart2+,end2+,length2,text2,diff,cigar,identity,coverage,gaprate,diagonal,shingle'
+ else:
+ format = options.format
+ tabular_fields = ''
+ if options.ref_source == 'history':
+ # Reference is a fasta dataset from the history, so split job across number of
+ # sequences in the dataset
+ try:
+ error_msg = "The reference dataset is missing metadata, click the pencil icon in the history item and 'auto-detect' the metadata attributes."
+ ref_sequences = int( options.ref_sequences )
+ if ref_sequences < 1:
+ stop_err( error_msg )
+ except:
+ stop_err( error_msg )
+ for seq in range( ref_sequences ):
+ command = 'lastz %s%s %s %s --ambiguousn --nolaj --identity=%s..%s --coverage=%s --format=%s%s >> %s' % \
+ ( ref_name, options.input1, input2, set_options, options.identity_min,
+ options.identity_max, options.coverage, format, tabular_fields, options.output )
+ commands.append( command )
+ else:
+ # Reference is a locally cached 2bit file, split job across number of chroms in 2bit file
+ tbf = TwoBitFile( open( options.input1, 'r' ) )
+ for chrom in tbf.keys():
+ command = 'lastz %s%s/%s %s %s --ambiguousn --nolaj --identity=%s..%s --coverage=%s --format=%s%s >> %s' % \
+ ( ref_name, options.input1, chrom, input2, set_options, options.identity_min,
+ options.identity_max, options.coverage, format, tabular_fields, options.output )
+ commands.append( command )
+ tbf.close()
+ job_runner = LastzJobRunner( int( options.num_threads ), commands )
+
+if __name__=="__main__": __main__()
diff -r 8d149264b777 -r efdb6fb5de34 tools/sr_mapping/lastz_wrapper.xml
--- a/tools/sr_mapping/lastz_wrapper.xml Wed Nov 25 14:06:28 2009 -0500
+++ b/tools/sr_mapping/lastz_wrapper.xml Fri Nov 27 10:53:50 2009 -0500
@@ -1,124 +1,183 @@
-<tool id="lastz_wrapper_1" name="Lastz" version="1.0.0">
- <description> map short reads against reference sequence</description>
- <command>
- #if ($params.source_select=="pre_set" and $seq_name.how_to_name=="No" and $out_format.value=="diffs") #lastz $input1 ${input2}[fullnames] --${params.pre_set_options} --ambiguousn --nolaj --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="pre_set" and $seq_name.how_to_name=="Yes" and $out_format.value=="diffs") #lastz $seq_name.ref_name::$input1 ${input2}[fullnames] --${params.pre_set_options} --ambiguousn --nolaj --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="full" and $seq_name.how_to_name=="No" and $out_format.value=="diffs") #lastz $input1 ${input2}[fullnames] $params.strand $params.seed $params.transition O=$params.O E=$params.E X=$params.X Y=$params.Y K=$params.K L=$params.L $params.entropy --ambiguousn --nolaj --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="full" and $seq_name.how_to_name=="Yes" and $out_format.value=="diffs") #lastz $seq_name.ref_name::$input1 ${input2}[fullnames] $params.strand $params.seed $params.transition O=$params.O E=$params.E X=$params.X Y=$params.Y K=$params.K L=$params.L $params.entropy --ambiguousn --nolaj --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="pre_set" and $seq_name.how_to_name=="No" and $out_format.value=="maf") #lastz $input1 read::${input2} --${params.pre_set_options} --ambiguousn --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="pre_set" and $seq_name.how_to_name=="Yes" and $out_format.value=="maf") #lastz $seq_name.ref_name::$input1 read::${input2} --${params.pre_set_options} --ambiguousn --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="full" and $seq_name.how_to_name=="No" and $out_format.value=="maf") #lastz $input1 read::${input2} $params.strand $params.seed $params.transition O=$params.O E=$params.E X=$params.X Y=$params.Y K=$params.K L=$params.L $params.entropy --ambiguousn --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #elif ($params.source_select=="full" and $seq_name.how_to_name=="Yes" and $out_format.value=="maf") #lastz $seq_name.ref_name::$input1 read::${input2} $params.strand $params.seed $params.transition O=$params.O E=$params.E X=$params.X Y=$params.Y K=$params.K L=$params.L $params.entropy --ambiguousn --identity=${min_ident}..${max_ident} --census32=$output2 --coverage=$min_cvrg --format=$out_format > $output1
- #end if#
- </command>
- <inputs>
- <param name="input2" format="fasta" type="data" label="Align sequencing reads" />
- <param name="input1" format="fasta" type="data" label="against reference" help="must be a single sequence"/>
- <param name="out_format" type="select" label="Select output format">
- <option value="diffs">Polymorphisms</option>
- <option value="maf-">Alignments in MAF format</option>
- </param>
-
- <conditional name="params">
- <param name="source_select" type="select" label="Lastz settings to use" help="For most mapping needs use Commonly used settings. If you want full control use Full List">
- <option value="pre_set">Commonly used</option>
- <option value="full">Full Parameter List</option>
- </param>
- <when value="pre_set">
- <param name="pre_set_options" type="select" label="Select mapping mode">
- <option value="yasra95short">Illumina-Solexa/AB-SOLiD 95% identity</option>
- <option value="yasra85short">Illumina-Solexa/AB-SOLiD 85% identity</option>
- <option value="yasra98">Roche-454 98% identity</option>
- <option value="yasra95">Roche-454 95% identity</option>
- <option value="yasra90">Roche-454 90% identity</option>
- <option value="yasra85">Roche-454 85% identity</option>
- <option value="yasra75">Roche-454 75% identity</option>
- </param>
- </when>
- <when value="full">
- <param name="strand" type="select" label="Which strand to search?">
- <option value="--strand=both">Both</option>
- <option value="--strand=plus">Search forward strand only (the one in the reference)</option>
- <option value="--strand=minus">Search the reverse complement strand only (opposite of the reference)</option>
- </param>
- <param name="seed" type="select" label="Select seeding settings" help="allows you set word size and number of mismatches">
- <option value="--seed=12of19">Seed hits require a 19 bp word with matches in 12 specific positions</option>
- <option value="--seed=14of22">Seed hits require a 22 bp word with matches in 14 specific positions</option>
- </param>
- <param name="transition" type="select" label="Select transition settings" help="affects the number of allowed transition substitutions">
- <option value="--transition">Allow one transition in each seed hit</option>
- <option value="--transition2">Allow two transitions in a seed hit </option>
- <option value="--notransition">Don't allow any transitions in seed hits</option>
- </param>
- <param name="gfextend" type="boolean" truevalue="--gfextend" falsevalue="--nogfextend " label="Perform gap-free extension of seed hits to HSPs (high scoring segment pairs)?" />
- <param name="chain" type="boolean" truevalue="--chain" falsevalue="--nochain" label="Perform chaining of HSPs?" />
- <param name="gapped" type="boolean" truevalue="--gapped" falsevalue="--nogapped" label="Perform gapped alignment (instead of gap-free)?" />
- <param name="O" type="integer" size="5" value="400" label="Gap opening penalty"/>
- <param name="E" type="integer" size="5" value="30" label="Gap extension penalty"/>
- <param name="X" type="integer" size="5" value="910" label="X-drop threshold "/>
- <param name="Y" type="integer" size="5" value="9370" label="Y-drop threshold"/>
- <param name="K" type="integer" size="5" value="3000" label="Set the threshold for HSPs (ungapped extensions scoring lower are discarded)"/>
- <param name="L" type="integer" size="5" value="3000" label="Set the threshold for gapped alignments (gapped extensions scoring lower are discarded)"/>
- <param name="entropy" type="boolean" truevalue="--entropy" falsevalue="--noentropy " label="Involve entropy when filtering HSPs?" />
- </when>
- </conditional>
- <conditional name="seq_name">
- <param name="how_to_name" type="select" label="Do you want to modify reference name?">
- <option value="No">No</option>
- <option value="Yes">Yes</option>
- </param>
- <when value="Yes">
- <param name="ref_name" type="text" size="25" value="Type sequence name here" label="Enter name for the Reference sequence"/>
- </when>
- <when value="No" />
- </conditional>
- <param name="min_ident" type="integer" size="3" value="0" label="Do not report matches below this identity (%)"/>
- <param name="max_ident" type="integer" size="3" value="100" label="Do not report matches above this identity (%)"/>
- <param name="min_cvrg" type="integer" size="3" value="0" label="Do not report matches that cover less than this fraction (%) of each read"/>
- </inputs>
+<tool id="lastz_wrapper_2" name="Lastz" version="1.0.0">
+ <description> map short reads against reference sequence</description>
+ <command interpreter="python">lastz_wrapper.py
+#if $seq_name.how_to_name=="Yes":
+--ref_name=$seq_name.ref_name
+#else:
+--ref_name="None"
+#end if
+--ref_source=$source.ref_source --source_select=$params.source_select --out_format=$out_format.value --input1=$source.input1 --input2=$input2
+#if $source.ref_source=="history":
+--ref_sequences=$input1.metadata.sequences
+#else:
+--ref_sequences="None"
+#end if
+#if $params.source_select=="pre_set":
+--pre_set_options=${params.pre_set_options} --strand="None" --seed="None" --transition="None" --O="None" --E="None" --X="None" --Y="None" --K="None" --L="None" --entropy="None"
+#else:
+--pre_set_options="None" --strand=$params.strand --seed=$params.seed --transition=$params.transition --O=$params.O --E=$params.E --X=$params.X --Y=$params.Y --K=$params.K --L=$params.L --entropy=$params.entropy
+#end if
+--identity_min=$min_ident --identity_max=$max_ident --coverage=$min_cvrg --format=$out_format --output=$output1 --num_threads=$num_threads --lastzSeqsFileDir=${GALAXY_DATA_INDEX_DIR}
+ </command>
+ <inputs>
+ <param name="input2" format="fasta" type="data" label="Align sequencing reads in" />
+ <conditional name="source">
+ <param name="ref_source" type="select" label="Against reference sequences">
+ <option value="cached">that are locally cached</option>
+ <option value="history">in your history</option>
+ </param>
+ <when value="cached">
+ <param name="input1" type="select" label="Using reference genome" help="If your genome of interest is not listed, contact the Galaxy team">
+ <options from_file="lastz_seqs.loc">
+ <column name="value" index="1" />
+ <column name="name" index="0" />
+ </options>
+ </param>
+ </when>
+ <when value="history">
+ <param name="input1" type="data" format="fasta" label="Select a reference dataset" help="must be a single sequence" />
+ </when>
+ </conditional>
+ <param name="out_format" type="select" label="Output format">
+ <option value="sam">SAM</option>
+ <option value="diffs">Polymorphisms</option>
+ <option value="tabular">Tabular</option>
+ </param>
+ <conditional name="params">
+ <param name="source_select" type="select" label="Lastz settings to use" help="For most mapping needs use Commonly used settings. If you want full control use Full List">
+ <option value="pre_set">Commonly used</option>
+ <option value="full">Full Parameter List</option>
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/71b779fde315
changeset: 3126:71b779fde315
user: guru
date: Mon Nov 30 11:56:58 2009 -0500
description:
Added 'N' to the list of mask characters, as per Melissa's request.
diffstat:
tools/regVariation/maf_cpg_filter.py | 2 +-
tools/regVariation/maf_cpg_filter.xml | 1 +
tools/regVariation/quality_filter.py | 2 +-
tools/regVariation/quality_filter.xml | 1 +
4 files changed, 4 insertions(+), 2 deletions(-)
diffs (46 lines):
diff -r a8234f4d7012 -r 71b779fde315 tools/regVariation/maf_cpg_filter.py
--- a/tools/regVariation/maf_cpg_filter.py Mon Nov 30 09:35:21 2009 -0500
+++ b/tools/regVariation/maf_cpg_filter.py Mon Nov 30 11:56:58 2009 -0500
@@ -39,7 +39,7 @@
reader = bx.align.maf.Reader( open(inp_file, 'r') )
writer = bx.align.maf.Writer( open(out_file,'w') )
- mask_chr_dict = {0:'#', 1:'$', 2:'^', 3:'*', 4:'?'}
+ mask_chr_dict = {0:'#', 1:'$', 2:'^', 3:'*', 4:'?', 5:'N'}
mask = mask_chr_dict[mask]
if sitetype == "CpG":
diff -r a8234f4d7012 -r 71b779fde315 tools/regVariation/maf_cpg_filter.xml
--- a/tools/regVariation/maf_cpg_filter.xml Mon Nov 30 09:35:21 2009 -0500
+++ b/tools/regVariation/maf_cpg_filter.xml Mon Nov 30 11:56:58 2009 -0500
@@ -21,6 +21,7 @@
<option value="2">^</option>
<option value="3">*</option>
<option value="4">?</option>
+ <option value="5">N</option>
</param>
<conditional name="masksite">
<param name="type" size="5" type="select" label="Sites to be masked">
diff -r a8234f4d7012 -r 71b779fde315 tools/regVariation/quality_filter.py
--- a/tools/regVariation/quality_filter.py Mon Nov 30 09:35:21 2009 -0500
+++ b/tools/regVariation/quality_filter.py Mon Nov 30 11:56:58 2009 -0500
@@ -100,7 +100,7 @@
stop_err( "No mask species selected, try again by selecting at least one species to mask." )
mask_chr_count = 0
- mask_chr_dict = {0:'#', 1:'$', 2:'^', 3:'*', 4:'?'}
+ mask_chr_dict = {0:'#', 1:'$', 2:'^', 3:'*', 4:'?', 5:'N'}
mask_reg_dict = {0:'Current pos', 1:'Current+Downstream', 2:'Current+Upstream', 3:'Current+Both sides'}
#ensure dbkey is present in the twobit loc file
diff -r a8234f4d7012 -r 71b779fde315 tools/regVariation/quality_filter.xml
--- a/tools/regVariation/quality_filter.xml Mon Nov 30 09:35:21 2009 -0500
+++ b/tools/regVariation/quality_filter.xml Mon Nov 30 11:56:58 2009 -0500
@@ -37,6 +37,7 @@
<option value="2">^</option>
<option value="3">*</option>
<option value="4">?</option>
+ <option value="5">N</option>
</param>
<conditional name="mask_region">
<param name="region" type="select" label="Mask region">
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/8d149264b777
changeset: 3122:8d149264b777
user: rc
date: Wed Nov 25 14:06:28 2009 -0500
description:
Request events & request rejection (resolves issue #221)
- added request_events table
- removed 'state' field in the request table
- added 'new' & 'rejected' request states
- color coded request states in the request grid
Grids framework
- added a confirm flag in grid operations which require confirmation before going through with operation
diffstat:
lib/galaxy/model/__init__.py | 35 +-
lib/galaxy/model/mapping.py | 16 +-
lib/galaxy/model/migrate/versions/0027_request_events.py | 94 ++++++
lib/galaxy/web/controllers/requests.py | 157 +++++++--
lib/galaxy/web/controllers/requests_admin.py | 299 +++++++++++++------
lib/galaxy/web/framework/helpers/grids.py | 4 +-
templates/admin/requests/events.mako | 36 ++
templates/admin/requests/reject.mako | 42 ++
templates/admin/requests/show_request.mako | 13 +-
templates/grid_base.mako | 6 +-
templates/requests/events.mako | 39 ++
templates/requests/show_request.mako | 17 +-
templates/sample/sample_events.mako | 43 +-
test/base/twilltestcase.py | 9 +-
test/functional/test_forms_and_requests.py | 30 +-
15 files changed, 651 insertions(+), 189 deletions(-)
diffs (1296 lines):
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/model/__init__.py Wed Nov 25 14:06:28 2009 -0500
@@ -1260,11 +1260,12 @@
self.content = content
class Request( object ):
- states = Bunch( UNSUBMITTED = 'Unsubmitted',
+ states = Bunch( NEW = 'New',
SUBMITTED = 'Submitted',
+ REJECTED = 'Rejected',
COMPLETE = 'Complete')
def __init__(self, name=None, desc=None, request_type=None, user=None,
- form_values=None, library=None, folder=None, state=False):
+ form_values=None, library=None, folder=None):
self.name = name
self.desc = desc
self.type = request_type
@@ -1272,19 +1273,39 @@
self.user = user
self.library = library
self.folder = folder
- self.state = state
self.samples_list = []
+ def state(self):
+ if self.events:
+ return self.events[0].state
+ return None
+ def last_comment(self):
+ if self.events:
+ if self.events[0].comment:
+ return self.events[0].comment
+ else:
+ return ''
+ return 'No comment'
def has_sample(self, sample_name):
for s in self.samples:
if s.name == sample_name:
return s
return False
+ def unsubmitted(self):
+ return self.state() in [ self.states.REJECTED, self.states.NEW ]
+ def rejected(self):
+ return self.state() == self.states.REJECTED
def submitted(self):
- return self.state == self.states.SUBMITTED
- def unsubmitted(self):
- return self.state == self.states.UNSUBMITTED
+ return self.state() == self.states.SUBMITTED
+ def new(self):
+ return self.state() == self.states.NEW
def complete(self):
- return self.state == self.states.COMPLETE
+ return self.state() == self.states.COMPLETE
+
+class RequestEvent( object ):
+ def __init__(self, request=None, request_state=None, comment=''):
+ self.request = request
+ self.state = request_state
+ self.comment = comment
class RequestType( object ):
def __init__(self, name=None, desc=None, request_form=None, sample_form=None):
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/mapping.py
--- a/lib/galaxy/model/mapping.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/model/mapping.py Wed Nov 25 14:06:28 2009 -0500
@@ -618,8 +618,15 @@
Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
Column( "library_id", Integer, ForeignKey( "library.id" ), index=True ),
Column( "folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
+ Column( "deleted", Boolean, index=True, default=False ) )
+
+RequestEvent.table = Table('request_event', metadata,
+ Column( "id", Integer, primary_key=True),
+ Column( "create_time", DateTime, default=now ),
+ Column( "update_time", DateTime, default=now, onupdate=now ),
+ Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
Column( "state", TrimmedString( 255 ), index=True ),
- Column( "deleted", Boolean, index=True, default=False ) )
+ Column( "comment", TEXT ) )
Sample.table = Table('sample', metadata,
Column( "id", Integer, primary_key=True ),
@@ -768,9 +775,14 @@
folder=relation( LibraryFolder,
primaryjoin=( Request.table.c.folder_id == LibraryFolder.table.c.id ) ),
library=relation( Library,
- primaryjoin=( Request.table.c.library_id == Library.table.c.id ) )
+ primaryjoin=( Request.table.c.library_id == Library.table.c.id ) ),
+ events=relation( RequestEvent, backref="request",
+ order_by=desc(RequestEvent.table.c.update_time) )
) )
+assign_mapper( context, RequestEvent, RequestEvent.table,
+ properties=None )
+
assign_mapper( context, RequestType, RequestType.table,
properties=dict( states=relation( SampleState,
backref="request_type",
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/migrate/versions/0027_request_events.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/model/migrate/versions/0027_request_events.py Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,94 @@
+"""
+This migration script adds the request_event table and
+removes the state field in the request table
+"""
+from sqlalchemy import *
+from sqlalchemy.orm import *
+from sqlalchemy.exc import *
+from migrate import *
+from migrate.changeset import *
+
+import datetime
+now = datetime.datetime.utcnow
+
+import sys, logging
+log = logging.getLogger( __name__ )
+log.setLevel(logging.DEBUG)
+handler = logging.StreamHandler( sys.stdout )
+format = "%(name)s %(levelname)s %(asctime)s %(message)s"
+formatter = logging.Formatter( format )
+handler.setFormatter( formatter )
+log.addHandler( handler )
+
+# Need our custom types, but don't import anything else from model
+from galaxy.model.custom_types import *
+
+metadata = MetaData( migrate_engine )
+db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
+
+def display_migration_details():
+ print "========================================"
+ print "This migration script adds the request_event table and"
+ print "removes the state field in the request table"
+ print "========================================"
+
+def localtimestamp():
+ if migrate_engine.name == 'postgres' or migrate_engine.name == 'mysql':
+ return "LOCALTIMESTAMP"
+ elif migrate_engine.name == 'sqlite':
+ return "current_date || ' ' || current_time"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % db )
+
+def nextval( table, col='id' ):
+ if migrate_engine.name == 'postgres':
+ return "nextval('%s_%s_seq')" % ( table, col )
+ elif migrate_engine.name == 'mysql' or migrate_engine.name == 'sqlite':
+ return "null"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % migrate_engine.name )
+
+
+RequestEvent_table = Table('request_event', metadata,
+ Column( "id", Integer, primary_key=True),
+ Column( "create_time", DateTime, default=now ),
+ Column( "update_time", DateTime, default=now, onupdate=now ),
+ Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
+ Column( "state", TrimmedString( 255 ), index=True ),
+ Column( "comment", TEXT ) )
+
+def upgrade():
+ display_migration_details()
+ # Load existing tables
+ metadata.reflect()
+ # Add new request_event table
+ try:
+ RequestEvent_table.create()
+ except Exception, e:
+ log.debug( "Creating request_event table failed: %s" % str( e ) )
+ # move the current state of all existing requests to the request_event table
+ cmd = \
+ "INSERT INTO request_event " + \
+ "SELECT %s AS id," + \
+ "%s AS create_time," + \
+ "%s AS update_time," + \
+ "request.id AS request_id," + \
+ "request.state AS state " + \
+ "FROM request;"
+ cmd = cmd % ( nextval('request_event'), localtimestamp(), localtimestamp() )
+ db_session.execute( cmd )
+
+ # Delete the state column
+ try:
+ Request_table = Table( "request", metadata, autoload=True )
+ except NoSuchTableError:
+ Request_table = None
+ log.debug( "Failed loading table request" )
+ if Request_table:
+ try:
+ Request_table.c.state.drop()
+ except Exception, e:
+ log.debug( "Deleting column 'state' to request table failed: %s" % ( str( e ) ) )
+
+def downgrade():
+ pass
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/controllers/requests.py
--- a/lib/galaxy/web/controllers/requests.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/controllers/requests.py Wed Nov 25 14:06:28 2009 -0500
@@ -28,27 +28,57 @@
return request.type.name
class LastUpdateColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
- return request.update_time
+ delta = datetime.utcnow() - request.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ return last_update
class StateColumn( grids.GridColumn ):
+ def __init__( self, col_name, key, model_class, event_class, filterable, link ):
+ grids.GridColumn.__init__(self, col_name, key=key, model_class=model_class, filterable=filterable, link=link)
+ self.event_class = event_class
+ def get_value(self, trans, grid, request):
+ if request.state() == request.states.REJECTED:
+ return '<div class="count-box state-color-error">%s</div>' % request.state()
+ elif request.state() == request.states.NEW:
+ return '<div class="count-box state-color-queued">%s</div>' % request.state()
+ elif request.state() == request.states.SUBMITTED:
+ return '<div class="count-box state-color-running">%s</div>' % request.state()
+ elif request.state() == request.states.COMPLETE:
+ return '<div class="count-box state-color-ok">%s</div>' % request.state()
+ return request.state()
def filter( self, db_session, query, column_filter ):
""" Modify query to filter request by state. """
if column_filter == "All":
return query
if column_filter:
- query = query.filter( model.Request.state == column_filter )
- return query
+ # select r.id, r.name, re.id, re.state
+ # from request as r, request_event as re
+ # where re.request_id=r.id and re.state='Complete' and re.create_time in
+ # (select MAX( create_time)
+ # from request_event
+ # group by request_id)
+ q = query.join(self.event_class.table)\
+ .filter( self.model_class.table.c.id==self.event_class.table.c.request_id )\
+ .filter( self.event_class.table.c.state==column_filter )\
+ .filter( self.event_class.table.c.id.in_(select(columns=[func.max(self.event_class.table.c.id)],
+ from_obj=self.event_class.table,
+ group_by=self.event_class.table.c.request_id)))
+ return q
def get_accepted_filters( self ):
- """ Returns a list of accepted filters for this column. """
- accepted_filter_labels_and_vals = [ model.Request.states.UNSUBMITTED,
- model.Request.states.SUBMITTED,
- model.Request.states.COMPLETE,
- "All"]
- accepted_filters = []
- for val in accepted_filter_labels_and_vals:
- label = val.lower()
- args = { self.key: val }
- accepted_filters.append( grids.GridColumnFilter( label, args) )
- return accepted_filters
+ """ Returns a list of accepted filters for this column. """
+ accepted_filter_labels_and_vals = [ model.Request.states.NEW,
+ model.Request.states.REJECTED,
+ model.Request.states.SUBMITTED,
+ model.Request.states.COMPLETE,
+ "All"]
+ accepted_filters = []
+ for val in accepted_filter_labels_and_vals:
+ label = val.lower()
+ args = { self.key: val }
+ accepted_filters.append( grids.GridColumnFilter( label, args) )
+ return accepted_filters
class DeletedColumn( grids.GridColumn ):
def get_accepted_filters( self ):
""" Returns a list of accepted filters for this column. """
@@ -66,7 +96,7 @@
num_rows_per_page = 50
preserve_state = True
use_paging = True
- default_filter = dict( deleted="False", state=model.Request.states.UNSUBMITTED)
+ default_filter = dict( deleted="False", state=model.Request.states.NEW)
columns = [
NameColumn( "Name",
key="name",
@@ -83,23 +113,27 @@
TypeColumn( "Type" ),
LastUpdateColumn( "Last update",
format=time_ago ),
- StateColumn( "State",
- key='state',
- filterable="advanced"),
DeletedColumn( "Deleted",
key="deleted",
- visible=True,
- filterable="advanced" )
+ visible=False,
+ filterable="advanced" ),
+ StateColumn( "State",
+ model_class=model.Request,
+ event_class=model.RequestEvent,
+ key='state',
+ filterable="advanced",
+ link=( lambda item: iff( item.deleted, None, dict( operation="events", id=item.id ) ) ) )
]
columns.append( grids.MulticolFilterColumn( "Search",
- cols_to_filter=[ columns[0], columns[1] ],
+ cols_to_filter=[ columns[0], columns[1], columns[6] ],
key="free-text-search",
visible=False,
filterable="standard" ) )
operations = [
- grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ) ),
+ grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ),
+ confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." ),
grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
- grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
+ grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.new() ) ),
grids.GridOperation( "Undelete", allow_multiple=True, condition=( lambda item: item.deleted ) )
]
@@ -145,9 +179,23 @@
return self.__undelete_request( trans, **kwd )
elif operation == "edit":
return self.__edit_request( trans, **kwd )
+ elif operation == "events":
+ return self.__request_events( trans, **kwd )
+ # if there are one or more requests that has been rejected by the admin
+ # recently, then show a msg as a reminder to the user
+ rlist = trans.sa_session.query( trans.app.model.Request ) \
+ .filter( trans.app.model.Request.table.c.deleted==False ) \
+ .filter( trans.app.model.Request.table.c.user_id==trans.user.id )
+ rejected = 0
+ for r in rlist:
+ if r.rejected():
+ rejected = rejected + 1
+ if rejected:
+ kwd['status'] = 'warning'
+ kwd['message'] = "%d requests (highlighted in red) were rejected, click on the request name for details." \
+ % rejected
# Render the list view
return self.request_grid( trans, **kwd )
-
def __show_request(self, trans, **kwd):
params = util.Params( kwd )
msg = util.restore_text( params.get( 'msg', '' ) )
@@ -172,6 +220,28 @@
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode='False',
msg=msg, messagetype=messagetype )
+ def __request_events(self, trans, **kwd):
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ events_list = []
+ all_events = request.events
+ for event in all_events:
+ delta = datetime.utcnow() - event.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ events_list.append((event.state, last_update, event.comment))
+ return trans.fill_template( '/requests/events.mako',
+ events_list=events_list, request=request)
def request_details(self, trans, id):
'''
Shows the request details
@@ -187,7 +257,7 @@
value=request.type.name,
helptext=''))
request_details.append(dict(label='State',
- value=request.state,
+ value=request.state(),
helptext=''))
request_details.append(dict(label='Date created',
value=request.create_time,
@@ -366,9 +436,9 @@
trans.sa_session.add( sample )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests',
- action='list',
- operation='show_request',
- id=trans.security.encode_id(request.id)) )
+ action='list',
+ operation='show_request',
+ id=trans.security.encode_id(request.id)) )
elif params.get('edit_samples_button', False) == 'Edit samples':
edit_mode = 'True'
return trans.fill_template( '/requests/show_request.mako',
@@ -700,10 +770,15 @@
if not request:
request = trans.app.model.Request(name, desc, request_type,
trans.user, form_values,
- library=library, folder=folder,
- state=trans.app.model.Request.states.UNSUBMITTED)
+ library=library, folder=folder)
trans.sa_session.add( request )
trans.sa_session.flush()
+ trans.sa_session.refresh( request )
+ # create an event with state 'New' for this new request
+ comments = "Request created."
+ event = trans.app.model.RequestEvent(request, request.states.NEW, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
else:
request.name = name
request.desc = desc
@@ -712,7 +787,6 @@
request.values = form_values
request.library = library
request.folder = folder
- request.state = trans.app.model.Request.states.UNSUBMITTED
trans.sa_session.add( request )
trans.sa_session.flush()
return request
@@ -731,7 +805,7 @@
message="Invalid request ID",
**kwd) )
if params.get('show', False) == 'True':
- return self.__edit_request(trans, **kwd)
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
elif params.get('save_changes_request_button', False) == 'Save changes' \
or params.get('edit_samples_button', False) == 'Edit samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
@@ -760,7 +834,7 @@
messagetype='done',
**new_kwd) )
elif params.get('refresh', False) == 'true':
- return self.__edit_request(trans, **kwd)
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
def __edit_request(self, trans, **kwd):
try:
@@ -819,7 +893,7 @@
message=msg,
**kwd) )
# a request cannot be deleted once its submitted
- if not request.unsubmitted():
+ if not request.new():
delete_failed.append(request.name)
else:
request.deleted = True
@@ -870,21 +944,22 @@
msg = self.__validate(trans, request)
if msg:
return trans.response.send_redirect( web.url_for( controller='requests',
- action='edit',
+ action='list',
+ operation='edit',
messagetype = 'error',
msg=msg,
- request_id=request.id,
- show='True') )
+ id=trans.security.encode_id(request.id) ))
+ # change the request state to 'Submitted'
+ comments = "Request moved to 'Submitted' state."
+ event = trans.app.model.RequestEvent(request, request.states.SUBMITTED, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
# get the new state
new_state = request.type.states[0]
for s in request.samples:
event = trans.app.model.SampleEvent(s, new_state, 'Samples submitted to the system')
trans.sa_session.add( event )
trans.sa_session.flush()
- # change request's submitted field
- request.state = request.states.SUBMITTED
- trans.sa_session.add( request )
- trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
id=trans.security.encode_id(request.id),
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/controllers/requests_admin.py
--- a/lib/galaxy/web/controllers/requests_admin.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/controllers/requests_admin.py Wed Nov 25 14:06:28 2009 -0500
@@ -8,6 +8,8 @@
from galaxy.web.form_builder import *
from datetime import datetime, timedelta
from galaxy.web.controllers.forms import get_all_forms
+from sqlalchemy.sql.expression import func, and_
+from sqlalchemy.sql import select
log = logging.getLogger( __name__ )
@@ -31,27 +33,58 @@
return request.type.name
class LastUpdateColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
- return request.update_time
+ delta = datetime.utcnow() - request.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ return last_update
class StateColumn( grids.GridColumn ):
+ def __init__( self, col_name, key, model_class, event_class, filterable, link ):
+ grids.GridColumn.__init__(self, col_name, key=key, model_class=model_class, filterable=filterable, link=link)
+ self.event_class = event_class
+ def get_value(self, trans, grid, request):
+ if request.state() == request.states.REJECTED:
+ return '<div class="count-box state-color-error">%s</div>' % request.state()
+ elif request.state() == request.states.NEW:
+ return '<div class="count-box state-color-queued">%s</div>' % request.state()
+ elif request.state() == request.states.SUBMITTED:
+ return '<div class="count-box state-color-running">%s</div>' % request.state()
+ elif request.state() == request.states.COMPLETE:
+ return '<div class="count-box state-color-ok">%s</div>' % request.state()
+ return request.state()
def filter( self, db_session, query, column_filter ):
""" Modify query to filter request by state. """
if column_filter == "All":
return query
if column_filter:
- query = query.filter( model.Request.state == column_filter )
- return query
+ # select r.id, r.name, re.id, re.state
+ # from request as r, request_event as re
+ # where re.request_id=r.id and re.state='Complete' and re.create_time in
+ # (select MAX( create_time)
+ # from request_event
+ # group by request_id)
+ q = query.join(self.event_class.table)\
+ .filter( self.model_class.table.c.id==self.event_class.table.c.request_id )\
+ .filter( self.event_class.table.c.state==column_filter )\
+ .filter( self.event_class.table.c.id.in_(select(columns=[func.max(self.event_class.table.c.id)],
+ from_obj=self.event_class.table,
+ group_by=self.event_class.table.c.request_id)))
+ #print column_filter, q
+ return q
def get_accepted_filters( self ):
- """ Returns a list of accepted filters for this column. """
- accepted_filter_labels_and_vals = [ model.Request.states.UNSUBMITTED,
- model.Request.states.SUBMITTED,
- model.Request.states.COMPLETE,
- "All"]
- accepted_filters = []
- for val in accepted_filter_labels_and_vals:
- label = val.lower()
- args = { self.key: val }
- accepted_filters.append( grids.GridColumnFilter( label, args) )
- return accepted_filters
+ """ Returns a list of accepted filters for this column. """
+ accepted_filter_labels_and_vals = [ model.Request.states.NEW,
+ model.Request.states.REJECTED,
+ model.Request.states.SUBMITTED,
+ model.Request.states.COMPLETE,
+ "All"]
+ accepted_filters = []
+ for val in accepted_filter_labels_and_vals:
+ label = val.lower()
+ args = { self.key: val }
+ accepted_filters.append( grids.GridColumnFilter( label, args) )
+ return accepted_filters
class UserColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
return request.user.email
@@ -86,20 +119,25 @@
filterable="advanced" ),
SamplesColumn( "Sample(s)",
link=( lambda item: iff( item.deleted, None, dict( operation="show_request", id=item.id ) ) ), ),
- TypeColumn( "Type" ),
+ TypeColumn( "Type",
+ link=( lambda item: iff( item.deleted, None, dict( operation="view_type", id=item.type.id ) ) ), ),
LastUpdateColumn( "Last update",
format=time_ago ),
- StateColumn( "State",
- key='state',
- filterable="advanced"),
- UserColumn( "User",
- key='user.email',
- model_class=model.Request,
- filterable="advanced" ),
DeletedColumn( "Deleted",
key="deleted",
- visible=True,
- filterable="advanced" )
+ visible=False,
+ filterable="advanced" ),
+ StateColumn( "State",
+ model_class=model.Request,
+ event_class=model.RequestEvent,
+ key='state',
+ filterable="advanced",
+ link=( lambda item: iff( item.deleted, None, dict( operation="events", id=item.id ) ) ),
+ ),
+ UserColumn( "User",
+ #key='user.email',
+ model_class=model.Request)
+
]
columns.append( grids.MulticolFilterColumn( "Search",
cols_to_filter=[ columns[0], columns[1], columns[6] ],
@@ -107,10 +145,11 @@
visible=False,
filterable="standard" ) )
operations = [
- grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ) ),
+ grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ),
+ confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." ),
grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: not item.deleted ) ),
grids.GridOperation( "Reject", allow_multiple=False, condition=( lambda item: not item.deleted and item.submitted() ) ),
- grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
+ grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.new() ) ),
grids.GridOperation( "Undelete", condition=( lambda item: item.deleted ) ),
]
global_actions = [
@@ -227,6 +266,11 @@
return self.__edit_request( trans, **kwd )
elif operation == "reject":
return self.__reject_request( trans, **kwd )
+ elif operation == "events":
+ return self.__request_events( trans, **kwd )
+ elif operation == "view_type":
+ return self.__view_request_type( trans, **kwd )
+
# Render the grid view
return self.request_grid( trans, **kwd )
def __show_request(self, trans, **kwd):
@@ -253,7 +297,52 @@
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode='False',
msg=msg, messagetype=messagetype )
-
+ @web.expose
+ @web.require_admin
+ def edit(self, trans, **kwd):
+ params = util.Params( kwd )
+ msg = util.restore_text( params.get( 'msg', '' ) )
+ messagetype = params.get( 'messagetype', 'done' )
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
+ except:
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message="Invalid request ID",
+ **kwd) )
+ if params.get('show', False) == 'True':
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
+ elif params.get('save_changes_request_button', False) == 'Save changes' \
+ or params.get('edit_samples_button', False) == 'Edit samples':
+ request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
+ if not util.restore_text(params.get('name', '')):
+ msg = 'Please enter the <b>Name</b> of the request'
+ kwd['messagetype'] = 'error'
+ kwd['msg'] = msg
+ kwd['show'] = 'True'
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='edit',
+ **kwd) )
+ request = self.__save_request(trans, request, **kwd)
+ msg = 'The changes made to the request named %s has been saved' % request.name
+ if params.get('save_changes_request_button', False) == 'Save changes':
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ message=msg ,
+ status='done') )
+ elif params.get('edit_samples_button', False) == 'Edit samples':
+ new_kwd = {}
+ new_kwd['request_id'] = request.id
+ new_kwd['edit_samples_button'] = 'Edit samples'
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='show_request',
+ msg=msg ,
+ messagetype='done',
+ **new_kwd) )
+ elif params.get('refresh', False) == 'true':
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
+
def __edit_request(self, trans, **kwd):
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
@@ -311,7 +400,7 @@
message=msg,
**kwd) )
# a request cannot be deleted once its submitted
- if not request.unsubmitted():
+ if not request.new():
delete_failed.append(request.name)
else:
request.deleted = True
@@ -362,18 +451,24 @@
msg = self.__validate(trans, request)
if msg:
return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='edit',
+ action='list',
+ operation='edit',
messagetype = 'error',
msg=msg,
- request_id=request.id,
- show='True') )
- # get the new state
+ id=trans.security.encode_id(request.id) ) )
+ # change the request state to 'Submitted'
+ if request.user.email is not trans.user:
+ comments = "Request moved to 'Submitted' state by admin (%s) on behalf of %s." % (trans.user.email, request.user.email)
+ else:
+ comments = ""
+ event = trans.app.model.RequestEvent(request, request.states.SUBMITTED, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
+ # change the state of each of the samples of thus request
new_state = request.type.states[0]
for s in request.samples:
event = trans.app.model.SampleEvent(s, new_state, 'Samples submitted to the system')
trans.sa_session.add( event )
- # change request's submitted field
- request.state = request.states.SUBMITTED
trans.sa_session.add( request )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests_admin',
@@ -393,15 +488,64 @@
status='error',
message=msg,
**kwd) )
- # change request's submitted field
- request.state = request.states.UNSUBMITTED
- trans.sa_session.add( request )
+ return trans.fill_template( '/admin/requests/reject.mako',
+ request=request)
+ @web.expose
+ @web.require_admin
+ def reject(self, trans, **kwd):
+ params = util.Params( kwd )
+ if params.get('cancel_reject_button', False):
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ operation='show_request',
+ id=kwd['id']))
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ # validate
+ if not params.get('comment', ''):
+ return trans.fill_template( '/admin/requests/reject.mako',
+ request=request, messagetype='error',
+ msg='A comment is required for rejecting a request.')
+ # create an event with state 'Rejected' for this request
+ comments = util.restore_text( params.comment )
+ event = trans.app.model.RequestEvent(request, request.states.REJECTED, comments)
+ trans.sa_session.add( event )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='done',
- message='The request <b>%s</b> is now unsubmitted.' % request.name
- ) )
+ message='Request <b>%s</b> has been rejected.' % request.name) )
+
+ def __request_events(self, trans, **kwd):
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ events_list = []
+ all_events = request.events
+ for event in all_events:
+ delta = datetime.utcnow() - event.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ events_list.append((event.state, last_update, event.comment))
+ return trans.fill_template( '/admin/requests/events.mako',
+ events_list=events_list, request=request)
#
#---- Request Creation ----------------------------------------------------------
#
@@ -732,9 +876,18 @@
if not request:
request = trans.app.model.Request(name, desc, request_type,
user, form_values,
- library=library, folder=folder,
- state=trans.app.model.Request.states.UNSUBMITTED)
+ library=library, folder=folder)
trans.sa_session.add( request )
+ trans.sa_session.flush()
+ trans.sa_session.refresh( request )
+ # create an event with state 'New' for this new request
+ if request.user.email is not trans.user:
+ comments = "Request created by admin (%s) on behalf of %s." % (trans.user.email, request.user.email)
+ else:
+ comments = "Request created."
+ event = trans.app.model.RequestEvent(request, request.states.NEW, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
else:
request.name = name
request.desc = desc
@@ -744,58 +897,14 @@
request.library = library
request.folder = folder
trans.sa_session.add( request )
- trans.sa_session.flush()
+ trans.sa_session.flush()
+
return request
#
-#---- Request Editing ----------------------------------------------------------
+#---- Request Page ----------------------------------------------------------
#
- @web.expose
- @web.require_admin
- def edit(self, trans, **kwd):
- params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
- try:
- request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
- except:
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='list',
- status='error',
- message="Invalid request ID",
- **kwd) )
- if params.get('show', False) == 'True':
- return self.__edit_request(trans, request.id, **kwd)
- elif params.get('save_changes_request_button', False) == 'Save changes' \
- or params.get('edit_samples_button', False) == 'Edit samples':
- request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
- if not util.restore_text(params.get('name', '')):
- msg = 'Please enter the <b>Name</b> of the request'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
- kwd['show'] = 'True'
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='edit',
- **kwd) )
- request = self.__save_request(trans, request, **kwd)
- msg = 'The changes made to the request named %s has been saved' % request.name
- if params.get('save_changes_request_button', False) == 'Save changes':
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='list',
- message=msg ,
- status='done') )
- elif params.get('edit_samples_button', False) == 'Edit samples':
- new_kwd = {}
- new_kwd['request_id'] = request.id
- new_kwd['edit_samples_button'] = 'Edit samples'
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='show_request',
- msg=msg ,
- messagetype='done',
- **new_kwd) )
- elif params.get('refresh', False) == 'true':
- return self.__edit_request(trans, request.id, **kwd)
def __update_samples(self, request, **kwd):
'''
This method retrieves all the user entered sample information and
@@ -1013,7 +1122,7 @@
value=request.type.name,
helptext=''))
request_details.append(dict(label='State',
- value=request.state,
+ value=request.state(),
helptext=''))
request_details.append(dict(label='Date created',
value=request.create_time,
@@ -1167,11 +1276,13 @@
if s.current_state().id != request.type.states[-1].id:
complete = False
if complete:
- request.state = request.states.COMPLETE
- else:
- request.state = request.states.SUBMITTED
- trans.sa_session.add( request )
- trans.sa_session.flush()
+ # change the request state to 'Complete'
+ comments = "All samples of this request are in the last sample state (%s)." % request.type.states[-1].name
+ event = trans.app.model.RequestEvent(request, request.states.COMPLETE, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
+# trans.sa_session.add( request )
+# trans.sa_session.flush()
def change_state(self, trans, sample):
possible_states = sample.request.type.states
curr_state = sample.current_state()
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/framework/helpers/grids.py Wed Nov 25 14:06:28 2009 -0500
@@ -402,7 +402,7 @@
return query.filter( complete_filter )
class GridOperation( object ):
- def __init__( self, label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False ):
+ def __init__( self, label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False, confirm=None ):
self.label = label
self.key = key
self.allow_multiple = allow_multiple
@@ -411,6 +411,8 @@
self.target = target
self.url_args = url_args
self.async_compatible = async_compatible
+ # if 'confirm' is set, then ask before completing the operation
+ self.confirm = confirm
def get_url_args( self, item ):
if self.url_args:
temp = dict( self.url_args )
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/events.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/admin/requests/events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,36 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+<h2>History of Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+</ul>
+<h3>User: ${request.user.email}</h3>
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Last Update</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/reject.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/admin/requests/reject.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,42 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<h2>Reject Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>Events</span></a>
+ </li>
+</ul>
+<h3>User: ${request.user.email}</h3>
+
+
+
+<div class="toolForm">
+ <div class="toolFormTitle">Reject request</div>
+ <form name="event" action="${h.url_for( controller='requests_admin', action='reject', id=trans.security.encode_id(request.id))}" method="post" >
+ <div class="form-row">
+ Rejecting this request will move the request state to <b>Rejected</b>.
+ </div>
+ <div class="form-row">
+ <label>Comments</label>
+ <textarea name="comment" rows="5" cols="40"></textarea>
+ <div class="toolParamHelp" style="clear: both;">
+ Required
+ </div>
+ </div>
+ <div class="form-row">
+ <input type="submit" name="reject_button" value="Reject"/>
+ <input type="submit" name="cancel_reject_button" value="Cancel"/>
+ </div>
+ </form>
+ </div>
+</div>
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/show_request.mako
--- a/templates/admin/requests/show_request.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/admin/requests/show_request.mako Wed Nov 25 14:06:28 2009 -0500
@@ -5,11 +5,16 @@
${render_msg( msg, messagetype )}
%endif
+%if request.rejected():
+ ${render_msg( "Reason for rejection: "+request.last_comment(), "warning" )}
+%endif
+
<div class="grid-header">
<h2>Sequencing Request "${request.name}"</h2>
</div>
<ul class="manage-table-actions">
+
%if request.unsubmitted() and request.samples:
<li>
<a class="action-button" confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." href="${h.url_for( controller='requests_admin', action='list', operation='Submit', id=trans.security.encode_id(request.id) )}">
@@ -28,6 +33,10 @@
<span>Bar codes</span></a>
</li>
%endif
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>History</span></a>
+ </li>
</ul>
@@ -82,7 +91,7 @@
%if grid_index == 0:
<td>${sample.bar_code}</td>
<td>
- %if sample.request.unsubmitted():
+ %if sample.request.new():
Unsubmitted
%else:
<a href="${h.url_for( controller='requests_admin', action='show_events', sample_id=sample.id)}">${sample.current_state().name}</a>
@@ -117,6 +126,8 @@
%else:
<i>None</i>
%endif
+ %elif rd['label'] == 'State':
+ <a href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
%else:
${rd['value']}
%endif
diff -r 5761948422a8 -r 8d149264b777 templates/grid_base.mako
--- a/templates/grid_base.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/grid_base.mako Wed Nov 25 14:06:28 2009 -0500
@@ -860,7 +860,11 @@
if operation.target:
target = "target='" + operation.target + "'"
%>
- <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %if operation.confirm:
+ <a class="action-button" ${target} confirm="${operation.confirm}" href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %else:
+ <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %endif
%endif
%endfor
</div>
diff -r 5761948422a8 -r 8d149264b777 templates/requests/events.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/requests/events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,39 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+<h2>History of Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list')}">
+ <span>Browse all requests</span></a>
+ </li>
+</ul>
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Last Update</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
diff -r 5761948422a8 -r 8d149264b777 templates/requests/show_request.mako
--- a/templates/requests/show_request.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/requests/show_request.mako Wed Nov 25 14:06:28 2009 -0500
@@ -6,6 +6,9 @@
${render_msg( msg, messagetype )}
%endif
+%if request.rejected():
+ ${render_msg( "Reason for rejection: "+request.last_comment(), "warning" )}
+%endif
<div class="grid-header">
<h2>Sequencing Request "${request.name}"</h2>
@@ -19,6 +22,10 @@
</li>
%endif
<li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>History</span></a>
+ </li>
+ <li>
<a class="action-button" href="${h.url_for( controller='requests', action='list')}">
<span>Browse requests</span></a>
</li>
@@ -73,7 +80,7 @@
</td>
%if grid_index == 0:
<td>
- %if sample.request.unsubmitted():
+ %if sample.request.new():
Unsubmitted
%else:
<a href="${h.url_for( controller='requests', action='show_events', sample_id=sample.id)}">${sample.current_state().name}</a>
@@ -105,9 +112,11 @@
%if rd['label'] == 'Data library':
%if rd['value']:
<a href="${h.url_for( controller='library', action='browse_library', obj_id=request.library.id )}">${rd['value']}</a>
- %else:
- <i>None</i>
- %endif
+ %elif rd['label'] == 'State':
+ <a href="${h.url_for( controller='requests', action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
+ %else:
+ <i>None</i>
+ %endif
%else:
${rd['value']}
%endif
diff -r 5761948422a8 -r 8d149264b777 templates/sample/sample_events.mako
--- a/templates/sample/sample_events.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/sample/sample_events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -21,24 +21,25 @@
${render_msg( msg, messagetype )}
%endif
-
-<table class="grid">
- <thead>
- <tr>
- <th>State</th>
- <th>Description</th>
- <th>Updated</th>
- <th>Comments</th>
- </tr>
- </thead>
- <tbody>
- %for state, desc, updated, comments in events_list:
- <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
- <td><b><a>${state}</a></b></td>
- <td><a>${desc}</a></td>
- <td><a>${updated}</a></td>
- <td><a>${comments}</a></td>
- </tr>
- %endfor
- </tbody>
-</table>
\ No newline at end of file
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Description</th>
+ <th>Updated</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, desc, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${desc}</a></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 test/base/twilltestcase.py
--- a/test/base/twilltestcase.py Tue Nov 24 14:53:19 2009 -0500
+++ b/test/base/twilltestcase.py Wed Nov 25 14:06:28 2009 -0500
@@ -1298,10 +1298,15 @@
self.home()
self.visit_url( "%s/requests_admin/list?operation=Submit&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
self.check_page_for_string( 'The request <b>%s</b> has been submitted.' % request_name )
- def reject_request( self, request_id, request_name ):
+ def reject_request( self, request_id, request_name, comment ):
self.home()
self.visit_url( "%s/requests_admin/list?operation=Reject&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
- self.check_page_for_string( 'The request <b>%s</b> is now unsubmitted.' % request_name )
+ self.check_page_for_string( 'Reject Sequencing Request "%s"' % request_name )
+ tc.fv( "1", "comment", comment )
+ tc.submit( "reject_button" )
+ self.check_page_for_string( 'Request <b>%s</b> has been rejected.' % request_name )
+ self.visit_url( "%s/requests/list?sort=-create_time&operation=show_request&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
+ self.check_page_for_string( comment )
def add_bar_codes( self, request_id, request_name, bar_codes ):
self.home()
self.visit_url( "%s/requests_admin/bar_codes?request_id=%i" % (self.url, request_id) )
diff -r 5761948422a8 -r 8d149264b777 test/functional/test_forms_and_requests.py
--- a/test/functional/test_forms_and_requests.py Tue Nov 24 14:53:19 2009 -0500
+++ b/test/functional/test_forms_and_requests.py Wed Nov 25 14:06:28 2009 -0500
@@ -194,9 +194,9 @@
.filter( and_( galaxy.model.Request.table.c.name==request_name,
galaxy.model.Request.table.c.deleted==False ) ) \
.first()
- # check if the request's state is now set to 'unsubmitted'
- assert request_one.state is not request_one.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_one.name, request_one.states.UNSUBMITTED )
+ # check if the request's state is now set to 'new'
+ assert request_one.state is not request_one.states.NEW, "The state of the request '%s' should be set to '%s'" \
+ % ( request_one.name, request_one.states.NEW )
# sample fields
samples = [ ( 'Sample One', [ 'S1 Field 0 Value' ] ),
( 'Sample Two', [ 'S2 Field 0 Value' ] ) ]
@@ -207,8 +207,8 @@
self.edit_request(request_one.id, request_one.name, request_one.name+' (Renamed)',
request_one.desc+' (Re-described)', library_one.id, folder_one.id, fields)
sa_session.refresh( request_one )
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_grid(state='Unsubmitted', request_name=request_one.name)
+ # check if the request is showing in the 'new' filter
+ self.check_request_grid(state='New', request_name=request_one.name)
# submit the request
self.submit_request( request_one.id, request_one.name )
sa_session.refresh( request_one )
@@ -257,11 +257,11 @@
.filter( and_( galaxy.model.Request.table.c.name==request_name,
galaxy.model.Request.table.c.deleted==False ) ) \
.first()
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_admin_grid(state='Unsubmitted', request_name=request_two.name)
- # check if the request's state is now set to 'unsubmitted'
- assert request_two.state is not request_two.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_two.name, request_two.states.UNSUBMITTED )
+ # check if the request is showing in the 'new' filter
+ self.check_request_admin_grid(state='New', request_name=request_two.name)
+ # check if the request's state is now set to 'new'
+ assert request_two.state is not request_two.states.NEW, "The state of the request '%s' should be set to '%s'" \
+ % ( request_two.name, request_two.states.NEW )
# sample fields
samples = [ ( 'Sample One', [ 'S1 Field 0 Value' ] ),
( 'Sample Two', [ 'S2 Field 0 Value' ] ) ]
@@ -282,10 +282,10 @@
'''Testing rejecting a request'''
self.logout()
self.login( email='test(a)bx.psu.edu' )
- self.reject_request( request_two.id, request_two.name )
+ self.reject_request( request_two.id, request_two.name, "Rejection test comment" )
sa_session.refresh( request_two )
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_admin_grid(state='Unsubmitted', request_name=request_two.name)
+ # check if the request is showing in the 'rejected' filter
+ self.check_request_admin_grid(state='Rejected', request_name=request_two.name)
# check if the request's state is now set to 'submitted'
- assert request_two.state is not request_two.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_two.name, request_two.states.UNSUBMITTED )
+ assert request_two.state is not request_two.states.REJECTED, "The state of the request '%s' should be set to '%s'" \
+ % ( request_two.name, request_two.states.REJECTED )
1
0