galaxy-dev
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- 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/1d93eb88c93f
changeset: 3131:1d93eb88c93f
user: Enis Afgan <afgane(a)gmail.com>
date: Mon Nov 30 16:36:38 2009 -0500
description:
Added ability for a user to add additional storage volume(s) to a running EC2 instance. In this context, a new EBS volume is created, attached to a running instance, and then added to remote zpool. When an instance is shut down and then started back up, all of the associated storage volumes are automatically attached to it and the zpool is imported.
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 f4654abcec1e -r 1d93eb88c93f lib/galaxy/cloud/__init__.py
--- a/lib/galaxy/cloud/__init__.py Fri Nov 20 11:03:41 2009 -0500
+++ b/lib/galaxy/cloud/__init__.py Mon Nov 30 16:36:38 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 f4654abcec1e -r 1d93eb88c93f lib/galaxy/cloud/providers/ec2.py
--- a/lib/galaxy/cloud/providers/ec2.py Fri Nov 20 11:03:41 2009 -0500
+++ b/lib/galaxy/cloud/providers/ec2.py Mon Nov 30 16:36:38 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 f4654abcec1e -r 1d93eb88c93f lib/galaxy/cloud/providers/eucalyptus.py
--- a/lib/galaxy/cloud/providers/eucalyptus.py Fri Nov 20 11:03:41 2009 -0500
+++ b/lib/galaxy/cloud/providers/eucalyptus.py Mon Nov 30 16:36:38 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 f4654abcec1e -r 1d93eb88c93f lib/galaxy/web/controllers/cloud.py
--- a/lib/galaxy/web/controllers/cloud.py Fri Nov 20 11:03:41 2009 -0500
+++ b/lib/galaxy/web/controllers/cloud.py Mon Nov 30 16:36:38 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 f4654abcec1e -r 1d93eb88c93f templates/cloud/configure_cloud.mako
--- a/templates/cloud/configure_cloud.mako Fri Nov 20 11:03:41 2009 -0500
+++ b/templates/cloud/configure_cloud.mako Mon Nov 30 16:36:38 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
details: http://www.bx.psu.edu/hg/galaxy/rev/e75b55cc9e08
changeset: 3133:e75b55cc9e08
user: Enis Afgan <afgane(a)gmail.com>
date: Tue Dec 01 09:53:36 2009 -0500
description:
Merge
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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/config.py
--- a/lib/galaxy/config.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/config.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/model/__init__.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/model/mapping.py
--- a/lib/galaxy/model/mapping.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/model/mapping.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 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 Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/web/controllers/dataset.py
--- a/lib/galaxy/web/controllers/dataset.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/web/controllers/dataset.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/web/controllers/history.py
--- a/lib/galaxy/web/controllers/history.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/web/controllers/history.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/web/controllers/tag.py
--- a/lib/galaxy/web/controllers/tag.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/web/controllers/tag.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/web/framework/__init__.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Mon Nov 30 16:47:18 2009 -0500
+++ b/lib/galaxy/web/framework/helpers/grids.py Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 templates/dataset/edit_attributes.mako
--- a/templates/dataset/edit_attributes.mako Mon Nov 30 16:47:18 2009 -0500
+++ b/templates/dataset/edit_attributes.mako Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 templates/history/view.mako
--- a/templates/history/view.mako Mon Nov 30 16:47:18 2009 -0500
+++ b/templates/history/view.mako Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 templates/root/history.mako
--- a/templates/root/history.mako Mon Nov 30 16:47:18 2009 -0500
+++ b/templates/root/history.mako Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 templates/tagging_common.mako
--- a/templates/tagging_common.mako Mon Nov 30 16:47:18 2009 -0500
+++ b/templates/tagging_common.mako Tue Dec 01 09:53:36 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 efed28fa6a5e -r e75b55cc9e08 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Mon Nov 30 16:47:18 2009 -0500
+++ b/universe_wsgi.ini.sample Tue Dec 01 09:53:36 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/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/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/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/a8234f4d7012
changeset: 3125:a8234f4d7012
user: rc
date: Mon Nov 30 09:35:21 2009 -0500
description:
Fix for request_events table migration script for MySQL & sqlite
diffstat:
lib/galaxy/model/migrate/versions/0027_request_events.py | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diffs (16 lines):
diff -r 341d7c1c5c9a -r a8234f4d7012 lib/galaxy/model/migrate/versions/0027_request_events.py
--- a/lib/galaxy/model/migrate/versions/0027_request_events.py Mon Nov 30 09:05:28 2009 -0500
+++ b/lib/galaxy/model/migrate/versions/0027_request_events.py Mon Nov 30 09:35:21 2009 -0500
@@ -73,9 +73,10 @@
"%s AS create_time," + \
"%s AS update_time," + \
"request.id AS request_id," + \
- "request.state AS state " + \
+ "request.state AS state," + \
+ "'%s' AS comment " + \
"FROM request;"
- cmd = cmd % ( nextval('request_event'), localtimestamp(), localtimestamp() )
+ cmd = cmd % ( nextval('request_event'), localtimestamp(), localtimestamp(), 'Imported from request table')
db_session.execute( cmd )
# Delete the state column
1
0
02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/9f7a2a3be0e7
changeset: 3127:9f7a2a3be0e7
user: guru
date: Mon Nov 30 11:59:54 2009 -0500
description:
Fixed a bug in 'fetch closest features' tool.
diffstat:
tools/new_operations/flanking_features.py | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diffs (22 lines):
diff -r 71b779fde315 -r 9f7a2a3be0e7 tools/new_operations/flanking_features.py
--- a/tools/new_operations/flanking_features.py Mon Nov 30 11:56:58 2009 -0500
+++ b/tools/new_operations/flanking_features.py Mon Nov 30 11:59:54 2009 -0500
@@ -121,7 +121,7 @@
map(outfields.append, result_down[-1].other) #The last element of result_down will be the closest element to the given interval
yield outfields
- if either:
+ if either and (result_up or result_down):
if result_up and result_down:
if abs(start - int(result_up[res_ind].end)) <= abs(end - int(result_down[-1].start)):
map(outfields.append, result_up[res_ind].other)
@@ -131,8 +131,7 @@
map(outfields.append, result_up[res_ind].other)
elif result_down:
map(outfields.append, result_down[-1].other) #The last element of result_down will be the closest element to the given interval
- yield outfields
-
+ yield outfields
def main():
options, args = doc_optparse.parse( __doc__ )
1
0