galaxy-dev
Threads by month
- ----- 2025 -----
- 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
- 10008 discussions

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/8d149264b777
changeset: 3122:8d149264b777
user: rc
date: Wed Nov 25 14:06:28 2009 -0500
description:
Request events & request rejection (resolves issue #221)
- added request_events table
- removed 'state' field in the request table
- added 'new' & 'rejected' request states
- color coded request states in the request grid
Grids framework
- added a confirm flag in grid operations which require confirmation before going through with operation
diffstat:
lib/galaxy/model/__init__.py | 35 +-
lib/galaxy/model/mapping.py | 16 +-
lib/galaxy/model/migrate/versions/0027_request_events.py | 94 ++++++
lib/galaxy/web/controllers/requests.py | 157 +++++++--
lib/galaxy/web/controllers/requests_admin.py | 299 +++++++++++++------
lib/galaxy/web/framework/helpers/grids.py | 4 +-
templates/admin/requests/events.mako | 36 ++
templates/admin/requests/reject.mako | 42 ++
templates/admin/requests/show_request.mako | 13 +-
templates/grid_base.mako | 6 +-
templates/requests/events.mako | 39 ++
templates/requests/show_request.mako | 17 +-
templates/sample/sample_events.mako | 43 +-
test/base/twilltestcase.py | 9 +-
test/functional/test_forms_and_requests.py | 30 +-
15 files changed, 651 insertions(+), 189 deletions(-)
diffs (1296 lines):
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/model/__init__.py Wed Nov 25 14:06:28 2009 -0500
@@ -1260,11 +1260,12 @@
self.content = content
class Request( object ):
- states = Bunch( UNSUBMITTED = 'Unsubmitted',
+ states = Bunch( NEW = 'New',
SUBMITTED = 'Submitted',
+ REJECTED = 'Rejected',
COMPLETE = 'Complete')
def __init__(self, name=None, desc=None, request_type=None, user=None,
- form_values=None, library=None, folder=None, state=False):
+ form_values=None, library=None, folder=None):
self.name = name
self.desc = desc
self.type = request_type
@@ -1272,19 +1273,39 @@
self.user = user
self.library = library
self.folder = folder
- self.state = state
self.samples_list = []
+ def state(self):
+ if self.events:
+ return self.events[0].state
+ return None
+ def last_comment(self):
+ if self.events:
+ if self.events[0].comment:
+ return self.events[0].comment
+ else:
+ return ''
+ return 'No comment'
def has_sample(self, sample_name):
for s in self.samples:
if s.name == sample_name:
return s
return False
+ def unsubmitted(self):
+ return self.state() in [ self.states.REJECTED, self.states.NEW ]
+ def rejected(self):
+ return self.state() == self.states.REJECTED
def submitted(self):
- return self.state == self.states.SUBMITTED
- def unsubmitted(self):
- return self.state == self.states.UNSUBMITTED
+ return self.state() == self.states.SUBMITTED
+ def new(self):
+ return self.state() == self.states.NEW
def complete(self):
- return self.state == self.states.COMPLETE
+ return self.state() == self.states.COMPLETE
+
+class RequestEvent( object ):
+ def __init__(self, request=None, request_state=None, comment=''):
+ self.request = request
+ self.state = request_state
+ self.comment = comment
class RequestType( object ):
def __init__(self, name=None, desc=None, request_form=None, sample_form=None):
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/mapping.py
--- a/lib/galaxy/model/mapping.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/model/mapping.py Wed Nov 25 14:06:28 2009 -0500
@@ -618,8 +618,15 @@
Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
Column( "library_id", Integer, ForeignKey( "library.id" ), index=True ),
Column( "folder_id", Integer, ForeignKey( "library_folder.id" ), index=True ),
+ Column( "deleted", Boolean, index=True, default=False ) )
+
+RequestEvent.table = Table('request_event', metadata,
+ Column( "id", Integer, primary_key=True),
+ Column( "create_time", DateTime, default=now ),
+ Column( "update_time", DateTime, default=now, onupdate=now ),
+ Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
Column( "state", TrimmedString( 255 ), index=True ),
- Column( "deleted", Boolean, index=True, default=False ) )
+ Column( "comment", TEXT ) )
Sample.table = Table('sample', metadata,
Column( "id", Integer, primary_key=True ),
@@ -768,9 +775,14 @@
folder=relation( LibraryFolder,
primaryjoin=( Request.table.c.folder_id == LibraryFolder.table.c.id ) ),
library=relation( Library,
- primaryjoin=( Request.table.c.library_id == Library.table.c.id ) )
+ primaryjoin=( Request.table.c.library_id == Library.table.c.id ) ),
+ events=relation( RequestEvent, backref="request",
+ order_by=desc(RequestEvent.table.c.update_time) )
) )
+assign_mapper( context, RequestEvent, RequestEvent.table,
+ properties=None )
+
assign_mapper( context, RequestType, RequestType.table,
properties=dict( states=relation( SampleState,
backref="request_type",
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/model/migrate/versions/0027_request_events.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/model/migrate/versions/0027_request_events.py Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,94 @@
+"""
+This migration script adds the request_event table and
+removes the state field in the request table
+"""
+from sqlalchemy import *
+from sqlalchemy.orm import *
+from sqlalchemy.exc import *
+from migrate import *
+from migrate.changeset import *
+
+import datetime
+now = datetime.datetime.utcnow
+
+import sys, logging
+log = logging.getLogger( __name__ )
+log.setLevel(logging.DEBUG)
+handler = logging.StreamHandler( sys.stdout )
+format = "%(name)s %(levelname)s %(asctime)s %(message)s"
+formatter = logging.Formatter( format )
+handler.setFormatter( formatter )
+log.addHandler( handler )
+
+# Need our custom types, but don't import anything else from model
+from galaxy.model.custom_types import *
+
+metadata = MetaData( migrate_engine )
+db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
+
+def display_migration_details():
+ print "========================================"
+ print "This migration script adds the request_event table and"
+ print "removes the state field in the request table"
+ print "========================================"
+
+def localtimestamp():
+ if migrate_engine.name == 'postgres' or migrate_engine.name == 'mysql':
+ return "LOCALTIMESTAMP"
+ elif migrate_engine.name == 'sqlite':
+ return "current_date || ' ' || current_time"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % db )
+
+def nextval( table, col='id' ):
+ if migrate_engine.name == 'postgres':
+ return "nextval('%s_%s_seq')" % ( table, col )
+ elif migrate_engine.name == 'mysql' or migrate_engine.name == 'sqlite':
+ return "null"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % migrate_engine.name )
+
+
+RequestEvent_table = Table('request_event', metadata,
+ Column( "id", Integer, primary_key=True),
+ Column( "create_time", DateTime, default=now ),
+ Column( "update_time", DateTime, default=now, onupdate=now ),
+ Column( "request_id", Integer, ForeignKey( "request.id" ), index=True ),
+ Column( "state", TrimmedString( 255 ), index=True ),
+ Column( "comment", TEXT ) )
+
+def upgrade():
+ display_migration_details()
+ # Load existing tables
+ metadata.reflect()
+ # Add new request_event table
+ try:
+ RequestEvent_table.create()
+ except Exception, e:
+ log.debug( "Creating request_event table failed: %s" % str( e ) )
+ # move the current state of all existing requests to the request_event table
+ cmd = \
+ "INSERT INTO request_event " + \
+ "SELECT %s AS id," + \
+ "%s AS create_time," + \
+ "%s AS update_time," + \
+ "request.id AS request_id," + \
+ "request.state AS state " + \
+ "FROM request;"
+ cmd = cmd % ( nextval('request_event'), localtimestamp(), localtimestamp() )
+ db_session.execute( cmd )
+
+ # Delete the state column
+ try:
+ Request_table = Table( "request", metadata, autoload=True )
+ except NoSuchTableError:
+ Request_table = None
+ log.debug( "Failed loading table request" )
+ if Request_table:
+ try:
+ Request_table.c.state.drop()
+ except Exception, e:
+ log.debug( "Deleting column 'state' to request table failed: %s" % ( str( e ) ) )
+
+def downgrade():
+ pass
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/controllers/requests.py
--- a/lib/galaxy/web/controllers/requests.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/controllers/requests.py Wed Nov 25 14:06:28 2009 -0500
@@ -28,27 +28,57 @@
return request.type.name
class LastUpdateColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
- return request.update_time
+ delta = datetime.utcnow() - request.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ return last_update
class StateColumn( grids.GridColumn ):
+ def __init__( self, col_name, key, model_class, event_class, filterable, link ):
+ grids.GridColumn.__init__(self, col_name, key=key, model_class=model_class, filterable=filterable, link=link)
+ self.event_class = event_class
+ def get_value(self, trans, grid, request):
+ if request.state() == request.states.REJECTED:
+ return '<div class="count-box state-color-error">%s</div>' % request.state()
+ elif request.state() == request.states.NEW:
+ return '<div class="count-box state-color-queued">%s</div>' % request.state()
+ elif request.state() == request.states.SUBMITTED:
+ return '<div class="count-box state-color-running">%s</div>' % request.state()
+ elif request.state() == request.states.COMPLETE:
+ return '<div class="count-box state-color-ok">%s</div>' % request.state()
+ return request.state()
def filter( self, db_session, query, column_filter ):
""" Modify query to filter request by state. """
if column_filter == "All":
return query
if column_filter:
- query = query.filter( model.Request.state == column_filter )
- return query
+ # select r.id, r.name, re.id, re.state
+ # from request as r, request_event as re
+ # where re.request_id=r.id and re.state='Complete' and re.create_time in
+ # (select MAX( create_time)
+ # from request_event
+ # group by request_id)
+ q = query.join(self.event_class.table)\
+ .filter( self.model_class.table.c.id==self.event_class.table.c.request_id )\
+ .filter( self.event_class.table.c.state==column_filter )\
+ .filter( self.event_class.table.c.id.in_(select(columns=[func.max(self.event_class.table.c.id)],
+ from_obj=self.event_class.table,
+ group_by=self.event_class.table.c.request_id)))
+ return q
def get_accepted_filters( self ):
- """ Returns a list of accepted filters for this column. """
- accepted_filter_labels_and_vals = [ model.Request.states.UNSUBMITTED,
- model.Request.states.SUBMITTED,
- model.Request.states.COMPLETE,
- "All"]
- accepted_filters = []
- for val in accepted_filter_labels_and_vals:
- label = val.lower()
- args = { self.key: val }
- accepted_filters.append( grids.GridColumnFilter( label, args) )
- return accepted_filters
+ """ Returns a list of accepted filters for this column. """
+ accepted_filter_labels_and_vals = [ model.Request.states.NEW,
+ model.Request.states.REJECTED,
+ model.Request.states.SUBMITTED,
+ model.Request.states.COMPLETE,
+ "All"]
+ accepted_filters = []
+ for val in accepted_filter_labels_and_vals:
+ label = val.lower()
+ args = { self.key: val }
+ accepted_filters.append( grids.GridColumnFilter( label, args) )
+ return accepted_filters
class DeletedColumn( grids.GridColumn ):
def get_accepted_filters( self ):
""" Returns a list of accepted filters for this column. """
@@ -66,7 +96,7 @@
num_rows_per_page = 50
preserve_state = True
use_paging = True
- default_filter = dict( deleted="False", state=model.Request.states.UNSUBMITTED)
+ default_filter = dict( deleted="False", state=model.Request.states.NEW)
columns = [
NameColumn( "Name",
key="name",
@@ -83,23 +113,27 @@
TypeColumn( "Type" ),
LastUpdateColumn( "Last update",
format=time_ago ),
- StateColumn( "State",
- key='state',
- filterable="advanced"),
DeletedColumn( "Deleted",
key="deleted",
- visible=True,
- filterable="advanced" )
+ visible=False,
+ filterable="advanced" ),
+ StateColumn( "State",
+ model_class=model.Request,
+ event_class=model.RequestEvent,
+ key='state',
+ filterable="advanced",
+ link=( lambda item: iff( item.deleted, None, dict( operation="events", id=item.id ) ) ) )
]
columns.append( grids.MulticolFilterColumn( "Search",
- cols_to_filter=[ columns[0], columns[1] ],
+ cols_to_filter=[ columns[0], columns[1], columns[6] ],
key="free-text-search",
visible=False,
filterable="standard" ) )
operations = [
- grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ) ),
+ grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ),
+ confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." ),
grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
- grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
+ grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.new() ) ),
grids.GridOperation( "Undelete", allow_multiple=True, condition=( lambda item: item.deleted ) )
]
@@ -145,9 +179,23 @@
return self.__undelete_request( trans, **kwd )
elif operation == "edit":
return self.__edit_request( trans, **kwd )
+ elif operation == "events":
+ return self.__request_events( trans, **kwd )
+ # if there are one or more requests that has been rejected by the admin
+ # recently, then show a msg as a reminder to the user
+ rlist = trans.sa_session.query( trans.app.model.Request ) \
+ .filter( trans.app.model.Request.table.c.deleted==False ) \
+ .filter( trans.app.model.Request.table.c.user_id==trans.user.id )
+ rejected = 0
+ for r in rlist:
+ if r.rejected():
+ rejected = rejected + 1
+ if rejected:
+ kwd['status'] = 'warning'
+ kwd['message'] = "%d requests (highlighted in red) were rejected, click on the request name for details." \
+ % rejected
# Render the list view
return self.request_grid( trans, **kwd )
-
def __show_request(self, trans, **kwd):
params = util.Params( kwd )
msg = util.restore_text( params.get( 'msg', '' ) )
@@ -172,6 +220,28 @@
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode='False',
msg=msg, messagetype=messagetype )
+ def __request_events(self, trans, **kwd):
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ events_list = []
+ all_events = request.events
+ for event in all_events:
+ delta = datetime.utcnow() - event.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ events_list.append((event.state, last_update, event.comment))
+ return trans.fill_template( '/requests/events.mako',
+ events_list=events_list, request=request)
def request_details(self, trans, id):
'''
Shows the request details
@@ -187,7 +257,7 @@
value=request.type.name,
helptext=''))
request_details.append(dict(label='State',
- value=request.state,
+ value=request.state(),
helptext=''))
request_details.append(dict(label='Date created',
value=request.create_time,
@@ -366,9 +436,9 @@
trans.sa_session.add( sample )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests',
- action='list',
- operation='show_request',
- id=trans.security.encode_id(request.id)) )
+ action='list',
+ operation='show_request',
+ id=trans.security.encode_id(request.id)) )
elif params.get('edit_samples_button', False) == 'Edit samples':
edit_mode = 'True'
return trans.fill_template( '/requests/show_request.mako',
@@ -700,10 +770,15 @@
if not request:
request = trans.app.model.Request(name, desc, request_type,
trans.user, form_values,
- library=library, folder=folder,
- state=trans.app.model.Request.states.UNSUBMITTED)
+ library=library, folder=folder)
trans.sa_session.add( request )
trans.sa_session.flush()
+ trans.sa_session.refresh( request )
+ # create an event with state 'New' for this new request
+ comments = "Request created."
+ event = trans.app.model.RequestEvent(request, request.states.NEW, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
else:
request.name = name
request.desc = desc
@@ -712,7 +787,6 @@
request.values = form_values
request.library = library
request.folder = folder
- request.state = trans.app.model.Request.states.UNSUBMITTED
trans.sa_session.add( request )
trans.sa_session.flush()
return request
@@ -731,7 +805,7 @@
message="Invalid request ID",
**kwd) )
if params.get('show', False) == 'True':
- return self.__edit_request(trans, **kwd)
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
elif params.get('save_changes_request_button', False) == 'Save changes' \
or params.get('edit_samples_button', False) == 'Edit samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
@@ -760,7 +834,7 @@
messagetype='done',
**new_kwd) )
elif params.get('refresh', False) == 'true':
- return self.__edit_request(trans, **kwd)
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
def __edit_request(self, trans, **kwd):
try:
@@ -819,7 +893,7 @@
message=msg,
**kwd) )
# a request cannot be deleted once its submitted
- if not request.unsubmitted():
+ if not request.new():
delete_failed.append(request.name)
else:
request.deleted = True
@@ -870,21 +944,22 @@
msg = self.__validate(trans, request)
if msg:
return trans.response.send_redirect( web.url_for( controller='requests',
- action='edit',
+ action='list',
+ operation='edit',
messagetype = 'error',
msg=msg,
- request_id=request.id,
- show='True') )
+ id=trans.security.encode_id(request.id) ))
+ # change the request state to 'Submitted'
+ comments = "Request moved to 'Submitted' state."
+ event = trans.app.model.RequestEvent(request, request.states.SUBMITTED, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
# get the new state
new_state = request.type.states[0]
for s in request.samples:
event = trans.app.model.SampleEvent(s, new_state, 'Samples submitted to the system')
trans.sa_session.add( event )
trans.sa_session.flush()
- # change request's submitted field
- request.state = request.states.SUBMITTED
- trans.sa_session.add( request )
- trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
id=trans.security.encode_id(request.id),
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/controllers/requests_admin.py
--- a/lib/galaxy/web/controllers/requests_admin.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/controllers/requests_admin.py Wed Nov 25 14:06:28 2009 -0500
@@ -8,6 +8,8 @@
from galaxy.web.form_builder import *
from datetime import datetime, timedelta
from galaxy.web.controllers.forms import get_all_forms
+from sqlalchemy.sql.expression import func, and_
+from sqlalchemy.sql import select
log = logging.getLogger( __name__ )
@@ -31,27 +33,58 @@
return request.type.name
class LastUpdateColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
- return request.update_time
+ delta = datetime.utcnow() - request.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ return last_update
class StateColumn( grids.GridColumn ):
+ def __init__( self, col_name, key, model_class, event_class, filterable, link ):
+ grids.GridColumn.__init__(self, col_name, key=key, model_class=model_class, filterable=filterable, link=link)
+ self.event_class = event_class
+ def get_value(self, trans, grid, request):
+ if request.state() == request.states.REJECTED:
+ return '<div class="count-box state-color-error">%s</div>' % request.state()
+ elif request.state() == request.states.NEW:
+ return '<div class="count-box state-color-queued">%s</div>' % request.state()
+ elif request.state() == request.states.SUBMITTED:
+ return '<div class="count-box state-color-running">%s</div>' % request.state()
+ elif request.state() == request.states.COMPLETE:
+ return '<div class="count-box state-color-ok">%s</div>' % request.state()
+ return request.state()
def filter( self, db_session, query, column_filter ):
""" Modify query to filter request by state. """
if column_filter == "All":
return query
if column_filter:
- query = query.filter( model.Request.state == column_filter )
- return query
+ # select r.id, r.name, re.id, re.state
+ # from request as r, request_event as re
+ # where re.request_id=r.id and re.state='Complete' and re.create_time in
+ # (select MAX( create_time)
+ # from request_event
+ # group by request_id)
+ q = query.join(self.event_class.table)\
+ .filter( self.model_class.table.c.id==self.event_class.table.c.request_id )\
+ .filter( self.event_class.table.c.state==column_filter )\
+ .filter( self.event_class.table.c.id.in_(select(columns=[func.max(self.event_class.table.c.id)],
+ from_obj=self.event_class.table,
+ group_by=self.event_class.table.c.request_id)))
+ #print column_filter, q
+ return q
def get_accepted_filters( self ):
- """ Returns a list of accepted filters for this column. """
- accepted_filter_labels_and_vals = [ model.Request.states.UNSUBMITTED,
- model.Request.states.SUBMITTED,
- model.Request.states.COMPLETE,
- "All"]
- accepted_filters = []
- for val in accepted_filter_labels_and_vals:
- label = val.lower()
- args = { self.key: val }
- accepted_filters.append( grids.GridColumnFilter( label, args) )
- return accepted_filters
+ """ Returns a list of accepted filters for this column. """
+ accepted_filter_labels_and_vals = [ model.Request.states.NEW,
+ model.Request.states.REJECTED,
+ model.Request.states.SUBMITTED,
+ model.Request.states.COMPLETE,
+ "All"]
+ accepted_filters = []
+ for val in accepted_filter_labels_and_vals:
+ label = val.lower()
+ args = { self.key: val }
+ accepted_filters.append( grids.GridColumnFilter( label, args) )
+ return accepted_filters
class UserColumn( grids.TextColumn ):
def get_value(self, trans, grid, request):
return request.user.email
@@ -86,20 +119,25 @@
filterable="advanced" ),
SamplesColumn( "Sample(s)",
link=( lambda item: iff( item.deleted, None, dict( operation="show_request", id=item.id ) ) ), ),
- TypeColumn( "Type" ),
+ TypeColumn( "Type",
+ link=( lambda item: iff( item.deleted, None, dict( operation="view_type", id=item.type.id ) ) ), ),
LastUpdateColumn( "Last update",
format=time_ago ),
- StateColumn( "State",
- key='state',
- filterable="advanced"),
- UserColumn( "User",
- key='user.email',
- model_class=model.Request,
- filterable="advanced" ),
DeletedColumn( "Deleted",
key="deleted",
- visible=True,
- filterable="advanced" )
+ visible=False,
+ filterable="advanced" ),
+ StateColumn( "State",
+ model_class=model.Request,
+ event_class=model.RequestEvent,
+ key='state',
+ filterable="advanced",
+ link=( lambda item: iff( item.deleted, None, dict( operation="events", id=item.id ) ) ),
+ ),
+ UserColumn( "User",
+ #key='user.email',
+ model_class=model.Request)
+
]
columns.append( grids.MulticolFilterColumn( "Search",
cols_to_filter=[ columns[0], columns[1], columns[6] ],
@@ -107,10 +145,11 @@
visible=False,
filterable="standard" ) )
operations = [
- grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ) ),
+ grids.GridOperation( "Submit", allow_multiple=False, condition=( lambda item: not item.deleted and item.unsubmitted() and item.samples ),
+ confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." ),
grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: not item.deleted ) ),
grids.GridOperation( "Reject", allow_multiple=False, condition=( lambda item: not item.deleted and item.submitted() ) ),
- grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.unsubmitted() ) ),
+ grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.new() ) ),
grids.GridOperation( "Undelete", condition=( lambda item: item.deleted ) ),
]
global_actions = [
@@ -227,6 +266,11 @@
return self.__edit_request( trans, **kwd )
elif operation == "reject":
return self.__reject_request( trans, **kwd )
+ elif operation == "events":
+ return self.__request_events( trans, **kwd )
+ elif operation == "view_type":
+ return self.__view_request_type( trans, **kwd )
+
# Render the grid view
return self.request_grid( trans, **kwd )
def __show_request(self, trans, **kwd):
@@ -253,7 +297,52 @@
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode='False',
msg=msg, messagetype=messagetype )
-
+ @web.expose
+ @web.require_admin
+ def edit(self, trans, **kwd):
+ params = util.Params( kwd )
+ msg = util.restore_text( params.get( 'msg', '' ) )
+ messagetype = params.get( 'messagetype', 'done' )
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
+ except:
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message="Invalid request ID",
+ **kwd) )
+ if params.get('show', False) == 'True':
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
+ elif params.get('save_changes_request_button', False) == 'Save changes' \
+ or params.get('edit_samples_button', False) == 'Edit samples':
+ request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
+ if not util.restore_text(params.get('name', '')):
+ msg = 'Please enter the <b>Name</b> of the request'
+ kwd['messagetype'] = 'error'
+ kwd['msg'] = msg
+ kwd['show'] = 'True'
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='edit',
+ **kwd) )
+ request = self.__save_request(trans, request, **kwd)
+ msg = 'The changes made to the request named %s has been saved' % request.name
+ if params.get('save_changes_request_button', False) == 'Save changes':
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ message=msg ,
+ status='done') )
+ elif params.get('edit_samples_button', False) == 'Edit samples':
+ new_kwd = {}
+ new_kwd['request_id'] = request.id
+ new_kwd['edit_samples_button'] = 'Edit samples'
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='show_request',
+ msg=msg ,
+ messagetype='done',
+ **new_kwd) )
+ elif params.get('refresh', False) == 'true':
+ return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
+
def __edit_request(self, trans, **kwd):
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
@@ -311,7 +400,7 @@
message=msg,
**kwd) )
# a request cannot be deleted once its submitted
- if not request.unsubmitted():
+ if not request.new():
delete_failed.append(request.name)
else:
request.deleted = True
@@ -362,18 +451,24 @@
msg = self.__validate(trans, request)
if msg:
return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='edit',
+ action='list',
+ operation='edit',
messagetype = 'error',
msg=msg,
- request_id=request.id,
- show='True') )
- # get the new state
+ id=trans.security.encode_id(request.id) ) )
+ # change the request state to 'Submitted'
+ if request.user.email is not trans.user:
+ comments = "Request moved to 'Submitted' state by admin (%s) on behalf of %s." % (trans.user.email, request.user.email)
+ else:
+ comments = ""
+ event = trans.app.model.RequestEvent(request, request.states.SUBMITTED, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
+ # change the state of each of the samples of thus request
new_state = request.type.states[0]
for s in request.samples:
event = trans.app.model.SampleEvent(s, new_state, 'Samples submitted to the system')
trans.sa_session.add( event )
- # change request's submitted field
- request.state = request.states.SUBMITTED
trans.sa_session.add( request )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests_admin',
@@ -393,15 +488,64 @@
status='error',
message=msg,
**kwd) )
- # change request's submitted field
- request.state = request.states.UNSUBMITTED
- trans.sa_session.add( request )
+ return trans.fill_template( '/admin/requests/reject.mako',
+ request=request)
+ @web.expose
+ @web.require_admin
+ def reject(self, trans, **kwd):
+ params = util.Params( kwd )
+ if params.get('cancel_reject_button', False):
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ operation='show_request',
+ id=kwd['id']))
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ # validate
+ if not params.get('comment', ''):
+ return trans.fill_template( '/admin/requests/reject.mako',
+ request=request, messagetype='error',
+ msg='A comment is required for rejecting a request.')
+ # create an event with state 'Rejected' for this request
+ comments = util.restore_text( params.comment )
+ event = trans.app.model.RequestEvent(request, request.states.REJECTED, comments)
+ trans.sa_session.add( event )
trans.sa_session.flush()
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='done',
- message='The request <b>%s</b> is now unsubmitted.' % request.name
- ) )
+ message='Request <b>%s</b> has been rejected.' % request.name) )
+
+ def __request_events(self, trans, **kwd):
+ try:
+ request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
+ except:
+ msg = "Invalid request ID"
+ log.warn( msg )
+ return trans.response.send_redirect( web.url_for( controller='requests_admin',
+ action='list',
+ status='error',
+ message=msg,
+ **kwd) )
+ events_list = []
+ all_events = request.events
+ for event in all_events:
+ delta = datetime.utcnow() - event.update_time
+ if delta > timedelta( minutes=60 ):
+ last_update = '%s hours' % int( delta.seconds / 60 / 60 )
+ else:
+ last_update = '%s minutes' % int( delta.seconds / 60 )
+ events_list.append((event.state, last_update, event.comment))
+ return trans.fill_template( '/admin/requests/events.mako',
+ events_list=events_list, request=request)
#
#---- Request Creation ----------------------------------------------------------
#
@@ -732,9 +876,18 @@
if not request:
request = trans.app.model.Request(name, desc, request_type,
user, form_values,
- library=library, folder=folder,
- state=trans.app.model.Request.states.UNSUBMITTED)
+ library=library, folder=folder)
trans.sa_session.add( request )
+ trans.sa_session.flush()
+ trans.sa_session.refresh( request )
+ # create an event with state 'New' for this new request
+ if request.user.email is not trans.user:
+ comments = "Request created by admin (%s) on behalf of %s." % (trans.user.email, request.user.email)
+ else:
+ comments = "Request created."
+ event = trans.app.model.RequestEvent(request, request.states.NEW, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
else:
request.name = name
request.desc = desc
@@ -744,58 +897,14 @@
request.library = library
request.folder = folder
trans.sa_session.add( request )
- trans.sa_session.flush()
+ trans.sa_session.flush()
+
return request
#
-#---- Request Editing ----------------------------------------------------------
+#---- Request Page ----------------------------------------------------------
#
- @web.expose
- @web.require_admin
- def edit(self, trans, **kwd):
- params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
- try:
- request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
- except:
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='list',
- status='error',
- message="Invalid request ID",
- **kwd) )
- if params.get('show', False) == 'True':
- return self.__edit_request(trans, request.id, **kwd)
- elif params.get('save_changes_request_button', False) == 'Save changes' \
- or params.get('edit_samples_button', False) == 'Edit samples':
- request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
- if not util.restore_text(params.get('name', '')):
- msg = 'Please enter the <b>Name</b> of the request'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
- kwd['show'] = 'True'
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='edit',
- **kwd) )
- request = self.__save_request(trans, request, **kwd)
- msg = 'The changes made to the request named %s has been saved' % request.name
- if params.get('save_changes_request_button', False) == 'Save changes':
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='list',
- message=msg ,
- status='done') )
- elif params.get('edit_samples_button', False) == 'Edit samples':
- new_kwd = {}
- new_kwd['request_id'] = request.id
- new_kwd['edit_samples_button'] = 'Edit samples'
- return trans.response.send_redirect( web.url_for( controller='requests_admin',
- action='show_request',
- msg=msg ,
- messagetype='done',
- **new_kwd) )
- elif params.get('refresh', False) == 'true':
- return self.__edit_request(trans, request.id, **kwd)
def __update_samples(self, request, **kwd):
'''
This method retrieves all the user entered sample information and
@@ -1013,7 +1122,7 @@
value=request.type.name,
helptext=''))
request_details.append(dict(label='State',
- value=request.state,
+ value=request.state(),
helptext=''))
request_details.append(dict(label='Date created',
value=request.create_time,
@@ -1167,11 +1276,13 @@
if s.current_state().id != request.type.states[-1].id:
complete = False
if complete:
- request.state = request.states.COMPLETE
- else:
- request.state = request.states.SUBMITTED
- trans.sa_session.add( request )
- trans.sa_session.flush()
+ # change the request state to 'Complete'
+ comments = "All samples of this request are in the last sample state (%s)." % request.type.states[-1].name
+ event = trans.app.model.RequestEvent(request, request.states.COMPLETE, comments)
+ trans.sa_session.add( event )
+ trans.sa_session.flush()
+# trans.sa_session.add( request )
+# trans.sa_session.flush()
def change_state(self, trans, sample):
possible_states = sample.request.type.states
curr_state = sample.current_state()
diff -r 5761948422a8 -r 8d149264b777 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Tue Nov 24 14:53:19 2009 -0500
+++ b/lib/galaxy/web/framework/helpers/grids.py Wed Nov 25 14:06:28 2009 -0500
@@ -402,7 +402,7 @@
return query.filter( complete_filter )
class GridOperation( object ):
- def __init__( self, label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False ):
+ def __init__( self, label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False, confirm=None ):
self.label = label
self.key = key
self.allow_multiple = allow_multiple
@@ -411,6 +411,8 @@
self.target = target
self.url_args = url_args
self.async_compatible = async_compatible
+ # if 'confirm' is set, then ask before completing the operation
+ self.confirm = confirm
def get_url_args( self, item ):
if self.url_args:
temp = dict( self.url_args )
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/events.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/admin/requests/events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,36 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+<h2>History of Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+</ul>
+<h3>User: ${request.user.email}</h3>
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Last Update</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/reject.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/admin/requests/reject.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,42 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<h2>Reject Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>Events</span></a>
+ </li>
+</ul>
+<h3>User: ${request.user.email}</h3>
+
+
+
+<div class="toolForm">
+ <div class="toolFormTitle">Reject request</div>
+ <form name="event" action="${h.url_for( controller='requests_admin', action='reject', id=trans.security.encode_id(request.id))}" method="post" >
+ <div class="form-row">
+ Rejecting this request will move the request state to <b>Rejected</b>.
+ </div>
+ <div class="form-row">
+ <label>Comments</label>
+ <textarea name="comment" rows="5" cols="40"></textarea>
+ <div class="toolParamHelp" style="clear: both;">
+ Required
+ </div>
+ </div>
+ <div class="form-row">
+ <input type="submit" name="reject_button" value="Reject"/>
+ <input type="submit" name="cancel_reject_button" value="Cancel"/>
+ </div>
+ </form>
+ </div>
+</div>
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 templates/admin/requests/show_request.mako
--- a/templates/admin/requests/show_request.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/admin/requests/show_request.mako Wed Nov 25 14:06:28 2009 -0500
@@ -5,11 +5,16 @@
${render_msg( msg, messagetype )}
%endif
+%if request.rejected():
+ ${render_msg( "Reason for rejection: "+request.last_comment(), "warning" )}
+%endif
+
<div class="grid-header">
<h2>Sequencing Request "${request.name}"</h2>
</div>
<ul class="manage-table-actions">
+
%if request.unsubmitted() and request.samples:
<li>
<a class="action-button" confirm="More samples cannot be added to this request once it is submitted. Click OK to submit." href="${h.url_for( controller='requests_admin', action='list', operation='Submit', id=trans.security.encode_id(request.id) )}">
@@ -28,6 +33,10 @@
<span>Bar codes</span></a>
</li>
%endif
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>History</span></a>
+ </li>
</ul>
@@ -82,7 +91,7 @@
%if grid_index == 0:
<td>${sample.bar_code}</td>
<td>
- %if sample.request.unsubmitted():
+ %if sample.request.new():
Unsubmitted
%else:
<a href="${h.url_for( controller='requests_admin', action='show_events', sample_id=sample.id)}">${sample.current_state().name}</a>
@@ -117,6 +126,8 @@
%else:
<i>None</i>
%endif
+ %elif rd['label'] == 'State':
+ <a href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
%else:
${rd['value']}
%endif
diff -r 5761948422a8 -r 8d149264b777 templates/grid_base.mako
--- a/templates/grid_base.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/grid_base.mako Wed Nov 25 14:06:28 2009 -0500
@@ -860,7 +860,11 @@
if operation.target:
target = "target='" + operation.target + "'"
%>
- <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %if operation.confirm:
+ <a class="action-button" ${target} confirm="${operation.confirm}" href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %else:
+ <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %endif
%endif
%endfor
</div>
diff -r 5761948422a8 -r 8d149264b777 templates/requests/events.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/requests/events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -0,0 +1,39 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+<h2>History of Sequencing Request "${request.name}"</h2>
+<ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a>
+ </li>
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list')}">
+ <span>Browse all requests</span></a>
+ </li>
+</ul>
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
+
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Last Update</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
diff -r 5761948422a8 -r 8d149264b777 templates/requests/show_request.mako
--- a/templates/requests/show_request.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/requests/show_request.mako Wed Nov 25 14:06:28 2009 -0500
@@ -6,6 +6,9 @@
${render_msg( msg, messagetype )}
%endif
+%if request.rejected():
+ ${render_msg( "Reason for rejection: "+request.last_comment(), "warning" )}
+%endif
<div class="grid-header">
<h2>Sequencing Request "${request.name}"</h2>
@@ -19,6 +22,10 @@
</li>
%endif
<li>
+ <a class="action-button" href="${h.url_for( controller='requests', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>History</span></a>
+ </li>
+ <li>
<a class="action-button" href="${h.url_for( controller='requests', action='list')}">
<span>Browse requests</span></a>
</li>
@@ -73,7 +80,7 @@
</td>
%if grid_index == 0:
<td>
- %if sample.request.unsubmitted():
+ %if sample.request.new():
Unsubmitted
%else:
<a href="${h.url_for( controller='requests', action='show_events', sample_id=sample.id)}">${sample.current_state().name}</a>
@@ -105,9 +112,11 @@
%if rd['label'] == 'Data library':
%if rd['value']:
<a href="${h.url_for( controller='library', action='browse_library', obj_id=request.library.id )}">${rd['value']}</a>
- %else:
- <i>None</i>
- %endif
+ %elif rd['label'] == 'State':
+ <a href="${h.url_for( controller='requests', action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
+ %else:
+ <i>None</i>
+ %endif
%else:
${rd['value']}
%endif
diff -r 5761948422a8 -r 8d149264b777 templates/sample/sample_events.mako
--- a/templates/sample/sample_events.mako Tue Nov 24 14:53:19 2009 -0500
+++ b/templates/sample/sample_events.mako Wed Nov 25 14:06:28 2009 -0500
@@ -21,24 +21,25 @@
${render_msg( msg, messagetype )}
%endif
-
-<table class="grid">
- <thead>
- <tr>
- <th>State</th>
- <th>Description</th>
- <th>Updated</th>
- <th>Comments</th>
- </tr>
- </thead>
- <tbody>
- %for state, desc, updated, comments in events_list:
- <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
- <td><b><a>${state}</a></b></td>
- <td><a>${desc}</a></td>
- <td><a>${updated}</a></td>
- <td><a>${comments}</a></td>
- </tr>
- %endfor
- </tbody>
-</table>
\ No newline at end of file
+<div class="toolForm">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>State</th>
+ <th>Description</th>
+ <th>Updated</th>
+ <th>Comments</th>
+ </tr>
+ </thead>
+ <tbody>
+ %for state, desc, updated, comments in events_list:
+ <tr class="libraryRow libraryOrFolderRow" id="libraryRow">
+ <td><b><a>${state}</a></b></td>
+ <td><a>${desc}</a></td>
+ <td><a>${updated}</a></td>
+ <td><a>${comments}</a></td>
+ </tr>
+ %endfor
+ </tbody>
+ </table>
+</div>
\ No newline at end of file
diff -r 5761948422a8 -r 8d149264b777 test/base/twilltestcase.py
--- a/test/base/twilltestcase.py Tue Nov 24 14:53:19 2009 -0500
+++ b/test/base/twilltestcase.py Wed Nov 25 14:06:28 2009 -0500
@@ -1298,10 +1298,15 @@
self.home()
self.visit_url( "%s/requests_admin/list?operation=Submit&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
self.check_page_for_string( 'The request <b>%s</b> has been submitted.' % request_name )
- def reject_request( self, request_id, request_name ):
+ def reject_request( self, request_id, request_name, comment ):
self.home()
self.visit_url( "%s/requests_admin/list?operation=Reject&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
- self.check_page_for_string( 'The request <b>%s</b> is now unsubmitted.' % request_name )
+ self.check_page_for_string( 'Reject Sequencing Request "%s"' % request_name )
+ tc.fv( "1", "comment", comment )
+ tc.submit( "reject_button" )
+ self.check_page_for_string( 'Request <b>%s</b> has been rejected.' % request_name )
+ self.visit_url( "%s/requests/list?sort=-create_time&operation=show_request&id=%s" % ( self.url, self.security.encode_id( request_id ) ))
+ self.check_page_for_string( comment )
def add_bar_codes( self, request_id, request_name, bar_codes ):
self.home()
self.visit_url( "%s/requests_admin/bar_codes?request_id=%i" % (self.url, request_id) )
diff -r 5761948422a8 -r 8d149264b777 test/functional/test_forms_and_requests.py
--- a/test/functional/test_forms_and_requests.py Tue Nov 24 14:53:19 2009 -0500
+++ b/test/functional/test_forms_and_requests.py Wed Nov 25 14:06:28 2009 -0500
@@ -194,9 +194,9 @@
.filter( and_( galaxy.model.Request.table.c.name==request_name,
galaxy.model.Request.table.c.deleted==False ) ) \
.first()
- # check if the request's state is now set to 'unsubmitted'
- assert request_one.state is not request_one.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_one.name, request_one.states.UNSUBMITTED )
+ # check if the request's state is now set to 'new'
+ assert request_one.state is not request_one.states.NEW, "The state of the request '%s' should be set to '%s'" \
+ % ( request_one.name, request_one.states.NEW )
# sample fields
samples = [ ( 'Sample One', [ 'S1 Field 0 Value' ] ),
( 'Sample Two', [ 'S2 Field 0 Value' ] ) ]
@@ -207,8 +207,8 @@
self.edit_request(request_one.id, request_one.name, request_one.name+' (Renamed)',
request_one.desc+' (Re-described)', library_one.id, folder_one.id, fields)
sa_session.refresh( request_one )
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_grid(state='Unsubmitted', request_name=request_one.name)
+ # check if the request is showing in the 'new' filter
+ self.check_request_grid(state='New', request_name=request_one.name)
# submit the request
self.submit_request( request_one.id, request_one.name )
sa_session.refresh( request_one )
@@ -257,11 +257,11 @@
.filter( and_( galaxy.model.Request.table.c.name==request_name,
galaxy.model.Request.table.c.deleted==False ) ) \
.first()
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_admin_grid(state='Unsubmitted', request_name=request_two.name)
- # check if the request's state is now set to 'unsubmitted'
- assert request_two.state is not request_two.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_two.name, request_two.states.UNSUBMITTED )
+ # check if the request is showing in the 'new' filter
+ self.check_request_admin_grid(state='New', request_name=request_two.name)
+ # check if the request's state is now set to 'new'
+ assert request_two.state is not request_two.states.NEW, "The state of the request '%s' should be set to '%s'" \
+ % ( request_two.name, request_two.states.NEW )
# sample fields
samples = [ ( 'Sample One', [ 'S1 Field 0 Value' ] ),
( 'Sample Two', [ 'S2 Field 0 Value' ] ) ]
@@ -282,10 +282,10 @@
'''Testing rejecting a request'''
self.logout()
self.login( email='test(a)bx.psu.edu' )
- self.reject_request( request_two.id, request_two.name )
+ self.reject_request( request_two.id, request_two.name, "Rejection test comment" )
sa_session.refresh( request_two )
- # check if the request is showing in the 'unsubmitted' filter
- self.check_request_admin_grid(state='Unsubmitted', request_name=request_two.name)
+ # check if the request is showing in the 'rejected' filter
+ self.check_request_admin_grid(state='Rejected', request_name=request_two.name)
# check if the request's state is now set to 'submitted'
- assert request_two.state is not request_two.states.UNSUBMITTED, "The state of the request '%s' should be set to '%s'" \
- % ( request_two.name, request_two.states.UNSUBMITTED )
+ assert request_two.state is not request_two.states.REJECTED, "The state of the request '%s' should be set to '%s'" \
+ % ( request_two.name, request_two.states.REJECTED )
1
0

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/341d7c1c5c9a
changeset: 3124:341d7c1c5c9a
user: Kelly Vincent <kpvincent(a)bx.psu.edu>
date: Mon Nov 30 09:05:28 2009 -0500
description:
Added usage information, added/updated relevant test files, and got all tests working for Lastz
diffstat:
test-data/lastz_wrapper_out1.sam | 2 -
test-data/lastz_wrapper_out2.tabular | 453 +++++++++++++++++++++++++++++++++++++
tools/sr_mapping/lastz_wrapper.py | 106 +++++---
tools/sr_mapping/lastz_wrapper.xml | 39 +-
4 files changed, 539 insertions(+), 61 deletions(-)
diffs (742 lines):
diff -r efdb6fb5de34 -r 341d7c1c5c9a test-data/lastz_wrapper_out1.sam
--- a/test-data/lastz_wrapper_out1.sam Fri Nov 27 10:53:50 2009 -0500
+++ b/test-data/lastz_wrapper_out1.sam Mon Nov 30 09:05:28 2009 -0500
@@ -1,5 +1,3 @@
-@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 *
diff -r efdb6fb5de34 -r 341d7c1c5c9a test-data/lastz_wrapper_out2.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/lastz_wrapper_out2.tabular Mon Nov 30 09:05:28 2009 -0500
@@ -0,0 +1,453 @@
+#score name1 strand1 size1 start1 zstart1 end1 length1 text1 name2 strand2 size2 start2 zstart2 end2 start2+ zstart2+ end2+ length2 text2 diff cigar identity idPct coverage covPct gaprate gapPct diagonal shingle
+3311 PHIX174 + 5386 4295 4294 4329 35 CCCCCAACTTGATATTAATAACACTATAGACCACC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CCCCCAACTTGATATTAATAACACTATAGACCACC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4293 NA
+3429 PHIX174 + 5386 3522 3521 3557 36 ATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3521 NA
+3429 PHIX174 + 5386 229 228 264 36 GATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 228 NA
+3411 PHIX174 + 5386 2071 2070 2106 36 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2070 NA
+3311 PHIX174 + 5386 1067 1066 1101 35 GGTCAGATTGGTCGTCTTATTACCATTTCAACTAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GGTCAGATTGGTCGTCTTATTACCATTTCAACTAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1065 NA
+3429 PHIX174 + 5386 1788 1787 1823 36 GTCGTGTTCAACAGACCTATAAACATTCTGTGCCGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCGTGTTCAACAGACCTATAAACATTCTGTGCCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1787 NA
+3393 PHIX174 + 5386 1193 1192 1228 36 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1192 NA
+3206 PHIX174 + 5386 4563 4562 4598 36 GGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTTGGTTTATCGTTTTTGACACTCTCACGTTGTCT .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4562 NA
+3447 PHIX174 + 5386 2668 2667 2703 36 GTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2667 NA
+3402 PHIX174 + 5386 4248 4247 4283 36 GTTACTGAGAAGTTAATGGATGAATTGGCACAATGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTACTGAGAAGTTAATGGATGAATTGGCACAATGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4247 NA
+3393 PHIX174 + 5386 2863 2862 2898 36 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2862 NA
+3402 PHIX174 + 5386 2557 2556 2592 36 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2556 NA
+3184 PHIX174 + 5386 2511 2510 2544 34 GTCAACGTTATATTTTGATAGTTTGACGGTTAAT HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 GTCAACGTTATATTTTGATAGTTTGACGGTTAAT .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 2510 NA
+3420 PHIX174 + 5386 5152 5151 5187 36 GGATGAAAATGCTCACAATGACAAATCTGTCCACGG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGATGAAAATGCTCACAATGACAAATCTGTCCACGG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5151 NA
+3402 PHIX174 + 5386 1590 1589 1625 36 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1589 NA
+3456 PHIX174 + 5386 4884 4883 4919 36 GGTTACAGTATGCCCATCGCAGTTCGCTACACGCAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTTACAGTATGCCCATCGCAGTTCGCTACACGCAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4883 NA
+3411 PHIX174 + 5386 5052 5051 5087 36 GCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5051 NA
+3447 PHIX174 + 5386 4909 4908 4944 36 GCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4908 NA
+3393 PHIX174 + 5386 2863 2862 2898 36 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2862 NA
+3197 PHIX174 + 5386 4173 4172 4208 36 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTGAGTTCGATAATGGTGATATGTATGTTTACGGC ..............................x..... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4172 NA
+3429 PHIX174 + 5386 1701 1700 1736 36 GTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1700 NA
+3429 PHIX174 + 5386 1683 1682 1718 36 CTTATGACGCTGACAACCGTCCTTTACTTGTCATGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTATGACGCTGACAACCGTCCTTTACTTGTCATGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1682 NA
+3365 PHIX174 + 5386 3126 3125 3160 35 GAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3124 NA
+3420 PHIX174 + 5386 1665 1664 1700 36 CATTTGGAGGTAAAACCTCTTATGACGCTGACAACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CATTTGGAGGTAAAACCTCTTATGACGCTGACAACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1664 NA
+3402 PHIX174 + 5386 3213 3212 3248 36 GTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3212 NA
+3411 PHIX174 + 5386 3420 3419 3455 36 GAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3419 NA
+3465 PHIX174 + 5386 513 512 548 36 GTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 512 NA
+3179 PHIX174 + 5386 2879 2878 2914 36 ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATAAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC ..x................................. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2878 NA
+3438 PHIX174 + 5386 4471 4470 4506 36 GTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4470 NA
+3393 PHIX174 + 5386 1229 1228 1264 36 GTTTATGGTGAACAGTGGATTAAGTTCATGAAGGAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTTATGGTGAACAGTGGATTAAGTTCATGAAGGAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1228 NA
+3393 PHIX174 + 5386 615 614 650 36 GAGTTTATTGCTGCCGTCATTGCTTATTATGTTCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGTTTATTGCTGCCGTCATTGCTTATTATGTTCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 614 NA
+3429 PHIX174 + 5386 257 256 292 36 GCACGTTCGTCAAGGACTGGTTTAGATATGAGTCAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCACGTTCGTCAAGGACTGGTTTAGATATGAGTCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 256 NA
+3366 PHIX174 + 5386 2381 2380 2416 36 TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2380 NA
+3429 PHIX174 + 5386 4098 4097 4133 36 ATGCTTGGCTTCCATAAGCAGATGGATAACCGCATC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGCTTGGCTTCCATAAGCAGATGGATAACCGCATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4097 NA
+3438 PHIX174 + 5386 5099 5098 5134 36 GCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5098 NA
+3393 PHIX174 + 5386 4254 4253 4289 36 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4253 NA
+3411 PHIX174 + 5386 3408 3407 3443 36 GACAATCAGAAAGAGATTGCCGAGATGCAAAATGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACAATCAGAAAGAGATTGCCGAGATGCAAAATGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3407 NA
+3429 PHIX174 + 5386 4043 4042 4078 36 GGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4042 NA
+3411 PHIX174 + 5386 4560 4559 4595 36 GATGGTTGGTTTATCGTTTTTGACACTCTCACGTTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATGGTTGGTTTATCGTTTTTGACACTCTCACGTTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4559 NA
+3411 PHIX174 + 5386 1888 1887 1923 36 GACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1887 NA
+3311 PHIX174 + 5386 3434 3433 3468 35 GCAAAATGAGACTCAAAAAGAGATTGCTGGCATTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GCAAAATGAGACTCAAAAAGAGATTGCTGGCATTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3432 NA
+3438 PHIX174 + 5386 4539 4538 4574 36 GCAATGCGACAGGCTCATGCTGATGGTTGGTTTATC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAATGCGACAGGCTCATGCTGATGGTTGGTTTATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4538 NA
+3420 PHIX174 + 5386 1828 1827 1863 36 CTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1827 NA
+3420 PHIX174 + 5386 3708 3707 3743 36 GACTTAGTTCATCAGCAAACGCAGAATCAGCGGTAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACTTAGTTCATCAGCAAACGCAGAATCAGCGGTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3707 NA
+3465 PHIX174 + 5386 3326 3325 3361 36 GCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3325 NA
+3411 PHIX174 + 5386 4176 4175 4211 36 GAGTTCGATAATGGTGATATGTATGTTGACGGCCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGTTCGATAATGGTGATATGTATGTTGACGGCCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4175 NA
+3402 PHIX174 + 5386 22 21 57 36 GCAGAAGTTAACACTTTCGGATATTTCTGATGAGTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAGAAGTTAACACTTTCGGATATTTCTGATGAGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 21 NA
+3402 PHIX174 + 5386 2557 2556 2592 36 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGTTTTCTTCATTGCATTCAGATGGATACATCTGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2556 NA
+3420 PHIX174 + 5386 3277 3276 3312 36 ATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3276 NA
+3438 PHIX174 + 5386 3592 3591 3627 36 AGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3591 NA
+3302 PHIX174 + 5386 358 357 392 35 GATGCTGTTCAACCACTAATAGGTAAGAAATCATG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GATGCTGTTCAACCACTAATAGGTAAGAAATCATG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 357 NA
+3420 PHIX174 + 5386 1775 1774 1810 36 GGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1774 NA
+3393 PHIX174 + 5386 3504 3503 3539 36 GTATATGCACAAAATGAGATGCTTGCTTATCAACAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTATATGCACAAAATGAGATGCTTGCTTATCAACAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3503 NA
+3420 PHIX174 + 5386 1554 1553 1589 36 CGACTTCTACCACATCTATTGACATTATGGGTCTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGACTTCTACCACATCTATTGACATTATGGGTCTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1553 NA
+3447 PHIX174 + 5386 1002 1001 1037 36 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1001 NA
+3420 PHIX174 + 5386 3626 3625 3661 36 GCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3625 NA
+3420 PHIX174 + 5386 3572 3571 3607 36 GGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3571 NA
+3438 PHIX174 + 5386 1265 1264 1300 36 GGTGTTAATGCCACTCCTCTCCCGACTGTTAACACT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTGTTAATGCCACTCCTCTCCCGACTGTTAACACT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1264 NA
+3411 PHIX174 + 5386 1332 1331 1367 36 GCACGATTAACCCTGATACCAATAAAATCCCTAAGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCACGATTAACCCTGATACCAATAAAATCCCTAAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1331 NA
+3393 PHIX174 + 5386 4254 4253 4289 36 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGAAGTTAATGGATGAATTGGCACAATGCTACAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4253 NA
+3411 PHIX174 + 5386 4170 4169 4205 36 GGCGTTGAGTTCGATAATGGTGATATGTATGTTGAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGCGTTGAGTTCGATAATGGTGATATGTATGTTGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4169 NA
+3465 PHIX174 + 5386 3119 3118 3154 36 CCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3118 NA
+3438 PHIX174 + 5386 1670 1669 1705 36 GGAGGTAAAACCTCTTATGACGCTGACAACCGTCCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGAGGTAAAACCTCTTATGACGCTGACAACCGTCCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1669 NA
+3420 PHIX174 + 5386 640 639 675 36 ATTATGTTCATCCCGTCAACATTCAAACGGCCTGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTATGTTCATCCCGTCAACATTCAAACGGCCTGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 639 NA
+3311 PHIX174 + 5386 2750 2749 2784 35 GTTATTATACCGTCAAGGACTGTGTGACTATTGAC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GTTATTATACCGTCAAGGACTGTGTGACTATTGAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2749 NA
+3402 PHIX174 + 5386 4606 4605 4641 36 GATTAGAGGCGTTTTATGATAATCCCAATGCTTTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GATTAGAGGCGTTTTATGATAATCCCAATGCTTTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4605 NA
+3420 PHIX174 + 5386 3573 3572 3608 36 GAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3572 NA
+3420 PHIX174 + 5386 5105 5104 5140 36 GCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5104 NA
+3420 PHIX174 + 5386 1674 1673 1709 36 GTAAAACCTCTTATGACGCTGACAACCGTCCTTTAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTAAAACCTCTTATGACGCTGACAACCGTCCTTTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1673 NA
+3438 PHIX174 + 5386 4095 4094 4130 36 CCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4094 NA
+3411 PHIX174 + 5386 4551 4550 4586 36 GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4550 NA
+3411 PHIX174 + 5386 3284 3283 3319 36 TGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3283 NA
+3402 PHIX174 + 5386 4005 4004 4040 36 GAATGTCACGCTGATTATTTTGACTTTGAGCGTATC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAATGTCACGCTGATTATTTTGACTTTGAGCGTATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4004 NA
+3420 PHIX174 + 5386 2479 2478 2514 36 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2478 NA
+3420 PHIX174 + 5386 1082 1081 1117 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1081 NA
+3338 PHIX174 + 5386 3045 3044 3079 35 GCTACCGATAACAATACTGTAGGCATGGGTGATGC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GCTACCGATAACAATACTGTAGGCATGGGTGATGC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3043 NA
+3492 PHIX174 + 5386 1115 1114 1150 36 GGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1114 NA
+3206 PHIX174 + 5386 636 635 671 36 GCTTATTATGTTCATCCCGTCAACATTCAAACGGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTTATTATGTTCATCCCGTCAACATTCAAACGTCC .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 635 NA
+3060 PHIX174 + 5386 1139 1138 1172 34 GTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTG HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 GTTGGCGCTCTCCGTCTTTCTCCATTTCGTCGTG ..........................x....... 34M 33/34 97.1% 34/36 94.4% 0/34 0.0% 1138 NA
+3447 PHIX174 + 5386 852 851 887 36 CTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 851 NA
+3429 PHIX174 + 5386 5272 5271 5307 36 GATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5271 NA
+3127 PHIX174 + 5386 4330 4329 4365 36 GCCCCGAAGGGGACGAAAAATGGTTTTTAGAGAACG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCCCGAAGGGGACNANAAATGGTTTTTAGAGAACG ..............X.X................... 36M 34/34 100.0% 36/36 100.0% 0/36 0.0% 4329 NA
+3465 PHIX174 + 5386 4891 4890 4926 36 GTATGCCCATCGCAGTTCGCTACACGCAGGACGCTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTATGCCCATCGCAGTTCGCTACACGCAGGACGCTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4890 NA
+3429 PHIX174 + 5386 4783 4782 4818 36 AtTTTATGCGGACACTTCCTACAGGTAGCGTTGACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTTTATGCGGACACTTCCTACAGGTAGCGTTGACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4782 NA
+3438 PHIX174 + 5386 3619 3618 3654 36 GCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3618 NA
+3215 PHIX174 + 5386 4455 4454 4490 36 GGTATTAAGGATGAGTGTTCAAGATTGCTGGAGGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTATTAAGGATGAGTGTTCAAGATTGCTGGATGCC ................................x... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4454 NA
+3393 PHIX174 + 5386 632 631 667 36 CATTGCTTATTATGTTCATCCCGTCAACATTCAAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CATTGCTTATTATGTTCATCCCGTCAACATTCAAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 631 NA
+3347 PHIX174 + 5386 2964 2963 2998 35 GCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2963 NA
+3447 PHIX174 + 5386 2763 2762 2798 36 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2762 NA
+3465 PHIX174 + 5386 2766 2765 2801 36 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2765 NA
+3429 PHIX174 + 5386 1719 1718 1754 36 GCTCTAATCTCTGGGCATCTGGCTATGATGTTGATG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTCTAATCTCTGGGCATCTGGCTATGATGTTGATG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1718 NA
+3456 PHIX174 + 5386 3100 3099 3135 36 AAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3099 NA
+3133 PHIX174 + 5386 598 597 632 35 GCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCGTC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GCTTTCCTGCTCCTGTTGAGTTTATTGCTTCCGTC .............................x..... 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 597 NA
+3420 PHIX174 + 5386 4126 4125 4161 36 ACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4125 NA
+3420 PHIX174 + 5386 4026 4025 4061 36 GACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4025 NA
+3402 PHIX174 + 5386 2621 2620 2656 36 GTGCTGATATTGCTTTTGATGCCGACCCTAAATTTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTGCTGATATTGCTTTTGATGCCGACCCTAAATTTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2620 NA
+3411 PHIX174 + 5386 2749 2748 2784 36 GGTTATTATACCGTCAAGGACTGTGTGACTATTGAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTTATTATACCGTCAAGGACTGTGTGACTATTGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2748 NA
+3402 PHIX174 + 5386 379 378 414 36 GGTAAGAAATCATGAGTCAAGTTACTGAACAATCCG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTAAGAAATCATGAGTCAAGTTACTGAACAATCCG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 378 NA
+3438 PHIX174 + 5386 2160 2159 2195 36 GCCACCATGATTATGACCAGTGTTTCCAGTCCGTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCACCATGATTATGACCAGTGTTTCCAGTCCGTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2159 NA
+3393 PHIX174 + 5386 2873 2872 2908 36 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2872 NA
+3365 PHIX174 + 5386 1508 1507 1542 35 TGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1506 NA
+3420 PHIX174 + 5386 3863 3862 3898 36 TTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3862 NA
+3429 PHIX174 + 5386 5187 5186 5222 36 GAGTGCTTAATCCAACTTACCAAGCTGGGTTACGAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGTGCTTAATCCAACTTACCAAGCTGGGTTACGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5186 NA
+3447 PHIX174 + 5386 4196 4195 4231 36 GTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4195 NA
+3411 PHIX174 + 5386 635 634 670 36 TGCTTATTATGTTCATCCCGTCAACATTCAAACGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGCTTATTATGTTCATCCCGTCAACATTCAAACGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 634 NA
+3311 PHIX174 + 5386 1294 1293 1328 35 TAACACTACTGGTTATATTGACCATGCCGCTTTTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TAACACTACTGGTTATATTGACCATGCCGCTTTTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1292 NA
+3420 PHIX174 + 5386 5157 5156 5192 36 AAAATGCTCACAATGACAAATCTGTCCACGGAGTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAAATGCTCACAATGACAAATCTGTCCACGGAGTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5156 NA
+3447 PHIX174 + 5386 772 771 807 36 GCGCAGGAAACACTGACGTTCTTACTGACGCAGAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCGCAGGAAACACTGACGTTCTTACTGACGCAGAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 771 NA
+3402 PHIX174 + 5386 1224 1223 1259 36 GTCACGTTTATGGTGAACAGTGGATTAAGTTCATGA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCACGTTTATGGTGAACAGTGGATTAAGTTCATGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1223 NA
+3138 PHIX174 + 5386 1544 1543 1576 33 CGCCAAATGACGACTTCTACCACATCTATTGAC HWI-EAS91_1_306UPAAXX - 36 4 3 36 1 0 33 33 CGCCAAATGACGACTTCTACCACATCTATTGAC ................................. 33M 33/33 100.0% 33/36 91.7% 0/33 0.0% 1540 NA
+3420 PHIX174 + 5386 4840 4839 4875 36 GCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4839 NA
+3329 PHIX174 + 5386 204 203 238 35 GATTCTGTCAAAAACTGACGCGTTGGATGAGGAGA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GATTCTGTCAAAAACTGACGCGTTGGATGAGGAGA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 203 NA
+3197 PHIX174 + 5386 2481 2480 2516 36 ACCTGTTTTACAGACACCTAAAGCTACATCGTCAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ACCTGTTTTAAAGACACCTAAAGCTACATCGTCAAC ..........x......................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2480 NA
+3429 PHIX174 + 5386 332 331 367 36 AAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 331 NA
+3393 PHIX174 + 5386 3978 3977 4013 36 TTTATGGTTCGTTCTTATTACCCTTCTGAATGTCAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTTATGGTTCGTTCTTATTACCCTTCTGAATGTCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3977 NA
+3420 PHIX174 + 5386 4865 4864 4900 36 GCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4864 NA
+3411 PHIX174 + 5386 3271 3270 3306 36 GAAAGGATACTCGTGATTATCTTGCTGCTGCATTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAAAGGATACTCGTGATTATCTTGCTGCTGCATTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3270 NA
+3411 PHIX174 + 5386 4174 4173 4209 36 TTGAGTTCGATAATGGTGATATGTATGTTGACGGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTGAGTTCGATAATGGTGATATGTATGTTGACGGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4173 NA
+3429 PHIX174 + 5386 2738 2737 2773 36 GCCATGATGGTGGTTATTATACCGTCAAGGACTGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCATGATGGTGGTTATTATACCGTCAAGGACTGTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2737 NA
+3329 PHIX174 + 5386 2703 2702 2737 35 CCCGACTGCCTATGATGTTTATCCTTTGAATGGTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CCCGACTGCCTATGATGTTTATCCTTTGAATGGTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2701 NA
+3456 PHIX174 + 5386 2943 2942 2978 36 ATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2942 NA
+3411 PHIX174 + 5386 3861 3860 3896 36 AATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3860 NA
+3429 PHIX174 + 5386 3093 3092 3128 36 GCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3092 NA
+3420 PHIX174 + 5386 3151 3150 3186 36 GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3150 NA
+3393 PHIX174 + 5386 1193 1192 1228 36 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTAGACATTTTTACTTTTTATGTCCCTCATCGTCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1192 NA
+3456 PHIX174 + 5386 157 156 192 36 CGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 156 NA
+3429 PHIX174 + 5386 4792 4791 4827 36 GGACACTTCCTACAGGTAGCGTTGACCCTAATTTTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGACACTTCCTACAGGTAGCGTTGACCCTAATTTTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4791 NA
+3402 PHIX174 + 5386 3849 3848 3884 36 GATACTTGGAACAATTTCTGGAAAGACGGTAAAGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATACTTGGAACAATTTCTGGAAAGACGGTAAAGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3848 NA
+3329 PHIX174 + 5386 2743 2742 2777 35 GATGGTGGTTATTATACCGTCAAGGACTGTGTGAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GATGGTGGTTATTATACCGTCAAGGACTGTGTGAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2741 NA
+3465 PHIX174 + 5386 3015 3014 3050 36 GCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3014 NA
+3438 PHIX174 + 5386 1091 1090 1126 36 ATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1090 NA
+3329 PHIX174 + 5386 798 797 832 35 GACGCAGAAGAAAACGTGCGTCAAAAATTACGTGC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GACGCAGAAGAAAACGTGCGTCAAAAATTACGTGC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 796 NA
+3420 PHIX174 + 5386 4866 4865 4901 36 CAAAATACGTGGCCTTATGGTTACAGTATGCCCATC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAAAATACGTGGCCTTATGGTTACAGTATGCCCATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4865 NA
+3411 PHIX174 + 5386 4404 4403 4439 36 GAACGCCCTCTTAAGGATATTCGCGATGAGTATAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAACGCCCTCTTAAGGATATTCGCGATGAGTATAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4403 NA
+3384 PHIX174 + 5386 1655 1654 1690 36 GTTATTTCTTCATTTGGAGGTAAAACCTCTTATGAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTTATTTCTTCATTTGGAGGTAAAACCTCTTATGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1654 NA
+3420 PHIX174 + 5386 5162 5161 5197 36 GCTCACAATGACAAATCTGTCCACGGAGTGCTTAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTCACAATGACAAATCTGTCCACGGAGTGCTTAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5161 NA
+3320 PHIX174 + 5386 1249 1248 1283 35 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1247 NA
+3402 PHIX174 + 5386 3261 3260 3296 36 GCTGATAAAGGAAAGGATACTCGTGATTATCTTGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGATAAAGGAAAGGATACTCGTGATTATCTTGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3260 NA
+3429 PHIX174 + 5386 3096 3095 3131 36 ATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3095 NA
+3384 PHIX174 + 5386 2811 2810 2846 36 tGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2810 NA
+3465 PHIX174 + 5386 3459 3458 3494 36 GCTGGCATTCAGTCGGCGACTTCACGCCAGAATACG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGGCATTCAGTCGGCGACTTCACGCCAGAATACG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3458 NA
+3320 PHIX174 + 5386 789 788 823 35 GTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 788 NA
+3420 PHIX174 + 5386 3699 3698 3734 36 GCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3698 NA
+3206 PHIX174 + 5386 2641 2640 2676 36 GCCGACCCTAAATTTTTTGCCTGTTTGGTTCGCTTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCGACCCTAAATTTTTTGCCTGTTTGGTTCTCTTT ...............................x.... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2640 NA
+3393 PHIX174 + 5386 305 304 340 36 GTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 304 NA
+3329 PHIX174 + 5386 3066 3065 3100 35 GGCATGGGTGATGCTGGTATTAAATCTGCCATTCA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GGCATGGGTGATGCTGGTATTAAATCTGCCATTCA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3065 NA
+3375 PHIX174 + 5386 4428 4427 4463 36 GATGAGTATAATTACCCCAAAAAGAAAGGTATTAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATGAGTATAATTACCCCAAAAAGAAAGGTATTAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4427 NA
+3429 PHIX174 + 5386 1461 1460 1496 36 AAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1460 NA
+3402 PHIX174 + 5386 4000 3999 4035 36 CTTCTGAATGTCACGCTGATTATTTTGACTTTGAGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTCTGAATGTCACGCTGATTATTTTGACTTTGAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3999 NA
+3429 PHIX174 + 5386 220 219 255 36 GACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 219 NA
+3233 PHIX174 + 5386 3194 3193 3229 36 GCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTTCT .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3193 NA
+3124 PHIX174 + 5386 1266 1265 1300 35 GTGTTAATGCCACTCCTCTCCCGACTGTTAACACT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GTGTTAATGCCACTCCTCTCCCGACTGTTAACTCT ................................x.. 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 1265 NA
+3429 PHIX174 + 5386 4596 4595 4631 36 GCTGACGACCGATTAGAGGCGTTTTATGATAATCCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCTGACGACCGATTAGAGGCGTTTTATGATAATCCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4595 NA
+3311 PHIX174 + 5386 1172 1171 1206 35 GGCCTTGCTATTGACTCTACTGTAGACATTTTTAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GGCCTTGCTATTGACTCTACTGTAGACATTTTTAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1170 NA
+3420 PHIX174 + 5386 636 635 671 36 GCTTATTATGTTCATCCCGTCAACATTCAAACGGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCTTATTATGTTCATCCCGTCAACATTCAAACGGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 635 NA
+3393 PHIX174 + 5386 2873 2872 2908 36 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2872 NA
+3474 PHIX174 + 5386 1014 1013 1049 36 AAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1013 NA
+3438 PHIX174 + 5386 2689 2688 2724 36 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2688 NA
+3206 PHIX174 + 5386 2148 2147 2183 36 GCGTACTTATTCGCCACCATGATTATGACCAGTGTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCGTACTTATTCGCCACCATGATTATTACCAGTGTT ..........................x......... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2147 NA
+3347 PHIX174 + 5386 5191 5190 5225 35 GCTTAATCCAACTTACCAAGCTGGGTTACGACGCG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GCTTAATCCAACTTACCAAGCTGGGTTACGACGCG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 5190 NA
+3402 PHIX174 + 5386 1590 1589 1625 36 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGCTGCTTATGCTAATTTGCATACTGACCAAGAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1589 NA
+3142 PHIX174 + 5386 571 570 605 35 GTACGCTGGACTTTGTGGGATACCCTCGCTTTCCT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GTACGCTGTACTTTGTGGGATACCCTCGCTTTCCT ........x.......................... 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 570 NA
+3438 PHIX174 + 5386 242 241 277 36 GGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 241 NA
+3429 PHIX174 + 5386 338 337 373 36 GTGGATTACTATCTGAGTCCGATGCTGTTCAACCAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTGGATTACTATCTGAGTCCGATGCTGTTCAACCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 337 NA
+3278 PHIX174 + 5386 1112 1111 1147 36 GCTGGCGACTCCTTCGAGATGGACGCCGTTGGCGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGGCGACTCCTTCGAGATGGACGCCGTTTGCGCT ..............................x..... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1111 NA
+3247 PHIX174 + 5386 1254 1253 1287 34 TCATGAAGGATGGTGTTAATGCCACTCCTCTCCC HWI-EAS91_1_306UPAAXX - 36 3 2 36 1 0 34 34 TCATGAAGGATGGTGTTAATGCCACTCCTCTCCC .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 1251 NA
+3242 PHIX174 + 5386 2970 2969 3005 36 GCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGGTGGCGCCATGTCTAAATTTTTTGGAGGCGGT .......................x............ 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2969 NA
+3420 PHIX174 + 5386 5151 5150 5186 36 GGGATGAAAATGCTCACAATGACAAATCTGTCCACG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGGATGAAAATGCTCACAATGACAAATCTGTCCACG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5150 NA
+3411 PHIX174 + 5386 348 347 383 36 ATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 347 NA
+3365 PHIX174 + 5386 4888 4887 4922 35 ACAGTATGCCCATCGCAGTTCGCTACACGCAGGAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ACAGTATGCCCATCGCAGTTCGCTACACGCAGGAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4886 NA
+3111 PHIX174 + 5386 3972 3971 4004 33 GGCTTTTTTATGGTTCGTTCTTATTACCCTTCT HWI-EAS91_1_306UPAAXX + 36 1 0 33 1 0 33 33 GGCTTTTTTATGGTTCGTTCTTATTACCCTTCT ................................. 33M 33/33 100.0% 33/36 91.7% 0/33 0.0% 3971 NA
+3438 PHIX174 + 5386 5033 5032 5068 36 GTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5032 NA
+3320 PHIX174 + 5386 1552 1551 1586 35 GACGACTTCTACCACATCTATTGACATTATGGGTC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GACGACTTCTACCACATCTATTGACATTATGGGTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1550 NA
+3429 PHIX174 + 5386 1764 1763 1799 36 AAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1763 NA
+3438 PHIX174 + 5386 1529 1528 1564 36 GAGACTGAGCTTTCTCGCCAAATGACGACTTCTACC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAGACTGAGCTTTCTCGCCAAATGACGACTTCTACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1528 NA
+3438 PHIX174 + 5386 4950 4949 4985 36 CCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4949 NA
+3447 PHIX174 + 5386 4484 4483 4519 36 GGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTaC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4483 NA
+3429 PHIX174 + 5386 177 176 212 36 CTTTGCGACCTTTCGCCATCAACTAACGATTCTGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTTGCGACCTTTCGCCATCAACTAACGATTCTGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 176 NA
+3429 PHIX174 + 5386 2577 2576 2612 36 GATGGATACATCTGTCAACGCCGCTAATCAGGTTGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GATGGATACATCTGTCAACGCCGCTAATCAGGTTGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2576 NA
+3456 PHIX174 + 5386 156 155 191 36 GCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 155 NA
+3429 PHIX174 + 5386 227 226 262 36 TGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 226 NA
+3465 PHIX174 + 5386 574 573 609 36 CGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 573 NA
+3438 PHIX174 + 5386 3021 3020 3056 36 GGTGGCATTCAAGGTGATGTGCTTGCTACCGATAAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTGGCATTCAAGGTGATGTGCTTGCTACCGATAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3020 NA
+3438 PHIX174 + 5386 3731 3730 3766 36 GAATCAGCGGTATGGCTCTTCTCATATTGGCGCTAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAATCAGCGGTATGGCTCTTCTCATATTGGCGCTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3730 NA
+3420 PHIX174 + 5386 2436 2435 2471 36 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2435 NA
+3411 PHIX174 + 5386 2710 2709 2745 36 GCCTATGATGTTTATCCTTTGAATGGTCGCCATGAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCCTATGATGTTTATCCTTTGAATGGTCGCCATGAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2709 NA
+3079 PHIX174 + 5386 4228 4227 4262 35 TTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTCGTGATGAGTTTGTATCTGTTACTGATAAGTTA ............................x...... 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 4227 NA
+3202 PHIX174 + 5386 4606 4605 4639 34 GATTAGAGGCGTTTTATGATAATCCCAATGCTTT HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 GATTAGAGGCGTTTTATGATAATCCCAATGCTTT .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 4605 NA
+3465 PHIX174 + 5386 2766 2765 2801 36 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGACTGTGTGACTATTGACGTCCTTCCCCGTACGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2765 NA
+3256 PHIX174 + 5386 582 581 615 34 TTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTG HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 TTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTG .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 581 NA
+3474 PHIX174 + 5386 1144 1143 1179 36 CGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1143 NA
+3465 PHIX174 + 5386 1514 1513 1549 36 GCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1513 NA
+3393 PHIX174 + 5386 1657 1656 1692 36 TATTTCTTCATTTGGAGGTAAAACCTCTTATGACGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TATTTCTTCATTTGGAGGTAAAACCTCTTATGACGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1656 NA
+3411 PHIX174 + 5386 2071 2070 2106 36 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2070 NA
+3438 PHIX174 + 5386 3250 3249 3285 36 GCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3249 NA
+3179 PHIX174 + 5386 1982 1981 2017 36 GAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAAATTTCTATGAATGATGTTTTCCGTTCTGGTGAT ..............x..................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1981 NA
+3393 PHIX174 + 5386 2217 2216 2252 36 AGGTTAAATTTAATGTGACCGTTTATCGCAATCTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGGTTAAATTTAATGTGACCGTTTATCGCAATCTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2216 NA
+3115 PHIX174 + 5386 3480 3479 3514 35 TCACGCCAGAATACGAAAGACCAGGTATATGCACA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TCACGACAGAATACGAAAGACCAGGTATATGCACA .....x............................. 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 3478 NA
+3438 PHIX174 + 5386 1690 1689 1725 36 CGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1689 NA
+3420 PHIX174 + 5386 1082 1081 1117 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1081 NA
+3402 PHIX174 + 5386 4282 4281 4317 36 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4281 NA
+3229 PHIX174 + 5386 4136 4135 4169 34 GCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAG HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 GCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAG .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 4135 NA
+3384 PHIX174 + 5386 4414 4413 4449 36 TTAAGGATATTCGCGATGAGTATAATTACCCCAAAA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTAAGGATATTCGCGATGAGTATAATTACCCCAAAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4413 NA
+3393 PHIX174 + 5386 3988 3987 4023 36 GTTCTTATTACCCTTCTGAATGTCACGCTGATTATT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTTCTTATTACCCTTCTGAATGTCACGCTGATTATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3987 NA
+3456 PHIX174 + 5386 4203 4202 4238 36 GACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4202 NA
+3215 PHIX174 + 5386 4098 4097 4133 36 ATGCTTGGCTTCCATAAGCAGATGGATAACCGCATC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGCTTGGCTTCAATAAGCAGATGGATAACCGCATC ............x....................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4097 NA
+3338 PHIX174 + 5386 4307 4306 4341 35 TATTAATAACACTATAGACCACCGCCCCGAAGGGG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TATTAATAACACTATAGACCACCGCCCCGAAGGGG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4306 NA
+3347 PHIX174 + 5386 1521 1520 1555 35 TTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1520 NA
+3429 PHIX174 + 5386 945 944 980 36 TAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 944 NA
+3411 PHIX174 + 5386 1575 1574 1610 36 ACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1574 NA
+3438 PHIX174 + 5386 2689 2688 2724 36 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTCCGACTACCCTCCCGACTGCCTATGATGTTTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2688 NA
+3447 PHIX174 + 5386 2099 2098 2134 36 GAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2098 NA
+3483 PHIX174 + 5386 524 523 559 36 TACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 523 NA
+3438 PHIX174 + 5386 1252 1251 1287 36 GTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1251 NA
+3242 PHIX174 + 5386 4916 4915 4951 36 GCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGTCC .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4915 NA
+3188 PHIX174 + 5386 3828 3827 3863 36 GGTATTGATAAAGCTGTTGCCGATACTTGGAACAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTATTGATAAAGCTGTTGCCGATACTTGTAACAAT .............................x...... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3827 NA
+3411 PHIX174 + 5386 3756 3755 3791 36 ATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3755 NA
+3492 PHIX174 + 5386 1116 1115 1151 36 GCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1115 NA
+3334 PHIX174 + 5386 3099 3098 3134 36 CAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAAGGCTCTAATGTTCCTAACCCTGATGGGGCCGCC ............................:....... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3098 NA
+3393 PHIX174 + 5386 3082 3081 3117 36 GTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3081 NA
+3393 PHIX174 + 5386 613 612 648 36 TTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 612 NA
+3447 PHIX174 + 5386 4936 4935 4971 36 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4935 NA
+3393 PHIX174 + 5386 289 288 324 36 TCACATTTTGTTCATGGTAGAGATTCTCTTGTTGAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCACATTTTGTTCATGGTAGAGATTCTCTTGTTGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 288 NA
+3438 PHIX174 + 5386 4690 4689 4725 36 GCAAGGCTAATGATTCACACGCCGACTGCTATCAGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAAGGCTAATGATTCACACGCCGACTGCTATCAGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4689 NA
+3420 PHIX174 + 5386 3520 3519 3555 36 AGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3519 NA
+3393 PHIX174 + 5386 3858 3857 3893 36 AACAATTTCTGGAAAGACGGTAAAGCTGATGGTATT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AACAATTTCTGGAAAGACGGTAAAGCTGATGGTATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3857 NA
+3438 PHIX174 + 5386 3344 3343 3379 36 TTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3343 NA
+3019 PHIX174 + 5386 4672 4671 4707 36 TTCTTGCTGCCGAGGGTCGCAAGGCTAATGATTCAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTCTTGCTGCCGAGGGTCGCAAGGCTATTGTTTCAC ...........................x..x..... 36M 34/36 94.4% 36/36 100.0% 0/36 0.0% 4671 NA
+3411 PHIX174 + 5386 1800 1799 1835 36 AGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1799 NA
+3420 PHIX174 + 5386 5077 5076 5112 36 GGAACAACTCACTAAAAACCAAGCTGTCGCTACTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGAACAACTCACTAAAAACCAAGCTGTCGCTACTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5076 NA
+3347 PHIX174 + 5386 2763 2762 2797 35 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2761 NA
+3402 PHIX174 + 5386 4282 4281 4317 36 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTACAATGTGCTCCCCCAACTTGATATTAATAACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4281 NA
+3188 PHIX174 + 5386 1203 1202 1238 36 TTACTTTTTATGTCCCTCATCGTCACGTTTATGGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTACTTTTTATGTCCCTCATCGTCACGTTTATGTTG .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1202 NA
+3420 PHIX174 + 5386 5107 5106 5142 36 TACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5106 NA
+3320 PHIX174 + 5386 5168 5167 5202 35 AATGACAAATCTGTCCACGGAGTGCTTAATCCAAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 AATGACAAATCTGTCCACGGAGTGCTTAATCCAAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 5166 NA
+3224 PHIX174 + 5386 2956 2955 2991 36 TTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTGCTTCTGCTCTTGCTTGTGGCGCCATGTCTAAAT .................x.................. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2955 NA
+3215 PHIX174 + 5386 624 623 659 36 GCTGCCGTCATTGCTTATTATGTTCATCCCGTCAAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTGCCGTCATTGCTTATTATGTTCATCCCTTCAAC ..............................x..... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 623 NA
+3329 PHIX174 + 5386 1877 1876 1911 35 CCGCCTACTGCGACTAAAGAGATTCAGTACCTTAA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CCGCCTACTGCGACTAAAGAGATTCAGTACCTTAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1875 NA
+3429 PHIX174 + 5386 1214 1213 1249 36 GTCCCTCATCGTCACGTTTATGGTGAACAGTGGATT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCCCTCATCGTCACGTTTATGGTGAACAGTGGATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1213 NA
+3010 PHIX174 + 5386 558 557 593 36 GCTTGCGTTTATGGTACGCTGGACTTTGTGGGATAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTTGCGTTTATGGTACGCTGGACTTTTTGTGATAC ...........................x..x..... 36M 34/36 94.4% 36/36 100.0% 0/36 0.0% 557 NA
+3411 PHIX174 + 5386 3629 3628 3664 36 TACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3628 NA
+3320 PHIX174 + 5386 2254 2253 2288 35 GACCACTCGCGATTCAATCATGACTTCGTGATAAA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GACCACTCGCGATTCAATCATGACTTCGTGATAAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2253 NA
+3420 PHIX174 + 5386 2479 2478 2514 36 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCACCTGTTTTACAGACACCTAAAGCTACATCGTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2478 NA
+3474 PHIX174 + 5386 3001 3000 3036 36 GCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3000 NA
+3356 PHIX174 + 5386 4667 4666 4701 35 TATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4666 NA
+3438 PHIX174 + 5386 3464 3463 3499 36 CATTCAGTCGGCGACTTCACGCCAGAATACGAAAGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CATTCAGTCGGCGACTTCACGCCAGAATACGAAAGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3463 NA
+3338 PHIX174 + 5386 4911 4910 4945 35 TACACGCAGGACGCTTTTTCACGTTCTGGTTGGTT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TACACGCAGGACGCTTTTTCACGTTCTGGTTGGTT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4910 NA
+3197 PHIX174 + 5386 2222 2221 2257 36 AAATTTAATGTGACCGTTTATCGCAATCTGCCGACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAATTTAATGTGAACGTTTATCGCAATCTGCCGACC .............x...................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2221 NA
+3338 PHIX174 + 5386 646 645 680 35 TTCATCCCGTCAACATTCAAACGGCCTGTCTCATC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTCATCCCGTCAACATTCAAACGGCCTGTCTCATC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 645 NA
+3366 PHIX174 + 5386 1364 1363 1399 36 AAGCATTTGTTTCAGGGTTATTTGAATATCTATAAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGCATTTGTTTCAGGGTTATTTGAATATCTATAAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1363 NA
+3320 PHIX174 + 5386 1613 1612 1647 35 ACTGACCAAGAACGTGATTACTTCATGCAGCGTTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ACTGACCAAGAACGTGATTACTTCATGCAGCGTTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1611 NA
+3347 PHIX174 + 5386 1045 1044 1079 35 TTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1044 NA
+3411 PHIX174 + 5386 1588 1587 1623 36 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1587 NA
+3420 PHIX174 + 5386 339 338 374 36 TGGATTACTATCTGAGTCCGATGCTGTTCAACCACT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGATTACTATCTGAGTCCGATGCTGTTCAACCACT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 338 NA
+3447 PHIX174 + 5386 4937 4936 4972 36 TGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4936 NA
+3202 PHIX174 + 5386 4344 4343 4377 34 GAAAAATGGTTTTTAGAGAACGAGAAGACGGTTA HWI-EAS91_1_306UPAAXX - 36 3 2 36 1 0 34 34 GAAAAATGGTTTTTAGAGAACGAGAAGACGGTTA .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 4341 NA
+3420 PHIX174 + 5386 3674 3673 3709 36 CAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3673 NA
+3438 PHIX174 + 5386 4945 4944 4980 36 TGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4944 NA
+3474 PHIX174 + 5386 1946 1945 1981 36 GGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1945 NA
+3215 PHIX174 + 5386 2662 2661 2697 36 TGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCTACT ................................x... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 2661 NA
+3447 PHIX174 + 5386 3313 3312 3348 36 TTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3312 NA
+3438 PHIX174 + 5386 727 726 762 36 GTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 726 NA
+3447 PHIX174 + 5386 555 554 590 36 GAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 554 NA
+3384 PHIX174 + 5386 485 484 520 36 TGATTTCGATTTTCTGACGAGTAACAAAGTTTGGAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGATTTCGATTTTCTGACGAGTAACAAAGTTTGGAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 484 NA
+3384 PHIX174 + 5386 318 317 353 36 TGTTGACATTTTAAAAGAGCGTGGATTACTATCTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGTTGACATTTTAAAAGAGCGTGGATTACTATCTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 317 NA
+3429 PHIX174 + 5386 910 909 945 36 TAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 909 NA
+3447 PHIX174 + 5386 4936 4935 4971 36 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4935 NA
+3375 PHIX174 + 5386 5005 5004 5040 36 TCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5004 NA
+3143 PHIX174 + 5386 1379 1378 1414 36 GGTTATTTGAATATCTATAACAACTATTTTAAAGCG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTTATTTGAATATCTATAACAACTATTTTAAATCG .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1378 NA
+3233 PHIX174 + 5386 3168 3167 3203 36 GGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GGTAAAGGACTTCTTGAAGGTACGTTGCAGTCTGGC ..............................x..... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3167 NA
+3138 PHIX174 + 5386 2738 2737 2770 33 GCCATGATGGTGGTTATTATACCGTCAAGGACT HWI-EAS91_1_306UPAAXX + 36 1 0 33 1 0 33 33 GCCATGATGGTGGTTATTATACCGTCAAGGACT ................................. 33M 33/33 100.0% 33/36 91.7% 0/33 0.0% 2737 NA
+3429 PHIX174 + 5386 4099 4098 4134 36 TGCTTGGCTTCCATAAGCAGATGGATAACCGCATCA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGCTTGGCTTCCATAAGCAGATGGATAACCGCATCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4098 NA
+3429 PHIX174 + 5386 2574 2573 2609 36 TCAGATGGATACATCTGTCAACGCCGCTAATCAGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCAGATGGATACATCTGTCAACGCCGCTAATCAGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2573 NA
+3429 PHIX174 + 5386 2453 2452 2488 36 TCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2452 NA
+3438 PHIX174 + 5386 5179 5178 5214 36 TGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5178 NA
+3015 PHIX174 + 5386 3778 3777 3811 34 TTTCTAATGTCGTCACTGATGCTGCTTCTGGTGT HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 TTTCTAATGTCGTCACTGATGCTGCTTCTGTTGT ..............................x... 34M 33/34 97.1% 34/36 94.4% 0/34 0.0% 3777 NA
+3420 PHIX174 + 5386 1843 1842 1878 36 TGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1842 NA
+3420 PHIX174 + 5386 1082 1081 1117 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTATTACCATTTCAACTACTCCGGTTATCGCTGGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1081 NA
+3438 PHIX174 + 5386 1728 1727 1763 36 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1727 NA
+3188 PHIX174 + 5386 4637 4636 4672 36 TTTGCGTGACTATTTTCGTGATATTGGTCGTATGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTTGCGTGACTATTTTCGTGATATTGTTCGTATGGT ..........................x......... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4636 NA
+3420 PHIX174 + 5386 2225 2224 2260 36 TTTAATGTGACCGTTTATCGCAATCTGCCGACCACT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTTAATGTGACCGTTTATCGCAATCTGCCGACCACT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2224 NA
+3384 PHIX174 + 5386 3368 3367 3403 36 CGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3367 NA
+3456 PHIX174 + 5386 3311 3310 3346 36 GCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3310 NA
+3420 PHIX174 + 5386 5039 5038 5074 36 TATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5038 NA
+3420 PHIX174 + 5386 2059 2058 2094 36 TTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2058 NA
+3411 PHIX174 + 5386 388 387 423 36 TCATGAGTCAAGTTACTGAACAATCCGTACGTTTCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCATGAGTCAAGTTACTGAACAATCCGTACGTTTCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 387 NA
+3420 PHIX174 + 5386 2754 2753 2789 36 TTATACCGTCAAGGACTGTGTGACTATTGACGTCCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTATACCGTCAAGGACTGTGTGACTATTGACGTCCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2753 NA
+3420 PHIX174 + 5386 2128 2127 2163 36 TTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2127 NA
+3438 PHIX174 + 5386 154 153 189 36 TTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 153 NA
+3447 PHIX174 + 5386 3617 3616 3652 36 GCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3616 NA
+3420 PHIX174 + 5386 2728 2727 2763 36 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2727 NA
+3456 PHIX174 + 5386 2775 2774 2810 36 GACTATTGACGTCCTTCCCCGTACGCCGGGCAATAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GACTATTGACGTCCTTCCCCGTACGCCGGGCAATAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2774 NA
+3411 PHIX174 + 5386 4217 4216 4252 36 TGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4216 NA
+3293 PHIX174 + 5386 4619 4618 4653 35 TTATGATAATCCCAATGCTTTGCGTGACTATTTTC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTATGATAATCCCAATGCTTTGCGTGACTATTTTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4618 NA
+3338 PHIX174 + 5386 411 410 445 35 TCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 410 NA
+3329 PHIX174 + 5386 2730 2729 2764 35 GAATGGTCGCCATGATGGTGGTTATTATACCGTCA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GAATGGTCGCCATGATGGTGGTTATTATACCGTCA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2729 NA
+3383 PHIX174 + 5386 521 520 555 35 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 520 NA
+3402 PHIX174 + 5386 4260 4259 4295 36 TTAATGGATGAATTGGCACAATGCTACAATGTGCTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTAATGGATGAATTGGCACAATGCTACAATGTGCTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4259 NA
+3411 PHIX174 + 5386 1662 1661 1697 36 CTTCATTTGGAGGTAAAACCTCTTATGACGCTGACA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTTCATTTGGAGGTAAAACCTCTTATGACGCTGACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1661 NA
+3465 PHIX174 + 5386 533 532 568 36 CTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 532 NA
+3320 PHIX174 + 5386 195 194 229 35 TCAACTAACGATTCTGTCAAAAACTGACGCGTTGG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TCAACTAACGATTCTGTCAAAAACTGACGCGTTGG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 194 NA
+3429 PHIX174 + 5386 2239 2238 2274 36 TTATCGCAATCTGCCGACCACTCGCGATTCAATCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTATCGCAATCTGCCGACCACTCGCGATTCAATCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2238 NA
+3224 PHIX174 + 5386 1313 1312 1348 36 GACCATGCCGCTTTTCTTGGCACGATTAACCCTGAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GACCATGCCGCTTTTCTTGGCACGATTAACCCTTAT .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1312 NA
+3402 PHIX174 + 5386 1545 1544 1580 36 GCCAAATGACGACTTCTACCACATCTATTGACATTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCCAAATGACGACTTCTACCACATCTATTGACATTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1544 NA
+3438 PHIX174 + 5386 557 556 592 36 GGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 556 NA
+3411 PHIX174 + 5386 1249 1248 1284 36 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1248 NA
+3197 PHIX174 + 5386 4174 4173 4209 36 TTGAGTTCGATAATGGTGATATGTATGTTGACGGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTGAGTTCGATAATGGTGATATGTATGTTGACGTCC .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4173 NA
+3302 PHIX174 + 5386 614 613 648 35 TGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TGAGTTTATTGCTGCCGTCATTGCTTATTATGTTC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 613 NA
+3420 PHIX174 + 5386 206 205 241 36 TTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 205 NA
+3411 PHIX174 + 5386 4981 4980 5016 36 CTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4980 NA
+3215 PHIX174 + 5386 1702 1701 1737 36 TCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCCTTTACTTGTCATGCGCTCTAATCTCTGTGCATC ..............................x..... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 1701 NA
+3302 PHIX174 + 5386 2321 2320 2355 35 TAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACC HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2320 NA
+3338 PHIX174 + 5386 4088 4087 4122 35 TCAATCCCCAATGCTTGGCTTCCATAAGCAGATGG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TCAATCCCCAATGCTTGGCTTCCATAAGCAGATGG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4087 NA
+3456 PHIX174 + 5386 900 899 935 36 TGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 899 NA
+3429 PHIX174 + 5386 1155 1154 1190 36 TTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1154 NA
+3438 PHIX174 + 5386 3587 3586 3622 36 TTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3586 NA
+3420 PHIX174 + 5386 3787 3786 3822 36 TCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3786 NA
+3311 PHIX174 + 5386 3834 3833 3868 35 GATAAAGCTGTTGCCGATACTTGGAACAATTTCTG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GATAAAGCTGTTGCCGATACTTGGAACAATTTCTG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3833 NA
+3393 PHIX174 + 5386 989 988 1024 36 TGAGGATAAATTATGTCTAATATTCAAACTGGCGCC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGAGGATAAATTATGTCTAATATTCAAACTGGCGCC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 988 NA
+3429 PHIX174 + 5386 3712 3711 3747 36 TAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3711 NA
+3402 PHIX174 + 5386 1207 1206 1242 36 TTTTTATGTCCCTCATCGTCACGTTTATGGTGAACA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTTTTATGTCCCTCATCGTCACGTTTATGGTGAACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1206 NA
+3447 PHIX174 + 5386 2116 2115 2151 36 TCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2115 NA
+3438 PHIX174 + 5386 660 659 695 36 ATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 659 NA
+3420 PHIX174 + 5386 1536 1535 1571 36 AGCTTTCTCGCCAAATGACGACTTCTACCACATCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGCTTTCTCGCCAAATGACGACTTCTACCACATCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1535 NA
+3329 PHIX174 + 5386 2112 2111 2146 35 TCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2110 NA
+3402 PHIX174 + 5386 2816 2815 2851 36 ATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2815 NA
+3429 PHIX174 + 5386 5176 5175 5211 36 ATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5175 NA
+3447 PHIX174 + 5386 3472 3471 3507 36 CGGCGACTTCACGCCAGAATACGAAAGACCAGGTAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGGCGACTTCACGCCAGAATACGAAAGACCAGGTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3471 NA
+3465 PHIX174 + 5386 1948 1947 1983 36 CGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1947 NA
+3293 PHIX174 + 5386 2212 2211 2246 35 TAGTCAGGTTAAATTTAATGTGACCGTTTATCGCA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TAGTCAGGTTAAATTTAATGTGACCGTTTATCGCA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2211 NA
+3284 PHIX174 + 5386 3817 3816 3851 35 ATATTTTTCATGGTATTGATAAAGCTGTTGCCGAT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 ATATTTTTCATGGTATTGATAAAGCTGTTGCCGAT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3816 NA
+3393 PHIX174 + 5386 3563 3562 3598 36 GTCTATTATGGAAAACACCAATCTTTCCAAGCAACA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTCTATTATGGAAAACACCAATCTTTCCAAGCAACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3562 NA
+3347 PHIX174 + 5386 4198 4197 4232 35 ATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGT HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4196 NA
+3329 PHIX174 + 5386 2907 2906 2941 35 CCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2905 NA
+3347 PHIX174 + 5386 2843 2842 2877 35 TTACCGCTACTAAATGCCGCGGATTGGTTTCGCTG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTACCGCTACTAAATGCCGCGGATTGGTTTCGCTG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2842 NA
+3251 PHIX174 + 5386 4374 4373 4409 36 GTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTTACGCAGTTTTGCCGCAAGCTGGCTGCTGTACGC ...............................x.... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4373 NA
+3347 PHIX174 + 5386 1940 1939 1974 35 ATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1938 NA
+3411 PHIX174 + 5386 5073 5072 5108 36 GAATGGAACAACTCACTAAAAACCAAGCTGTCGCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAATGGAACAACTCACTAAAAACCAAGCTGTCGCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5072 NA
+3375 PHIX174 + 5386 4434 4433 4469 36 TATAATTACCCCAAAAAGAAAGGTATTAAGGATGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TATAATTACCCCAAAAAGAAAGGTATTAAGGATGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4433 NA
+3347 PHIX174 + 5386 1274 1273 1308 35 GCCACTCCTCTCCCGACTGTTAACACTACTGGTTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GCCACTCCTCTCCCGACTGTTAACACTACTGGTTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1272 NA
+3393 PHIX174 + 5386 4440 4439 4475 36 TACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4439 NA
+3411 PHIX174 + 5386 3920 3919 3955 36 GTCAGGATTGACACCCTCCCAATTGTATGTTTTCAT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GTCAGGATTGACACCCTCCCAATTGTATGTTTTCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3919 NA
+3347 PHIX174 + 5386 4587 4586 4621 35 CTCACGTTGGCTGACGACCGATTAGAGGCGTTTTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CTCACGTTGGCTGACGACCGATTAGAGGCGTTTTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4585 NA
+3438 PHIX174 + 5386 1707 1706 1742 36 TACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1706 NA
+3420 PHIX174 + 5386 1582 1581 1617 36 GGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1581 NA
+3411 PHIX174 + 5386 1588 1587 1623 36 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCAAGCTGCTTATGCTAATTTGCATACTGACCAAGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1587 NA
+3166 PHIX174 + 5386 1180 1179 1213 34 TATTGACTCTACTGTAGACATTTTTACTTTTTAT HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 TATTGACTCTACTGTAGACATTTTTACTTTTTAT .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 1179 NA
+3420 PHIX174 + 5386 2698 2697 2733 36 ACCCTCCCGACTGCCTATGATGTTTATCCTTTGAAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ACCCTCCCGACTGCCTATGATGTTTATCCTTTGAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2697 NA
+3438 PHIX174 + 5386 3167 3166 3202 36 TGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3166 NA
+3420 PHIX174 + 5386 2289 2288 2324 36 AGATTGAGTGTGAGGTTATAACGCCGAAGCGGTAAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGATTGAGTGTGAGGTTATAACGCCGAAGCGGTAAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2288 NA
+3402 PHIX174 + 5386 441 440 476 36 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 440 NA
+3465 PHIX174 + 5386 1012 1011 1047 36 TCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1011 NA
+3447 PHIX174 + 5386 161 160 196 36 GCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 GCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 160 NA
+3347 PHIX174 + 5386 1165 1164 1199 35 GCGTCGTGGCCTTGCTATTGACTCTACTGTAGACA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GCGTCGTGGCCTTGCTATTGACTCTACTGTAGACA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1163 NA
+3179 PHIX174 + 5386 5010 5009 5045 36 GTGGCTAAATACGTTAACAAAAAGTCAGATATGGAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTGGATAAATACGTTAACAAAAAGTCAGATATGGAC ....x............................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 5009 NA
+3420 PHIX174 + 5386 2286 2285 2321 36 AAAAGATTGAGTGTGAGGTTATAACGCCGAAGCGGT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAAAGATTGAGTGTGAGGTTATAACGCCGAAGCGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2285 NA
+3411 PHIX174 + 5386 801 800 836 36 GCAGAAGAAAACGTGCGTCAAAAATTACGTGCaGAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GCAGAAGAAAACGTGCGTCAAAAATTACGTGCAGAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 800 NA
+3411 PHIX174 + 5386 1587 1586 1622 36 TGCAAGCTGCTTATGCTAATTTGCATACTGACCAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGCAAGCTGCTTATGCTAATTTGCATACTGACCAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1586 NA
+3438 PHIX174 + 5386 4578 4577 4613 36 TTTGACACTCTCACGTTGGCTGACGACCGATTAGAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTTGACACTCTCACGTTGGCTGACGACCGATTAGAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4577 NA
+3411 PHIX174 + 5386 3570 3569 3605 36 ATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3569 NA
+3411 PHIX174 + 5386 496 495 531 36 TTCTGACGAGTAACAAAGTTTGGATTGCTACTGACC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTCTGACGAGTAACAAAGTTTGGATTGCTACTGACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 495 NA
+3402 PHIX174 + 5386 441 440 476 36 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 440 NA
+3293 PHIX174 + 5386 4235 4234 4269 35 TGAGTTTGTATCTGTTACTGAGAAGTTAATGGATG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TGAGTTTGTATCTGTTACTGAGAAGTTAATGGATG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4234 NA
+3411 PHIX174 + 5386 2293 2292 2328 36 TGAGTGTGAGGTTATAACGCCGAAGCGGTAAAAATT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGAGTGTGAGGTTATAACGCCGAAGCGGTAAAAATT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2292 NA
+3311 PHIX174 + 5386 1579 1578 1613 35 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1577 NA
+3242 PHIX174 + 5386 3332 3331 3367 36 TGGTGCTGATGCTTCCTCTGCTGGTATGGTTGACGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGTGCTGATGCTTCCTCTGCTGGTATGGTTTACGC ...............................x.... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3331 NA
+3411 PHIX174 + 5386 4132 4131 4167 36 TCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4131 NA
+3029 PHIX174 + 5386 1 0 32 32 GAGTTTTATCGCTTCCATGACGCAGAAGTTAA HWI-EAS91_1_306UPAAXX - 36 5 4 36 1 0 32 32 GAGTTTTATCGCTTCCATGACGCAGAAGTTAA ................................ 32M 32/32 100.0% 32/36 88.9% 0/32 0.0% -4 -32
+3366 PHIX174 + 5386 54 53 89 36 AGTCGAAAAATTATCTTGATAAAGCAGGAATTACTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGTCGAAAAATTATCTTGATAAAGCAGGAATTACTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 53 NA
+3302 PHIX174 + 5386 680 679 714 35 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 678 NA
+3429 PHIX174 + 5386 231 230 266 36 TGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 230 NA
+3429 PHIX174 + 5386 4192 4191 4227 36 ATATGTATGTTGACGGCCATAAGGCTGCTTCTGACG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATATGTATGTTGACGGCCATAAGGCTGCTTCTGACG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4191 NA
+3411 PHIX174 + 5386 1580 1579 1615 36 ATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1579 NA
+3393 PHIX174 + 5386 611 610 646 36 TGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 610 NA
+3338 PHIX174 + 5386 4532 4531 4566 35 GATGAATGCAATGCGACAGGCTCATGCTGATGGTT HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GATGAATGCAATGCGACAGGCTCATGCTGATGGTT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4530 NA
+3097 PHIX174 + 5386 638 637 672 35 TTATTATGTTCATCCCGTCAACATTCAAACGGCCT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTATTATGTTCATCCCGTCAACATTCAAACTGCCT ..............................x.... 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 637 NA
+3420 PHIX174 + 5386 1957 1956 1992 36 TTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1956 NA
+3420 PHIX174 + 5386 2728 2727 2763 36 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTGAATGGTCGCCATGATGGTGGTTATTATACCGTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2727 NA
+3402 PHIX174 + 5386 3979 3978 4014 36 TTATGGTTCGTTCTTATTACCCTTCTGAATGTCACG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTATGGTTCGTTCTTATTACCCTTCTGAATGTCACG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3978 NA
+3365 PHIX174 + 5386 540 539 574 35 GCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTAC HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 GCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTAC ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 538 NA
+3438 PHIX174 + 5386 1852 1851 1887 36 GTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1851 NA
+3456 PHIX174 + 5386 4684 4683 4719 36 AGGGTCGCAAGGCTAATGATTCACACGCCGACTGCT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGGGTCGCAAGGCTAATGATTCACACGCCGACTGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4683 NA
+3197 PHIX174 + 5386 3690 3689 3725 36 AAGGTTAGTGCTGAGGTTGACTTAGTTCATCAGCAA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 AAGGTTAGTGCTGAGGTTGACTTAGTTCATCATCAA ................................x... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3689 NA
+3447 PHIX174 + 5386 584 583 619 36 TGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 583 NA
+3311 PHIX174 + 5386 3852 3851 3886 35 ACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3850 NA
+3329 PHIX174 + 5386 2857 2856 2891 35 TGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2856 NA
+3438 PHIX174 + 5386 1728 1727 1763 36 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCTGGGCATCTGGCTATGATGTTGATGGAACTGACC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1727 NA
+3356 PHIX174 + 5386 4658 4657 4692 35 TATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4657 NA
+3420 PHIX174 + 5386 1721 1720 1756 36 TCTAATCTCTGGGCATCTGGCTATGATGTTGATGGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCTAATCTCTGGGCATCTGGCTATGATGTTGATGGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1720 NA
+3429 PHIX174 + 5386 1954 1953 1989 36 TGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1953 NA
+3438 PHIX174 + 5386 962 961 997 36 TAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 961 NA
+3438 PHIX174 + 5386 2175 2174 2210 36 ACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2174 NA
+3420 PHIX174 + 5386 2442 2441 2477 36 TAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2441 NA
+3329 PHIX174 + 5386 5126 5125 5160 35 CAGAATCAGAATGAGCCGCAACTTCGGGATGAAAA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CAGAATCAGAATGAGCCGCAACTTCGGGATGAAAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 5124 NA
+3474 PHIX174 + 5386 5206 5205 5241 36 CCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 5205 NA
+3393 PHIX174 + 5386 2879 2878 2914 36 ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2878 NA
+3402 PHIX174 + 5386 2004 2003 2039 36 TCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2003 NA
+3411 PHIX174 + 5386 2154 2153 2189 36 TTATTCGCCACCATGATTATGACCAGTGTTTCCAGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTATTCGCCACCATGATTATGACCAGTGTTTCCAGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2153 NA
+3356 PHIX174 + 5386 1093 1092 1127 35 TTCAACTACTCCGGTTATCGCTGGCGACTCCTTCG HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TTCAACTACTCCGGTTATCGCTGGCGACTCCTTCG ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 1092 NA
+3447 PHIX174 + 5386 3127 3126 3162 36 AGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3126 NA
+3420 PHIX174 + 5386 3544 3543 3579 36 AGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3543 NA
+3070 PHIX174 + 5386 2508 2507 2542 35 ATCGTCAACGTTATATTTTGATAGTTTGACGGTTA HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 ATCGTCAACGTTATATTTTGATAGTTTGACGTTTA ...............................x... 35M 34/35 97.1% 35/36 97.2% 0/35 0.0% 2507 NA
+3420 PHIX174 + 5386 3600 3599 3635 36 CAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3599 NA
+3420 PHIX174 + 5386 1734 1733 1769 36 CATCTGGCTATGATGTTGATGGAACTGACCAAACGT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CATCTGGCTATGATGTTGATGGAACTGACCAAACGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1733 NA
+3129 PHIX174 + 5386 2655 2654 2687 33 TTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTC HWI-EAS91_1_306UPAAXX + 36 1 0 33 1 0 33 33 TTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTC ................................. 33M 33/33 100.0% 33/36 91.7% 0/33 0.0% 2654 NA
+3429 PHIX174 + 5386 2934 2933 2969 36 TTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2933 NA
+3447 PHIX174 + 5386 1522 1521 1557 36 TCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGAC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1521 NA
+3420 PHIX174 + 5386 4063 4062 4098 36 AGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4062 NA
+3402 PHIX174 + 5386 3395 3394 3430 36 TAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3394 NA
+3429 PHIX174 + 5386 409 408 444 36 AATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 AATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 408 NA
+3420 PHIX174 + 5386 1867 1866 1902 36 TGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1866 NA
+3215 PHIX174 + 5386 3780 3779 3815 36 TCTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCTAATGTCGTCACTGATGCTGCTTCTGGTGTGTTT .................................x.. 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 3779 NA
+3420 PHIX174 + 5386 3982 3981 4017 36 TGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3981 NA
+3402 PHIX174 + 5386 2815 2814 2850 36 TATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2814 NA
+3402 PHIX174 + 5386 1242 1241 1277 36 AGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1241 NA
+3356 PHIX174 + 5386 4659 4658 4693 35 ATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 ATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 4657 NA
+3420 PHIX174 + 5386 2436 2435 2471 36 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2435 NA
+3383 PHIX174 + 5386 527 526 561 35 TGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 TGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 526 NA
+3260 PHIX174 + 5386 4817 4816 4852 36 CCCTAATTTTGGTCGTCGGGTACGCAATCGCCGCCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CCCTAATTTGGGTCGTCGGGTACGCAATCGCCGCCA .........x.......................... 36M 35/36 97.2% 36/36 100.0% 0/36 0.0% 4816 NA
+3447 PHIX174 + 5386 2100 2099 2135 36 AAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 AAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2099 NA
+3438 PHIX174 + 5386 2762 2761 2797 36 TCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2761 NA
+3420 PHIX174 + 5386 4955 4954 4990 36 TGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTA HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4954 NA
+3411 PHIX174 + 5386 3761 3760 3796 36 CGCTACTGCAAAGGATATTTCTAATGTCGTCACTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCTACTGCAAAGGATATTTCTAATGTCGTCACTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3760 NA
+3438 PHIX174 + 5386 4039 4038 4074 36 TCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4038 NA
+3438 PHIX174 + 5386 4788 4787 4823 36 ATGCGGACACTTCCTACAGGTAGCGTTGACCCTAAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGCGGACACTTCCTACAGGTAGCGTTGACCCTAAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4787 NA
+3447 PHIX174 + 5386 1002 1001 1037 36 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1001 NA
+3456 PHIX174 + 5386 4381 4380 4416 36 AGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4380 NA
+3393 PHIX174 + 5386 4256 4255 4291 36 GAAGTTAATGGATGAATTGGCACAATGCTACAATGT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAAGTTAATGGATGAATTGGCACAATGCTACAATGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4255 NA
+3329 PHIX174 + 5386 10 9 44 35 CGCTTCCATGACGCAGAAGTTAACACTTTCGGATA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CGCTTCCATGACGCAGAAGTTAACACTTTCGGATA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 8 NA
+3411 PHIX174 + 5386 1579 1578 1614 36 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATAC HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TATGGGTCTGCAAGCTGCTTATGCTAATTTGCATAC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1578 NA
+3411 PHIX174 + 5386 3862 3861 3897 36 ATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3861 NA
+3420 PHIX174 + 5386 3278 3277 3313 36 TACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3277 NA
+3420 PHIX174 + 5386 349 348 384 36 TCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAG HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAG .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 348 NA
+3402 PHIX174 + 5386 4608 4607 4643 36 TTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4607 NA
+3284 PHIX174 + 5386 3808 3807 3842 35 GTGTGGTTGATATTTTTCATGGTATTGATAAAGCT HWI-EAS91_1_306UPAAXX + 36 1 0 35 1 0 35 35 GTGTGGTTGATATTTTTCATGGTATTGATAAAGCT ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 3807 NA
+3393 PHIX174 + 5386 286 285 321 36 GAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 285 NA
+3429 PHIX174 + 5386 2850 2849 2885 36 TACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGT HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 TACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2849 NA
+3302 PHIX174 + 5386 680 679 714 35 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CATGGAAGGCGCTGAATTTACGGAAAACATTATTA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 678 NA
+3420 PHIX174 + 5386 4740 4739 4775 36 GAGTATGGTACAGCTAATGGCCGTCTTCATTTCCAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 GAGTATGGTACAGCTAATGGCCGTCTTCATTTCCAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4739 NA
+3338 PHIX174 + 5386 2467 2466 2501 35 CCAGCTTCTTCGGCACCTGTTTTACAGACACCTAA HWI-EAS91_1_306UPAAXX - 36 2 1 36 1 0 35 35 CCAGCTTCTTCGGCACCTGTTTTACAGACACCTAA ................................... 35M 35/35 100.0% 35/36 97.2% 0/35 0.0% 2465 NA
+3193 PHIX174 + 5386 320 319 353 34 TTGACATTTTAAAAGAGCGTGGATTACTATCTGA HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 TTGACATTTTAAAAGAGCGTGGATTACTATCTGA .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 319 NA
+3166 PHIX174 + 5386 1180 1179 1213 34 TATTGACTCTACTGTAGACATTTTTACTTTTTAT HWI-EAS91_1_306UPAAXX + 36 1 0 34 1 0 34 34 TATTGACTCTACTGTAGACATTTTTACTTTTTAT .................................. 34M 34/34 100.0% 34/36 94.4% 0/34 0.0% 1179 NA
+3474 PHIX174 + 5386 521 520 556 36 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 520 NA
+3429 PHIX174 + 5386 333 332 368 36 AGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 332 NA
+3429 PHIX174 + 5386 2756 2755 2791 36 ATACCGTCAAGGACTGTGTGACTATTGACGTCCTTC HWI-EAS91_1_306UPAAXX + 36 1 0 36 1 0 36 36 ATACCGTCAAGGACTGTGTGACTATTGACGTCCTTC .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2755 NA
+3411 PHIX174 + 5386 4957 4956 4992 36 ATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4956 NA
+3375 PHIX174 + 5386 72 71 107 36 ATAAAGCAGGAATTACTACTGCTTGTTTACGAATTA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 ATAAAGCAGGAATTACTACTGCTTGTTTACGAATTA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 71 NA
+3393 PHIX174 + 5386 4249 4248 4284 36 TTACTGAGAAGTTAATGGATGAATTGGCACAATGCT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 TTACTGAGAAGTTAATGGATGAATTGGCACAATGCT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4248 NA
+3438 PHIX174 + 5386 2592 2591 2627 36 CAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 2591 NA
+3420 PHIX174 + 5386 1974 1973 2009 36 CGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 1973 NA
+3429 PHIX174 + 5386 3540 3539 3575 36 AAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAA HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 AAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAA .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 3539 NA
+3402 PHIX174 + 5386 4130 4129 4165 36 CATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTAT HWI-EAS91_1_306UPAAXX - 36 1 0 36 1 0 36 36 CATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTAT .................................... 36M 36/36 100.0% 36/36 100.0% 0/36 0.0% 4129 NA
diff -r efdb6fb5de34 -r 341d7c1c5c9a tools/sr_mapping/lastz_wrapper.py
--- a/tools/sr_mapping/lastz_wrapper.py Fri Nov 27 10:53:50 2009 -0500
+++ b/tools/sr_mapping/lastz_wrapper.py Mon Nov 30 09:05:28 2009 -0500
@@ -1,6 +1,35 @@
#! /usr/bin/python
"""
+Runs Lastz
+Written for Lastz v. 1.01.86.
+
+usage: lastz_wrapper.py [options]
+ --ref_name: The reference name to append to all output matches
+ --ref_source: Whether the reference is cached or from the history
+ --source_select: Whether to used pre-set or cached reference file
+ --input1: The name of the reference file if using history or reference base name if using cached
+ --input2: The reads file to align
+ --ref_sequences: The number of sequences in the reference file if using one from history
+ --pre_set_options: Which of the pre set options to use, if using pre-sets
+ --strand: Which strand of the read to search, if specifying all parameters
+ --seed: Seeding settings, if specifying all parameters
+ --gfextend: Whether to perform gap-free extension of seed hits to HSPs (high scoring segment pairs), if specifying all parameters
+ --chain: Whether to perform chaining of HSPs, if specifying all parameters
+ --transition: Number of transitions to allow in each seed hit, if specifying all parameters
+ --O: Gap opening penalty, if specifying all parameters
+ --E: Gap extension penalty, if specifying all parameters
+ --X: X-drop threshold, if specifying all parameters
+ --Y: Y-drop threshold, if specifying all parameters
+ --K: Threshold for HSPs, if specifying all parameters
+ --L: Threshold for gapped alignments, if specifying all parameters
+ --entropy: Whether to involve entropy when filtering HSPs, if specifying all parameters
+ --identity_min: Minimum identity (don't report matches under this identity)
+ --identity_max: Maximum identity (don't report matches above this identity)
+ --coverage: The minimum coverage value (don't report matches covering less than this)
+ --out_format: The format of the output file (sam, diffs, or tabular (general))
+ --output: The name of the output file
+ --num_threads: The number of threads to run
--lastzSeqsFileDir: Directory of local lastz_seqs.loc file
"""
import optparse, os, subprocess, shutil, sys, tempfile, threading
@@ -45,36 +74,31 @@
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_name', dest='ref_name', help='The reference name to append to all output matches' )
+ parser.add_option( '', '--ref_source', dest='ref_source', help='Whether the reference is cached or from the history' )
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( '', '--source_select', dest='source_select', help='Whether to used pre-set or cached reference file' )
+ parser.add_option( '', '--input1', dest='input1', help='The name of the reference file if using history or reference base name if using cached' )
+ parser.add_option( '', '--input2', dest='input2', help='The reads file to align' )
+ parser.add_option( '', '--pre_set_options', dest='pre_set_options', help='Which of the pre set options to use, if using pre-sets' )
+ parser.add_option( '', '--strand', dest='strand', help='Which strand of the read to search, if specifying all parameters' )
+ parser.add_option( '', '--seed', dest='seed', help='Seeding settings, if specifying all parameters' )
+ parser.add_option( '', '--transition', dest='transition', help='Number of transitions to allow in each seed hit, if specifying all parameters' )
+ parser.add_option( '', '--gfextend', dest='gfextend', help='Whether to perform gap-free extension of seed hits to HSPs (high scoring segment pairs), if specifying all parameters' )
+ parser.add_option( '', '--chain', dest='chain', help='Whether to perform chaining of HSPs, if specifying all parameters' )
+ parser.add_option( '', '--O', dest='O', help='Gap opening penalty, if specifying all parameters' )
+ parser.add_option( '', '--E', dest='E', help='Gap extension penalty, if specifying all parameters' )
+ parser.add_option( '', '--X', dest='X', help='X-drop threshold, if specifying all parameters' )
+ parser.add_option( '', '--Y', dest='Y', help='Y-drop threshold, if specifying all parameters' )
+ parser.add_option( '', '--K', dest='K', help='Threshold for HSPs, if specifying all parameters' )
+ parser.add_option( '', '--L', dest='L', help='Threshold for gapped alignments, if specifying all parameters' )
+ parser.add_option( '', '--entropy', dest='entropy', help='Whether to involve entropy when filtering HSPs, if specifying all parameters' )
+ parser.add_option( '', '--identity_min', dest='identity_min', help="Minimum identity (don't report matches under this identity)" )
+ parser.add_option( '', '--identity_max', dest='identity_max', help="Maximum identity (don't report matches above this identity)" )
+ parser.add_option( '', '--coverage', dest='coverage', help="The minimum coverage value (don't report matches covering less than this)" )
+ parser.add_option( '', '--out_format', dest='format', help='The format of the output file (sam, diffs, or tabular (general))' )
parser.add_option( '', '--output', dest='output', help='The output file' )
- parser.add_option( '', '--num_threads', dest='num_threads', help='' )
+ parser.add_option( '', '--num_threads', dest='num_threads', help='The number of threads to run' )
parser.add_option( '', '--lastzSeqsFileDir', dest='lastzSeqsFileDir', help='Directory of local lastz_seqs.loc file' )
( options, args ) = parser.parse_args()
@@ -88,9 +112,9 @@
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,
+ set_options = '--%s --%s --gapped --%s --%s --%s O=%s E=%s X=%s Y=%s K=%s L=%s --%s' % \
+ ( options.gfextend, options.chain, 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':
@@ -107,18 +131,21 @@
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 ):
+# 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 )
+ # Currently set up to work only for a fasta file with a single sequence
+ for seq in range(1):
+# 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 )
+ print command
else:
# Reference is a locally cached 2bit file, split job across number of chroms in 2bit file
tbf = TwoBitFile( open( options.input1, 'r' ) )
@@ -127,7 +154,6 @@
( 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 efdb6fb5de34 -r 341d7c1c5c9a tools/sr_mapping/lastz_wrapper.xml
--- a/tools/sr_mapping/lastz_wrapper.xml Fri Nov 27 10:53:50 2009 -0500
+++ b/tools/sr_mapping/lastz_wrapper.xml Mon Nov 30 09:05:28 2009 -0500
@@ -6,16 +6,18 @@
#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
+--ref_source=$source.ref_source --source_select=$params.source_select --out_format=$out_format.value --input2=$input2
#if $source.ref_source=="history":
+--input1=$source.input1
--ref_sequences=$input1.metadata.sequences
#else:
+--input1=$source.input1_2bit
--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"
+--pre_set_options=${params.pre_set_options} --strand="None" --seed="None" --gfextend="None" --chain="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
+--pre_set_options="None" --strand=$params.strand --seed=$params.seed --gfextend=$params.gfextend --chain=$params.chain --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>
@@ -27,7 +29,7 @@
<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">
+ <param name="input1_2bit" 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" />
@@ -39,7 +41,7 @@
</when>
</conditional>
<param name="out_format" type="select" label="Output format">
- <option value="sam">SAM</option>
+ <option value="sam-">SAM</option>
<option value="diffs">Polymorphisms</option>
<option value="tabular">Tabular</option>
</param>
@@ -61,29 +63,28 @@
</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>
+ <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>
+ <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>
+ <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="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="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?" />
+ <param name="entropy" type="boolean" truevalue="entropy" falsevalue="noentropy" label="Involve entropy when filtering HSPs?" />
</when>
</conditional>
<conditional name="seq_name">
@@ -119,7 +120,7 @@
<param name="input2" value="b1.fasta" ftype="fasta" />
<param name="ref_source" value="history" />
<param name="input1" value="phiX.fasta" ftype="fasta" />
- <param name="out_format" value="sam" />
+ <param name="out_format" value="sam-" />
<param name="source_select" value="pre_set" />
<param name="pre_set_options" value="yasra95short" />
<param name="how_to_name" value="No" />
@@ -129,7 +130,6 @@
<param name="num_threads" value="4" />
<output name="output1" file="lastz_wrapper_out1.sam" />
</test>
- <!--
<test>
<param name="input2" value="b1.fasta" ftype="fasta" />
<param name="ref_source" value="cached" />
@@ -141,7 +141,6 @@
<param name="transition" value="transition" />
<param name="gfextend" value="true" />
<param name="chain" value="true" />
- <param name="gapped" value="gapped" />
<param name="O" value="400" />
<param name="E" value="30" />
<param name="X" value="910" />
@@ -157,7 +156,6 @@
<param name="num_threads" value="4" />
<output name="output1" file="lastz_wrapper_out2.tabular" />
</test>
- -->
<test>
<param name="input2" value="b1.fasta" ftype="fasta" />
<param name="ref_source" value="history" />
@@ -171,7 +169,7 @@
<param name="min_cvrg" value="0" />
<param name="num_threads" value="4" />
<output name="output1" file="lastz_wrapper_out3.tabular" />
- </test>
+ </test>
</tests>
<help>
1
0

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/5761948422a8
changeset: 3121:5761948422a8
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Tue Nov 24 14:53:19 2009 -0500
description:
Added AJAX functionality to main grid framework. Use the use_async flag to turn on AJAXing in a grid; see the history grid for an example of a grid that uses AJAX. Small changes that are needed to fully employ AJAX for a grid are: (a) using the async_compatible flag to indicate which operations can be AJAXed and which cannot; and (b) ensuring that controller code for grid handles operation names in a case-insensitive manner. Also, there are bug fixes for inserting a history link into a page.
diffstat:
lib/galaxy/web/controllers/history.py | 7 +-
lib/galaxy/web/controllers/page.py | 12 +-
lib/galaxy/web/framework/helpers/grids.py | 16 +-
templates/grid_base.mako | 1162 ++++++++++++++++++++++++---------
templates/grid_base_async.mako | 709 +--------------------
templates/grid_body_async.mako | 5 -
templates/grid_common.mako | 63 +-
templates/grid_common_async.mako | 155 ----
templates/history/grid.mako | 2 +-
templates/page/select_histories_grid.mako | 11 +-
10 files changed, 930 insertions(+), 1212 deletions(-)
diffs (2379 lines):
diff -r 07c1b4bc14af -r 5761948422a8 lib/galaxy/web/controllers/history.py
--- a/lib/galaxy/web/controllers/history.py Mon Nov 23 17:20:01 2009 -0500
+++ b/lib/galaxy/web/controllers/history.py Tue Nov 24 14:53:19 2009 -0500
@@ -87,11 +87,11 @@
# Grid definition
title = "Saved Histories"
model_class = model.History
- template='/grid_base.mako'
+ template='/history/grid.mako'
default_sort_key = "-create_time"
columns = [
NameColumn( "Name", key="name", model_class=model.History,
- link=( lambda history: iff( history.deleted, None, dict( operation="switch", id=history.id ) ) ),
+ 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"),
@@ -110,7 +110,7 @@
)
operations = [
- grids.GridOperation( "Switch", allow_multiple=False, condition=( lambda item: not item.deleted ), async_compatible=True ),
+ grids.GridOperation( "Switch", allow_multiple=False, condition=( lambda item: not item.deleted ), async_compatible=False ),
grids.GridOperation( "Share", condition=( lambda item: not item.deleted ), async_compatible=False ),
grids.GridOperation( "Unshare", condition=( lambda item: not item.deleted ), async_compatible=False ),
grids.GridOperation( "Rename", condition=( lambda item: not item.deleted ), async_compatible=False ),
@@ -127,6 +127,7 @@
default_filter = dict( name="All", deleted="False", tags="All", shared="All" )
num_rows_per_page = 50
preserve_state = False
+ use_async = True
use_paging = True
def get_current_item( self, trans ):
return trans.get_history()
diff -r 07c1b4bc14af -r 5761948422a8 lib/galaxy/web/controllers/page.py
--- a/lib/galaxy/web/controllers/page.py Mon Nov 23 17:20:01 2009 -0500
+++ b/lib/galaxy/web/controllers/page.py Tue Nov 24 14:53:19 2009 -0500
@@ -116,11 +116,11 @@
# Grid definition.
title = "Saved Histories"
- template = "/page/select_histories_grid.mako"
- async_template = "grid_body_async.mako"
+ template = "/page/select_histories_grid.mako"
model_class = model.History
default_filter = { "deleted" : "False" , "shared" : "All" }
default_sort_key = "-update_time"
+ use_async = True
use_paging = True
num_rows_per_page = 10
columns = [
@@ -152,15 +152,15 @@
# Handle operation
if 'operation' in kwargs and 'id' in kwargs:
session = trans.sa_session
- operation = kwargs['operation']
+ operation = kwargs['operation'].lower()
ids = util.listify( kwargs['id'] )
for id in ids:
item = session.query( model.Page ).get( trans.security.decode_id( id ) )
- if operation == "Delete":
+ if operation == "delete":
item.deleted = True
- elif operation == "Publish":
+ elif operation == "publish":
item.published = True
- elif operation == "Unpublish":
+ elif operation == "unpublish":
item.published = False
session.flush()
# Build grid
diff -r 07c1b4bc14af -r 5761948422a8 lib/galaxy/web/framework/helpers/grids.py
--- a/lib/galaxy/web/framework/helpers/grids.py Mon Nov 23 17:20:01 2009 -0500
+++ b/lib/galaxy/web/framework/helpers/grids.py Tue Nov 24 14:53:19 2009 -0500
@@ -17,9 +17,11 @@
title = ""
exposed = True
model_class = None
- # To use grid's async features, set template="grid_base_async.mako"
template = "grid_base.mako"
- async_template = "grid_body_async.mako"
+ async_template = "grid_base_async.mako"
+
+ use_async = False
+
global_actions = []
columns = []
operations = []
@@ -174,6 +176,7 @@
if page_num == 0:
# Show all rows in page.
total_num_rows = query.count()
+ page_num = 1
num_pages = 1
else:
# Show a limited number of rows. Before modifying query, get the total number of rows that query
@@ -218,8 +221,8 @@
new_kwargs[ 'id' ] = trans.security.encode_id( id )
return url_for( **new_kwargs )
-
- return trans.fill_template( iff( 'async' not in kwargs, self.template, self.async_template),
+ async_request = ( ( self.use_async ) and ( 'async' in kwargs ) and ( kwargs['async'] in [ 'True', 'true'] ) )
+ return trans.fill_template( iff( async_request, self.async_template, self.template),
grid=self,
query=query,
cur_page_num = page_num,
@@ -233,7 +236,10 @@
ids = kwargs.get( 'id', [] ),
url = url,
message_type = status,
- message = message )
+ message = message,
+ # Pass back kwargs so that grid template can set and use args without grid explicitly having to pass them.
+ kwargs=kwargs
+ )
def get_ids( self, **kwargs ):
id = []
if 'id' in kwargs:
diff -r 07c1b4bc14af -r 5761948422a8 templates/grid_base.mako
--- a/templates/grid_base.mako Mon Nov 23 17:20:01 2009 -0500
+++ b/templates/grid_base.mako Tue Nov 24 14:53:19 2009 -0500
@@ -1,4 +1,5 @@
<%!
+ from galaxy.web.framework.helpers.grids import TextColumn
from galaxy.model import History, HistoryDatasetAssociation, User, Role, Group
import galaxy.util
def inherit(context):
@@ -10,208 +11,727 @@
<%inherit file="${inherit(context)}"/>
## Render the grid's basic elements. Each of these elements can be subclassed.
-%if message:
- <p>
- <div class="${message_type}message transient-message">${util.restore_text( message )}</div>
- <div style="clear: both"></div>
- </p>
-%endif
+<table>
+ <tr>
+ <td width="75%">${self.render_grid_header()}</td>
+ <td></td>
+ <td width="25%" id="grid-message" valign="top">${self.render_grid_message()}</td>
+ </tr>
+</table>
-${self.grid_header()}
-${self.grid_table()}
+${self.render_grid_table()}
+
## Function definitions.
<%def name="title()">${grid.title}</%def>
<%def name="javascripts()">
- ${parent.javascripts()}
- ${h.js("jquery.autocomplete", "autocomplete_tagging" )}
- <script type="text/javascript">
- ## TODO: generalize and move into galaxy.base.js
- $(document).ready(function() {
- // Initialize grid elements.
- $(".grid").each( function() {
- var grid = this;
- var checkboxes = $(this).find("input.grid-row-select-checkbox");
- var update = $(this).find( "span.grid-selected-count" );
- $(checkboxes).each( function() {
- $(this).change( function() {
- var n = $(checkboxes).filter("[checked]").size();
- update.text( n );
- });
- })
- });
-
- // Initialize autocomplete for text inputs in search UI.
- var t = $("#input-tags-filter");
- if (t.length)
- {
-
- var autocomplete_options =
- { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
+ ${parent.javascripts()}
+ ${h.js("jquery.autocomplete", "autocomplete_tagging" )}
+ <script type="text/javascript">
+ ## TODO: generalize and move into galaxy.base.js
+ $(document).ready(function() {
+ init_grid_elements();
+ init_grid_controls();
+ });
+ ## Can this be moved into base.mako?
+ %if refresh_frames:
+ %if 'masthead' in refresh_frames:
+ ## Refresh masthead == user changes (backward compatibility)
+ if ( parent.user_changed ) {
+ %if trans.user:
+ parent.user_changed( "${trans.user.email}", ${int( app.config.is_admin_user( trans.user ) )} );
+ %else:
+ parent.user_changed( null, false );
+ %endif
+ }
+ %endif
+ %if 'history' in refresh_frames:
+ if ( parent.frames && parent.frames.galaxy_history ) {
+ parent.frames.galaxy_history.location.href="${h.url_for( controller='root', action='history')}";
+ if ( parent.force_right_panel ) {
+ parent.force_right_panel( 'show' );
+ }
+ }
+ %endif
+ %if 'tools' in refresh_frames:
+ if ( parent.frames && parent.frames.galaxy_tools ) {
+ parent.frames.galaxy_tools.location.href="${h.url_for( controller='root', action='tool_menu')}";
+ if ( parent.force_left_panel ) {
+ parent.force_left_panel( 'show' );
+ }
+ }
+ %endif
+ %endif
+
+ //
+ // Code to handle grid operations: filtering, sorting, paging, and operations.
+ //
+
+ // Operations that are not async (AJAX) compatible.
+ var no_async_ops = new Object();
+ %for operation in grid.operations:
+ %if not operation.async_compatible:
+ no_async_ops['${operation.label.lower()}'] = "True";
+ %endif
+ %endfor
+
+ // Initialize grid controls
+ function init_grid_controls()
+ {
+
+ // Initialize operation buttons.
+ $('input[name=operation]:submit').each(function() {
+ $(this).click( function() {
+ // Get operation name.
+ var operation_name = $(this).attr("value");
- t.autocomplete("${h.url_for( controller='tag', action='tag_autocomplete_data', item_class='History' )}", autocomplete_options);
- }
-
- var t2 = $("#input-name-filter");
- if (t2.length)
- {
- var autocomplete_options =
- { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
+ // For some reason, $('input[name=id]:checked').val() does not return all ids for checked boxes.
+ // The code below performs this function.
+ var item_ids = new Array()
+ $('input[name=id]:checked').each(function() {
+ item_ids[item_ids.length] = $(this).val();
+ });
+ do_operation(operation_name, item_ids);
+ });
+ });
+
+ // Initialize submit image elements.
+ $('.submit-image').each( function()
+ {
+ // On mousedown, add class to simulate click.
+ $(this).mousedown( function() {
+ $(this).addClass('gray-background');
+ });
+
+ // On mouseup, add class to simulate click.
+ $(this).mouseup( function() {
+ $(this).removeClass('gray-background');
+ });
+
+ });
+
+ // Initialize sort links.
+ $('.sort-link').each( function()
+ {
+ var sort_key = $(this).attr('sort_key');
+ $(this).click( function() {
+ set_sort_condition(sort_key);
+ return false;
+ });
+
+ });
+
+ // Initialize page links.
+ $('.page-link > a').each( function()
+ {
+ var page_num = $(this).attr('page_num');
+ $(this).click( function() {
+ set_page(page_num);
+ return false;
+ });
+
+ });
+ $('#show-all-link').click( function() {
+ set_page('all');
+ return false;
+ });
+
+ // Initialize categorical filters.
+ $('.categorical-filter > a').each( function()
+ {
+ $(this).click( function() {
+ var filter_key = $(this).attr('filter_key');
+ var filter_val = $(this).attr('filter_val');
+ set_categorical_filter(filter_key, filter_val);
+ return false;
+ });
+ });
+
+ // Initialize text filters.
+ $('.text-filter-form').each( function()
+ {
+ $(this).submit( function() {
+ var column_key = $(this).attr('column_key');
+ var text_input_obj = $('#input-' + column_key + '-filter');
+ var text_input = text_input_obj.val();
+ text_input_obj.val('');
+ add_filter_condition(column_key, text_input, true);
+ return false;
+ });
+ });
+
+ // Initialize autocomplete for text inputs in search UI.
+ var t = $("#input-tags-filter");
+ if (t.length)
+ {
+
+ var autocomplete_options =
+ { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
- t2.autocomplete("${h.url_for( controller='history', action='name_autocomplete_data' )}", autocomplete_options);
- }
-
- // Initialize submit image elements.
- $('.submit-image').each( function()
- {
- // On mousedown, add class to simulate click.
- $(this).mousedown( function() {
- $(this).addClass('gray-background');
- });
-
- // On mouseup, add class to simulate click.
- $(this).mouseup( function() {
- $(this).removeClass('gray-background');
- });
-
- });
- });
- ## Can this be moved into base.mako?
- %if refresh_frames:
- %if 'masthead' in refresh_frames:
- ## Refresh masthead == user changes (backward compatibility)
- if ( parent.user_changed ) {
- %if trans.user:
- parent.user_changed( "${trans.user.email}", ${int( app.config.is_admin_user( trans.user ) )} );
- %else:
- parent.user_changed( null, false );
- %endif
- }
- %endif
- %if 'history' in refresh_frames:
- if ( parent.frames && parent.frames.galaxy_history ) {
- parent.frames.galaxy_history.location.href="${h.url_for( controller='root', action='history')}";
- if ( parent.force_right_panel ) {
- parent.force_right_panel( 'show' );
- }
- }
- %endif
- %if 'tools' in refresh_frames:
- if ( parent.frames && parent.frames.galaxy_tools ) {
- parent.frames.galaxy_tools.location.href="${h.url_for( controller='root', action='tool_menu')}";
- if ( parent.force_left_panel ) {
- parent.force_left_panel( 'show' );
- }
- }
- %endif
- %endif
-
- // Filter and sort args for grid.
- var filter_args = ${h.to_json_string(cur_filter_dict)};
- var sort_key = "${sort_key}";
-
- //
- // Add tag to grid filter.
- //
- function add_tag_to_grid_filter(tag_name, tag_value)
- {
- // Put tag name and value together.
- var tag = tag_name + (tag_value != null && tag_value != "" ? ":" + tag_value : "");
- add_condition_to_grid_filter("tags", tag, true);
- }
-
- //
- // Add a filter to the current grid filter; this adds the filter and then issues a request to refresh the grid.
- //
- function add_condition_to_grid_filter(name, value, append)
- {
- // Update filter arg with new condition.
- if (append)
- {
- // Append value.
- var cur_val = filter_args[name];
- if (cur_val != "All")
- cur_val = cur_val + ", " + value;
- else
- cur_val = value;
- filter_args[name] = cur_val;
- }
- else
- {
- // Replace value.
- filter_args[name] = value;
- }
-
- // Build URL with filter args, sort key.
- var filter_arg_value_strs = new Array();
- var i = 0;
- for (arg in filter_args)
- {
- filter_arg_value_strs[i++] = "f-" + arg + "=" + filter_args[arg];
- }
- var filter_str = filter_arg_value_strs.join("&");
- var url_base = "${h.url_for( action='list')}";
- var url = url_base + "?" + filter_str + "&sort=" + sort_key;
- self.location = url;
- }
-
- //
- // Initiate navigation when user selects a page to view.
- //
- function navigate_to_page(page_select)
- {
- page_num = $(page_select).val();
- <% url_args = {"page" : "PAGE"} %>
- var url_base = "${url( url_args )}";
- var url = url_base.replace("PAGE", page_num);
- self.location = url;
- }
+ t.autocomplete("${h.url_for( controller='tag', action='tag_autocomplete_data', item_class='History' )}", autocomplete_options);
+ }
+
+ var t2 = $("#input-name-filter");
+ if (t2.length)
+ {
+ var autocomplete_options =
+ { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
+
+ t2.autocomplete("${h.url_for( controller='history', action='name_autocomplete_data' )}", autocomplete_options);
+ }
+
+ // Initialize advanced search toggles.
+ $('.advanced-search-toggle').each( function()
+ {
+ $(this).click( function() {
+ $('#more-search-options').slideToggle('fast');
+ return false;
+ });
+ });
+ }
+
+ // Overrides function in galaxy.base.js so that click does operation.
+ function make_popup_menus()
+ {
+ jQuery( "div[popupmenu]" ).each( function() {
+ var options = {};
+ $(this).find( "a" ).each( function() {
+ var confirmtext = $(this).attr( "confirm" ),
+ href = $(this).attr( "href" ),
+ target = $(this).attr( "target" );
+ options[ $(this).text() ] = function() {
+ if ( !confirmtext || confirm( confirmtext ) ) {
+ do_operation_from_href(href);
+ }
+ };
+ });
+ var b = $( "#" + $(this).attr( 'popupmenu' ) );
+ make_popupmenu( b, options );
+ $(this).remove();
+ b.show();
+ });
+ }
+
+ // Initialize grid elements.
+ function init_grid_elements()
+ {
+ // Initialize grid selection checkboxes.
+ $(".grid").each( function() {
+ var grid = this;
+ var checkboxes = $(this).find("input.grid-row-select-checkbox");
+ var update = $(this).find( "span.grid-selected-count" );
+ $(checkboxes).each( function() {
+ $(this).change( function() {
+ var n = $(checkboxes).filter("[checked]").size();
+ update.text( n );
+ });
+ })
+ });
+
+ // Initialize item labels.
+ $(".label").each( function() {
+ // If href has an operation in it, do operation when clicked. Otherwise do nothing.
+ var href = $(this).attr('href');
+ if ( href.indexOf('operation=') != -1 )
+ {
+ $(this).click( function() {
+ do_operation_from_href( $(this).attr('href') );
+ return false;
+ });
+ }
+ });
+
+ // Initialize item menu operations.
+ make_popup_menus();
+ }
+
+ // Filter values for categorical filters.
+ var categorical_filters = new Object();
+ %for column in grid.columns:
+ %if column.filterable is not None and not isinstance( column, TextColumn ):
+ var ${column.key}_filters =
+ {
+ %for i, filter in enumerate( column.get_accepted_filters() ):
+ %if i > 0:
+ ,
+ %endif
+ ${filter.label} : ${h.to_json_string( filter.args )}
+ %endfor
+ };
+ categorical_filters['${column.key}'] = ${column.key}_filters;
+ %endif
+ %endfor
+
+ // Initialize URL args with filter arguments.
+ var url_args = ${h.to_json_string( cur_filter_dict )};
+
+ // Place "f-" in front of all filter arguments.
+ var arg;
+ for (arg in url_args)
+ {
+ value = url_args[arg];
+ delete url_args[arg];
+ url_args["f-" + arg] = value;
+ }
+
+ // Add sort argument to URL args.
+ url_args['sort'] = "${encoded_sort_key}";
+
+ // Add async keyword to URL args.
+ url_args['async'] = true;
+
+ // Add page to URL args.
+ url_args['page'] = ${cur_page_num};
+
+ var num_pages = ${num_pages};
+
+ // Go back to page one; this is useful when a filter is applied.
+ function go_page_one()
+ {
+ // Need to go back to page 1 if not showing all.
+ var cur_page = url_args['page'];
+ if (cur_page != null && cur_page != undefined && cur_page != 'all')
+ url_args['page'] = 1;
+ }
+
+ // Add tag to grid filter.
+ function add_tag_to_grid_filter(tag_name, tag_value)
+ {
+ // Put tag name and value together.
+ var tag = tag_name + (tag_value != null && tag_value != "" ? ":" + tag_value : "");
+ $('#more-search-options').show('fast');
+ add_filter_condition("tags", tag, true);
+ }
+
+ // Add a condition to the grid filter; this adds the condition and refreshes the grid.
+ function add_filter_condition(name, value, append)
+ {
+ // Do nothing is value is empty.
+ if (value == "")
+ return false;
+
+ // Update URL arg with new condition.
+ if (append)
+ {
+ // Update or append value.
+ var cur_val = url_args["f-" + name];
+ var new_val;
+ if (cur_val == null || cur_val == undefined)
+ {
+ new_val = value;
+ }
+ else if (typeof(cur_val) == "string")
+ {
+ if (cur_val == "All")
+ new_val = value;
+ else
+ {
+ // Replace string with array.
+ var values = new Array();
+ values[0] = cur_val;
+ values[1] = value;
+ new_val = values;
+ }
+ }
+ else {
+ // Current value is an array.
+ new_val = cur_val;
+ new_val[new_val.length] = value;
+ }
+ url_args["f-" + name] = new_val;
+ }
+ else
+ {
+ // Replace value.
+ url_args["f-" + name] = value;
+ }
+
+ // Add button that displays filter and provides a button to delete it.
+ var t = $("<span>" + value +
+ " <a href='#'><img src='${h.url_for('/static/images/delete_tag_icon_gray.png')}'/></a></span>");
+ t.addClass('text-filter-val');
+ t.click(function() {
+ // Remove filter condition.
+
+ // Remove visible element.
+ $(this).remove();
+
+ // Remove condition from URL args.
+ var cur_val = url_args["f-" + name];
+ if (cur_val == null || cur_val == undefined)
+ {
+ // Unexpected. Throw error?
+ }
+ else if (typeof(cur_val) == "string")
+ {
+ if (cur_val == "All")
+ {
+ // Unexpected. Throw error?
+ }
+ else
+ // Remove condition.
+ delete url_args["f-" + name];
+ }
+ else {
+ // Current value is an array.
+ var conditions = cur_val;
+ var index;
+ for (index = 0; index < conditions.length; index++)
+ if (conditions[index] == value)
+ {
+ conditions.splice(index, 1);
+ break;
+ }
+ }
+
+ go_page_one();
+ update_grid();
+ });
+
+ var container = $('#' + name + "-filtering-criteria");
+ container.append(t);
+
+ go_page_one();
+ update_grid();
+ }
+
+ // Set sort condition for grid.
+ function set_sort_condition(col_key)
+ {
+ // Set new sort condition. New sort is col_key if sorting new column; if reversing sort on
+ // currently sorted column, sort is reversed.
+ var cur_sort = url_args['sort'];
+ var new_sort = col_key;
+ if ( cur_sort.indexOf( col_key ) != -1)
+ {
+ // Reverse sort.
+ if ( cur_sort.substring(0,1) != '-' )
+ new_sort = '-' + col_key;
+ else
+ {
+ // Sort reversed by using just col_key.
+ }
+ }
+
+ // Remove sort arrows elements.
+ $('.sort-arrow').remove()
+
+ // Add sort arrow element to new sort column.
+ var sort_arrow = "↑";
+ if (new_sort.substring(0,1) != '-')
+ sort_arrow = "↓";
+ var t = $("<span>" + sort_arrow + "</span>").addClass('sort-arrow');
+ var th = $("#" + col_key + '-header');
+ th.append(t);
+
+ // Need to go back to page 1 if not showing all.
+ var cur_page = url_args['page'];
+ if (cur_page != null && cur_page != undefined && cur_page != 'all')
+ url_args['page'] = 1;
+
+ // Update grid.
+ url_args['sort'] = new_sort;
+ go_page_one();
+ update_grid();
+ }
+
+ // Set new value for categorical filter.
+ function set_categorical_filter(name, new_value)
+ {
+ // Update filter hyperlinks to reflect new filter value.
+ var category_filter = categorical_filters[name];
+ var cur_value = url_args["f-" + name];
+ $("." + name + "-filter").each( function() {
+ var text = $.trim( $(this).text() );
+ var filter = category_filter[text];
+ var filter_value = filter[name];
+ if (filter_value == new_value)
+ {
+ // Remove filter link since grid will be using this filter. It is assumed that
+ // this element has a single child, a hyperlink/anchor with text.
+ $(this).empty();
+ $(this).addClass("current-filter");
+ $(this).append(text);
+ }
+ else if (filter_value == cur_value)
+ {
+ // Add hyperlink for this filter since grid will no longer be using this filter. It is assumed that
+ // this element has a single child, a hyperlink/anchor.
+ $(this).empty();
+ var t = $("<a href='#'>" + text + "</a>");
+ t.click(function() {
+ set_categorical_filter( name, filter_value );
+ });
+ $(this).removeClass("current-filter");
+ $(this).append(t);
+ }
+ });
+
+ // Update grid.
+ url_args["f-" + name] = new_value;
+ go_page_one();
+ update_grid();
+ }
+
+ // Set page to view.
+ function set_page(new_page)
+ {
+ // Update page hyperlink to reflect new page.
+ $(".page-link").each( function() {
+ var id = $(this).attr('id');
+ var page_num = parseInt( id.split("-")[2] ); // Id has form 'page-link-<page_num>
+ var cur_page = url_args['page'];
+ if (page_num == new_page)
+ {
+ // Remove link to page since grid will be on this page. It is assumed that
+ // this element has a single child, a hyperlink/anchor with text.
+ var text = $(this).children().text();
+ $(this).empty();
+ $(this).addClass("inactive-link");
+ $(this).text(text);
+ }
+ else if (page_num == cur_page)
+ {
+ // Add hyperlink to this page since grid will no longer be on this page. It is assumed that
+ // this element has a single child, a hyperlink/anchor.
+ var text = $(this).text();
+ $(this).empty();
+ $(this).removeClass("inactive-link");
+ var t = $("<a href='#'>" + text + "</a>");
+ t.click(function() {
+ set_page(page_num);
+ });
+ $(this).append(t);
+ }
+ });
+
+ var maintain_page_links = true;
+ if (new_page == "all")
+ {
+ url_args['page'] = new_page;
+ maintain_page_links = false;
+ }
+ else
+ url_args['page'] = parseInt(new_page);
+ update_grid(maintain_page_links);
+ }
+
+ // Perform a grid operation.
+ function do_operation(operation, item_ids)
+ {
+ operation = operation.toLowerCase();
+
+ // Update URL args.
+ url_args['operation'] = operation;
+ url_args['id'] = item_ids;
+
+ // If operation cannot be performed asynchronously, redirect to location. Otherwise do operation.
+ var no_async = ( no_async_ops[operation] != undefined && no_async_ops[operation] != null);
+ if (no_async)
+ {
+ go_to_URL();
+ }
+ else
+ {
+ update_grid(true);
+ delete url_args['operation'];
+ delete url_args['id'];
+ }
+ }
+
+ // Perform a hyperlink click that initiates an operation. If there is no operation, ignore click.
+ function do_operation_from_href(href)
+ {
+ // Get operation, id in hyperlink's href.
+ var href_parts = href.split("?");
+ if (href_parts.length > 1)
+ {
+ var href_parms_str = href_parts[1];
+ var href_parms = href_parms_str.split("&");
+ var operation = null;
+ var id = -1;
+ for (var index = 0; index < href_parms.length; index++)
+ {
+ if (href_parms[index].indexOf('operation') != -1)
+ {
+ // Found operation parm; get operation value.
+ operation = href_parms[index].split('=')[1];
+ }
+ else if (href_parms[index].indexOf('id') != -1)
+ {
+ // Found operation parm; get operation value.
+ id = href_parms[index].split('=')[1];
+ }
+ }
+
+ // Do operation.
+ do_operation(operation, id);
+ return false;
+ }
+
+ }
+
+ // Navigate window to the URL defined by url_args. This method should be used to short-circuit grid AJAXing.
+ function go_to_URL()
+ {
+ // Not async request.
+ url_args['async'] = false;
+
+ // Build argument string.
+ var arg_str = "";
+ var arg;
+ for (arg in url_args)
+ arg_str = arg_str + arg + "=" + url_args[arg] + "&";
+
+ // Go.
+ window.location = encodeURI( "${h.url_for()}?" + arg_str );
+ }
+
+ // Update grid.
+ function update_grid(maintain_page_links)
+ {
+ ## If grid is not using async, then go to URL.
+ %if not grid.use_async:
+ go_to_URL();
+ return;
+ %endif
+
+ // If there's an operation in the args, do POST; otherwise, do GET.
+ var operation = url_args['operation'];
+ var method = (operation != null && operation != undefined ? "POST" : "GET" );
+ $.ajax({
+ type: method,
+ url: "${h.url_for()}",
+ data: url_args,
+ error: function() { alert( "Grid refresh failed" ) },
+ success: function(response_text) {
+ // HACK: use a simple string to separate the elements in the
+ // response: (1) table body; (2) number of pages in table; and (3) message.
+ var parsed_response_text = response_text.split("*****");
+
+ // Update grid body.
+ var table_body = parsed_response_text[0];
+ $('#grid-table-body').html(table_body);
+
+ // Process grid body.
+ init_grid_elements();
+ make_popup_menus();
+
+ // Update number of pages.
+ var num_pages = parseInt( parsed_response_text[1] );
+
+ // Rebuild page links.
+ if (!maintain_page_links)
+ {
+ // Remove page links.
+ var page_link_container = $('#page-link-container');
+ page_link_container.children().remove();
+
+ // First page is the current page.
+ var t = $("<span>1</span>");
+ t.addClass('page-link');
+ t.addClass('inactive-link');
+ t.attr('id', 'page-link-1');
+ page_link_container.append(t);
+
+ // Show all link is visible only if there are multiple pages.
+ var elt = $('#show-all-link-span');
+ if (num_pages > 1)
+ elt.show();
+ else
+ elt.hide();
+
+ // Subsequent pages are navigable.
+ for (var i = 2; i <= num_pages; i++)
+ {
+ var span = $("<span></span>");
+ span.addClass('page-link');
+ span.attr('id', 'page-link-' + i);
+ var t = $("<a href='#'>" + i + "</a>");
+ t.attr('page', i);
+ t.click(function() {
+ var page = $(this).attr('page');
+ set_page(page);
+ });
+ span.append(t)
+ page_link_container.append(span);
+ }
+ }
+
+ // Show message if there is one.
+ var message = $.trim( parsed_response_text[2] );
+ if (message != "")
+ {
+ $('#grid-message').html( message );
+ setTimeout("$('#grid-message').hide()", 5000);
+ }
+ }
+ });
+ }
</script>
</%def>
<%def name="stylesheets()">
${h.css( "base", "autocomplete_tagging" )}
<style>
- ## Not generic to all grids -- move to base?
- .count-box {
- min-width: 1.1em;
- padding: 5px;
- border-width: 1px;
- border-style: solid;
- text-align: center;
- display: inline-block;
- }
- .submit-image {
- vertical-align: text-bottom;
- margin: 0;
- padding: 0;
- }
- .no-padding-or-margin {
- margin: 0;
- padding: 0;
- }
- .gray-background {
- background-color: #DDDDDD;
- }
- .text-filter-val {
- border: solid 1px #AAAAAA;
- padding: 1px 3px 1px 3px;
- margin-right: 5px;
- -moz-border-radius: .5em;
- -webkit-border-radius: .5em;
- font-style: italic;
- }
+ ## Not generic to all grids -- move to base?
+ .count-box {
+ min-width: 1.1em;
+ padding: 5px;
+ border-width: 1px;
+ border-style: solid;
+ text-align: center;
+ display: inline-block;
+ }
+ .text-filter-val {
+ border: solid 1px #AAAAAA;
+ padding: 1px 3px 1px 3px;
+ margin-right: 5px;
+ -moz-border-radius: .5em;
+ -webkit-border-radius: .5em;
+ font-style: italic;
+ }
+ .page-link a, .inactive-link {
+ padding: 0px 7px 0px 7px;
+ }
+ .inactive-link, .current-filter {
+ font-style: italic;
+ }
+ .submit-image {
+ vertical-align: text-bottom;
+ margin: 0;
+ padding: 0;
+ }
+ .no-padding-or-margin {
+ margin: 0;
+ padding: 0;
+ }
+ .gray-background {
+ background-color: #DDDDDD;
+ }
</style>
</%def>
<%namespace file="./grid_common.mako" import="*" />
-## Print grid header.
-<%def name="grid_header()">
+## Render grid message.
+<%def name="render_grid_message()">
+ %if message:
+ <p>
+ <div class="${message_type}message transient-message">${util.restore_text( message )}</div>
+ <div style="clear: both"></div>
+ </p>
+ %endif
+</%def>
+
+## Render grid header.
+<%def name="render_grid_header(render_title=True)">
<div class="grid-header">
- <h2>${grid.title}</h2>
+ %if render_title:
+ <h2>${grid.title}</h2>
+ %endif
%if grid.global_actions:
<ul class="manage-table-actions">
@@ -227,11 +747,11 @@
</div>
</%def>
-## Print grid.
-<%def name="grid_table()">
- <form action="${url()}" method="post" >
+## Render grid.
+<%def name="render_grid_table()">
+ <form action="${url()}" method="post" onsubmit="return false;">
<table class="grid">
- <thead>
+ <thead id="grid-table-header">
<tr>
<th></th>
%for column in grid.columns:
@@ -251,152 +771,164 @@
href = url( sort=column.key )
%>
<th\
+ id="${column.key}-header"
%if column.ncells > 1:
colspan="${column.ncells}"
%endif
>
%if href:
- <a href="${href}">${column.label}</a>
+ <a href="${href}" class="sort-link" sort_key='${column.key}'>${column.label}</a>
%else:
${column.label}
%endif
- <span>${extra}</span>
+ <span class="sort-arrow">${extra}</span>
</th>
%endif
%endfor
<th></th>
</tr>
</thead>
- <tbody>
- %for i, item in enumerate( query ):
- <tr \
- %if current_item == item:
- class="current" \
- %endif
- >
- ## Item selection column
- <td style="width: 1.5em;">
- <input type="checkbox" name="id" value=${trans.security.encode_id( item.id )} class="grid-row-select-checkbox" />
- </td>
- ## Data columns
- %for column in grid.columns:
- %if column.visible:
- <%
- # Link
- link = column.get_link( trans, grid, item )
- if link:
- href = url( **link )
- else:
- href = None
- # Value (coerced to list so we can loop)
- value = column.get_value( trans, grid, item )
- if column.ncells == 1:
- value = [ value ]
- %>
- %for cellnum, v in enumerate( value ):
- <%
- # Handle non-ascii chars.
- if isinstance(v, str):
- v = unicode(v, 'utf-8')
- # Attach popup menu?
- if column.attach_popup and cellnum == 0:
- extra = '<a id="grid-%d-popup" class="arrow" style="display: none;"><span>▼</span></a>' % i
- else:
- extra = ""
- %>
- %if href:
- <td><div class="menubutton split" style="float: left;"><a class="label" href="${href}">${v}</a>${extra}</td>
- %else:
- <td >${v}${extra}</td>
- %endif
- %endfor
- %endif
- %endfor
- ## Actions column
- <td>
- <div popupmenu="grid-${i}-popup">
- %for operation in grid.operations:
- %if operation.allowed( item ):
- <%
- target = ""
- if operation.target:
- target = "target='" + operation.target + "'"
- %>
- <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
- %endif
- %endfor
- </div>
- </td>
- </tr>
- %endfor
+ <tbody id="grid-table-body">
+ ${render_grid_table_body_contents()}
</tbody>
<tfoot>
- ## Row for navigating among pages.
- <%
- # Mapping between item class and plural term for item.
- items_plural = "items"
- if grid.model_class == History:
- items_plural = "histories"
- elif grid.model_class == HistoryDatasetAssociation:
- items_plural = "datasets"
- elif grid.model_class == User:
- items_plural = "users"
- elif grid.model_class == Role:
- items_plural = "roles"
- elif grid.model_class == Group:
- items_plural = "groups"
- %>
- %if num_pages > 1:
- <tr>
- <td></td>
- <td colspan="100">
- Page ${cur_page_num} of ${num_pages}
- Go to:
- ## Next page link.
- %if cur_page_num != num_pages:
- <% args = { "page" : cur_page_num+1 } %>
- <span><a href="${url( args )}">Next</a></span>
- %endif
- ## Previous page link.
- %if cur_page_num != 1:
- <span>|</span>
- <% args = { "page" : cur_page_num-1 } %>
- <span><a href="${url( args )}">Previous</a></span>
- %endif
- ## Go to page select box.
- <span>| Select:</span>
- <select id="page-select" onchange="navigate_to_page(this)">
- <option value=""></option>
- %for page_index in range(1, num_pages + 1):
- %if page_index == cur_page_num:
- continue
- %else:
- <% args = { "page" : page_index } %>
- <option value='${page_index}'>Page ${page_index}</option>
- %endif
- %endfor
- </select>
- ## Show all link.
- <% args = { "page" : "all" } %>
- <span>| <a href="${url( args )}">Show all ${items_plural} on one page</a></span>
- </td>
- </tr>
- %endif
- ## Grid operations.
- %if grid.operations:
- <tr>
- <td></td>
- <td colspan="100">
- For <span class="grid-selected-count"></span> selected ${items_plural}:
- %for operation in grid.operations:
- %if operation.allow_multiple:
- <input type="submit" name="operation" value="${operation.label}" class="action-button">
- %endif
- %endfor
- </td>
- </tr>
- %endif
+ ${render_grid_table_footer_contents()}
</tfoot>
</table>
</form>
-</%def>
\ No newline at end of file
+</%def>
+
+## Render grid table body contents.
+<%def name="render_grid_table_body_contents()">
+ <% num_rows_rendered = 0 %>
+ %if query.count() == 0:
+ ## No results.
+ <tr><td></td><td><em>No Items</em></td></tr>
+ <% num_rows_rendered = 1 %>
+ %endif
+ %for i, item in enumerate( query ):
+ <tr \
+ %if current_item == item:
+ class="current" \
+ %endif
+ >
+ ## Item selection column
+ <td style="width: 1.5em;">
+ <input type="checkbox" name="id" value=${trans.security.encode_id( item.id )} class="grid-row-select-checkbox" />
+ </td>
+ ## Data columns
+ %for column in grid.columns:
+ %if column.visible:
+ <%
+ # Link
+ link = column.get_link( trans, grid, item )
+ if link:
+ href = url( **link )
+ else:
+ href = None
+ # Value (coerced to list so we can loop)
+ value = column.get_value( trans, grid, item )
+ if column.ncells == 1:
+ value = [ value ]
+ %>
+ %for cellnum, v in enumerate( value ):
+ <%
+ # Handle non-ascii chars.
+ if isinstance(v, str):
+ v = unicode(v, 'utf-8')
+ # Attach popup menu?
+ if column.attach_popup and cellnum == 0:
+ extra = '<a id="grid-%d-popup" class="arrow" style="display: none;"><span>▼</span></a>' % i
+ else:
+ extra = ""
+ %>
+ %if href:
+ <td><div class="menubutton split" style="float: left;"><a class="label" href="${href}">${v}</a>${extra}</td>
+ %else:
+ <td >${v}${extra}</td>
+ %endif
+ %endfor
+ %endif
+ %endfor
+ ## Actions column
+ <td>
+ <div popupmenu="grid-${i}-popup">
+ %for operation in grid.operations:
+ %if operation.allowed( item ):
+ <%
+ target = ""
+ if operation.target:
+ target = "target='" + operation.target + "'"
+ %>
+ <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
+ %endif
+ %endfor
+ </div>
+ </td>
+ </tr>
+ <% num_rows_rendered += 1 %>
+ %endfor
+ ## Dummy rows to prevent table for moving too much.
+ ##%if grid.use_paging:
+ ## %for i in range( num_rows_rendered , grid.num_rows_per_page ):
+ ## <tr><td colspan="1000"> </td></tr>
+ ## %endfor
+ ##%endif
+</%def>
+
+## Render grid table footer contents.
+<%def name="render_grid_table_footer_contents()">
+ ## Row for navigating among pages.
+ <%
+ # Mapping between item class and plural term for item.
+ items_plural = "items"
+ if grid.model_class == History:
+ items_plural = "histories"
+ elif grid.model_class == HistoryDatasetAssociation:
+ items_plural = "datasets"
+ elif grid.model_class == User:
+ items_plural = "users"
+ elif grid.model_class == Role:
+ items_plural = "roles"
+ elif grid.model_class == Group:
+ items_plural = "groups"
+ %>
+ %if grid.use_paging and num_pages > 1:
+ <tr id="page-links-row">
+ <td></td>
+ <td colspan="100">
+ <span id='page-link-container'>
+ ## Page links.
+ Page:
+ %for page_index in range(1, num_pages + 1):
+ %if page_index == cur_page_num:
+ <span class='page-link inactive-link' id="page-link-${page_index}">${page_index}</span>
+ %else:
+ <% args = { 'page' : page_index } %>
+ <span class='page-link' id="page-link-${page_index}"><a href="${url( args )}" page_num='${page_index}'>${page_index}</a></span>
+ %endif
+ %endfor
+ </span>
+
+ ## Show all link.
+ <% args = { "page" : "all" } %>
+ <span id='show-all-link-span'>| <a href="${url( args )}" id="show-all-link">Show all ${items_plural} on one page</a></span>
+ </td>
+ </tr>
+ %endif
+ ## Grid operations.
+ %if grid.operations:
+ <tr>
+ <td></td>
+ <td colspan="100">
+ For <span class="grid-selected-count"></span> selected ${items_plural}:
+ %for operation in grid.operations:
+ %if operation.allow_multiple:
+ <input type="submit" name="operation" value="${operation.label}" class="action-button">
+ %endif
+ %endfor
+ </td>
+ </tr>
+ %endif
+</%def>
+
diff -r 07c1b4bc14af -r 5761948422a8 templates/grid_base_async.mako
--- a/templates/grid_base_async.mako Mon Nov 23 17:20:01 2009 -0500
+++ b/templates/grid_base_async.mako Tue Nov 24 14:53:19 2009 -0500
@@ -1,704 +1,7 @@
-<%!
- from galaxy.web.framework.helpers.grids import TextColumn
- from galaxy.model import History, HistoryDatasetAssociation, User, Role, Group
- import galaxy.util
- def inherit(context):
- if context.get('use_panels'):
- return '/base_panels.mako'
- else:
- return '/base.mako'
-%>
-<%inherit file="${inherit(context)}"/>
+<%namespace file="./grid_base.mako" import="*" />
-## Render the grid's basic elements. Each of these elements can be subclassed.
-%if message:
- <p>
- <div class="${message_type}message transient-message">${util.restore_text( message )}</div>
- <div style="clear: both"></div>
- </p>
-%endif
-
-${self.render_grid_header()}
-${self.render_grid_table()}
-
-## Function definitions.
-
-<%def name="title()">${grid.title}</%def>
-
-<%def name="javascripts()">
- ${parent.javascripts()}
- ${h.js("jquery.autocomplete", "autocomplete_tagging" )}
- <script type="text/javascript">
- ## TODO: generalize and move into galaxy.base.js
- $(document).ready(function() {
- // Initialize grid elements.
- init_grid_elements();
-
- // Operations that are not async (AJAX) compatible.
- var no_async_ops = new Object();
- %for operation in grid.operations:
- %if not operation.async_compatible:
- no_async_ops['${operation.label}'] = "True";
- %endif
- %endfor
-
- // Initialize each operation button to do operation when clicked.
- $('input[name=operation]:submit').each(function() {
- $(this).click( function() {
- var this_value = $(this).attr("value");
- var no_async = ( no_async_ops[this_value] != undefined && no_async_ops[this_value] != null);
- do_operation(this_value, no_async);
- });
- });
-
- // Initialize autocomplete for text inputs in search UI.
- var t = $("#input-tags-filter");
- if (t.length)
- {
-
- var autocomplete_options =
- { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
-
- t.autocomplete("${h.url_for( controller='tag', action='tag_autocomplete_data', item_class='History' )}", autocomplete_options);
- }
-
- var t2 = $("#input-name-filter");
- if (t2.length)
- {
- var autocomplete_options =
- { selectFirst: false, autoFill: false, highlight: false, mustMatch: false };
-
- t2.autocomplete("${h.url_for( controller='history', action='name_autocomplete_data' )}", autocomplete_options);
- }
- });
- ## Can this be moved into base.mako?
- %if refresh_frames:
- %if 'masthead' in refresh_frames:
- ## Refresh masthead == user changes (backward compatibility)
- if ( parent.user_changed ) {
- %if trans.user:
- parent.user_changed( "${trans.user.email}", ${int( app.config.is_admin_user( trans.user ) )} );
- %else:
- parent.user_changed( null, false );
- %endif
- }
- %endif
- %if 'history' in refresh_frames:
- if ( parent.frames && parent.frames.galaxy_history ) {
- parent.frames.galaxy_history.location.href="${h.url_for( controller='root', action='history')}";
- if ( parent.force_right_panel ) {
- parent.force_right_panel( 'show' );
- }
- }
- %endif
- %if 'tools' in refresh_frames:
- if ( parent.frames && parent.frames.galaxy_tools ) {
- parent.frames.galaxy_tools.location.href="${h.url_for( controller='root', action='tool_menu')}";
- if ( parent.force_left_panel ) {
- parent.force_left_panel( 'show' );
- }
- }
- %endif
- %endif
-
- //
- // Code to handle grid operations: filtering, sorting, paging, and operations.
- //
-
- // Initialize grid elements.
- function init_grid_elements()
- {
- $(".grid").each( function() {
- var grid = this;
- var checkboxes = $(this).find("input.grid-row-select-checkbox");
- var update = $(this).find( "span.grid-selected-count" );
- $(checkboxes).each( function() {
- $(this).change( function() {
- var n = $(checkboxes).filter("[checked]").size();
- update.text( n );
- });
- })
- });
- }
-
- // Filter values for categorical filters.
- var categorical_filters = new Object();
- %for column in grid.columns:
- %if column.filterable is not None and not isinstance( column, TextColumn ):
- var ${column.key}_filters =
- {
- %for i, filter in enumerate( column.get_accepted_filters() ):
- %if i > 0:
- ,
- %endif
- ${filter.label} : ${h.to_json_string( filter.args )}
- %endfor
- };
- categorical_filters['${column.key}'] = ${column.key}_filters;
- %endif
- %endfor
-
- // Initialize URL args with filter arguments.
- var url_args = ${h.to_json_string( cur_filter_dict )};
-
- // Place "f-" in front of all filter arguments.
- var arg;
- for (arg in url_args)
- {
- value = url_args[arg];
- delete url_args[arg];
- url_args["f-" + arg] = value;
- }
-
- // Add sort argument to URL args.
- url_args['sort'] = "${encoded_sort_key}";
-
- // Add async keyword to URL args.
- url_args['async'] = true;
-
- // Add tag to grid filter.
- function add_tag_to_grid_filter(tag_name, tag_value)
- {
- // Put tag name and value together.
- var tag = tag_name + (tag_value != null && tag_value != "" ? ":" + tag_value : "");
- add_filter_condition("tags", tag, true);
- }
-
- // Add a condition to the grid filter; this adds the condition and refreshes the grid.
- function add_filter_condition(name, value, append)
- {
- // Update URL arg with new condition.
- if (append)
- {
- // Update or append value.
- var cur_val = url_args["f-" + name];
- var new_val;
- if (cur_val == null || cur_val == undefined)
- {
- new_val = value;
- }
- else if (typeof(cur_val) == "string")
- {
- if (cur_val == "All")
- new_val = value;
- else
- {
- // Replace string with array.
- var values = new Array();
- values[0] = cur_val;
- values[1] = value;
- new_val = values;
- }
- }
- else {
- // Current value is an array.
- new_val = cur_val;
- new_val[new_val.length] = value;
- }
- url_args["f-" + name] = new_val;
- }
- else
- {
- // Replace value.
- url_args["f-" + name] = value;
- }
-
- // Add button that displays filter and provides a button to delete it.
- var t = $("<span>" + value +
- " <a href='#'><img src='${h.url_for('/static/images/delete_tag_icon_gray.png')}'/></a></span>");
- t.addClass('text-filter-val');
- t.click(function() {
- //
- // Remove filter condition.
- //
-
- // TODO: remove element.
- //var tag_button = $(this).parent();
- $(this).remove();
-
- // Remove condition from URL args.
- var cur_val = url_args["f-" + name];
- if (cur_val == null || cur_val == undefined)
- {
- // Unexpected. Throw error?
- }
- else if (typeof(cur_val) == "string")
- {
- if (cur_val == "All")
- {
- // Unexpected. Throw error?
- }
- else
- // Remove condition.
- delete url_args["f-" + name];
- }
- else {
- // Current value is an array.
- var conditions = cur_val;
- var index;
- for (index = 0; index < conditions.length; index++)
- if (conditions[index] == value)
- {
- conditions.splice(index, 1);
- break;
- }
- }
-
- update_grid();
- });
-
- var container = $('#' + name + "-filtering-criteria");
- container.append(t);
-
- update_grid();
- }
-
- // Set sort condition for grid.
- function set_sort_condition(col_key)
- {
- // Set new sort condition. New sort is col_key if sorting new column; if reversing sort on
- // currently sorted column, sort is reversed.
- var cur_sort = url_args['sort'];
- var new_sort = col_key;
- if ( cur_sort.indexOf( col_key ) != -1)
- {
- // Reverse sort.
- if ( cur_sort.substring(0,1) != '-' )
- new_sort = '-' + col_key;
- else
- {
- // Sort reversed by using just col_key.
- }
- }
-
- // Remove sort arrows elements.
- $('.sort-arrow').remove()
-
- // Add sort arrow element to new sort column.
- var sort_arrow = "↑";
- if (new_sort.substring(0,1) != '-')
- sort_arrow = "↓";
- var t = $("<span>" + sort_arrow + "</span>").addClass('sort-arrow');
- var th = $("#" + col_key + '-header');
- th.append(t);
-
- // Update grid.
- url_args['sort'] = new_sort;
- update_grid();
- }
-
- // Set new value for categorical filter.
- function set_categorical_filter(this_obj, name, new_value)
- {
- // Update filter hyperlinks to reflect new filter value.
- var category_filter = categorical_filters[name];
- var cur_value = url_args["f-" + name];
- $("." + name + "-filter").each( function() {
- var text = $(this).text().trim();
- var filter = category_filter[text];
- var filter_value = filter[name];
- if (filter_value == new_value)
- {
- // Remove filter link since grid will be using this filter. It is assumed that
- // this element has a single child, a hyperlink/anchor with text.
- $(this).empty();
- $(this).append("<span style='font-style: italic'>" + text + "</span>");
- }
- else if (filter_value == cur_value)
- {
- // Add hyperlink for this filter since grid will no longer be using this filter. It is assumed that
- // this element has a single child, a hyperlink/anchor.
- $(this).empty();
- var t = $("<a href='#'>" + text + "</a>");
- t.click(function() {
- set_categorical_filter( $(this), name, filter_value );
- });
- $(this).append(t);
- }
- });
-
- // Need to go back to page 1 if not showing all.
- var cur_page = url_args['page'];
- if (cur_page != null && cur_page != undefined && cur_page != 'all')
- url_args['page'] = 1;
-
- // Update grid.
- url_args["f-" + name] = new_value;
- update_grid();
- }
-
- var num_pages = ${num_pages};
- url_args['page'] = 1;
- // Set page to view.
- function set_page(new_page)
- {
- // Update page hyperlink to reflect new page.
- $(".page-link").each( function() {
- var id = $(this).attr('id');
- var page_num = parseInt( id.split("-")[2] ); // Id has form 'page-link-<page_num>
- var cur_page = url_args['page'];
- if (page_num == new_page)
- {
- // Remove link to page since grid will be on this page. It is assumed that
- // this element has a single child, a hyperlink/anchor with text.
- var text = $(this).children().text();
- $(this).empty();
- $(this).addClass("inactive-link");
- $(this).text(text);
- }
- else if (page_num == cur_page)
- {
- // Add hyperlink to this page since grid will no longer be on this page. It is assumed that
- // this element has a single child, a hyperlink/anchor.
- var text = $(this).text();
- $(this).empty();
- $(this).removeClass("inactive-link");
- var t = $("<a href='#'>" + text + "</a>");
- t.click(function() {
- set_page(page_num);
- });
- $(this).append(t);
- }
- });
-
-
- if (new_page == "all")
- {
- url_args['page'] = new_page;
- $('#page-links-row').hide('slow');
- }
- else
- {
- url_args['page'] = parseInt(new_page);
- }
- update_grid(true);
- }
-
- // Perform a grid operation. TODO: this is not complete.
- function do_operation(operation, no_async)
- {
- // For some reason, $('input[name=id]:checked').val() does not return all ids for checked boxes.
- // The code below performs this function.
- var item_ids = new Array()
- $('input[name=id]:checked').each(function() {
- item_ids[item_ids.length] = $(this).val();
- });
-
- // Update URL args.
- url_args['operation'] = operation;
- url_args['id'] = item_ids;
-
- // If operation cannot be performed asynchronously, redirect to location. Otherwise do operation.
- if (no_async)
- {
- var arg_str = "";
- var arg;
-
- for (arg in url_args)
- arg_str = arg_str + arg + "=" + url_args[arg] + "&";
-
- self.location = encodeURI( "${h.url_for()}?" + arg_str );
- }
- else
- update_grid();
-
- }
-
- // Update grid.
- function update_grid(maintain_page_links)
- {
- // If there's an operation in the args, do POST; otherwise, do GET.
- var operation = url_args['operation'];
- var method = (operation != null && operation != undefined ? "POST" : "GET" );
- $.ajax({
- type: method,
- url: "${h.url_for()}",
- data: url_args,
- error: function() { alert( "Grid refresh failed" ) },
- success: function(response_text) {
- // HACK: use a simple string to separate the two elements in the
- // response: (1) table body and (2) number of pages in table.
- var parsed_response_text = response_text.split("*****");
-
- // Update grid body.
- var table_body = parsed_response_text[0];
- $('#grid-table-body').html(table_body);
-
- // Process grid body.
- init_grid_elements();
- make_popup_menus();
-
- // Update pages.
- var num_pages = parseInt( parsed_response_text[1] );
-
- // Rebuild page links.
- if (!maintain_page_links)
- {
- var page_link_container = $('#page-link-container');
- page_link_container.children().remove();
- if (num_pages > 1)
- {
- // Show page link row.
- $('#page-links-row').show();
-
- // First page is the current page.
- var t = $("<span>1</span>");
- t.addClass('page-link');
- t.addClass('inactive-link');
- t.attr('id', 'page-link-1');
- page_link_container.append(t);
-
- // Subsequent pages are navigable.
- for (var i = 2; i <= num_pages; i++)
- {
- var span = $("<span></span>");
- span.addClass('page-link');
- span.attr('id', 'page-link-' + i);
- var t = $("<a href='#'>" + i + "</a>");
- var page_num = i
- t.click(function() {
- set_page(page_num);
- });
- span.append(t)
- page_link_container.append(span);
- }
- }
- else
- {
- // Hide page link row.
- $('#page-links-row').hide('slow');
- }
- }
- }
- });
- }
-
- </script>
-</%def>
-
-<%def name="stylesheets()">
- ${h.css( "base", "autocomplete_tagging" )}
- <style>
- ## Not generic to all grids -- move to base?
- .count-box {
- min-width: 1.1em;
- padding: 5px;
- border-width: 1px;
- border-style: solid;
- text-align: center;
- display: inline-block;
- }
- .text-filter-val {
- border: solid 1px #AAAAAA;
- padding: 1px 3px 1px 3px;
- margin-right: 5px;
- -moz-border-radius: .5em;
- -webkit-border-radius: .5em;
- font-style: italic;
- }
- .page-link a, .inactive-link {
- padding: 0px 7px 0px 7px;
- }
- .inactive-link {
- font-style: italic;
- }
- </style>
-</%def>
-
-<%namespace file="./grid_common_async.mako" import="*" />
-
-## Print grid header.
-<%def name="render_grid_header(include_title)">
- <div class="grid-header">
- %if include_title:
- <h2>${grid.title}</h2>
- %endif
-
- %if grid.global_actions:
- <ul class="manage-table-actions">
- %for action in grid.global_actions:
- <li>
- <a class="action-button" href="${h.url_for( **action.url_args )}">${action.label}</a>
- </li>
- %endfor
- </ul>
- %endif
-
- ${render_grid_filters()}
- </div>
-</%def>
-
-## Print grid.
-<%def name="render_grid_table()">
- <form action="${url()}" method="post" onsubmit="return false;">
- <table class="grid">
- <thead id="grid-table-header">
- <tr>
- <th></th>
- %for column in grid.columns:
- %if column.visible:
- <%
- href = ""
- extra = ""
- if column.sortable:
- if sort_key == column.key:
- if sort_order == "asc":
- href = url( sort=( "-" + column.key ) )
- extra = "↓"
- else:
- href = url( sort=( column.key ) )
- extra = "↑"
- else:
- href = url( sort=column.key )
- %>
- <th\
- id="${column.key}-header"
- %if column.ncells > 1:
- colspan="${column.ncells}"
- %endif
- >
- %if href:
- <a href="${href}" onclick="set_sort_condition('${column.key}');return false;">${column.label}</a>
- %else:
- ${column.label}
- %endif
- <span class="sort-arrow">${extra}</span>
- </th>
- %endif
- %endfor
- <th></th>
- </tr>
- </thead>
- <tbody id="grid-table-body">
- ${render_grid_table_body_contents()}
- </tbody>
- <tfoot id="grid-table-footer">
- ${render_grid_table_footer_contents()}
- </tfoot>
- </table>
- </form>
-</%def>
-
-<%def name="render_grid_table_body_contents()">
- %if query.count() == 0:
- ## No results.
- <tr><td></td><td><em>No Items</em></td></tr>
- %endif
- %for i, item in enumerate( query ):
- <tr \
- %if current_item == item:
- class="current" \
- %endif
- >
- ## Item selection column
- <td style="width: 1.5em;">
- <input type="checkbox" name="id" value=${trans.security.encode_id( item.id )} class="grid-row-select-checkbox" />
- </td>
- ## Data columns
- %for column in grid.columns:
- %if column.visible:
- <%
- # Link
- link = column.get_link( trans, grid, item )
- if link:
- href = url( **link )
- else:
- href = None
- # Value (coerced to list so we can loop)
- value = column.get_value( trans, grid, item )
- if column.ncells == 1:
- value = [ value ]
- %>
- %for cellnum, v in enumerate( value ):
- <%
- # Handle non-ascii chars.
- if isinstance(v, str):
- v = unicode(v, 'utf-8')
- # Attach popup menu?
- if column.attach_popup and cellnum == 0:
- extra = '<a id="grid-%d-popup" class="arrow" style="display: none;"><span>▼</span></a>' % i
- else:
- extra = ""
- %>
- %if href:
- <td><div class="menubutton split" style="float: left;"><a class="label" href="${href}">${v}</a>${extra}</td>
- %else:
- <td >${v}${extra}</td>
- %endif
- %endfor
- %endif
- %endfor
- ## Actions column
- <td>
- <div popupmenu="grid-${i}-popup">
- %for operation in grid.operations:
- %if operation.allowed( item ):
- <%
- target = ""
- if operation.target:
- target = "target='" + operation.target + "'"
- %>
- <a class="action-button" ${target} href="${ url( **operation.get_url_args( item ) ) }">${operation.label}</a>
- %endif
- %endfor
- </div>
- </td>
- </tr>
- %endfor
-</%def>
-
-<%def name="render_grid_table_footer_contents()">
- ## Row for navigating among pages.
- <%
- # Mapping between item class and plural term for item.
- items_plural = "items"
- if grid.model_class == History:
- items_plural = "histories"
- elif grid.model_class == HistoryDatasetAssociation:
- items_plural = "datasets"
- elif grid.model_class == User:
- items_plural = "users"
- elif grid.model_class == Role:
- items_plural = "roles"
- elif grid.model_class == Group:
- items_plural = "groups"
- %>
- %if num_pages > 1:
- <tr id="page-links-row">
- <td></td>
- <td colspan="100">
- <span id='page-link-container'>
- ## Page links.
- Page:
- %for page_index in range(1, num_pages + 1):
- %if page_index == cur_page_num:
- <span class='page-link inactive-link' id="page-link-${page_index}">${page_index}</span>
- %else:
- <% args = { 'page' : page_index } %>
- <span class='page-link' id="page-link-${page_index}"><a href="${url( args )}" onclick="set_page('${page_index}'); return false;">${page_index}</a></span>
- %endif
- %endfor
- </span>
-
- ## Show all link.
- <% args = { "page" : "all" } %>
- <span id='show-all-link'>| <a href="${url( args )}" onclick="set_page('all');return false;">Show all ${items_plural} on one page</a></span>
- </td>
- </tr>
- %endif
- ## Grid operations.
- %if grid.operations:
- <tr>
- <td></td>
- <td colspan="100">
- For <span class="grid-selected-count"></span> selected ${items_plural}:
- %for operation in grid.operations:
- %if operation.allow_multiple:
- <input type="submit" name="operation" value="${operation.label}" class="action-button">
- %endif
- %endfor
- </td>
- </tr>
- %endif
-</%def>
-
+${render_grid_table_body_contents()}
+*****
+${num_pages}
+*****
+${render_grid_message()}
\ No newline at end of file
diff -r 07c1b4bc14af -r 5761948422a8 templates/grid_body_async.mako
--- a/templates/grid_body_async.mako Mon Nov 23 17:20:01 2009 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<%namespace file="./grid_base_async.mako" import="*" />
-
-${render_grid_table_body_contents()}
-*****
-${num_pages}
\ No newline at end of file
diff -r 07c1b4bc14af -r 5761948422a8 templates/grid_common.mako
--- a/templates/grid_common.mako Mon Nov 23 17:20:01 2009 -0500
+++ b/templates/grid_common.mako Tue Nov 24 14:53:19 2009 -0500
@@ -11,8 +11,7 @@
<td align="left" style="padding-left: 10px">${column_label}:</td>
<td>
%if isinstance(column, TextColumn):
- <form name="history_actions" action="${url( dict() )}"
- method="get" >
+ <form class="text-filter-form" column_key="${column.key}" action="${url( dict() )}" method="get" >
## Carry forward filtering criteria with hidden inputs.
%for temp_column in grid.columns:
%if temp_column.key in cur_filter_dict:
@@ -28,6 +27,7 @@
%endfor
## Print current filtering criteria and links to delete.
+ <span id="${column.key}-filtering-criteria">
%if column.key in cur_filter_dict:
<% column_filter = cur_filter_dict[column.key] %>
%if isinstance( column_filter, basestring ):
@@ -54,21 +54,34 @@
%endif
%endif
+ </span>
+ ## Print input field for column.
<span>
- <input class="no-padding-or-margin" id="input-${column.key}-filter" name="f-${column.key}" type="text" value="" size="15"/>
- <input class='submit-image' type='image' src='${h.url_for('/static/images/mag_glass.png')}' alt='Filter'/></span>
+ <input class="no-padding-or-margin" id="input-${column.key}-filter" name="f-${column.key}" type="text" value="" size="15"/>
+ <input class='submit-image' type='image' src='${h.url_for('/static/images/mag_glass.png')}' alt='Filter'/>
+ </span>
</form>
%else:
+ <span id="${column.key}-filtering-criteria">
%for i, filter in enumerate( column.get_accepted_filters() ):
+ <%
+ # HACK: we know that each filter will have only a single argument, so get that single argument.
+ for key, arg in filter.args.items():
+ filter_key = key
+ filter_arg = arg
+ %>
%if i > 0:
- <span>|</span>
+ |
%endif
%if column.key in cur_filter_dict and column.key in filter.args and cur_filter_dict[column.key] == filter.args[column.key]:
- <span class="filter" style="font-style: italic">${filter.label}</span>
+ <span class="categorical-filter ${column.key}-filter current-filter">${filter.label}</span>
%else:
- <span class="filter"><a href="${url( filter.get_url_args() )}">${filter.label}</a></span>
+ <span class="categorical-filter ${column.key}-filter">
+ <a href="${url( filter.get_url_args() )}" filter_key="${filter_key}" filter_val="${filter_arg}">${filter.label}</a>
+ </span>
%endif
%endfor
+ </span>
%endif
</td>
</tr>
@@ -96,31 +109,47 @@
## Only show advanced search if there are filterable columns.
<%
- show_advanced_search = False
+ show_advanced_search_link = False
for column in grid.columns:
if column.filterable == "advanced":
- show_advanced_search = True
+ show_advanced_search_link = True
break
endif
%>
- %if show_advanced_search:
- | <a href="" onclick="javascript:$('#more-search-options').slideToggle('fast');return false;">Advanced Search</a>
+ %if show_advanced_search_link:
+ <% args = { "advanced-search" : True } %>
+ | <a href="${url( args )}" class="advanced-search-toggle">Advanced Search</a>
%endif
</td>
</tr></table>
</div>
## Advanced search.
- <div id="more-search-options" style="display: none; padding-top: 5px">
+ <%
+ # Show advanced search if flag set or if there are filters for advanced search fields.
+ advanced_search_display = "none"
+ if 'advanced-search' in kwargs and kwargs['advanced-search'] in ['True', 'true']:
+ advanced_search_display = "block"
+
+ for column in grid.columns:
+ if column.filterable == "advanced":
+ ## Show div if current filter has value that is different from the default filter.
+ if column.key in cur_filter_dict and column.key in default_filter_dict and \
+ cur_filter_dict[column.key] != default_filter_dict[column.key]:
+ advanced_search_display = "block"
+ %>
+ <div id="more-search-options" style="display: ${advanced_search_display}; padding-top: 5px">
<table style="border: 1px solid gray;">
<tr><td style="text-align: left" colspan="100">
Advanced Search |
- <a href=""# onclick="javascript:$('#more-search-options').slideToggle('fast');return false;">Close</a> |
+ <% args = { "advanced-search" : False } %>
+ <a href="${url( args )}" class="advanced-search-toggle">Close</a>
## Link to clear all filters.
- <%
- no_filter = GridColumnFilter("Clear All", default_filter_dict)
- %>
- <a href="${url( no_filter.get_url_args() )}">${no_filter.label}</a>
+ ##|
+ ##<%
+ ## no_filter = GridColumnFilter("Clear All", default_filter_dict)
+ ##%>
+ ##<a href="${url( no_filter.get_url_args() )}">${no_filter.label}</a>
</td></tr>
%for column in grid.columns:
%if column.filterable == "advanced":
diff -r 07c1b4bc14af -r 5761948422a8 templates/grid_common_async.mako
--- a/templates/grid_common_async.mako Mon Nov 23 17:20:01 2009 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-<%! from galaxy.web.framework.helpers.grids import TextColumn, GridColumnFilter %>
-
-## Render an AJAX filter UI for a grid column. Filter is rendered as a table row.
-<%def name="render_ajax_grid_column_filter(column)">
- <tr>
- <%
- column_label = column.label
- if column.filterable == "advanced":
- column_label = column_label.lower()
- %>
- <td align="left" style="padding-left: 10px">${column_label}:</td>
- <td>
- %if isinstance(column, TextColumn):
- <form action="${url( dict() )}" id="form-filter-${column.key}"
- ## Move this to doc.ready()
- ##onsubmit="var text_input=$('#input-${column.key}-filter').val();$('#input-${column.key}-filter').val('');add_filter_condition('${column.key}',text_input,true);return false;"
- onsubmit="var text_input=$('#input-${column.key}-filter').val();$('#input-${column.key}-filter').val('');add_filter_condition('${column.key}',text_input,true);return false;"
- method="get" >
- ## Carry forward filtering criteria with hidden inputs.
- %for temp_column in grid.columns:
- %if temp_column.key in cur_filter_dict:
- <% value = cur_filter_dict[ temp_column.key ] %>
- %if value != "All":
- <%
- if isinstance( temp_column, TextColumn ):
- value = h.to_json_string( value )
- %>
- <input type="hidden" id="${temp_column.key}" name="f-${temp_column.key}" value='${value}'/>
- %endif
- %endif
- %endfor
-
- ## Print current filtering criteria and links to delete.
- <span id="${column.key}-filtering-criteria">
- %if column.key in cur_filter_dict:
- <% column_filter = cur_filter_dict[column.key] %>
- %if isinstance( column_filter, basestring ):
- %if column_filter != "All":
- <span style="font-style: italic">${cur_filter_dict[column.key]}</span>
- <% filter_all = GridColumnFilter( "", { column.key : "All" } ) %>
- <a href="${url( filter_all.get_url_args() )}"><img src="${h.url_for('/static/images/delete_tag_icon_gray.png')}"/></a>
- |
- %endif
- %elif isinstance( column_filter, list ):
- %for i, filter in enumerate( column_filter ):
- %if i > 0:
- ,
- %endif
- <span style="font-style: italic">${filter}</span>
- <%
- new_filter = list( column_filter )
- del new_filter[ i ]
- new_column_filter = GridColumnFilter( "", { column.key : h.to_json_string( new_filter ) } )
- %>
- <a href="${url( new_column_filter.get_url_args() )}"><img src="${h.url_for('/static/images/delete_tag_icon_gray.png')}"/></a>
- %endfor
-
- %endif
- %endif
- </span>
-
- ## Print input field for column.
- <span><input id="input-${column.key}-filter" name="f-${column.key}" type="text" value="" size="15"/></span>
- </form>
- %else:
- <span id="${column.key}-filtering-criteria">
- %for i, filter in enumerate( column.get_accepted_filters() ):
- <%
- # HACK: we know that each filter will have only a single argument, so get that single argument.
- for key, arg in filter.args.items():
- filter_key = key
- filter_arg = arg
- %>
- %if i > 0:
- |
- %endif
- %if column.key in cur_filter_dict and column.key in filter.args and cur_filter_dict[column.key] == filter.args[column.key]:
- <span class="${column.key}-filter">${filter.label}</span>
- %else:
- <span class="${column.key}-filter">
- <a href="${url( filter.get_url_args() )}"
- onclick="set_categorical_filter($(this), '${column.key}','${filter_arg}'); return false;">${filter.label}</a>
- </span>
- %endif
- %endfor
- </span>
- %endif
- </td>
- </tr>
-</%def>
-
-## Print grid search/filtering UI.
-<%def name="render_grid_filters()">
- ## Standard search.
- <div>
- <table><tr>
- <td>
- <table>
- %for column in grid.columns:
- %if column.filterable == "standard":
- ${render_ajax_grid_column_filter(column)}
- %endif
- %endfor
- </table>
- </td>
- <td>
- ## Clear the standard search.
- ##|
- ##<% filter_all = GridColumnFilter( "", { column.key : "All" } ) %>
- ##<a href="${url( filter_all.get_url_args() )}">Clear All</a>
-
- ## Only show advanced search if there are filterable columns.
- <%
- show_advanced_search = False
- for column in grid.columns:
- if column.filterable == "advanced":
- show_advanced_search = True
- break
- endif
- %>
- %if show_advanced_search:
- | <a href="" onclick="javascript:$('#more-search-options').slideToggle('fast');return false;">Advanced Search</a>
- %endif
- </td>
- </tr></table>
- </div>
-
- ## Advanced search.
- <div id="more-search-options" style="display: none; padding-top: 5px">
- <table style="border: 1px solid gray;">
- <tr><td style="text-align: left" colspan="100">
- Advanced Search |
- <a href=""# onclick="javascript:$('#more-search-options').slideToggle('fast');return false;">Close</a> |
- ## Link to clear all filters.
- <%
- no_filter = GridColumnFilter("Clear All", default_filter_dict)
- %>
- <a href="${url( no_filter.get_url_args() )}">${no_filter.label}</a>
- </td></tr>
- %for column in grid.columns:
- %if column.filterable == "advanced":
- ## Show div if current filter has value that is different from the default filter.
- %if column.key in cur_filter_dict and column.key in default_filter_dict and \
- cur_filter_dict[column.key] != default_filter_dict[column.key]:
- <script type="text/javascript">
- $('#more-search-options').css("display", "block");
- </script>
- %endif
-
- ${render_ajax_grid_column_filter(column)}
- %endif
- %endfor
- </table>
- </div>
-</%def>
\ No newline at end of file
diff -r 07c1b4bc14af -r 5761948422a8 templates/history/grid.mako
--- a/templates/history/grid.mako Mon Nov 23 17:20:01 2009 -0500
+++ b/templates/history/grid.mako Tue Nov 24 14:53:19 2009 -0500
@@ -1,1 +1,1 @@
-<%inherit file="/grid_base.mako"/>
+<%inherit file="../grid_base.mako"/>
diff -r 07c1b4bc14af -r 5761948422a8 templates/page/select_histories_grid.mako
--- a/templates/page/select_histories_grid.mako Mon Nov 23 17:20:01 2009 -0500
+++ b/templates/page/select_histories_grid.mako Tue Nov 24 14:53:19 2009 -0500
@@ -1,6 +1,13 @@
## Template generates a grid that enables user to select histories.
-<%namespace file="../grid_base_async.mako" import="*" />
+<%namespace file="../grid_base.mako" import="*" />
${javascripts()}
+${stylesheets()}
${render_grid_header(False)}
-${render_grid_table()}
\ No newline at end of file
+${render_grid_table()}
+
+## Initialize the grid.
+<script type="text/javascript">
+ init_grid_elements();
+ init_grid_controls();
+</script>
1
0

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/0d750f3f9b94
changeset: 3118:0d750f3f9b94
user: Dan Blankenberg <dan(a)bx.psu.edu>
date: Fri Nov 20 16:22:04 2009 -0500
description:
Remove metadata_source from quality_filter tool output. This will allow this tool to work on the cluster with external metadata and a readonly database/files filesystem. A better overall fix for setting external metadata files is in the works.
diffstat:
tools/regVariation/quality_filter.xml | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diffs (12 lines):
diff -r 82b63d47a0d8 -r 0d750f3f9b94 tools/regVariation/quality_filter.xml
--- a/tools/regVariation/quality_filter.xml Fri Nov 20 15:35:30 2009 -0500
+++ b/tools/regVariation/quality_filter.xml Fri Nov 20 16:22:04 2009 -0500
@@ -60,7 +60,7 @@
</conditional>
</inputs>
<outputs>
- <data format="maf" name="out_file1" metadata_source="input"/>
+ <data format="maf" name="out_file1"/>
</outputs>
<requirements>
<requirement type="python-module">numpy</requirement>
1
0

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/07c1b4bc14af
changeset: 3120:07c1b4bc14af
user: Kanwei Li <kanwei(a)gmail.com>
date: Mon Nov 23 17:20:01 2009 -0500
description:
Fix run.sh --reload by requiring Paste before PasteScript
diffstat:
scripts/paster.py | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diffs (11 lines):
diff -r 3fc2db645c80 -r 07c1b4bc14af scripts/paster.py
--- a/scripts/paster.py Mon Nov 23 09:21:22 2009 -0500
+++ b/scripts/paster.py Mon Nov 23 17:20:01 2009 -0500
@@ -26,6 +26,7 @@
_log_tempfile = TempFile()
import tempfile
+pkg_resources.require( "Paste" )
pkg_resources.require( "PasteScript" )
from paste.script import command
1
0

02 Dec '09
details: http://www.bx.psu.edu/hg/galaxy/rev/3fc2db645c80
changeset: 3119:3fc2db645c80
user: Nate Coraor <nate(a)bx.psu.edu>
date: Mon Nov 23 09:21:22 2009 -0500
description:
Remove old tools from runner config in universe config
diffstat:
universe_wsgi.ini.sample | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diffs (16 lines):
diff -r 0d750f3f9b94 -r 3fc2db645c80 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Fri Nov 20 16:22:04 2009 -0500
+++ b/universe_wsgi.ini.sample Mon Nov 23 09:21:22 2009 -0500
@@ -261,12 +261,6 @@
biomart = local:///
encode_db1 = local:///
-encode_import_all_latest_datasets1 = local:///
-encode_import_chromatin_and_chromosomes1 = local:///
-encode_import_gencode1 = local:///
-encode_import_genes_and_transcripts1 = local:///
-encode_import_multi-species_sequence_analysis1 = local:///
-encode_import_transcription_regulation1 = local:///
hbvar = local:///
microbial_import1 = local:///
ucsc_table_direct1 = local:///
1
0
The "Select a reference genome" popup in the NGS mapping section is
empty for the Bowtie and BWA tools on my local Galaxy install (latest
release). How can I populate it?
Dean A. Snyder
Senior Programmer/Analyst
Center for Inherited Disease Research (CIDR)
Johns Hopkins School of Medicine
Bayview Research Campus
333 Cassell Dr, Triad Bldg, Suite 2000
Baltimore, MD 21224
www.cidr.jhmi.edu
cell:717 668-3048 office:410-550-4629
2
1
Some of the NGS tools like fastx_quality_stats and
fastq_quality_boxplot_graph.sh are not available on my local Galaxy
install, while others, like the fastq groomer, are. An example error
message is:
"An error occurred running this job: /bin/sh: fastx_quality_stats:
command not found"
Two questions:
1) Why are these tools not available with the standard install while
being listed in the tools list?
2) How do I go about installing them?
Thanks,
Dean A. Snyder
Senior Programmer/Analyst
Center for Inherited Disease Research (CIDR)
Johns Hopkins School of Medicine
Bayview Research Campus
333 Cassell Dr, Triad Bldg, Suite 2000
Baltimore, MD 21224
www.cidr.jhmi.edu
cell:717 668-3048 office:410-550-4629
2
1
Hi,
I use Galaxy to do Next-gen sequencing analysis. I do the alignment and
such and after the alignment performed by Bowtie I want to save the
files to my own harddisk, using the save option. The problem is I can't
download large files (probably due to http which can't transfer files
larger than 2 gb I think). Is there a way to work around this problem? I
tried using the gzip options, but those options crashed Galaxy. I hope
to hear from you soon.
Sincerely,
Freerk van Dijk
De inhoud van dit bericht is vertrouwelijk en alleen bestemd voor de geadresseerde(n). Anderen dan de geadresseerde(n) mogen geen gebruik maken van dit bericht, het niet openbaar maken of op enige wijze verspreiden of vermenigvuldigen. Het UMCG kan niet aansprakelijk gesteld worden voor een incomplete aankomst of vertraging van dit verzonden bericht.
The contents of this message are confidential and only intended for the eyes of the addressee(s). Others than the addressee(s) are not allowed to use this message, to make it public or to distribute or multiply this message in any way. The UMCG cannot be held responsible for incomplete reception or delay of this transferred message.
2
1

26 Nov '09
PNG and JPG should already work fine as well. The only thing that may
require some tweaking is to allow a choice between two output formats,
but you can certainly do that using a post job hook to change what
Galaxy thinks the datatype is.
On Nov 26, 2009, at 11:26 AM, matthew.iyer(a)gmail.com wrote:
> Would the system be able to handle PNG or JPG images too? I want to
> integrate a plotting script using matplotlib and can easily follow
> the examples that already exist. If I can add an option for the
> user to select png or pdf output that would be ideal.
>
> That way the user can use PNG for just viewing the data without any
> browser issues and PDF for downloading.
1
0