galaxy-commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
February 2011
- 1 participants
- 166 discussions
commit/galaxy-central: jgoecks: Parse custom build len files using tabs rather than all whitespace; this matches the output produced by the tool 'Compute Sequence Length'
by Bitbucket 01 Feb '11
by Bitbucket 01 Feb '11
01 Feb '11
1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/90a97c6aee95/
changeset: r4972:90a97c6aee95
user: jgoecks
date: 2011-02-01 19:32:02
summary: Parse custom build len files using tabs rather than all whitespace; this matches the output produced by the tool 'Compute Sequence Length'
affected #: 2 files (132 bytes)
--- a/lib/galaxy/web/controllers/tracks.py Tue Feb 01 13:20:18 2011 -0500
+++ b/lib/galaxy/web/controllers/tracks.py Tue Feb 01 13:32:02 2011 -0500
@@ -313,8 +313,9 @@
for line in open( len_file ):
if line.startswith("#"):
continue
- # LEN files are just whitespace separated
- fields = line.split()
+ # LEN files have format:
+ # <chrom_name><tab><chrom_length>
+ fields = line.split("\t")
manifest[fields[0]] = int(fields[1])
return manifest
--- a/lib/galaxy/web/controllers/user.py Tue Feb 01 13:20:18 2011 -0500
+++ b/lib/galaxy/web/controllers/user.py Tue Feb 01 13:32:02 2011 -0500
@@ -1275,8 +1275,10 @@
counter = 0
f = open(new_len.file_name, "w")
+ # LEN files have format:
+ # <chrom_name><tab><chrom_length>
for line in len_text.split("\n"):
- lst = line.strip().split()
+ lst = line.strip().split("\t")
if not lst or len(lst) < 2:
lines_skipped += 1
continue
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: greg: Fix Manage your API keys link on the user preferences page.
by Bitbucket 01 Feb '11
by Bitbucket 01 Feb '11
01 Feb '11
1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/7d19d6962076/
changeset: r4971:7d19d6962076
user: greg
date: 2011-02-01 19:20:18
summary: Fix Manage your API keys link on the user preferences page.
affected #: 1 file (18 bytes)
--- a/templates/user/index.mako Tue Feb 01 13:11:24 2011 -0500
+++ b/templates/user/index.mako Tue Feb 01 13:20:18 2011 -0500
@@ -13,7 +13,7 @@
<li><a href="${h.url_for( controller='user', action='show_info' )}">${_('Manage your information')}</a></li><li><a href="${h.url_for( controller='user', action='set_default_permissions' )}">${_('Change default permissions')}</a> for new histories</li>
%if trans.app.config.enable_api:
- <li><a href="${h.url_for( controller='user', action='api_keys' )}">${_('Manage your API Keys')}</a> for new histories</li>
+ <li><a href="${h.url_for( controller='user', action='api_keys' )}">${_('Manage your API keys')}</a></li>
%endif
%if trans.app.config.enable_openid:
<li><a href="${h.url_for( controller='user', action='openid_manage' )}">${ ('Manage OpenIDs')}</a> linked to your account</li>
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: greg: Brad Chapman's patch for fixing an issue where the current user roles were not passed to a template.
by Bitbucket 01 Feb '11
by Bitbucket 01 Feb '11
01 Feb '11
1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/5297d8f24693/
changeset: r4970:5297d8f24693
user: greg
date: 2011-02-01 19:11:24
summary: Brad Chapman's patch for fixing an issue where the current user roles were not passed to a template.
affected #: 2 files (114 bytes)
--- a/lib/galaxy/web/controllers/library.py Tue Feb 01 11:21:41 2011 -0500
+++ b/lib/galaxy/web/controllers/library.py Tue Feb 01 13:11:24 2011 -0500
@@ -110,6 +110,7 @@
search_term=search_term,
comptypes=comptypes,
lddas=lddas,
+ current_user_roles=trans.get_current_user_roles(),
show_deleted=show_deleted,
use_panels=use_panels,
message=message,
--- a/scripts/data_libraries/build_lucene_index.py Tue Feb 01 11:21:41 2011 -0500
+++ b/scripts/data_libraries/build_lucene_index.py Tue Feb 01 13:11:24 2011 -0500
@@ -61,7 +61,7 @@
fname = ""
else:
fname = ldda.dataset.get_file_name()
- yield ldda.id, fname, _get_dataset_metadata(ldda)
+ yield ldda.id, fname, _get_dataset_metadata(ldda).replace("\n", " ")
def _get_dataset_metadata(ldda):
"""Retrieve descriptions and information associated with a dataset.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
01 Feb '11
1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/1d4dbfe2e2ce/
changeset: r4969:1d4dbfe2e2ce
user: greg
date: 2011-02-01 17:21:41
summary: Apply patch from Brad Chapman that fixes an issue when downloading a zip archive of library datasets. Also include some miscellansous imporvements and code cleanup related to changes made in change set 4964:82107691d26e.
affected #: 10 files (5.6 KB)
--- a/lib/galaxy/util/streamball.py Tue Feb 01 11:20:02 2011 -0500
+++ b/lib/galaxy/util/streamball.py Tue Feb 01 11:21:41 2011 -0500
@@ -1,7 +1,7 @@
"""
A simple wrapper for writing tarballs as a stream.
"""
-
+import os
import logging, tarfile
log = logging.getLogger( __name__ )
@@ -26,3 +26,19 @@
tf.add( file, arcname=rel )
tf.close()
return []
+
+class ZipBall(object):
+ def __init__(self, tmpf, tmpd):
+ self._tmpf = tmpf
+ self._tmpd = tmpd
+ def stream(self, environ, start_response):
+ response_write = start_response( self.wsgi_status, self.wsgi_headeritems )
+ tmpfh = open( self._tmpf )
+ response_write(tmpfh.read())
+ tmpfh.close()
+ try:
+ os.unlink( self._tmpf )
+ os.rmdir( self._tmpd )
+ except OSError:
+ log.exception( "Unable to remove temporary library download archive and directory" )
+ return []
--- a/lib/galaxy/web/controllers/library.py Tue Feb 01 11:20:02 2011 -0500
+++ b/lib/galaxy/web/controllers/library.py Tue Feb 01 11:21:41 2011 -0500
@@ -35,7 +35,7 @@
attach_popup=False,
filterable="advanced" ),
]
- columns.append( grids.MulticolFilterColumn( "search library dataset name, info, message, dbkey",
+ columns.append( grids.MulticolFilterColumn( "search dataset name, info, message, dbkey",
cols_to_filter=[ columns[0], columns[1] ],
key="free-text-search",
visible=False,
--- a/lib/galaxy/web/controllers/library_admin.py Tue Feb 01 11:20:02 2011 -0500
+++ b/lib/galaxy/web/controllers/library_admin.py Tue Feb 01 11:21:41 2011 -0500
@@ -50,7 +50,7 @@
# Columns that are valid for filtering but are not visible.
grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" )
]
- columns.append( grids.MulticolFilterColumn( "search library dataset name, info, message, dbkey",
+ columns.append( grids.MulticolFilterColumn( "search dataset name, info, message, dbkey",
cols_to_filter=[ columns[0], columns[1] ],
key="free-text-search",
visible=False,
--- a/lib/galaxy/web/controllers/library_common.py Tue Feb 01 11:20:02 2011 -0500
+++ b/lib/galaxy/web/controllers/library_common.py Tue Feb 01 11:21:41 2011 -0500
@@ -1706,20 +1706,12 @@
fname = lname.replace( ' ', '_' ) + '_files'
if action == 'zip':
archive.close()
- tmpfh = open( tmpf )
- # clean up now
- try:
- os.unlink( tmpf )
- os.rmdir( tmpd )
- except OSError:
- error = True
- log.exception( "Unable to remove temporary library download archive and directory" )
- message = "Unable to create archive for download, please report this error"
- status = 'error'
- if not error:
- trans.response.set_content_type( "application/x-zip-compressed" )
- trans.response.headers[ "Content-Disposition" ] = "attachment; filename=%s.%s" % (fname,outext)
- return tmpfh
+ trans.response.set_content_type( "application/x-zip-compressed" )
+ trans.response.headers[ "Content-Disposition" ] = "attachment; filename=%s.%s" % (fname,outext)
+ archive = util.streamball.ZipBall(tmpf, tmpd)
+ archive.wsgi_status = trans.response.wsgi_status()
+ archive.wsgi_headeritems = trans.response.wsgi_headeritems()
+ return archive.stream
elif action == 'ngxzip':
trans.response.set_content_type( "application/zip" )
trans.response.headers[ "Content-Disposition" ] = "attachment; filename=%s.%s" % (fname,outext)
@@ -1831,11 +1823,11 @@
hist_names_str = ", ".join( [ target_history.name for target_history in target_histories ] )
num_source = len( ldda_ids ) - invalid_datasets
num_target = len( target_histories )
- message = "%i %s have been imported into %i %s: %s" % ( num_source,
- inflector.cond_plural( num_source, "dataset" ),
- num_target,
- inflector.cond_plural( num_target, "history" ),
- hist_names_str )
+ message = "%i %s imported into %i %s: %s" % ( num_source,
+ inflector.cond_plural( num_source, "dataset" ),
+ num_target,
+ inflector.cond_plural( num_target, "history" ),
+ hist_names_str )
trans.sa_session.refresh( current_history )
current_user_roles = trans.get_current_user_roles()
source_lddas = []
@@ -2240,7 +2232,7 @@
# Perform search
parser = MultifieldParser( [ 'name', 'info', 'dbkey', 'message' ], schema=schema )
# Search term with wildcards may be slow...
- results = searcher.search( parser.parse( '*' + search_term + '*' ), minscore=0.1 )
+ results = searcher.search( parser.parse( '*' + search_term + '*' ), minscore=0.5 )
ldda_ids = [ result[ 'id' ] for result in results ]
lddas = []
for ldda_id in ldda_ids:
--- a/scripts/data_libraries/build_whoosh_index.py Tue Feb 01 11:20:02 2011 -0500
+++ b/scripts/data_libraries/build_whoosh_index.py Tue Feb 01 11:21:41 2011 -0500
@@ -63,7 +63,10 @@
else:
info = ''
dbkey = ldda.metadata.dbkey
- message = ldda.message
+ if ldda.message:
+ message = ldda.message
+ else:
+ message = ''
yield id, name, info, dbkey, message
def get_sa_session_and_needed_config_settings( ini_file ):
--- a/templates/library/common/browse_library.mako Tue Feb 01 11:20:02 2011 -0500
+++ b/templates/library/common/browse_library.mako Tue Feb 01 11:21:41 2011 -0500
@@ -1,6 +1,7 @@
<%namespace file="/message.mako" import="render_msg" /><%namespace file="/library/common/library_item_info.mako" import="render_library_item_info" /><%namespace file="/library/common/common.mako" import="render_actions_on_multiple_items" />
+<%namespace file="/library/common/common.mako" import="render_compression_types_help" /><%namespace file="/library/common/common.mako" import="common_javascripts" /><%!
@@ -564,34 +565,6 @@
</script><!-- running: do not change this comment, used by TwillTestCase.library_wait -->
%endif
-
- ## Help about compression types
-
- <div class="libraryItemBody">
- <p class="infomark">
- TIP: You can download individual library files by selecting "Download this dataset" from the context menu (triangle) next to the dataset's name.
- </p>
- </div>
- %if len( comptypes ) > 1:
- <div class="libraryItemBody">
- <p class="infomark">
- TIP: Multiple compression options are available for downloading library datasets:
- </p>
- <ul style="padding-left: 1em; list-style-type: disc;">
- %if 'gz' in comptypes:
- <li>gzip: Recommended for fast network connections
- %if trans.app.config.upstream_gzip:
- NOTE: The file you receive will be an uncompressed .tar file - this is because the Galaxy server compresses it and your browser decompresses it on the fly.
- %endif
- </li>
- %endif
- %if 'bz2' in comptypes:
- <li>bzip2: Recommended for slower network connections (smaller size but takes longer to compress)</li>
- %endif
- %if 'zip' in comptypes:
- <li>zip: Not recommended but is provided as an option for those who cannot open the above formats</li>
- %endif
- </ul>
- </div>
- %endif
+
+ ${render_compression_types_help( comptypes )}
</%def>
--- a/templates/library/common/common.mako Tue Feb 01 11:20:02 2011 -0500
+++ b/templates/library/common/common.mako Tue Feb 01 11:21:41 2011 -0500
@@ -43,6 +43,36 @@
</script></%def>
+<%def name="render_compression_types_help( comptypes )">
+ <div class="libraryItemBody">
+ <p class="infomark">
+ TIP: You can download individual library datasets by selecting "Download this dataset" from the context menu (triangle) next to each dataset's name.
+ </p>
+ </div>
+ %if len( comptypes ) > 1:
+ <div class="libraryItemBody">
+ <p class="infomark">
+ TIP: Several compression options are available for downloading multiple library datasets simultaneously:
+ </p>
+ <ul style="padding-left: 1em; list-style-type: disc;">
+ %if 'gz' in comptypes:
+ <li>gzip: Recommended for fast network connections
+ %if trans.app.config.upstream_gzip:
+ NOTE: The file you receive will be an uncompressed .tar file - this is because the Galaxy server compresses it and your browser decompresses it on the fly.
+ %endif
+ </li>
+ %endif
+ %if 'bz2' in comptypes:
+ <li>bzip2: Recommended for slower network connections (smaller size but takes longer to compress)</li>
+ %endif
+ %if 'zip' in comptypes:
+ <li>zip: Not recommended but is provided as an option for those who cannot open the above formats</li>
+ %endif
+ </ul>
+ </div>
+ %endif
+</%def>
+
<%def name="render_upload_form( cntrller, upload_option, action, library_id, folder_id, replace_dataset, file_formats, dbkeys, space_to_tab, link_data_only, widgets, roles_select_list, history, show_deleted )"><%
import os, os.path
--- a/templates/library/common/import_datasets_to_histories.mako Tue Feb 01 11:20:02 2011 -0500
+++ b/templates/library/common/import_datasets_to_histories.mako Tue Feb 01 11:21:41 2011 -0500
@@ -58,8 +58,14 @@
<select id="single-dest-select" name="target_history_ids"><option value=""></option>
%for i, target_history in enumerate( target_histories ):
- <% encoded_id = trans.security.encode_id( target_history.id ) %>
- <option value="${encoded_id}">${i + 1}: ${h.truncate( target_history.name, 30 )}</option>
+ <%
+ encoded_id = trans.security.encode_id( target_history.id )
+ if target_history == current_history:
+ current_history_text = " (current history)"
+ else:
+ current_history_text = ""
+ %>
+ <option value="${encoded_id}">${i + 1}: ${h.truncate( target_history.name, 30 )}${current_history_text}</option>
%endfor
</select><br/><br/>
@@ -68,12 +74,15 @@
<div id="multiple-destination" style="display: none;">
%for i, target_history in enumerate( target_histories ):
<%
- cur_history_text = ""
encoded_id = trans.security.encode_id( target_history.id )
+ if target_history == current_history:
+ current_history_text = " (current history)"
+ else:
+ current_history_text = ""
%><div class="form-row"><input type="checkbox" name="target_history_ids" id="target_history_${encoded_id}" value="${encoded_id}"/>
- <label for="target_history_${encoded_id}" style="display: inline; font-weight:normal;">${i + 1}: ${target_history.name}${cur_history_text}</label>
+ <label for="target_history_${encoded_id}" style="display: inline; font-weight:normal;">${i + 1}: ${target_history.name}${current_history_text}</label></div>
%endfor
</div>
--- a/templates/library/common/library_dataset_search_results.mako Tue Feb 01 11:20:02 2011 -0500
+++ b/templates/library/common/library_dataset_search_results.mako Tue Feb 01 11:21:41 2011 -0500
@@ -1,6 +1,7 @@
<%namespace file="/message.mako" import="render_msg" /><%namespace file="/library/common/browse_library.mako" import="render_dataset" /><%namespace file="/library/common/common.mako" import="render_actions_on_multiple_items" />
+<%namespace file="/library/common/common.mako" import="render_compression_types_help" /><%namespace file="/library/common/common.mako" import="common_javascripts" /><%!
@@ -127,35 +128,7 @@
${render_actions_on_multiple_items( actions_to_exclude=[ 'manage_permissions' ] )}
</table></form>
- ## Help about compression types
-
- <div class="libraryItemBody">
- <p class="infomark">
- TIP: You can download individual library files by selecting "Download this dataset" from the context menu (triangle) next to the dataset's name.
- </p>
- </div>
- %if len( comptypes ) > 1:
- <div class="libraryItemBody">
- <p class="infomark">
- TIP: Multiple compression options are available for downloading library datasets:
- </p>
- <ul style="padding-left: 1em; list-style-type: disc;">
- %if 'gz' in comptypes:
- <li>gzip: Recommended for fast network connections
- %if trans.app.config.upstream_gzip:
- NOTE: The file you receive will be an uncompressed .tar file - this is because the Galaxy server compresses it and your browser decompresses it on the fly.
- %endif
- </li>
- %endif
- %if 'bz2' in comptypes:
- <li>bzip2: Recommended for slower network connections (smaller size but takes longer to compress)</li>
- %endif
- %if 'zip' in comptypes:
- <li>zip: Not recommended but is provided as an option for those who cannot open the above formats</li>
- %endif
- </ul>
- </div>
- %endif
+ ${render_compression_types_help( comptypes )}
%elif status != 'error':
<p>The string "${search_term}" was not found in any of the following information components for any library datasets that you can access.</p>
${render_searched_components()}
--- a/test/functional/test_library_security.py Tue Feb 01 11:20:02 2011 -0500
+++ b/test/functional/test_library_security.py Tue Feb 01 11:21:41 2011 -0500
@@ -300,7 +300,7 @@
library_id=self.security.encode_id( library1.id ),
ldda_ids=self.security.encode_id( ldda2.id ),
new_history_name='goodbye',
- strings_displayed=[ '1 dataset have been imported into 1 history' ] )
+ strings_displayed=[ '1 dataset imported into 1 history' ] )
self.logout()
# regular_user2 should not be able to see ldda2
self.login( email=regular_user2.email )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new changesets in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/d6559b2d69fc/
changeset: r4967:d6559b2d69fc
user: jgoecks
date: 2011-02-01 17:19:40
summary: Use classes instead of ids in tool menu URLs so that search works correctly when recently used menu is visible.
affected #: 1 file (6 bytes)
--- a/templates/root/tool_menu.mako Mon Jan 31 18:25:33 2011 -0500
+++ b/templates/root/tool_menu.mako Tue Feb 01 11:19:40 2011 -0500
@@ -21,9 +21,9 @@
## ${tool.description.replace( '[[', '<a href="link" target="galaxy_main">' % $tool.id ).replace( "]]", "</a>" )
<% tool_id = re.sub( '[^a-z0-9_]', '_', tool.id.lower() ) %>
%if tool.name:
- <a id="link-${tool_id}" href="${link}" target=${tool.target} minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${_(tool.name)}</a> ${tool.description}
+ <a class="link-${tool_id}" href="${link}" target=${tool.target} minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${_(tool.name)}</a> ${tool.description}
%else:
- <a id="link-${tool_id}" href="${link}" target=${tool.target} minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${tool.description}</a>
+ <a class="link-${tool_id}" href="${link}" target=${tool.target} minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${tool.description}</a>
%endif
</div>
%endif
@@ -140,7 +140,7 @@
$(".toolSectionWrapper").find(".toolTitle").hide();
if ( data.length != 0 ) {
// Map tool ids to element ids and join them.
- var s = $.map( data, function( n, i ) { return "#link-" + n.toLowerCase().replace(/[^a-z0-9_]/g,'_'); } ).join( ", " );
+ var s = $.map( data, function( n, i ) { return ".link-" + n.toLowerCase().replace(/[^a-z0-9_]/g,'_'); } ).join( ", " );
// First pass to show matching tools and their parents.
$(s).each( function() {
http://bitbucket.org/galaxy/galaxy-central/changeset/f9770f73f784/
changeset: r4968:f9770f73f784
user: jgoecks
date: 2011-02-01 17:20:02
summary: Merge.
affected #: 0 files (0 bytes)
--- a/datatypes_conf.xml.sample Tue Feb 01 11:19:40 2011 -0500
+++ b/datatypes_conf.xml.sample Tue Feb 01 11:20:02 2011 -0500
@@ -114,6 +114,7 @@
<datatype extension="taxonomy" type="galaxy.datatypes.tabular:Taxonomy" display_in_upload="true"/><datatype extension="tabular" type="galaxy.datatypes.tabular:Tabular" display_in_upload="true"/><datatype extension="txt" type="galaxy.datatypes.data:Text" display_in_upload="true"/>
+ <datatype extension="memexml" type="galaxy.datatypes.xml:MEMEXml" display_in_upload="true"/><datatype extension="blastxml" type="galaxy.datatypes.xml:BlastXml" display_in_upload="true"/><datatype extension="vcf" type="galaxy.datatypes.tabular:Vcf" display_in_upload="true"><converter file="vcf_to_interval_index_converter.xml" target_datatype="interval_index"/>
--- a/lib/galaxy/datatypes/xml.py Tue Feb 01 11:19:40 2011 -0500
+++ b/lib/galaxy/datatypes/xml.py Tue Feb 01 11:20:02 2011 -0500
@@ -39,3 +39,18 @@
line = line.rstrip( '\n\r' )
if line != blastxml_header[ i ]:
return False
+
+class MEMEXml( data.Text ):
+ """MEME XML Output data"""
+ file_ext = "memexml"
+
+ def set_peek( self, dataset, is_multi_byte=False ):
+ """Set the peek and blurb text"""
+ if not dataset.dataset.purged:
+ dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+ dataset.blurb = 'MEME XML data'
+ else:
+ dataset.peek = 'file does not exist'
+ dataset.blurb = 'file purged from disk'
+ def sniff( self, filename ):
+ return False
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme/meme/meme_output_html_1.html Tue Feb 01 11:20:02 2011 -0500
@@ -0,0 +1,2819 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MEME</title>
+<style type="text/css">
+ /* The following is the content of meme.css */
+ body { background-color:white; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif;}
+
+ div.help {
+ display: inline-block;
+ margin: 0px;
+ padding: 0px;
+ width: 12px;
+ height: 13px;
+ background-image: url("help.gif");
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAANAQMAAACn5x0BAAAAAXNSR0IArs4c6QAAAAZQTFRFAAAAnp6eqp814gAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2gMJBQgGYqhNZQAAACZJREFUCNdj+P+BoUGAoV+AYeYEEGoWYGgTYGgRAAm2gRGQ8f8DAOnhC2lYnqs6AAAAAElFTkSuQmCC");
+ }
+
+ p.spaced { line-height: 1.8em;}
+
+ p.pad { padding-left: 30px; padding-top: 5px; padding-bottom: 10px;}
+
+ td.jump { font-size: 13px; color: #ffffff; background-color: #00666a;
+ font-family: Georgia, "Times New Roman", Times, serif;}
+
+ a.jump { margin: 15px 0 0; font-style: normal; font-variant: small-caps;
+ font-weight: bolder; font-family: Georgia, "Times New Roman", Times, serif;}
+
+ h2.mainh {font-size: 1.5em; font-style: normal; margin: 15px 0 0;
+ font-variant: small-caps; font-family: Georgia, "Times New Roman", Times, serif;}
+
+ h2.line {border-bottom: 1px solid #CCCCCC; font-size: 1.5em; font-style: normal;
+ margin: 15px 0 0; padding-bottom: 3px; font-variant: small-caps;
+ font-family: Georgia, "Times New Roman", Times, serif;}
+
+ h4 {border-bottom: 1px solid #CCCCCC; font-size: 1.2em; font-style: normal;
+ margin: 10px 0 0; padding-bottom: 3px; font-family: Georgia, "Times New Roman", Times, serif;}
+
+ h5 {margin: 0px}
+
+ a.help { font-size: 9px; font-style: normal; text-transform: uppercase;
+ font-family: Georgia, "Times New Roman", Times, serif;}
+
+ div.pad { padding-left: 30px; padding-top: 5px; padding-bottom: 10px;}
+
+ div.pad1 { margin: 10px 5px;}
+
+ div.pad2 { margin: 25px 5px 5px;}
+ h2.pad2 { padding: 25px 5px 5px;}
+
+ div.pad3 { padding: 5px 0px 10px 30px;}
+
+ div.box { border: 2px solid #CCCCCC; padding:10px;}
+
+ div.bar { border-left: 7px solid #00666a; padding:5px; margin-top:25px; }
+
+ div.subsection {margin:25px 0px;}
+
+ img {border:0px none;}
+
+ th.majorth {text-align:left;}
+ th.minorth {font-weight:normal; text-align:left; width:8em; padding: 3px 0px;}
+ th.actionth {font-weight:normal; text-align:left;}
+
+ .strand_name {text-align:left;}
+ .strand_side {padding:0px 10px;}
+ .strand_start {padding:0px 10px;}
+ .strand_pvalue {text-align:center; padding:0px 10px;}
+ .strand_lflank {text-align:right; padding-right:5px; font-weight:bold; font-size:large; font-family: 'Courier New', Courier, monospace; color:gray;}
+ .strand_seq {text-align:center; font-weight:bold; font-size:large; font-family: 'Courier New', Courier, monospace;}
+ .strand_rflank {text-align:left; padding-left:5px; font-weight:bold; font-size:large; font-family: 'Courier New', Courier, monospace; color:gray;}
+
+ .block_td {height:25px;}
+ .block_container {position:relative; width:99%; height:25px; padding:0px; margin:0px;}
+ .block_motif {position:absolute; z-index:3; height:12px; top:0px; text-align:center; vertical-align:middle; background-color:cyan;}
+ .block_rule {position:absolute; z-index:2; width:100%; height:1px; top:12px; left:0px; background-color:gray;}
+ .block_plus_sym {position:absolute; z-index:4; width:12px; height:12px; top:0px; left:0px; color:gray;}
+ .block_minus_sym {position:absolute; z-index:4; width:12px; height:12px; top:13px; left:0px; color:gray;}
+
+ .tic_major {position:absolute; border-left:2px solid blue; height:0.5em; top:0em;}
+ .tic_minor {position:absolute; border-left:1px solid blue; height:0.2em; top:0em;}
+ .tic_label {position:absolute; top:0.5em; height: 1em; text-align:center; vertical-align:middle}
+
+ .explain h5 {font-size:1em; margin-left: 1em;}
+
+ div.doc {margin-left: 2em; margin-bottom: 3em;}
+
+ div.tabArea {
+ font-size: 80%;
+ font-weight: bold;
+ }
+
+ a.tab {
+ background-color: #ddddff;
+ border: 1px solid #000000;
+ border-top-width: 0px;
+ padding: 2px 1em 2px 1em;
+ text-decoration: none;
+ }
+
+ a.tab, a.tab:visited {
+ color: #808080;
+ }
+
+ a.tab:hover {
+ background-color: #d0d0d0;
+ color: #606060;
+ }
+ a.tab.activeTab, a.tab.activeTab:hover, a.tab.activeTab:visited {
+ background-color: #f0f0f0;
+ color: #000000;
+ }
+ div.tabMain {
+ border: 1px solid #000000;
+ background-color: #ffffff;
+ padding: 5px;
+ margin-right: 5px;
+ }
+ th.trainingset {
+ border-bottom: thin dashed black;
+ font-weight:normal;
+ padding:0px 10px;
+ }
+
+ </style>
+<script type="text/javascript">
+ //======================================================================
+ // start Alphabet object
+ //======================================================================
+ function Alphabet(alphabet, bg) {
+ //variable prototype
+ this.freqs = new Array();
+ this.alphabet = new Array();
+ this.letter_count = 0;
+ //method prototype
+ this.get_ic = Alphabet_get_ic;
+ this.get_size = Alphabet_get_size;
+ this.get_index = Alphabet_get_index;
+ this.get_letter = Alphabet_get_letter;
+ this.get_colour = Alphabet_get_colour;
+ this.get_bg_freq = Alphabet_get_bg_freq;
+ this.is_nucleotide = Alphabet_is_nucleotide;
+ this.is_ambig = Alphabet_is_ambig;
+ this.toString = Alphabet_to_string;
+ //construct
+ var is_letter = /^\w$/;
+ var is_prob = /^((1(\.0+)?)|(0(\.\d+)?))$/;
+ for (var pos = 0; pos < alphabet.length; pos++) {
+ var letter = alphabet.charAt(pos);
+ if (is_letter.test(letter)) {
+ this.alphabet[this.letter_count] = letter.toUpperCase();
+ this.freqs[this.letter_count] = -1;
+ this.letter_count++;
+ }
+ }
+ if (!(bg === undefined)) {
+ var parts = bg.split(/\s+/);
+ for (var i = 0, pos = 0; (i + 1) < parts.length; i += 2) {
+ var letter = parts[i];
+ var freq = parts[i+1];
+ if (is_letter.test(letter) && is_prob.test(freq)) {
+ letter = letter.toUpperCase(); //find the letter it matches
+ for (;pos < this.letter_count; pos++) {
+ if (this.alphabet[pos] == letter) break;
+ }
+ if (pos >= this.letter_count) throw "NOT_IN_ALPHABET";
+ this.freqs[pos] = (+freq);
+ }
+ }
+ }
+ }
+
+
+ function Alphabet_get_ic() {
+ if (this.is_nucleotide()) {
+ return 2;
+ } else {
+ return Math.log(20) / Math.LN2;
+ }
+ }
+
+ function Alphabet_get_size() {
+ return this.letter_count;
+ }
+
+ function Alphabet_get_letter(alph_index) {
+ if (alph_index < 0 || alph_index >= this.letter_count) {
+ throw "BAD_ALPHABET_INDEX";
+ }
+ return this.alphabet[alph_index];
+ }
+
+ function Alphabet_get_bg_freq(alph_index) {
+ if (alph_index < 0 || alph_index >= this.letter_count) {
+ throw "BAD_ALPHABET_INDEX";
+ }
+ if (this.freqs[alph_index] == -1) throw "BG_FREQ_NOT_SET";
+ return this.freqs[alph_index];
+ }
+
+ function Alphabet_get_colour(alph_index) {
+ var red = "rgb(204,0,0)";
+ var blue = "rgb(0,0,204)";
+ var orange = "rgb(255,179,0)";
+ var green = "rgb(0,128,0)";
+ var yellow = "rgb(255,255,0)";
+ var purple = "rgb(204,0,204)";
+ var magenta = "rgb(255,0,255)";
+ var pink = "rgb(255,204,204)";
+ var turquoise = "rgb(51,230,204)";
+ if (alph_index < 0 || alph_index >= this.letter_count) {
+ throw "BAD_ALPHABET_INDEX";
+ }
+ if (this.is_nucleotide()) {
+ switch (this.alphabet[alph_index]) {
+ case "A":
+ return red;
+ case "C":
+ return blue;
+ case "G":
+ return orange;
+ case "T":
+ return green;
+ }
+ } else {
+ switch (this.alphabet[alph_index]) {
+ case "A":
+ case "C":
+ case "F":
+ case "I":
+ case "L":
+ case "V":
+ case "W":
+ case "M":
+ return blue;
+ case "N":
+ case "Q":
+ case "S":
+ case "T":
+ return green;
+ case "D":
+ case "E":
+ return magenta;
+ case "K":
+ case "R":
+ return red;
+ case "H":
+ return pink;
+ case "G":
+ return orange;
+ case "P":
+ return yellow;
+ case "Y":
+ return turquoise;
+ }
+ }
+ return "black";
+ }
+
+ function Alphabet_is_ambig(alph_index) {
+ if (alph_index < 0 || alph_index >= this.letter_count) {
+ throw "BAD_ALPHABET_INDEX";
+ }
+ if (this.is_nucleotide()) {
+ return ("ACGT".indexOf(this.alphabet[alph_index]) == -1);
+ } else {
+ return ("ACDEFGHIKLMNPQRSTVWY".indexOf(this.alphabet[alph_index]) == -1);
+ }
+ }
+
+ function Alphabet_get_index(letter) {
+ for (i = 0; i < this.letter_count; i++) {
+ if (this.alphabet[i] == letter.toUpperCase()) return i;
+ }
+ throw "UNKNOWN_LETTER";
+ }
+
+ function Alphabet_is_nucleotide() {
+ //TODO basic method, make better
+ if (this.letter_count < 20) return true;
+ return false;
+ }
+
+ function Alphabet_to_string() {
+ return (this.is_nucleotide() ? "Nucleotide" : "Protein") + " Alphabet " + (this.alphabet.join(""));
+ }
+
+ //======================================================================
+ // end Alphabet object
+ //======================================================================
+
+ //======================================================================
+ // start Symbol object
+ //======================================================================
+ function Symbol(alph_index, scale, alphabet) {
+ //variable prototype
+ this.symbol = alphabet.get_letter(alph_index);
+ this.scale = scale;
+ this.colour = alphabet.get_colour(alph_index);
+ //function prototype
+ this.get_symbol = Symbol_get_symbol;
+ this.get_scale = Symbol_get_scale;
+ this.get_colour = Symbol_get_colour;
+ this.toString = Symbol_to_string;
+ }
+
+ function Symbol_get_symbol() {
+ return this.symbol;
+ }
+
+ function Symbol_get_scale() {
+ return this.scale;
+ }
+
+ function Symbol_get_colour() {
+ return this.colour;
+ }
+
+ function Symbol_to_string() {
+ return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
+ }
+
+ function compare_symbol(sym1, sym2) {
+ if (sym1.get_scale() < sym2.get_scale()) {
+ return -1;
+ } else if (sym1.get_scale() > sym2.get_scale()) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ //======================================================================
+ // end Symbol object
+ //======================================================================
+
+ //======================================================================
+ // start Pspm object
+ //======================================================================
+ function Pspm(pssm, name) {
+ //variable prototype
+ this.alph_length = 0;
+ this.motif_length = 0;
+ this.pspm = new Array();
+ this.name = (typeof name == "string" ? name : "");
+ this.nsites = 0;
+ this.evalue = 0;
+ //function prototype
+ this.copy = Pspm_copy;
+ this.reverse_complement = Pspm_reverse_complement;
+ this.get_stack = Pspm_get_stack;
+ this.get_stack_ic = Pspm_get_stack_ic;
+ this.get_motif_length = Pspm_get_motif_length;
+ this.get_alph_length = Pspm_get_alph_length;
+ this.toString = Pspm_to_string;
+ //construct
+ var pspm_header = /letter-probability matrix:\s+alength=\s+(\d+)\s+w=\s+(\d+)(\s+nsites=\s+(\S+))?(\s+E=\s+(\S+))?\s*/;
+ var is_prob = /^((1(\.0+)?)|(0(\.\d+)?))$/;
+ var is_empty = /^\s*$/;
+ var lines = pssm.split(/\s*\n\s*/);
+ var read_pssm = false;
+ var line_num = 0;
+ var col_num = 0;
+ for (line_index in lines) {
+ //exclude inherited properties and undefined properties
+ if (!lines.hasOwnProperty(line_index) || lines[line_index] === undefined) continue;
+
+ var line = lines[line_index];
+ if (is_empty.test(line)) {
+ continue;
+ }
+ if (!read_pssm) {
+ var header_match = pspm_header.exec(line);
+ if (header_match != null) {
+ read_pssm = true;
+ this.alph_length = (+header_match[1]);
+ this.motif_length = (+header_match[2]);
+ if (header_match[4]) this.nsites = parseFloat(header_match[4]);//not always an integer
+ if (header_match[6]) this.evalue = parseFloat(header_match[6]);
+ this.pspm = new Array(this.motif_length);
+ }
+ continue;
+ }
+ if (line_num >= this.motif_length) {
+ throw "TOO_MANY_ROWS";
+ }
+ this.pspm[line_num] = new Array(this.alph_length);
+ col_num = 0;
+ var parts = line.split(/\s+/);
+ for (part_index in parts) {
+ //exclude inherited properties and undefined properties
+ if (!parts.hasOwnProperty(part_index) || parts[part_index] === undefined) continue;
+
+ var prob = parts[part_index];
+ if (!is_prob.test(prob)) continue;
+ if (col_num >= this.alph_length) {
+ throw "TOO_MANY_COLS";
+ }
+ this.pspm[line_num][col_num] = (+prob);
+ col_num++;
+ }
+ if (col_num != this.alph_length) {
+ throw "TOO_FEW_COLS";
+ }
+ line_num++;
+ }
+ if (line_num != this.motif_length) {
+ throw "TOO_FEW_ROWS";
+ }
+ }
+
+ function Clone() {}
+
+ function Pspm_copy() {
+ Clone.prototype = this;
+ var clone = new Clone();
+ //so far only a shallow copy, need to copy everything
+ clone.alph_length = (0+this.alph_length);
+ clone.motif_length = (0+this.motif_length);
+ clone.pspm = new Array(this.motif_length);
+ for (row = 0; row < this.motif_length; row++) {
+ clone.pspm[row] = new Array(this.alph_length);
+ for (col = 0; col < this.alph_length; col++) {
+ clone.pspm[row][col] = (0+this.pspm[row][col]);
+ }
+ }
+ return clone;
+ }
+
+ function Pspm_reverse_complement(alphabet) {
+ if (this.alph_length != alphabet.get_size()) {
+ throw "ALPHABET_MISMATCH";
+ }
+ if (!alphabet.is_nucleotide()) {
+ throw "NO_PROTEIN_RC";
+ }
+ //reverse
+ var x = 0;
+ var y = this.motif_length-1;
+ while (x < y) {
+ var temp = this.pspm[x];
+ this.pspm[x] = this.pspm[y];
+ this.pspm[y] = temp;
+ x++;
+ y--;
+ }
+ //complement
+ var a_index = alphabet.get_index("A");
+ var c_index = alphabet.get_index("C");
+ var g_index = alphabet.get_index("G");
+ var t_index = alphabet.get_index("T");
+ for (i = 0; i < this.motif_length; i++) {
+ var row = this.pspm[i];
+ //swap A and T
+ var temp = row[a_index];
+ row[a_index] = row[t_index];
+ row[t_index] = temp;
+ //swap C and G
+ temp = row[c_index];
+ row[c_index] = row[g_index];
+ row[g_index] = temp;
+ }
+ //note that ambigs are ignored because they don't effect motifs
+ return this; //allow function chaining...
+ }
+
+ function Pspm_get_stack(position, alphabet) {
+ if (this.alph_length != alphabet.get_size()) {
+ throw "ALPHABET_MISMATCH";
+ }
+ var row = this.pspm[position];
+ var stack_ic = this.get_stack_ic(position, alphabet);
+ var alphabet_ic = alphabet.get_ic();
+ var stack = new Array();
+ for (i = 0; i < this.alph_length; i++) {
+ if (alphabet.is_ambig(i)) continue;
+ var sym = new Symbol(i, row[i]*stack_ic/alphabet_ic, alphabet);
+ if (sym.get_scale() <= 0) continue;
+ stack.push(sym);
+ }
+ stack.sort(compare_symbol);
+ return stack;
+ }
+
+ function Pspm_get_stack_ic(position, alphabet) {
+ if (this.alph_length != alphabet.get_size()) {
+ throw "ALPHABET_MISMATCH";
+ }
+ var row = this.pspm[position];
+ var H = 0;
+ for (var i = 0; i < this.alph_length; i++) {
+ if (alphabet.is_ambig(i)) continue;
+ if (row[i] == 0) continue;
+ H -= (row[i] * (Math.log(row[i]) / Math.LN2));
+ }
+ return alphabet.get_ic() - H;
+ }
+
+ function Pspm_get_error(alphabet) {
+ var asize;
+ if (this.nsites == 0) return 0;
+ if (alphabet.is_nucleotide()) {
+ asize = 4;
+ } else {
+ asize = 20;
+ }
+ return (asize-1) / (2 * Math.log(2)*this.nsites);
+ }
+
+ function Pspm_get_motif_length() {
+ return this.motif_length;
+ }
+
+ function Pspm_get_alph_length() {
+ return this.alph_length;
+ }
+
+ function Pspm_to_string() {
+ var str = "";
+ for (row_index in this.pspm) {
+ //exclude inherited properties and undefined properties
+ if (!this.pspm.hasOwnProperty(row_index) || this.pspm[row_index] === undefined) continue;
+
+ var row = this.pspm[row_index];
+ str += row.join("\t") + "\n";
+ }
+ return str;
+ }
+ //======================================================================
+ // end Pspm object
+ //======================================================================
+
+ //======================================================================
+ // start Logo object
+ //======================================================================
+ function Logo(alphabet, fine_text) {
+ this.alphabet = alphabet;
+ this.fine_text = fine_text;
+ this.pspm_list = [];
+ this.pspm_column = [];
+ this.rows = 0;
+ this.columns = 0;
+
+ //functions
+ this.add_pspm = Logo_add_pspm;
+ this.get_columns = Logo_get_columns;
+ this.get_rows = Logo_get_rows;
+ this.get_pspm = Logo_get_pspm;
+ this.get_offset = Logo_get_offset;
+ }
+
+ function Logo_add_pspm(pspm, column) {
+ if (column === undefined) column = 0;
+ else if (column < 0) throw "COLUMN_OUT_OF_BOUNDS";
+ this.pspm_list[this.rows] = pspm;
+ this.pspm_column[this.rows] = column;
+ this.rows++;
+ var col = column + pspm.get_motif_length();
+ if (col > this.columns) this.columns = col;
+ }
+
+ function Logo_get_columns() {
+ return this.columns;
+ }
+
+ function Logo_get_rows() {
+ return this.rows;
+ }
+
+ function Logo_get_pspm(row_index) {
+ if (row_index < 0 || row_index >= this.rows) throw "INDEX_OUT_OF_BOUNDS";
+ return this.pspm_list[row_index];
+ }
+
+ function Logo_get_offset(row_index) {
+ if (row_index < 0 || row_index >= this.rows) throw "INDEX_OUT_OF_BOUNDS";
+ return this.pspm_column[row_index];
+ }
+
+ //======================================================================
+ // end Logo object
+ //======================================================================
+
+ //======================================================================
+ // start RasterizedAlphabet
+ //======================================================================
+
+ // Rasterize Alphabet
+ // 1) Measure width of text at default font for all symbols in alphabet
+ // 2) sort in width ascending
+ // 3) Drop the top and bottom 10% (designed to ignore outliers like 'W' and 'I')
+ // 4) Calculate the average as the maximum scaling factor (designed to stop I becoming a rectangular blob).
+ // 5) Assume scale of zero would result in width of zero, interpolate scale required to make perfect width font
+ // 6) Draw text onto temp canvas at calculated scale
+ // 7) Find bounds of drawn text
+ // 8) Paint on to another canvas at the desired height (but only scaling width to fit if larger).
+ function RasterizedAlphabet(alphabet, font, target_width) {
+ //variable prototypes
+ this.lookup = []; //a map of letter to index
+ this.rasters = []; //a list of rasters
+ this.dimensions = []; //a list of dimensions
+
+ //function prototypes
+ this.draw = RasterizedAlphabet_draw;
+
+ //construct
+ var default_size = 60; // size of square to assume as the default width
+ var safety_pad = 20; // pixels to pad around so we don't miss the edges
+ // create a canvas to do our rasterizing on
+ var canvas = document.createElement("canvas");
+ // assume the default font would fit in a canvas of 100 by 100
+ canvas.width = default_size + 2 * safety_pad;
+ canvas.height = default_size + 2 * safety_pad;
+ // check for canvas support before attempting anything
+ if (!canvas.getContext) throw "NO_CANVAS_SUPPORT";
+ var ctx = canvas.getContext('2d');
+ // check for html5 text drawing support
+ if (!supports_text(ctx)) throw "NO_CANVAS_TEXT_SUPPORT";
+ // calculate the middle
+ var middle = Math.round(canvas.width / 2);
+ // calculate the baseline
+ var baseline = Math.round(canvas.height - safety_pad);
+ // list of widths
+ var widths = [];
+ var count = 0;
+ var letters = [];
+ //now measure each letter in the alphabet
+ for (var i = 0; i < alphabet.get_size(); ++i) {
+ if (alphabet.is_ambig(i)) continue; //skip ambigs as they're never rendered
+ var letter = alphabet.get_letter(i);
+ letters.push(letter);
+ var pos = count++;
+ this.lookup[letter] = pos;
+ //clear the canvas
+ canvas.width = canvas.width;
+ // get the context and prepare to draw our width test
+ var ctx = canvas.getContext('2d');
+ ctx.font = font;
+ ctx.fillStyle = alphabet.get_colour(i);
+ ctx.textAlign = "center";
+ ctx.translate(middle, baseline);
+ // draw the test text
+ ctx.fillText(letter, 0, 0);
+ //measure
+ var size = RasterizedAlphabet_measure(ctx, canvas.width, canvas.height);
+ if (size.width == 0) throw "INVISIBLE_LETTER"; //maybe the fill was white on white?
+ widths.push(size.width);
+ this.dimensions[pos] = size;
+ }
+ //sort the widths
+ widths.sort(function(a,b) {return a - b;});
+ //drop 10% of the items off each end
+ var tenpercent = Math.floor(widths.length / 10);
+ for (var i = 0; i < tenpercent; ++i) {
+ widths.pop();
+ widths.shift();
+ }
+ //calculate average width
+ var avg_width = 0;
+ for (var i = 0; i < widths.length; ++i) avg_width += widths[i];
+ avg_width /= widths.length;
+ // calculate scales
+ for (var i = 0; i < this.dimensions.length; ++i) {
+ var size = this.dimensions[i];
+ // calculate scale
+ var scale = target_width / Math.max(avg_width, size.width);
+ // estimate scaled height
+ var target_height = size.height * scale;
+ // create an approprately sized canvas
+ var raster = document.createElement("canvas");
+ raster.width = target_width; // if it goes over the edge too bad...
+ raster.height = target_height + safety_pad * 2;
+ // calculate the middle
+ middle = Math.round(raster.width / 2);
+ // calculate the baseline
+ baseline = Math.round(raster.height - safety_pad);
+ // get the context and prepare to draw the rasterized text
+ ctx = raster.getContext('2d');
+ ctx.font = font;
+ ctx.fillStyle = alphabet.get_colour(i);
+ ctx.textAlign = "center";
+ ctx.translate(middle, baseline);
+ ctx.save();
+ ctx.scale(scale, scale);
+ // draw the rasterized text
+ ctx.fillText(letters[i], 0, 0);
+ ctx.restore();
+ this.rasters[i] = raster;
+ this.dimensions[i] = RasterizedAlphabet_measure(ctx, raster.width, raster.height);
+ }
+ }
+
+ function RasterizedAlphabet_measure(ctx, cwidth, cheight) {
+ var data = ctx.getImageData(0, 0, cwidth, cheight).data;
+ var r = 0, c = 0;// r: row, c: column
+ var top_line = -1, bottom_line = -1, left_line = -1, right_line = -1;
+ var txt_width = 0, txt_height = 0;
+ // Find the top-most line with a non-white pixel
+ for (r = 0; r < cheight; r++) {
+ for (c = 0; c < cwidth; c++) {
+ if (data[r * cwidth * 4 + c * 4 + 3]) {
+ top_line = r;
+ break;
+ }
+ }
+ if (top_line != -1) break;
+ }
+
+ //find the last line with a non-white pixel
+ if (top_line != -1) {
+ for (r = cheight-1; r >= top_line; r--) {
+ for(c = 0; c < cwidth; c++) {
+ if(data[r * cwidth * 4 + c * 4 + 3]) {
+ bottom_line = r;
+ break;
+ }
+ }
+ if (bottom_line != -1) break;
+ }
+ txt_height = bottom_line - top_line + 1;
+ }
+
+ // Find the left-most line with a non-white pixel
+ for (c = 0; c < cwidth; c++) {
+ for (r = 0; r < cheight; r++) {
+ if (data[r * cwidth * 4 + c * 4 + 3]) {
+ left_line = c;
+ break;
+ }
+ }
+ if (left_line != -1) break;
+ }
+
+ //find the right most line with a non-white pixel
+ if (left_line != -1) {
+ for (c = cwidth-1; c >= left_line; c--) {
+ for(r = 0; r < cheight; r++) {
+ if(data[r * cwidth * 4 + c * 4 + 3]) {
+ right_line = c;
+ break;
+ }
+ }
+ if (right_line != -1) break;
+ }
+ txt_width = right_line - left_line + 1;
+ }
+
+ //return the bounds
+ return {bound_top: top_line, bound_bottom: bottom_line, bound_left: left_line, bound_right: right_line, width: txt_width, height: txt_height};
+ }
+
+ function RasterizedAlphabet_draw(ctx, letter, dx, dy, dWidth, dHeight) {
+ var index = this.lookup[letter];
+ var raster = this.rasters[index];
+ var size = this.dimensions[index];
+ ctx.drawImage(raster, 0, size.bound_top -1, raster.width, size.height+1, dx, dy, dWidth, dHeight);
+ }
+
+ //======================================================================
+ // end RasterizedAlphabet
+ //======================================================================
+
+ //======================================================================
+ // start LogoMetrics object
+ //======================================================================
+
+ function LogoMetrics(ctx, canvas_width, canvas_height, logo_columns, logo_rows, allow_space_for_names) {
+ if (allow_space_for_names === undefined) allow_space_for_names = false;
+ //variable prototypes
+ this.canvas_width = canvas_width;
+ this.canvas_height = canvas_height;
+ this.scale_x = 1;
+ this.scale_y = 1;
+ this.pad_top = 5;
+ this.pad_left = 10;
+ this.pad_right = 5;
+ this.pad_bottom = 0;
+ this.pad_middle = 20;
+ this.name_height = 14;
+ this.name_font = "bold " + this.name_height + "px Times, sans-serif";
+ this.name_spacer = 0;
+ this.y_label = "bits"
+ this.y_label_height = 12;
+ this.y_label_font = "bold " + this.y_label_height + "px Helvetica, sans-serif";
+ this.y_label_spacer = 3;
+ this.y_num_height = 12;
+ this.y_num_width = 0;
+ this.y_num_font = "bold " + this.y_num_height + "px Helvetica, sans-serif";
+ this.y_tic_width = 5;
+ this.stack_pad_left = 0;
+ this.stack_font = "bold 25px Helvetica, sans-serif";
+ this.stack_height = 90;
+ this.stack_width = 26;
+ this.stacks_pad_right = 5;
+ this.x_num_above = 2;
+ this.x_num_height = 12;
+ this.x_num_width = 0;
+ this.x_num_font = "bold " + this.x_num_height + "px Helvetica, sans-serif";
+ this.fine_txt_height = 6;
+ this.fine_txt_above = 2;
+ this.fine_txt_font = "normal " + this.fine_txt_height + "px Helvetica, sans-serif";
+ this.letter_metrics = new Array();
+ this.summed_width = 0;
+ this.summed_height = 0;
+ //function prototypes
+ //none
+ //calculate the width of the y axis numbers
+ ctx.font = this.y_num_font;
+ for (var i = 0; i <= 2; i++) {
+ this.y_num_width = Math.max(this.y_num_width, ctx.measureText("" + i).width);
+ }
+ //calculate the width of the x axis numbers (but they are rotated so it becomes height)
+ ctx.font = this.x_num_font;
+ for (var i = 1; i <= logo_columns; i++) {
+ this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
+ }
+
+ //calculate how much vertical space we want to draw this
+ //first we add the padding at the top and bottom since that's always there
+ this.summed_height += this.pad_top + this.pad_bottom;
+ //all except the last row have the same amount of space allocated to them
+ if (logo_rows > 1) {
+ var row_height = this.stack_height + this.pad_middle;
+ if (allow_space_for_names) {
+ row_height += this.name_height;
+ //the label is allowed to overlap into the spacer
+ row_height += Math.max(this.y_num_height/2, this.name_spacer);
+ //the label is allowed to overlap the space used by the other label
+ row_height += Math.max(this.y_num_height/2, this.x_num_height + this.x_num_above);
+ } else {
+ row_height += this.y_num_height/2;
+ //the label is allowed to overlap the space used by the other label
+ row_height += Math.max(this.y_num_height/2, this.x_num_height + this.x_num_above);
+ }
+ this.summed_height += row_height * (logo_rows - 1);
+ }
+ //the last row has the name and fine text below it but no padding
+ this.summed_height += this.stack_height + this.y_num_height/2;
+ if (allow_space_for_names) {
+ this.summed_height += this.fine_txt_height + this.fine_txt_above + this.name_height;
+ this.summed_height += Math.max(this.y_num_height/2, this.x_num_height + this.x_num_above + this.name_spacer);
+ } else {
+ this.summed_height += Math.max(this.y_num_height/2, this.x_num_height + this.x_num_above + this.fine_txt_height + this.fine_txt_above);
+ }
+
+ //calculate how much horizontal space we want to draw this
+ //first add the padding at the left and right since that's always there
+ this.summed_width += this.pad_left + this.pad_right;
+ //add on the space for the y-axis label
+ this.summed_width += this.y_label_height + this.y_label_spacer;
+ //add on the space for the y-axis
+ this.summed_width += this.y_num_width + this.y_tic_width;
+ //add on the space for the stacks
+ this.summed_width += (this.stack_pad_left + this.stack_width) * logo_columns;
+ //add on the padding after the stacks (an offset from the fine text)
+ this.summed_width += this.stacks_pad_right;
+
+ //calculate scaling factors
+ this.scale_y = this.canvas_height / this.summed_height;
+ this.scale_x = this.canvas_width / this.summed_width;
+
+ //maintain aspect ratio
+ if (this.scale_y > this.scale_x) {
+ this.scale_y = this.scale_x;
+ } else {
+ this.scale_x = this.scale_y;
+ }
+
+
+ }
+
+ //======================================================================
+ // end LogoMetrics object
+ //======================================================================
+
+
+ //found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
+ function image_ok(img) {
+ // During the onload event, IE correctly identifies any images that
+ // weren't downloaded as not complete. Others should too. Gecko-based
+ // browsers act like NS4 in that they report this incorrectly.
+ if (!img.complete) {
+ return false;
+ }
+ // However, they do have two very useful properties: naturalWidth and
+ // naturalHeight. These give the true size of the image. If it failed
+ // to load, either of these should be zero.
+ if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
+ return false;
+ }
+ // No other way of checking: assume it's ok.
+ return true;
+ }
+
+ function supports_text(ctx) {
+ if (!ctx.fillText) return false;
+ if (!ctx.measureText) return false;
+ return true;
+ }
+
+ //draws the scale, returns the width
+ function draw_scale(ctx, metrics, alphabet_ic) {
+ var tic_height = metrics.stack_height / alphabet_ic;
+ ctx.save();
+ ctx.lineWidth = 1.5;
+ ctx.translate(metrics.y_label_height, metrics.y_num_height/2);
+ //draw the axis label
+ ctx.save();
+ ctx.font = metrics.y_label_font;
+ ctx.translate(0, metrics.stack_height/2);
+ ctx.save();
+ ctx.rotate(-(Math.PI / 2));
+ ctx.textAlign = "center";
+ ctx.fillText("bits", 0, 0);
+ ctx.restore();
+ ctx.restore();
+
+ ctx.translate(metrics.y_label_spacer + metrics.y_num_width, 0);
+
+ //draw the axis tics
+ ctx.save();
+ ctx.translate(0, metrics.stack_height);
+ ctx.font = metrics.y_num_font;
+ ctx.textAlign = "right";
+ ctx.textBaseline = "middle";
+ for (var i = 0; i <= alphabet_ic; i++) {
+ //draw the number
+ ctx.fillText("" + i, 0, 0);
+ //draw the tic
+ ctx.beginPath();
+ ctx.moveTo(0, 0);
+ ctx.lineTo(metrics.y_tic_width, 0);
+ ctx.stroke();
+ //prepare for next tic
+ ctx.translate(0, -tic_height);
+ }
+ ctx.restore();
+
+ ctx.translate(metrics.y_tic_width, 0);
+
+ ctx.beginPath();
+ ctx.moveTo(0, 0);
+ ctx.lineTo(0, metrics.stack_height);
+ ctx.stroke();
+
+ ctx.restore();
+ }
+
+ function draw_stack_num(ctx, metrics, row_index) {
+ ctx.save();
+ ctx.font = metrics.x_num_font;
+ ctx.translate(metrics.stack_width / 2, metrics.stack_height + metrics.x_num_above);
+ ctx.save();
+ ctx.rotate(-(Math.PI / 2));
+ ctx.textBaseline = "middle"
+ ctx.textAlign = "right"
+ ctx.fillText("" + (row_index + 1), 0, 0);
+ ctx.restore();
+ ctx.restore();
+ }
+
+ function draw_stack(ctx, metrics, symbols, raster) {
+ var preferred_pad = 0;
+ var sym_min = 5;
+
+ ctx.save();//1
+ ctx.translate(0, metrics.stack_height);
+ for (var i in symbols) {
+ //exclude inherited properties and undefined properties
+ if (!symbols.hasOwnProperty(i) || symbols[i] === undefined) continue;
+
+ var sym = symbols[i];
+ var sym_height = metrics.stack_height * sym.get_scale();
+
+ var pad = preferred_pad;
+ if (sym_height - pad < sym_min) {
+ pad = Math.min(pad, Math.max(0, sym_height - sym_min));
+ }
+ sym_height -= pad;
+
+ //translate to the correct position
+ ctx.translate(0, -(pad/2 + sym_height));
+ //draw
+ raster.draw(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
+ //translate past the padding
+ ctx.translate(0, -(pad/2));
+ }
+ ctx.restore();//1
+ }
+
+ //draws a stack of symbols
+ function draw_stack_old(ctx, metrics, symbols) {
+ var lpad = 2;
+ var sym_min = 5;
+ var pos = metrics.stack_height;
+ for (var i in symbols) {
+ //exclude inherited properties and undefined properties
+ if (!symbols.hasOwnProperty(i) || symbols[i] === undefined) continue;
+
+ var sym = symbols[i];
+ var sym_height = metrics.stack_height*sym.get_scale();
+ var letter = metrics.get_letter_metrics(sym.get_symbol());
+ //attempting to draw something smaller than a pixel causes display corruption
+ if (sym_height >= 1) {
+ //it's better to see the letter than to pad it
+ var pad = lpad;
+ if (sym_height - pad < sym_min) {
+ pad = Math.min(pad, Math.max(0, sym_height - sym_min));
+ }
+ //move to the correct drawing position
+ ctx.save();//s1
+ ctx.translate(0, pos);
+ //create a clipping rectangle to ensure the letter doesn't overlap when it's distorted
+ ctx.save();//s2
+ //ctx.beginPath(); //disabled clipping because after the improvements in the text metrics it looks better without
+ //ctx.moveTo(-metrics.stack_width/2,0);
+ //ctx.lineTo(metrics.stack_width/2, 0);
+ //ctx.lineTo(metrics.stack_width/2, -sym_height);
+ //ctx.lineTo(-metrics.stack_width/2, -sym_height);
+ //ctx.lineTo(-metrics.stack_width/2,0);
+ //ctx.clip();
+ //now draw
+ ctx.translate(0, -(pad/2));
+ ctx.translate(0, -letter.get_descent(sym_height - pad));
+ ctx.fillStyle = sym.get_colour();
+ ctx.textAlign = "center";
+ ctx.save();//s3
+ ctx.scale(letter.wscale, letter.get_hscale(sym_height - pad));
+ ctx.fillText(sym.get_symbol(), 0, 0);
+ ctx.restore();//s3
+
+ ctx.restore();//s2
+ ctx.restore();//s1
+ }
+
+ pos = pos - sym_height;
+ }
+ }
+
+ function draw_logo_on_canvas(logo, canvas, show_names, scale) {
+ var draw_name = (typeof show_names == "boolean" ? show_names : (logo.get_rows() > 1));
+ var cwidth = canvas.width;
+ var cheight = canvas.height;
+ //need a minimum 46 x 120 canvas to draw the font size checks on
+ if (canvas.width < 46) canvas.width = 46;
+ if (canvas.height < 120) canvas.height = 120;
+ var ctx = canvas.getContext('2d');
+ //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
+ var metrics = new LogoMetrics(ctx, canvas.width, canvas.height, logo.get_columns(), logo.get_rows(), draw_name);
+ ctx.save();//s1
+ if (typeof scale == "number") {
+ //resize the canvas to fit the scaled logo
+ cwidth = metrics.summed_width * scale;
+ cheight = metrics.summed_height * scale;
+ } else {
+ if (cwidth == 0 || cheight == 0 || scale == 0) {
+ throw "CANVAS_MUST_HAVE_DIMENSIONS";
+ }
+ scale = Math.min(cwidth / metrics.summed_width, cheight / metrics.summed_height);
+ }
+ var raster = new RasterizedAlphabet(logo.alphabet, metrics.stack_font, metrics.stack_width * scale * 2);
+ if (cwidth != canvas.width || cheight != canvas.height) {
+ canvas.width = cwidth;
+ canvas.height = cheight;
+ //as the canvas has been resized the context is now out of date
+ ctx = canvas.getContext('2d');
+ }
+ ctx.scale(scale, scale);
+ ctx.save();//s2
+ ctx.save();//s7
+ //create margin
+ ctx.translate(metrics.pad_left, metrics.pad_top);
+ for (var pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
+ var pspm = logo.get_pspm(pspm_i);
+ var offset = logo.get_offset(pspm_i);
+ //optionally draw name if this isn't the last row or is the only row
+ if (draw_name && (logo.get_rows() == 1 || pspm_i != (logo.get_rows()-1))) {
+ ctx.save();//s4
+ ctx.translate(metrics.summed_width/2, metrics.name_height);
+ ctx.font = metrics.name_font;
+ ctx.textAlign = "center";
+ ctx.fillText(pspm.name, 0, 0);
+ ctx.restore();//s4
+ ctx.translate(0, metrics.name_height + Math.min(0, metrics.name_spacer - metrics.y_num_height/2));
+ }
+ //draw scale
+ draw_scale(ctx, metrics, logo.alphabet.get_ic());
+ ctx.save();//s5
+ //translate across past the scale
+ ctx.translate(metrics.y_label_height + metrics.y_label_spacer +
+ metrics.y_num_width + metrics.y_tic_width, 0);
+ //draw letters
+ ctx.translate(0, metrics.y_num_height / 2);
+ for (var col_index = 0; col_index < logo.get_columns(); col_index++) {
+ ctx.translate(metrics.stack_pad_left,0);
+ if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+ var motif_position = col_index - offset;
+ draw_stack_num(ctx, metrics, motif_position);
+ draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet), raster);
+ }
+ ctx.translate(metrics.stack_width, 0);
+ }
+ ctx.restore();//s5
+ ////optionally draw name if this is the last row but isn't the only row
+ if (draw_name && (logo.get_rows() != 1 && pspm_i == (logo.get_rows()-1))) {
+ //translate vertically past the stack and axis's
+ ctx.translate(0, metrics.y_num_height/2 + metrics.stack_height +
+ Math.max(metrics.y_num_height/2, metrics.x_num_above + metrics.x_num_width + metrics.name_spacer));
+
+ ctx.save();//s6
+ ctx.translate(metrics.summed_width/2, metrics.name_height);
+ ctx.font = metrics.name_font;
+ ctx.textAlign = "center";
+ ctx.fillText(pspm.name, 0, 0);
+ ctx.restore();//s6
+ ctx.translate(0, metrics.name_height);
+ } else {
+ //translate vertically past the stack and axis's
+ ctx.translate(0, metrics.y_num_height/2 + metrics.stack_height + Math.max(metrics.y_num_height/2, metrics.x_num_above + metrics.x_num_width));
+ }
+ //if not the last row then add middle padding
+ if (pspm_i != (logo.get_rows() -1)) {
+ ctx.translate(0, metrics.pad_middle);
+ }
+ }
+ ctx.restore();//s7
+ ctx.translate(metrics.summed_width - metrics.pad_right, metrics.summed_height - metrics.pad_bottom);
+ ctx.font = metrics.fine_txt_font;
+ ctx.textAlign = "right";
+ ctx.fillText(logo.fine_text, 0,0);
+ ctx.restore();//s2
+ ctx.restore();//s1
+ }
+
+ function create_canvas(c_width, c_height, c_id, c_title, c_display) {
+ var canvas = document.createElement("canvas");
+ //check for canvas support before attempting anything
+ if (!canvas.getContext) return null;
+ var ctx = canvas.getContext('2d');
+ //check for html5 text drawing support
+ if (!supports_text(ctx)) return null;
+ //size the canvas
+ canvas.width = c_width;
+ canvas.height = c_height;
+ canvas.id = c_id;
+ canvas.title = c_title;
+ canvas.style.display = c_display;
+ return canvas;
+ }
+
+ function logo_1(alphabet, fine_text, pspm) {
+ var logo = new Logo(alphabet, fine_text);
+ logo.add_pspm(pspm);
+ return logo;
+ }
+
+ function logo_2(alphabet, fine_text, target, query, query_offset) {
+ var logo = new Logo(alphabet, fine_text);
+ if (query_offset < 0) {
+ logo.add_pspm(target, -query_offset);
+ logo.add_pspm(query);
+ } else {
+ logo.add_pspm(target);
+ logo.add_pspm(query, query_offset);
+ }
+ return logo;
+ }
+
+ /*
+ * Specifies an alternate source for an image.
+ * If the image with the image_id specified has
+ * not loaded then a generated logo will be used
+ * to replace it.
+ *
+ * Note that the image must either have dimensions
+ * or a scale must be set.
+ */
+ function alternate_logo(logo, image_id, scale) {
+ var image = document.getElementById(image_id);
+ if (!image) {
+ alert("Can't find specified image id (" + image_id + ")");
+ return;
+ }
+ //if the image has loaded then there is no reason to use the canvas
+ if (image_ok(image)) return;
+ //the image has failed to load so replace it with a canvas if we can.
+ var canvas = create_canvas(image.width, image.height, image_id, image.title, image.style.display);
+ if (canvas == null) return;
+ //draw the logo on the canvas
+ draw_logo_on_canvas(logo, canvas, undefined, scale);
+ //replace the image with the canvas
+ image.parentNode.replaceChild(canvas, image);
+ }
+
+ /*
+ * Specifes that the element with the specified id
+ * should be replaced with a generated logo.
+ */
+ function replace_logo(logo, replace_id, scale, title_txt, display_style) {
+ var element = document.getElementById(replace_id);
+ if (!replace_id) {
+ alert("Can't find specified id (" + replace_id + ")");
+ return;
+ }
+ //found the element!
+ var canvas = create_canvas(50, 120, replace_id, title_txt, display_style);
+ if (canvas == null) return;
+ //draw the logo on the canvas
+ draw_logo_on_canvas(logo, canvas, undefined, scale);
+ //replace the element with the canvas
+ element.parentNode.replaceChild(canvas, element);
+ }
+
+ //example code for creating a logo
+ //function do_load() {
+ // var alphabet = new Alphabet(document.getElementById("alphabet").value, document.getElementById("bgfreq").value);
+ // var pspm = new Pspm(document.getElementById("pspm1").value);
+ // var pspm_rc = pspm.copy().reverse_complement(alphabet);
+ // draw_logo(pspm, alphabet, "Motif 1", "logo1");
+ // draw_logo(pspm_rc, alphabet, "Motif 1 Reverse Complement", "logo_rc1");
+ //}
+
+
+ function setup() {
+ var motif_count = 1;
+ //create canvas logos
+ var alphabet = new Alphabet(document.getElementById("alphabet").value, document.getElementById("bgfreq").value);
+ for (var i = 1; i <= motif_count; i++) {
+ var pspm = new Pspm(document.getElementById("pspm" + i).value);
+ var logo = logo_1(alphabet, "MEME", pspm);
+ alternate_logo(logo, "thumbnail_logo_" + i, 0.5);
+ alternate_logo(logo, "logo_img_" + i, 1);
+
+ }
+
+ //ensure radio buttons have data generated for them by fireing events
+ var allInputs = document.getElementsByTagName("input");
+ for (var i = 0; i < allInputs.length; i++) {
+ var input = allInputs[i];
+ if (input.type == "radio" && input.checked) {
+ var evt = document.createEvent("MouseEvents");
+ evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ input.dispatchEvent(evt);
+ }
+ }
+
+ for (var i = 1; i <= motif_count; i++) {
+ tbl = document.getElementById("tbl_sites_" + i);
+ wireUpTable(tbl, false);
+ tbl = document.getElementById("tbl_blocks_" + i);
+ wireUpTable(tbl, true);
+ }
+ }
+ function showDesc(source, targetid) {
+ document.getElementById(targetid).childNodes[0].nodeValue = source.title;
+ }
+ function hideDesc(targetid) {
+ document.getElementById(targetid).childNodes[0].nodeValue = "Mouse-over buttons for more information.";
+ }
+ function showEmbededFormat(motifnum, format) {
+ var source = document.getElementById(format + motifnum);
+ var txtarea = document.getElementById("format_display_area_" + motifnum);
+ txtarea.value = source.value;
+ txtarea.style.display = 'block';
+ }
+ function hideFormat(motifnum) {
+ var txtarea = document.getElementById("format_display_area_" + motifnum);
+ txtarea.style.display = 'none';
+ }
+ function block2raw(block) {
+ var raw = "";
+ var endpat = /\/\//;
+ var wordpat = /\S+/gi;
+ var lines = block.split("\n");
+ for (i = 2; i < lines.length; ++i) {
+ if (lines[i].match(endpat) != null) break;
+ var words = lines[i].match(wordpat);
+ raw += words[3] + "\n";
+ }
+ return raw;
+ }
+ function block2fasta(block) {
+ var fasta = "";
+ var endpat = /\/\//;
+ var wordpat = /\S+/gi;
+ var lines = block.split("\n");
+ for (i = 2; i < lines.length; ++i) {
+ if (lines[i].match(endpat) != null) break;
+ var words = lines[i].match(wordpat);
+ var start = words[2].substring(0, words[2].length - 1);
+ fasta += ">" + words[0] + " ( start= " + start + " )\n" + words[3] + "\n";
+ }
+ return fasta;
+ }
+ function showRaw(motifnum) {
+ var source = document.getElementById('blocks' + motifnum);
+ var txtarea = document.getElementById("format_display_area_" + motifnum);
+ txtarea.value = block2raw(source.value);
+ txtarea.style.display = 'block';
+ }
+ function showFasta(motifnum) {
+ var source = document.getElementById('blocks' + motifnum);
+ var txtarea = document.getElementById("format_display_area_" + motifnum);
+ txtarea.value = block2fasta(source.value);
+ txtarea.style.display = 'block';
+ }
+ function showHidden(prefix) {
+ document.getElementById(prefix + '_activator').style.display = 'none';
+ document.getElementById(prefix + '_deactivator').style.display = 'block';
+ document.getElementById(prefix + '_data').style.display = 'block';
+ }
+ function hideShown(prefix) {
+ document.getElementById(prefix + '_activator').style.display = 'block';
+ document.getElementById(prefix + '_deactivator').style.display = 'none';
+ document.getElementById(prefix + '_data').style.display = 'none';
+ }
+ function wireUpTable(table, skiplast) {
+ if (table && table.rows) {
+ var nRows = table.rows.length;
+ if (skiplast) {nRows--;}
+ for (var i = 1; i < nRows; i++) {
+ var row = table.rows[i];
+ row.style.cursor = 'pointer';
+ row.onclick = function()
+ {
+ processHighlight(this);
+ }
+ }
+ } else {
+ alert(table);
+ }
+ }
+ function processHighlight(sourceRow) {
+ var name = sourceRow.cells[0].firstChild.nodeValue;
+
+ for (var i = 1; i <= 1; i++) {
+ tbl = document.getElementById("tbl_sites_" + i);
+ highlightTable(name, tbl);
+ tbl = document.getElementById("tbl_blocks_" + i);
+ highlightTable(name, tbl);
+ }
+ }
+ function highlightTable(name, table) {
+ if (table == null) return;
+ nRows = table.rows.length;
+ for (var i = 0; i < nRows; i++) {
+ var row = table.rows[i];
+ if(row.cells[0].firstChild.nodeValue == name) {
+ row.style.backgroundColor = "#aaffaa";
+ } else {
+ row.style.backgroundColor = "white";
+ }
+ }
+ }
+ function warnExternal() {
+ if (confirm("Using BLOCKS requires the data to be sent to an external webservice even if you have setup your own meme installation. Continue?")) {
+ return true;
+ }
+ return false;
+ }
+ function clickLogoTab(is_rc, num) {
+ var stdTab = document.getElementById("logo_tab_std_" + num);
+ var rcTab = document.getElementById("logo_tab_rc_" + num);
+ var logoImg = document.getElementById("logo_img_" + num);
+ var logoRcImg = document.getElementById("logo_rc_img_" + num);
+ if (is_rc) {
+ logoImg.style.display = 'none';
+ logoRcImg.style.display = 'block';
+ rcTab.setAttribute("class", "tab activeTab");
+ stdTab.setAttribute("class", "tab");
+ } else {
+ logoRcImg.style.display = 'none';
+ logoImg.style.display = 'block';
+ rcTab.setAttribute("class", "tab");
+ stdTab.setAttribute("class", "tab activeTab");
+ }
+ }
+ </script>
+</head>
+<body onload="javascript:setup()"><form enctype="application/x-www-form-urlencoded" method="post" target="_new" action="http://dan/meme_request.cgi">
+<!--+++++++++++++++++++++++START DATA+++++++++++++++++++++++++++++++++++++-->
+<input type="hidden" name="version" value="MEME version 4.5.0">
+<input type="hidden" name="alphabet" id="alphabet" value="ACDEFGHIKLMNPQRSTVWY">
+<input type="hidden" name="strands" value="none">
+<input type="hidden" name="bgfreq" id="bgfreq" value="A 0.291 C 0.229 D 0.001 E 0.001 F 0.001 G 0.255 H 0.001 I 0.001 K 0.001
+L 0.001 M 0.001 N 0.001 P 0.001 Q 0.001 R 0.001 S 0.001 T 0.215 V 0.001
+W 0.001 Y 0.001">
+<input type="hidden" name="name" value="dan.dat">
+<input type="hidden" name="combinedblock" value="
+chr21_19617074_19617124_+ 1.22e-03 1 50 1 39 3.06e-05
+chr21_26934381_26934431_+ 2.21e-03 1 50 1 27 5.52e-05
+chr21_28217753_28217803_- 7.29e-01 0 50
+chr21_31710037_31710087_- 2.37e-03 1 50 1 14 5.94e-05
+chr21_31744582_31744632_- 1.22e-03 1 50 1 12 3.06e-05
+chr21_31768316_31768366_+ 1.53e-03 1 50 1 0 3.82e-05
+chr21_31914206_31914256_- 6.70e-04 1 50 1 15 1.68e-05
+chr21_31933633_31933683_- 1.81e-03 1 50 1 4 4.54e-05
+chr21_31962741_31962791_- 1.61e-02 0 50
+chr21_31964683_31964733_+ 1.36e-04 1 50 1 13 3.41e-06
+chr21_31973364_31973414_+ 1.99e-01 0 50
+chr21_31992870_31992920_+ 3.47e-04 1 50 1 16 8.67e-06
+chr21_32185595_32185645_- 3.47e-04 1 50 1 18 8.67e-06
+chr21_32202076_32202126_- 2.01e-04 1 50 1 13 5.01e-06
+chr21_32253899_32253949_- 8.11e-04 1 50 1 19 2.03e-05
+chr21_32410820_32410870_- 3.47e-04 1 50 1 21 8.67e-06
+chr21_36411748_36411798_- 2.71e-03 1 50 1 22 6.78e-05
+chr21_37838750_37838800_- 8.23e-02 0 50
+chr21_45705687_45705737_+ 1.53e-03 1 50 1 37 3.82e-05
+chr21_45971413_45971463_- 1.36e-04 1 50 1 9 3.41e-06
+chr21_45978668_45978718_- 6.37e-04 1 50 1 4 1.59e-05
+chr21_45993530_45993580_+ 1.60e-04 1 50 1 7 4.00e-06
+chr21_46020421_46020471_+ 4.83e-04 1 50 1 2 1.21e-05
+chr21_46031920_46031970_+ 2.43e-04 1 50 1 15 6.06e-06
+chr21_46046964_46047014_+ 4.26e-05 1 50 1 12 1.06e-06
+chr21_46057197_46057247_+ 1.36e-04 1 50 1 36 3.41e-06
+chr21_46086869_46086919_- 4.30e-02 0 50
+chr21_46102103_46102153_- 4.30e-02 0 50
+chr21_47517957_47518007_+ 6.37e-04 1 50 1 32 1.59e-05
+chr21_47575506_47575556_- 1.61e-03 1 50 1 30 4.02e-05
+">
+<input type="hidden" name="nmotifs" value="1">
+<!--data for motif 1-->
+<input type="hidden" id="motifblock1" name="motifblock1" value="
+BL MOTIF 1 width=11 seqs=25
+">
+<input type="hidden" id="pssm1" name="pssm1" value="
+log-odds matrix: alength= 20 w= 11 n= 25 bayes= 5.33554 E= 2.4e-011
+-32 -680 91 77 7 138 -20 55 64 107 11 150 142 72 87 396 -148 221 -140 -36
+-11 -680 89 76 7 137 -21 55 63 107 10 149 141 71 87 396 -239 220 -140 -36
+-79 41 4 21 -7 44 -62 42 -5 99 0 99 138 52 42 399 -46 223 -173 -68
+11 -677 48 47 -2 127 -43 46 27 101 3 124 138 60 62 397 -235 220 -160 -55
+-596 -820 12 -21 -53 -267 -74 37 16 44 -37 98 31 9 19 319 212 127 -193 -95
+165 -261 70 110 77 -521 -4 147 95 201 90 121 124 91 107 425 -527 314 -95 8
+-838 -990 -89 -149 -151 -841 -161 -117 -113 -66 -209 -68 -69 -129 -91 111 221 -55 -255 -173
+176 -858 -79 -103 -115 -717 -148 -95 -108 -17 -162 -61 -12 -95 -69 193 -737 52 -240 -153
+134 -686 0 16 -12 -553 -68 44 -8 96 -9 88 124 41 36 384 11 216 -177 -71
+165 -261 70 110 77 -521 -4 147 95 201 90 121 124 91 107 425 -527 314 -95 8
+147 -614 89 129 93 -121 12 160 113 217 108 144 144 111 125 447 -241 332 -81 22
+
+">
+<input type="hidden" id="pspm1" name="pspm1" value="
+letter-probability matrix: alength= 20 w= 11 nsites= 25 E= 2.4e-011
+0.240000 0.000000 0.000000 0.000000 0.000000 0.680000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.080000 0.000000 0.000000 0.000000
+0.280000 0.000000 0.000000 0.000000 0.000000 0.680000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+0.160000 0.320000 0.000000 0.000000 0.000000 0.360000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.160000 0.000000 0.000000 0.000000
+0.320000 0.000000 0.000000 0.000000 0.000000 0.640000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.960000 0.000000 0.000000 0.000000
+0.960000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
+1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+0.760000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.240000 0.000000 0.000000 0.000000
+0.960000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+0.840000 0.000000 0.000000 0.000000 0.000000 0.120000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+
+">
+<input type="hidden" id="blocks1" name="BLOCKS1" value="
+BL MOTIF 1 width=11 seqs=25
+chr21_46046964_46047014_+ ( 12) GGGGTATAAAA 1
+chr21_46057197_46057247_+ ( 36) GGCATATAAAA 1
+chr21_45971413_45971463_- ( 9) GGCATATAAAA 1
+chr21_31964683_31964733_+ ( 13) GGCATATAAAA 1
+chr21_45993530_45993580_+ ( 7) GGAGTATAAAA 1
+chr21_32202076_32202126_- ( 13) GAGGTATAAAA 1
+chr21_46031920_46031970_+ ( 15) AGGGTATAAAA 1
+chr21_32410820_32410870_- ( 21) GATGTATAAAA 1
+chr21_32185595_32185645_- ( 18) GGGATATATAA 1
+chr21_31992870_31992920_+ ( 16) GATGTATAAAA 1
+chr21_46020421_46020471_+ ( 2) GACATATAAAA 1
+chr21_47517957_47518007_+ ( 32) GGGGTATAAAG 1
+chr21_45978668_45978718_- ( 4) GGGGTATAAAG 1
+chr21_31914206_31914256_- ( 15) AGAGTATAAAA 1
+chr21_32253899_32253949_- ( 19) GATATATAAAA 1
+chr21_31744582_31744632_- ( 12) AGCATATATAA 1
+chr21_19617074_19617124_+ ( 39) TGGGTATATAA 1
+chr21_45705687_45705737_+ ( 37) GGGGTATAACA 1
+chr21_31768316_31768366_+ ( 0) AACGTATATAA 1
+chr21_47575506_47575556_- ( 30) AGCGTATAAAG 1
+chr21_26934381_26934431_+ ( 27) GAGTTATAAAA 1
+chr21_31710037_31710087_- ( 14) TGAGTATATAA 1
+chr21_36411748_36411798_- ( 22) GGCATCTAAAA 1
+chr21_31933633_31933683_- ( 2) AGAGTATATAT 1
+chr21_31962741_31962791_- ( 13) GTTGGATAAAA 1
+//
+
+">
+<!--++++++++++++++++++++++++++++FINISHED DATA++++++++++++++++++++++++++++++++-->
+<a name="top_buttons"></a><div class="pad1">
+<h1><img src="http://meme.nbcr.net/meme/images/meme.png" alt="MEME"></h1>
+<p class="spaced">
+ For further information on how to interpret these results or to get a
+ copy of the MEME software please access
+ <a href="http://meme.nbcr.net/">http://meme.nbcr.net</a>.
+ </p>
+</div>
+<div class="pad2">
+<a class="jump" href="#overview">Discovered Motifs</a>
+ Â Â |Â Â
+ <a class="jump" href="#combined">Block diagrams of Motifs</a>
+ Â Â |Â Â
+ <a class="jump" href="#version">Program information</a>
+ Â Â |Â Â
+ <a class="jump" href="#explanation">Explanation</a>
+</div>
+<a name="overview"></a><h2 class="mainh pad2">Discovered Motifs</h2>
+<div class="box">
+<h4>Motif Overview</h4>
+<div class="pad"><table>
+<col style="text-align: center">
+<col style="text-align: right">
+<col style="text-align: right">
+<col>
+<tbody><tr>
+<td><a href="#motif_1">Motif 1</a></td>
+<td style="padding-left:20px"><ul>
+<li>2.4e-011</li>
+<li>25 sites</li>
+</ul></td>
+<td style="padding-left:20px"></td>
+<td style="padding-left:20px;"><a href="#motif_1"><img style="display:block; height:75px" src="logo1.png" id="thumbnail_logo_1" alt="Motif 1 Logo"></a></td>
+</tr></tbody>
+</table></div>
+<h4>Further Analysis</h4>
+<div class="pad">
+ Submit all motifs to
+ <input name="do_MAST_all" value="MAST" type="submit" title="Search sequence databases for the best combined matches with these motifs using MAST." onmouseover="javascript:showDesc(this, 'overview_action_desc')" onmouseout="javascript:hideDesc('overview_action_desc')">Â
+ <a href="#MAST_doc" title="Click for more information on MAST." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="do_FIMO_all" value="FIMO" type="submit" title="Search sequence databases for all matches with these motifs using FIMO." onmouseover="javascript:showDesc(this, 'overview_action_desc')" onmouseout="javascript:hideDesc('overview_action_desc')">Â
+ <a href="#FIMO_doc" title="Click for more information on FIMO." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="do_BLOCKS_all" value="BLOCKS" type="submit" title="Submit these motifs to BLOCKS multiple alignment processor." onclick="return warnExternal()" onmouseover="javascript:showDesc(this, 'overview_action_desc')" onmouseout="javascript:hideDesc('overview_action_desc')">Â
+ <a href="#BLOCKS_doc" title="Click for more information on BLOCKS." class="help"><div class="help"></div></a>
+ Â <span id="overview_action_desc">Mouse-over buttons for more information.</span>
+</div>
+</div>
+<a name="motif_1"></a><table width="100%" border="0" cellspacing="1" cellpadding="4" bgcolor="#FFFFFF"><tr>
+<td><h2 class="mainh">Motif 1</h2></td>
+<td align="right" valign="bottom"><a href="#top_buttons">Top</a></td>
+</tr></table>
+<div class="box">
+<table style="width:100%; background-color:#ddddff">
+<tr>
+<th class="majorth"><h4>Summary <a href="#summary_doc"><div class="help"></div></a>
+</h4></th>
+<th class="majorth"><h4>Sequence Logo <a href="#logo_doc"><div class="help"></div></a>
+</h4></th>
+</tr>
+<tr>
+<td style="width:15em; vertical-align:text-top;">
+<table style="width:100%; " cellspacing="0">
+<col>
+<col style="text-align:left;">
+<tr>
+<th class="minorth">E-value</th>
+<td>2.4e-011</td>
+</tr>
+<tr>
+<th class="minorth">Width</th>
+<td>11</td>
+</tr>
+<tr>
+<th class="minorth">Sites</th>
+<td>25</td>
+</tr>
+</table>
+<a href="javascript:showHidden('summary_extra_1')" id="summary_extra_1_activator">show more</a><div id="summary_extra_1_data" style="display:none"><table style="width:100%;" cellspacing="0">
+<tr><th colspan="2" class="minorth">Log Likelihood Ratio <a href="#llr_doc"><div class="help"></div></a>
+</th></tr>
+<tr>
+<td style="width:8em;">Â </td>
+<td>239</td>
+</tr>
+<tr><th colspan="2" class="minorth">Information Content <a href="#ic_doc"><div class="help"></div></a>
+</th></tr>
+<tr>
+<td>Â </td>
+<td>40.0Â (bits)</td>
+</tr>
+<tr><th colspan="2" class="minorth">Relative Entropy <a href="#re_doc"><div class="help"></div></a>
+</th></tr>
+<tr>
+<td>Â </td>
+<td>13.8Â (bits)</td>
+</tr>
+</table></div>
+<a href="javascript:hideShown('summary_extra_1')" id="summary_extra_1_deactivator" style="display:none;">show less</a>
+</td>
+<td>
+<div class="tabMain"><img src="logo1.png" style="display:block;" id="logo_img_1" height="140" width="260" alt="PNG LOGOS require CONVERT from ImageMagick; see MEME installation guide"></div>
+<div class="tabArea"><a id="logo_tab_std_1" href="javascript:clickLogoTab(false,1)" class="tab activeTab">Standard</a></div>
+<br>
+ Download LOGO <a href="#download_doc" class="help"><div class="help"></div></a>
+ Â Â
+ Orientation:
+ <select name="logorc_1"><option value="false">standard</option>
+<option value="true" disabled>reverse complement</option></select>
+ Â Â
+ SSC:
+ <select name="logossc_1"><option value="false">off</option>
+<option value="true">on</option></select>
+ Â Â
+ Format:
+ <select name="logoformat_1"><option value="png">web (png)</option>
+<option value="eps">publication (eps)</option></select>
+ Â Â
+ Width:
+ <input type="text" size="2" maxlength="5" value="11" title="Width of logo in cm." name="logowidth_1"> cm
+ Â Â
+ Height:
+ <input type="text" size="2" maxlength="5" value="7.5" title="Height of logo in cm." name="logoheight_1"> cm
+ Â Â
+ <input type="submit" value="Download" title="Download a logo" name="do_LOGO_1">
+</td>
+</tr>
+</table>
+<h4>Regular expression <a href="#regular_expression_doc" class="help"><div class="help"></div></a>
+</h4>
+<p class="pad">
+[GA][GA][GC][GA]TATA[AT]AA
+</p>
+<h4>Further Analysis <a href="#further_analysis_doc" class="help"><div class="help"></div></a>
+</h4>
+<div class="pad">
+ Submit this motif to
+ <input type="submit" name="do_MAST_1" value="MAST" title="Scan sequence databases for the best match in each sequence using MAST." onmouseover="javascript:showDesc(this, 'motif1_action_desc')" onmouseout="javascript:hideDesc('motif1_action_desc')">Â
+ <a href="#MAST_doc" title="Click for more information on MAST." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input type="submit" name="do_FIMO_1" value="FIMO" title="Scan sequence databases for all matches with this motif using FIMO." onmouseover="javascript:showDesc(this, 'motif1_action_desc')" onmouseout="javascript:hideDesc('motif1_action_desc')">Â
+ <a href="#FIMO_doc" title="Click for more information on FIMO." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input type="submit" name="do_BLOCKS_1" value="BLOCKS" title="Submit this motif to BLOCKS multiple alignment processor." onclick="return warnExternal()" onmouseover="javascript:showDesc(this, 'motif1_action_desc')" onmouseout="javascript:hideDesc('motif1_action_desc')">Â
+ <a href="#BLOCKS_doc" title="Click for more information on BLOCKS." class="help"><div class="help"></div></a>
+ Â <span id="motif1_action_desc">Mouse-over buttons for more information.</span>
+</div>
+<h4>Data Formats <a href="#formats_doc" class="help"><div class="help"></div></a>
+</h4>
+<div class="pad">
+ View the motif in
+ <input name="format_display_1" type="radio" onclick="javascript:showEmbededFormat(1, 'pspm')">PSPM FormatÂ
+ <a href="#format_PSPM_doc" title="Click for more information on PSPMs." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="format_display_1" type="radio" onclick="javascript:showEmbededFormat(1, 'pssm')">PSSM FormatÂ
+ <a href="#format_PSSM_doc" title="Click for more information on PSSMs." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="format_display_1" type="radio" onclick="javascript:showEmbededFormat(1, 'blocks')">BLOCKS FormatÂ
+ <a href="#format_BLOCKS_doc" title="Click for more information on BLOCKS format." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="format_display_1" type="radio" onclick="javascript:showFasta(1)">FASTA FormatÂ
+ <a href="#format_FASTA_doc" title="Click for more information on FASTA format." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ <input name="format_display_1" type="radio" onclick="javascript:showRaw(1)">Raw FormatÂ
+ <a href="#format_raw_doc" title="Click for more information on raw format." class="help"><div class="help"></div></a>
+ Â Â Â Â
+ or
+ <input name="format_display_1" type="radio" onclick="javascript:hideFormat(1)" checked>Hide<br><textarea id="format_display_area_1" rows="20" style="display:none; width:100%;" readonly></textarea><noscript>This feature requires javascript.</noscript>
+</div>
+<h4>Sites <a href="#sites_doc" class="help"><div class="help"></div></a>
+</h4>
+<div class="pad">
+<p>Click on any row to highlight sequence in all motifs.</p>
+<table id="tbl_sites_1" cellpadding="0.5cm">
+<col style="">
+<col style="">
+<col style="">
+<col style="">
+<col style="">
+<col style="">
+<thead><tr>
+<th>Name <a name="sites1"></a>
+</th>
+<th>Start</th>
+<th>
+<i>p</i>-value</th>
+<th colspan="3">Sites <a href="#sites_doc" class="help"><div class="help"></div></a>
+</th>
+</tr></thead>
+<tbody>
+<tr>
+<td class="strand_name">chr21_46046964_46047014_+</td>
+<td class="strand_start">12</td>
+<td class="strand_pvalue">1.06e-06</td>
+<td class="strand_lflank">AAGGCCAGGA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCCTGAGAGC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_46057197_46057247_+</td>
+<td class="strand_start">36</td>
+<td class="strand_pvalue">3.41e-06</td>
+<td class="strand_lflank">ACAGGCCCTG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_45971413_45971463_-</td>
+<td class="strand_start">9</td>
+<td class="strand_pvalue">3.41e-06</td>
+<td class="strand_lflank">CAGGCCCTG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCCCCAGCAG</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31964683_31964733_+</td>
+<td class="strand_start">13</td>
+<td class="strand_pvalue">3.41e-06</td>
+<td class="strand_lflank">GATTCACTGA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GGCCCTCTGC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_45993530_45993580_+</td>
+<td class="strand_start">7</td>
+<td class="strand_pvalue">4.00e-06</td>
+<td class="strand_lflank">CCAAGGA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCCCCACAAA</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_32202076_32202126_-</td>
+<td class="strand_start">13</td>
+<td class="strand_pvalue">5.01e-06</td>
+<td class="strand_lflank">CCACCAGCTT</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">AGCCCTGTAC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_46031920_46031970_+</td>
+<td class="strand_start">15</td>
+<td class="strand_pvalue">6.06e-06</td>
+<td class="strand_lflank">ATACCCAGGG</td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">CCTCAGCAGC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_32410820_32410870_-</td>
+<td class="strand_start">21</td>
+<td class="strand_pvalue">8.67e-06</td>
+<td class="strand_lflank">AATCACTGAG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GTCCCAGGGA</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_32185595_32185645_-</td>
+<td class="strand_start">18</td>
+<td class="strand_pvalue">8.67e-06</td>
+<td class="strand_lflank">CACCAGAGCT</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">AGAAGGTTCT</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31992870_31992920_+</td>
+<td class="strand_start">16</td>
+<td class="strand_pvalue">8.67e-06</td>
+<td class="strand_lflank">CACTATTGAA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">TTTCATTTGC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_46020421_46020471_+</td>
+<td class="strand_start">2</td>
+<td class="strand_pvalue">1.21e-05</td>
+<td class="strand_lflank">GA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCCAACATCC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_47517957_47518007_+</td>
+<td class="strand_start">32</td>
+<td class="strand_pvalue">1.59e-05</td>
+<td class="strand_lflank">CCGGCGGGGC</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:orange;">G</span>
+</td>
+<td class="strand_rflank">GGGGCGG</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_45978668_45978718_-</td>
+<td class="strand_start">4</td>
+<td class="strand_pvalue">1.59e-05</td>
+<td class="strand_lflank">CAGA</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:orange;">G</span>
+</td>
+<td class="strand_rflank">GTTCCGACCA</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31914206_31914256_-</td>
+<td class="strand_start">15</td>
+<td class="strand_pvalue">1.68e-05</td>
+<td class="strand_lflank">CCCACTACTT</td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">TCATTCTGAG</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_32253899_32253949_-</td>
+<td class="strand_start">19</td>
+<td class="strand_pvalue">2.03e-05</td>
+<td class="strand_lflank">CACCAGCAAG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GCTCAGGAGT</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31744582_31744632_-</td>
+<td class="strand_start">12</td>
+<td class="strand_pvalue">3.06e-05</td>
+<td class="strand_lflank">CAGGTCTAAG</td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">CTTGGAGTCC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_19617074_19617124_+</td>
+<td class="strand_start">39</td>
+<td class="strand_pvalue">3.06e-05</td>
+<td class="strand_lflank">CCTCGGGACG</td>
+<td class="strand_seq">
+<span style="color:green;">T</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank"></td>
+</tr>
+<tr>
+<td class="strand_name">chr21_45705687_45705737_+</td>
+<td class="strand_start">37</td>
+<td class="strand_pvalue">3.82e-05</td>
+<td class="strand_lflank">CGTGGTCGCG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">C</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31768316_31768366_+</td>
+<td class="strand_start">0</td>
+<td class="strand_pvalue">3.82e-05</td>
+<td class="strand_lflank"></td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">C</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">ATGGTCCTGT</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_47575506_47575556_-</td>
+<td class="strand_start">30</td>
+<td class="strand_pvalue">4.02e-05</td>
+<td class="strand_lflank">GCTGCCGGTG</td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:orange;">G</span>
+</td>
+<td class="strand_rflank">GCCCTGGCG</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_26934381_26934431_+</td>
+<td class="strand_start">27</td>
+<td class="strand_pvalue">5.52e-05</td>
+<td class="strand_lflank">AGTCACAAGT</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">GGGTCGCACG</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31710037_31710087_-</td>
+<td class="strand_start">14</td>
+<td class="strand_pvalue">5.94e-05</td>
+<td class="strand_lflank">CCCAGGTTTC</td>
+<td class="strand_seq">
+<span style="color:green;">T</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">TCGCCGCACC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_36411748_36411798_-</td>
+<td class="strand_start">22</td>
+<td class="strand_pvalue">6.78e-05</td>
+<td class="strand_lflank">AGTTTCAGTT</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">C</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">C</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">ATTATATAAC</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31933633_31933683_-</td>
+<td class="strand_start">2</td>
+<td class="strand_pvalue">2.08e-04</td>
+<td class="strand_lflank">TC</td>
+<td class="strand_seq">
+<span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:green;">T</span>
+</td>
+<td class="strand_rflank">AAATGTTCCT</td>
+</tr>
+<tr>
+<td class="strand_name">chr21_31962741_31962791_-</td>
+<td class="strand_start">13</td>
+<td class="strand_pvalue">4.05e-04</td>
+<td class="strand_lflank">TATAACTCAG</td>
+<td class="strand_seq">
+<span style="color:orange;">G</span><span style="color:green;">T</span><span style="color:green;">T</span><span style="color:orange;">G</span><span style="color:orange;">G</span><span style="color:blue;">A</span><span style="color:green;">T</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span><span style="color:blue;">A</span>
+</td>
+<td class="strand_rflank">TAATTTGTAC</td>
+</tr>
+</tbody>
+</table>
+</div>
+<h4>Block Diagrams <a href="#diagrams_doc" class="help"><div class="help"></div></a>
+</h4>
+<div class="pad">
+<p>
+ The height of the motif "block" is proportional to -log(p-value), truncated at the height for a motif with a p-value of 1e-10.<br>
+ Click on any row to highlight sequence in all motifs. Mouse over the center of the motif blocks to see more information.
+ </p>
+<table id="tbl_blocks_1" style="width:100%;" border="0">
+<col style="width:10em;">
+<col style="width:5em;">
+<col>
+<thead><tr>
+<th>Name</th>
+<th>Lowest <i>p</i>-value</th>
+<th>Motif Location</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>chr21_19617074_19617124_+</td>
+<td>3.06e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:78%; top:5.6px; width:22%; height:5.4px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.06e-05 starts: 40 ends: 50 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_26934381_26934431_+</td>
+<td>5.52e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:54%; top:5.9px; width:22%; height:5.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 5.52e-05 starts: 28 ends: 38 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31710037_31710087_-</td>
+<td>5.94e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:28%; top:5.9px; width:22%; height:5.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 5.94e-05 starts: 15 ends: 25 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31744582_31744632_-</td>
+<td>3.06e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:24%; top:5.6px; width:22%; height:5.4px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.06e-05 starts: 13 ends: 23 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31768316_31768366_+</td>
+<td>3.82e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:0%; top:5.7px; width:22%; height:5.3px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.82e-05 starts: 1 ends: 11 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31914206_31914256_-</td>
+<td>1.68e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:30%; top:5.3px; width:22%; height:5.7px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 1.68e-05 starts: 16 ends: 26 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31933633_31933683_-</td>
+<td>2.08e-04</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:4%; top:6.6px; width:22%; height:4.4px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 2.08e-04 starts: 3 ends: 13 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31962741_31962791_-</td>
+<td>4.05e-04</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:26%; top:6.9px; width:22%; height:4.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 4.05e-04 starts: 14 ends: 24 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31964683_31964733_+</td>
+<td>3.41e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:26%; top:4.4px; width:22%; height:6.6px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.41e-06 starts: 14 ends: 24 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_31992870_31992920_+</td>
+<td>8.67e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:32%; top:4.9px; width:22%; height:6.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 8.67e-06 starts: 17 ends: 27 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_32185595_32185645_-</td>
+<td>8.67e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:36%; top:4.9px; width:22%; height:6.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 8.67e-06 starts: 19 ends: 29 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_32202076_32202126_-</td>
+<td>5.01e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:26%; top:4.6px; width:22%; height:6.4px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 5.01e-06 starts: 14 ends: 24 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_32253899_32253949_-</td>
+<td>2.03e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:38%; top:5.4px; width:22%; height:5.6px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 2.03e-05 starts: 20 ends: 30 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_32410820_32410870_-</td>
+<td>8.67e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:42%; top:4.9px; width:22%; height:6.1px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 8.67e-06 starts: 22 ends: 32 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_36411748_36411798_-</td>
+<td>6.78e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:44%; top:6px; width:22%; height:5px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 6.78e-05 starts: 23 ends: 33 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_45705687_45705737_+</td>
+<td>3.82e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:74%; top:5.7px; width:22%; height:5.3px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.82e-05 starts: 38 ends: 48 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_45971413_45971463_-</td>
+<td>3.41e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:18%; top:4.4px; width:22%; height:6.6px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.41e-06 starts: 10 ends: 20 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_45978668_45978718_-</td>
+<td>1.59e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:8%; top:5.2px; width:22%; height:5.8px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 1.59e-05 starts: 5 ends: 15 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_45993530_45993580_+</td>
+<td>4.00e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:14%; top:4.5px; width:22%; height:6.5px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 4.00e-06 starts: 8 ends: 18 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_46020421_46020471_+</td>
+<td>1.21e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:4%; top:5.1px; width:22%; height:5.9px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 1.21e-05 starts: 3 ends: 13 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_46031920_46031970_+</td>
+<td>6.06e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:30%; top:4.7px; width:22%; height:6.3px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 6.06e-06 starts: 16 ends: 26 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_46046964_46047014_+</td>
+<td>1.06e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:24%; top:3.8px; width:22%; height:7.2px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 1.06e-06 starts: 13 ends: 23 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_46057197_46057247_+</td>
+<td>3.41e-06</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:72%; top:4.4px; width:22%; height:6.6px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 3.41e-06 starts: 37 ends: 47 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_47517957_47518007_+</td>
+<td>1.59e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:64%; top:5.2px; width:22%; height:5.8px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 1.59e-05 starts: 33 ends: 43 "></div>
+</div></td>
+</tr>
+<tr>
+<td>chr21_47575506_47575556_-</td>
+<td>4.02e-05</td>
+<td class="block_td"><div class="block_container">
+<div class="block_rule" style="width:100%"></div>
+<div class="block_motif" style="left:60%; top:5.7px; width:22%; height:5.3px; background-color:aqua; border: 1px solid black;" title="Motif 1 p-value: 4.02e-05 starts: 31 ends: 41 "></div>
+</div></td>
+</tr>
+<tr>
+<td colspan="2">Â </td>
+<td class="block_td" style="color: blue;"><div class="block_container">
+<div class="tic_major" style="left:0%"><div class="tic_label" style="left:-0.5em; width:1em;">0</div></div>
+<div class="tic_minor" style="left:4%;"></div>
+<div class="tic_minor" style="left:8%;"></div>
+<div class="tic_minor" style="left:12%;"></div>
+<div class="tic_minor" style="left:16%;"></div>
+<div class="tic_major" style="left:20%"><div class="tic_label" style="left:-1em; width:2em;">10</div></div>
+<div class="tic_minor" style="left:24%;"></div>
+<div class="tic_minor" style="left:28%;"></div>
+<div class="tic_minor" style="left:32%;"></div>
+<div class="tic_minor" style="left:36%;"></div>
+<div class="tic_major" style="left:40%"><div class="tic_label" style="left:-1em; width:2em;">20</div></div>
+<div class="tic_minor" style="left:44%;"></div>
+<div class="tic_minor" style="left:48%;"></div>
+<div class="tic_minor" style="left:52%;"></div>
+<div class="tic_minor" style="left:56%;"></div>
+<div class="tic_major" style="left:60%"><div class="tic_label" style="left:-1em; width:2em;">30</div></div>
+<div class="tic_minor" style="left:64%;"></div>
+<div class="tic_minor" style="left:68%;"></div>
+<div class="tic_minor" style="left:72%;"></div>
+<div class="tic_minor" style="left:76%;"></div>
+<div class="tic_major" style="left:80%"><div class="tic_label" style="left:-1em; width:2em;">40</div></div>
+<div class="tic_minor" style="left:84%;"></div>
+<div class="tic_minor" style="left:88%;"></div>
+<div class="tic_minor" style="left:92%;"></div>
+<div class="tic_minor" style="left:96%;"></div>
+<div class="tic_major" style="left:100%"><div class="tic_label" style="left:-1em; width:2em;">50</div></div>
+</div></td>
+</tr>
+</tbody>
+</table>
+</div>
+<p>Time 1.6 secs.</p>
+</div>
+<div class="bar">
+<div style="text-align:right;"><a href="#top_buttons">Top</a></div>
+<div class="subsection">
+<a name="version"></a><h5>MEME version</h5>4.5.0 (Release date: Thu Oct 14 08:44:28 EST 2010)
+ </div>
+<div class="subsection">
+<a name="reference"></a><h5>Reference</h5>
+ Timothy L. Bailey and Charles Elkan,
+ "Fitting a mixture model by expectation maximization to discover
+ motifs in biopolymers", Proceedings of the Second International
+ Conference on Intelligent Systems for Molecular Biology, pp. 28-36,
+ AAAI Press, Menlo Park, California, 1994.
+ </div>
+<a name="sequences"></a><a href="javascript:showHidden('trainingseq')" id="trainingseq_activator">show training set...</a><div class="subsection" id="trainingseq_data" style="display:none;">
+<h5>Training set:</h5>
+ Datafile = dan.dat<br>
+ Alphabet = ACDEFGHIKLMNPQRSTVWY<br><table>
+<col>
+<col>
+<col>
+<tr style="vertical-align:top;">
+<td><table class="trainingset">
+<col>
+<col>
+<col>
+<tr>
+<th>Sequence name</th>
+<th>Weighting</th>
+<th>Length</th>
+</tr>
+<tr>
+<td>chr21_19617074_19617124_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31710037_31710087_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31914206_31914256_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31964683_31964733_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_32185595_32185645_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_32410820_32410870_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_45705687_45705737_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_45993530_45993580_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46046964_46047014_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46102103_46102153_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+</table></td>
+<td><table class="trainingset">
+<col>
+<col>
+<col>
+<tr>
+<th>Sequence name</th>
+<th>Weighting</th>
+<th>Length</th>
+</tr>
+<tr>
+<td>chr21_26934381_26934431_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31744582_31744632_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31933633_31933683_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31973364_31973414_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_32202076_32202126_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_36411748_36411798_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_45971413_45971463_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46020421_46020471_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46057197_46057247_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_47517957_47518007_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+</table></td>
+<td><table class="trainingset">
+<col>
+<col>
+<col>
+<tr>
+<th>Sequence name</th>
+<th>Weighting</th>
+<th>Length</th>
+</tr>
+<tr>
+<td>chr21_28217753_28217803_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31768316_31768366_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31962741_31962791_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_31992870_31992920_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_32253899_32253949_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_37838750_37838800_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_45978668_45978718_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46031920_46031970_+</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_46086869_46086919_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+<tr>
+<td>chr21_47575506_47575556_-</td>
+<td>1.000000</td>
+<td>50</td>
+</tr>
+</table></td>
+</tr>
+</table>
+</div>
+<a href="javascript:hideShown('trainingseq')" style="display:none;" id="trainingseq_deactivator">hide training set...</a><div class="subsection">
+<a name="command"></a><h5>Command line summary</h5>
+<textarea rows="1" style="width:100%;" readonly>meme dan.dat -o /dataset_dan_files -nostatus </textarea><br>
+ Letter frequencies in dataset<br><div style="margin-left:25px;">A:Â 0.294Â Â Â C:Â 0.231Â Â Â D:Â 0.000Â Â Â E:Â 0.000Â Â Â F:Â 0.000Â Â Â G:Â 0.257Â Â Â H:Â 0.000Â Â Â I:Â 0.000Â Â Â K:Â 0.000Â Â Â L:Â 0.000Â Â Â M:Â 0.000Â Â Â N:Â 0.000Â Â Â P:Â 0.000Â Â Â Q:Â 0.000Â Â Â R:Â 0.000Â Â Â S:Â 0.000Â Â Â T:Â 0.217Â Â Â V:Â 0.000Â Â Â W:Â 0.000Â Â Â Y:Â 0.000</div>
+<br>
+ Background letter frequencies (from dataset with add-one prior applied):<br><div style="margin-left:25px;">A:Â 0.291Â Â Â C:Â 0.229Â Â Â D:Â 0.001Â Â Â E:Â 0.001Â Â Â F:Â 0.001Â Â Â G:Â 0.255Â Â Â H:Â 0.001Â Â Â I:Â 0.001Â Â Â K:Â 0.001Â Â Â L:Â 0.001Â Â Â M:Â 0.001Â Â Â N:Â 0.001Â Â Â P:Â 0.001Â Â Â Q:Â 0.001Â Â Â R:Â 0.001Â Â Â S:Â 0.001Â Â Â T:Â 0.215Â Â Â V:Â 0.001Â Â Â W:Â 0.001Â Â Â Y:Â 0.001</div>
+<br>
+</div>
+<div class="subsection">
+<a name="stopped"></a><h5>Stopping Reason</h5>Stopped because nmotifs = 1 reached. Program ran on <i>dan</i>.
+ </div>
+<a href="javascript:showHidden('model')" id="model_activator">show model parameters...</a><div class="subsection" id="model_data" style="display:none;">
+<h5>Model parameters</h5>
+<textarea style="width:100%;" rows="28" readonly>
+host = dan
+type = zoops
+nmotifs = 1
+evalue_threshold = inf
+object_function = E-value of product of p-values
+min_width = 8
+max_width = 50
+minic = 0.00
+wg = 11
+ws = 1
+endgaps = yes
+minsites = 2
+maxsites = 30
+wnsites = 0.8
+prob = 1
+spmap = pam
+spfuzz = 120
+prior = megap
+beta = 7500
+maxiter = 50
+distance = 1e-05
+num_sequences = 30
+num_positions = 1500
+seed = 0
+seqfrac = 1
+strands = none
+priors_file = prior30.plib
+reason_for_stopping = Stopped because nmotifs = 1 reached.
+</textarea>
+</div>
+<a href="javascript:hideShown('model')" style="display:none;" id="model_deactivator">hide model parameters...</a>
+</div>
+<span class="explain"><a name="explanation"></a><table width="100%" border="0" cellspacing="1" cellpadding="4" bgcolor="#FFFFFF"><tr>
+<td><h2 class="mainh">Explanation of MEME Results</h2></td>
+<td align="right" valign="bottom"><a href="#top_buttons">Top</a></td>
+</tr></table>
+<div class="box">
+<h4>The MEME results consist of</h4>
+<ul>
+<li>The <a href="#overview"><b>overview</b></a> of all discovered motifs.</li>
+<li>Information on each of the <a href="#motifs"><b>motifs</b></a> MEME discovered, including:
+ <ol>
+<li>
+ A <a href="#summary_doc"><b>summary table</b></a> showing the width, number of contributing sites, log likelihood ratio,
+ statistical significance, information content and relative entropy of the motif.
+ </li>
+<li>A <a href="#logo_doc"><b>sequence LOGO</b></a>.</li>
+<li>Downloadable <a href="#download"><b>LOGO files</b></a> suitable for publication.</li>
+<li>A <a href="#regular_expression_doc"><b>regular expression</b></a> describing the motif.</li>
+<li>Some <a href="#further_analysis_doc"><b>further analysis</b></a> that can be performed on the motif.</li>
+<li>A list of <a href="#formats_doc"><b>data formats</b></a> describing the motif.</li>
+<li>The <a href="#sites_doc"><b>contributing sites</b></a> of the motif sorted by <i>p</i>-value and aligned with each other.</li>
+<li>
+ The <a href="#diagrams_doc"><b>block diagrams</b></a> of the contributing sites of the motif within each sequence in the training set.
+ </li>
+</ol>
+</li>
+<li>A <a href="#combined"><b>combined block diagram</b></a> showing an optimized (non-overlapping)
+ tiling of all of the motifs onto each of the sequences in the training set.
+ </li>
+<li>The <a href="#version"><b>version</b></a> of MEME and the date it was released.</li>
+<li>The <a href="#reference"><b>reference</b></a> to cite if you use MEME in your research.</li>
+<li>
+ A description of the <a href="#sequences"><b>sequences</b></a> you submitted (the "training set") showing the name,
+ "weight" and length of each sequence.
+ </li>
+<li>The <a href="#command"><b>command line summary</b></a> detailing the parameters with which you ran MEME.</li>
+<li>The reason why MEME <a href="#stopped"><b>stopped</b></a> and the name of the CPU on which it ran.</li>
+<li>This <b>explanation</b> of how to interpret MEME results.</li>
+</ul>
+<a name="motifs"></a><h4>Motifs</h4>
+<p>
+ For each motif that it discovers in the training set,
+ MEME prints the following information:
+ </p>
+<a name="summary_doc"></a><h5>Summary Table</h5>
+<div class="doc">
+<p>
+ This summary table gives the main attributes of the motif.
+ </p>
+<dl>
+<dt>
+<i>E</i>-value</dt>
+<dd>
+ The statistical significance of the motif. MEME usually finds the most statistically significant (low <i>E</i>-value) motifs first.
+ The <i>E</i>-value of a motif is based on its log likelihood ratio, width, sites, the background letter frequencies (given in the
+ <a href="#command">command line summary</a>), and the size of the training set. The <i>E</i>-value is an estimate of the expected
+ number of motifs with the given log likelihood ratio (or higher), and with the same width and site count, that one would find in
+ a similarly sized set of random sequences. (In random sequences each position is independent with letters chosen according to
+ the background letter frequencies.)
+ </dd>
+<dt>Width</dt>
+<dd>The width of the motif. Each motif describes a pattern of a fixed with as no gaps are allowed in MEME motifs.</dd>
+<dt>Sites</dt>
+<dd>The number of sites contributing to the construction of the motif.</dd>
+<dt>
+<a name="llr_doc"></a>Log Likelihood Ratio</dt>
+<dd>
+ The log likelihood ratio of the motif.The log likelihood ratio is the logarithm of the ratio of the probability of the occurrences
+ of the motif given the motif model (likelihood given the motif) versus their probability given the background model
+ (likelihood given the null model). (Normally the background model is a 0-order Markov model using the background letter
+ frequencies, but higher order Markov models may be specified via the <b>-bfile</b> option to MEME.)
+ </dd>
+<dt>
+<a name="ic_doc"></a>Information Content</dt>
+<dd>
+ The information content of the motif in bits. It is equal to the sum of the <b>uncorrected</b> information content, <tt>R()</tt>,
+ in the columns of the <a href="#logo_doc">LOGO</a>. This is equal relative entropy of the motif relative to a uniform background frequency
+ model.
+ </dd>
+<dt>
+<a name="re_doc"></a>Relative Entropy</dt>
+<dd>
+ The relative entropy of the motif, computed in bits and relative to the background letter frequencies given in the
+ <a href="#command">command line summary</a>. It is equal to the log-likelihood ratio (llr) divided by the
+ number of contributing sites of the motif times <tt>1/ln(2)</tt>,<br><br><tt>re = llr / (sites * ln(2))</tt>.
+ </dd>
+</dl>
+</div>
+<a name="logo_doc"></a><h5 class="doc">Sequence LOGO</h5>
+<div class="doc">
+<p>
+ MEME motifs are represented by position-specific probability matrices
+ that specify the probability of each possible letter appearing at each
+ possible position in an occurrence of the motif. These are displayed
+ as "sequence LOGOS", containing stacks of letters at each position
+ in the motif. The total height of the stack is the "information
+ content" of that position in the motif in bits. The height of the
+ individual letters in a stack is the probability of the letter at that
+ position multiplied by the total information content of the stack.
+ </p>
+<p>
+ Note: The MEME LOGO differs from those produced by the
+ <a href="http://weblogo.berkeley.edu">Weblogo</a> program
+ because a <b>small-sample correction is NOT applied</b>.
+ However, MEME LOGOs in PNG and encapsulated postscript (EPS) formats
+ <b>with small-sample correction (SSC)</b> are available by clicking
+ on the download button with "SSC" set to "on" under
+ <a href="#download_doc">Download LOGO</a>.
+ The MEME LOGOs without small sample correction are similarly available.
+ Error bars are included in the LOGOs with small-sample correction.
+ </p>
+<p>
+ Modern web browsers supporting the canvas element and it's text manipulation functions as described in the
+ html 5 standard, can render the sequence LOGOs without needing the images. The browsers which work with this
+ feature are:
+ </p>
+<ul>
+<li>Firefox 3.5 and above</li>
+<li>Safari 4 and above</li>
+<li>Google Chrome 4 and above</li>
+</ul>
+<p>
+ Unfortunately Internet Explorer 8 does not support any html 5 features.
+ </p>
+<p>
+ The information content of each motif position is computed as described in the paper by Schneider and Stephens,
+ "Sequence Logos: A New Way to Display Consensus Sequences" but
+ <b>the small-sample correction, <tt>e(n)</tt>, is set to zero for the LOGO displayed in the MEME output.</b>
+ The corrected information content of position <tt>i</tt> is given by
+ </p>
+<pre>
+ R(i) for amino acids = log2(20) - (H(i) + e(n)) (1a)
+ R(i) for nucleic acids = 2 - (H(i) + e(n)) (1b)
+ </pre>
+<p>where H(i) is the entropy of position <tt>i</tt>,</p>
+<pre>
+ H(l) = - (Sum f(a,i) * log2[ f(a,i) ]). (2)
+ </pre>
+<p>
+ Here, f(a,i) is the frequency of base or amino acid <tt>a</tt> at position <tt>i</tt>, and <tt>e(n)</tt> is the small-sample correction
+ for an alignment of <tt>n</tt> letters. The height of letter <tt>a</tt> in column <tt>i</tt> is given by
+ </p>
+<pre>
+ height = f(a,i) * R(i) (3)
+ </pre>
+<p>The approximation for the small-sample correction, <tt>e(n)</tt>, is given by:</p>
+<pre>
+ e(n) = (s-1) / (2 * ln(2) * n), (4)
+ </pre>
+<p>where <tt>s</tt> is 4 for nucleotides, 20 for amino acids, and <tt>n</tt> is the number of sequences in the alignment.</p>
+<p>
+ The letters in the logos are colored as follows.<br>
+ For DNA sequences, the letter categories contain one letter each.
+ </p>
+<table border="1">
+<thead><tr>
+<th>NUCLEIC ACIDS</th>
+<th>COLOR</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>A</td>
+<td style="color:red;">RED</td>
+</tr>
+<tr>
+<td>C</td>
+<td style="color:blue;">BLUE</td>
+</tr>
+<tr>
+<td>G</td>
+<td style="color:orange;">ORANGE</td>
+</tr>
+<tr>
+<td>T</td>
+<td style="color:green;">GREEN</td>
+</tr>
+</tbody>
+</table>
+<p>For proteins, the categories are based on the biochemical properties of the various amino acids.</p>
+<table border="1">
+<thead><tr>
+<th>AMINO ACIDS</th>
+<th>COLOR</th>
+<th>PROPERTIES</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>A, C, F, I, L, V, W and M</td>
+<td style="color:blue;">BLUE</td>
+<td>Most hydrophobic[Kyte and Doolittle, 1982]</td>
+</tr>
+<tr>
+<td>NQST</td>
+<td style="color:green;">GREEN</td>
+<td>Polar, non-charged, non-aliphatic residues</td>
+</tr>
+<tr>
+<td>DE</td>
+<td style="color:magenta;">MAGENTA</td>
+<td>Acidic</td>
+</tr>
+<tr>
+<td>KR</td>
+<td style="color:red;">RED</td>
+<td>Positively charged</td>
+</tr>
+<tr>
+<td>H</td>
+<td style="color:pink;">PINK</td>
+<td>Â </td>
+</tr>
+<tr>
+<td>G</td>
+<td style="color:orange;">ORANGE</td>
+<td>Â </td>
+</tr>
+<tr>
+<td>P</td>
+<td style="color:yellow;">YELLOW</td>
+<td>Â </td>
+</tr>
+<tr>
+<td>Y</td>
+<td style="color:turquoise;">TURQUOISE</td>
+<td>Â </td>
+</tr>
+</tbody>
+</table>
+<p>
+ J. Kyte and R. Doolittle, 1982. "A Simple Method for Displaying the Hydropathic Character of a Protein",
+ J. Mol Biol. 157, 105-132.
+ </p>
+<p><b>Note:</b> the "text" output format of MEME preserves the historical MEME format where LOGOS are replaced by a simplified probability
+ matrix, a relative entropy plot, and a multi-level consensus sequence.
+ </p>
+</div>
+<a name="download_doc"></a><h5 class="doc">Download LOGO</h5>
+<div class="doc"><p>
+ Logos can be generated on the fly by the meme webservice and you may specify a number of options to customize them to your needs.
+ The options are:
+ <dl>
+<dt>Orientation</dt>
+<dd>Only valid for nucleotide motifs. Generate the standard view or the reverse complemented view of the motif.</dd>
+<dt>SSC</dt>
+<dd>Use small sample correction and show errorbars on the image.
+ Small sample correction is used by the <a href="http://weblogo.berkeley.edu">Weblogo</a> program.</dd>
+<dt>Format</dt>
+<dd>The format of the generated image.
+ If the image is to be used on the web then png is recommend.
+ If the image is to be published then eps is recommended.
+ </dd>
+<dt>Width</dt>
+<dd>The width of the generated image in centimetres.</dd>
+<dt>Height</dt>
+<dd>The height of the generated image in centimetres.</dd>
+</dl></p></div>
+<a name="regular_expression_doc"></a><h5>Regular Expression</h5>
+<div class="doc"><p>
+ This is a regular expression (RE) describing the motif. In each column, all letters with observed frequencies greater than 0.2 are shown;
+ less-frequent letters are not included in the RE. MEME regular expressions are interpreted as follows: single letters match that letter;
+ groups of letters in square brackets match any of the letters in the group. Regular expressions can be used for searching for the motif
+ in sequences (using, for example, <a href="http://nar.oxfordjournals.org/cgi/content/full/33/suppl_2/W262">PatMatch</a>) but the search
+ accuracy will usually be better with the PSSM (using, for example <a href="http://meme.nbcr.net/meme/mast-intro.html">MAST</a>.)
+ </p></div>
+<a name="further_analysis_doc"></a><h5>Further Analysis</h5>
+<div class="doc">
+<p>Either as a group or individually the motifs have a number of options for further analysis.</p>
+<dl>
+<dt>
+<a name="MAST_doc"></a>MAST</dt>
+<dd>
+ Finds the best matching positions for a set of motifs in each sequence provided to it, ranked by the combined score of each sequence.
+ For more information about MAST please read the <a href="http://meme.nbcr.net/meme/mast-intro.html">introduction</a>.
+ </dd>
+<dt>
+<a name="FIMO_doc"></a>FIMO</dt>
+<dd>
+ Finds all matches for a motif.
+ For more information about FIMO please read the <a href="http://meme.nbcr.net/meme/fimo-intro.html">introduction</a>.
+ </dd>
+<dt>
+<a name="TOMTOM_doc"></a>TOMTOM</dt>
+<dd>
+ Compares a single motif to a database of motifs.
+ For more information about TOMTOM please read the <a href="http://meme.nbcr.net/meme/tomtom-intro.html">introduction</a>.
+ </dd>
+<dt>
+<a name="GOMO_doc"></a>GOMO</dt>
+<dd>
+ Identifies possible roles of DNA binding motifs.
+ For more information about GOMO please read the <a href="http://meme.nbcr.net/meme/gomo-intro.html">introduction</a>.
+ </dd>
+<dt>
+<a name="BLOCKS_doc"></a>BLOCKS</dt>
+<dd>
+ Submit to Blocks Multiple Alignment Processor where you can do several things like create phylogeny trees and search the blocks
+ against a database of other blocks (protein only). For more information about BLOCKS Multiple Alignment Processor please visit the
+ <a href="http://blocks.fhcrc.org/blocks/process_blocks.html">website</a>.
+ </dd>
+</dl>
+</div>
+<a name="formats_doc"></a><h5>Data Formats</h5>
+<div class="doc">
+<p>The extracted data is avaliable in the following formats.</p>
+<dl>
+<dt>
+<a name="format_PSPM_doc"></a>PSPM Format</dt>
+<dd>
+ The motif itself is a position-specific probability matrix giving, for each position in the pattern, the observed frequency ("probability")
+ of each possible letter. The probability matrix is printed "sideways"--columns correspond to the letters in the alphabet (in the same order
+ as shown in the simplified motif) and rows corresponding to the positions of the motif, position one first. The motif is preceded by a line
+ starting with "letter-probability matrix:" and containing the length of the alphabet, width of the motif, number of occurrences of the motif,
+ and the <i>E</i>-value of the motif.<br><b>Note:</b> Earlier versions of MEME gave the posterior probabilities--the probability after applying a prior on letter frequencies--rather
+ than the observed frequencies. These versions of MEME also gave the number of <i>possible</i> positions for the motif rather than the actual
+ number of occurrences. The output from these earlier versions of MEME can be distinguished by "n=" rather than "nsites=" in the line
+ preceding the matrix.
+ </dd>
+<dt>
+<a name="format_PSSM_doc"></a>PSSM Format</dt>
+<dd>
+ The position-specific scoring matrix corresponding to the motif is printed for use by database search programs such as MAST.
+ This matrix is a log-odds matrix calculated by taking 100 times the log (base 2) of the ratio <i>p/f</i> at each position in
+ the motif where <i>p</i> is the probability of a particular letter at that position in the motif, and <i>f</i> is the background
+ frequency of the letter (given in the <a href="#command">command line summary</a> section.) This is the same matrix that is used
+ above in computing the <i>p</i>-values of the occurrences of the motif in the <a href="#sites_doc">Sites</a>
+ and <a href="#diagrams_doc">Block Diagrams</a> sections. The scoring matrix is printed "sideways"--columns
+ correspond to the letters in the alphabet (in the same order as shown in the simplified motif) and rows corresponding to the
+ positions of the motif, position one first. The scoring matrix is preceded by a line starting with "log-odds matrix:" and
+ containing the length of the alphabet, width of the motif, number of characters in the training set, the scoring threshold
+ (obsolete) and the motif <i>E</i>-value.<br><b>Note:</b> The probability <i>p</i> used to compute the PSSM is <i>not</i> exactly the same as the corresponding value in the
+ Position Specific Probability Matrix (PSPM). The values of <i>p</i> used to compute the PSSM take into account the motif prior,
+ whereas the values in the PSPM are just the <i>observed</i> frequencies of letters in the motif sites.
+ </dd>
+<dt>
+<a name="format_BLOCKS_doc"></a>BLOCKS Format</dt>
+<dd>
+ For use with <a href="http://blocks.fhcrc.org/blocks">BLOCKS tools</a>.
+ </dd>
+<dt>
+<a name="format_FASTA_doc"></a>FASTA Format</dt>
+<dd>
+ The FASTA format as described <a href="http://meme.nbcr.net/meme/doc/fasta-format.html">here</a>.
+ </dd>
+<dt>
+<a name="format_raw_doc"></a>Raw Format</dt>
+<dd>
+ Just the sites of the sequences that contributed to the motif. One site per line.
+ </dd>
+</dl>
+</div>
+<a name="sites_doc"></a><h5 class="doc">Sites</h5>
+<div class="doc"><p>
+ MEME displays the occurrences (sites) of the motif in the training set. The sites are shown aligned with each other, and the ten sequence
+ positions preceding and following each site are also shown. Each site is identified by the name of the sequence where it occurs,
+ the strand (if both strands of DNA sequences are being used), and the position in the sequence where the site begins. When the DNA strand
+ is specified, '+' means the sequence in the training set, and '-' means the reverse complement of the training set sequence.
+ (For '-' strands, the 'start' position is actually the position on the <b>positive</b> strand where the site ends.) The sites are <b>listed
+ in order of increasing statistical significance</b> (<i>p</i>-value). The <i>p</i>-value of a site is computed from the the match score of
+ the site with the <a href="#format_PSSM_doc">position specific scoring matrix</a> for the motif. The <i>p</i>-value gives the probability of a
+ random string (generated from the background letter frequencies) having the same match score or higher. (This is referred to as the
+ <b>position <i>p</i>-value</b> by the MAST algorithm.)
+ </p></div>
+<a name="diagrams_doc"></a><h5 class="doc">Block Diagrams</h5>
+<div class="doc"><p>
+ The occurrences of the motif in the training set sequences are shown as coloured blocks on a line. One diagram is printed for each
+ sequence showing all the sites contributating to that motif in that sequence. The sequences are <b>listed in the same order as in the input</b>
+ to make it easier to compare multiple block diagrams. Additionally the best <i>p</i>-value for the sequence/motif combination is
+ listed though this may not be in ascending order as with the sites. The <i>p</i>-value of an occurrence is the probability of a single
+ random subsequence the length of the motif, generated according to the 0-order background model, having a score at least as high as
+ the score of the occurrence. When the DNA strand is specified '+', it means the motif appears from left to right on the sequence, and '-'
+ means the motif appears from right to left on the complementary strand. A sequence position scale is shown at the end of each table of
+ block diagrams.
+ </p></div>
+<a name="combined_doc"></a><h5>Combined Block Diagrams</h5>
+<div class="doc">
+<p>
+ The motif occurrences shown in the motif summary <b>may not be exactly the same as those reported in each motif section</b> because
+ only motifs with a position <em>p</em>-value of 0.0001 that don't overlap other, more significant motif occurrences are shown.
+ </p>
+<p>
+ See the documentation for <a href="http://meme.nbcr.net/meme/mast-output.html">MAST output</a> for the definition of position and
+ combined <em>p</em>-values.
+ </p>
+</div>
+</div></span><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
+</form></body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme/meme/meme_output_txt_1.txt Tue Feb 01 11:20:02 2011 -0500
@@ -0,0 +1,325 @@
+********************************************************************************
+MEME - Motif discovery tool
+********************************************************************************
+MEME version 4.5.0 (Release date: Thu Oct 14 08:44:28 EST 2010)
+
+For further information on how to interpret these results or to get
+a copy of the MEME software please access http://meme.nbcr.net.
+
+This file may be used as input to the MAST algorithm for searching
+sequence databases for matches to groups of motifs. MAST is available
+for interactive use and downloading at http://meme.nbcr.net.
+********************************************************************************
+
+
+********************************************************************************
+REFERENCE
+********************************************************************************
+If you use this program in your research, please cite:
+
+Timothy L. Bailey and Charles Elkan,
+"Fitting a mixture model by expectation maximization to discover
+motifs in biopolymers", Proceedings of the Second International
+Conference on Intelligent Systems for Molecular Biology, pp. 28-36,
+AAAI Press, Menlo Park, California, 1994.
+********************************************************************************
+
+
+********************************************************************************
+TRAINING SET
+********************************************************************************
+DATAFILE= dan.dat
+ALPHABET= ACDEFGHIKLMNPQRSTVWY
+Sequence name Weight Length Sequence name Weight Length
+------------- ------ ------ ------------- ------ ------
+chr21_19617074_19617124_ 1.0000 50 chr21_26934381_26934431_ 1.0000 50
+chr21_28217753_28217803_ 1.0000 50 chr21_31710037_31710087_ 1.0000 50
+chr21_31744582_31744632_ 1.0000 50 chr21_31768316_31768366_ 1.0000 50
+chr21_31914206_31914256_ 1.0000 50 chr21_31933633_31933683_ 1.0000 50
+chr21_31962741_31962791_ 1.0000 50 chr21_31964683_31964733_ 1.0000 50
+chr21_31973364_31973414_ 1.0000 50 chr21_31992870_31992920_ 1.0000 50
+chr21_32185595_32185645_ 1.0000 50 chr21_32202076_32202126_ 1.0000 50
+chr21_32253899_32253949_ 1.0000 50 chr21_32410820_32410870_ 1.0000 50
+chr21_36411748_36411798_ 1.0000 50 chr21_37838750_37838800_ 1.0000 50
+chr21_45705687_45705737_ 1.0000 50 chr21_45971413_45971463_ 1.0000 50
+chr21_45978668_45978718_ 1.0000 50 chr21_45993530_45993580_ 1.0000 50
+chr21_46020421_46020471_ 1.0000 50 chr21_46031920_46031970_ 1.0000 50
+chr21_46046964_46047014_ 1.0000 50 chr21_46057197_46057247_ 1.0000 50
+chr21_46086869_46086919_ 1.0000 50 chr21_46102103_46102153_ 1.0000 50
+chr21_47517957_47518007_ 1.0000 50 chr21_47575506_47575556_ 1.0000 50
+********************************************************************************
+
+********************************************************************************
+COMMAND LINE SUMMARY
+********************************************************************************
+This information can also be useful in the event you wish to report a
+problem with the MEME software.
+
+command: meme dan.dat -o dan/dataset_dan_files -nostatus
+
+model: mod= zoops nmotifs= 1 evt= inf
+object function= E-value of product of p-values
+width: minw= 8 maxw= 50 minic= 0.00
+width: wg= 11 ws= 1 endgaps= yes
+nsites: minsites= 2 maxsites= 30 wnsites= 0.8
+theta: prob= 1 spmap= pam spfuzz= 120
+global: substring= yes branching= no wbranch= no
+em: prior= megap b= 7500 maxiter= 50
+ distance= 1e-05
+data: n= 1500 N= 30
+
+sample: seed= 0 seqfrac= 1
+Dirichlet mixture priors file: prior30.plib
+Letter frequencies in dataset:
+A 0.294 C 0.231 D 0.000 E 0.000 F 0.000 G 0.257 H 0.000 I 0.000 K 0.000
+L 0.000 M 0.000 N 0.000 P 0.000 Q 0.000 R 0.000 S 0.000 T 0.217 V 0.000
+W 0.000 Y 0.000
+Background letter frequencies (from dataset with add-one prior applied):
+A 0.291 C 0.229 D 0.001 E 0.001 F 0.001 G 0.255 H 0.001 I 0.001 K 0.001
+L 0.001 M 0.001 N 0.001 P 0.001 Q 0.001 R 0.001 S 0.001 T 0.215 V 0.001
+W 0.001 Y 0.001
+********************************************************************************
+
+
+********************************************************************************
+MOTIF 1 width = 11 sites = 25 llr = 239 E-value = 2.4e-011
+********************************************************************************
+--------------------------------------------------------------------------------
+ Motif 1 Description
+--------------------------------------------------------------------------------
+Simplified A 2323:a:a8a8
+pos.-specific C ::3::::::::
+probability D :::::::::::
+matrix E :::::::::::
+ F :::::::::::
+ G 7746::::::1
+ H :::::::::::
+ I :::::::::::
+ K :::::::::::
+ L :::::::::::
+ M :::::::::::
+ N :::::::::::
+ P :::::::::::
+ Q :::::::::::
+ R :::::::::::
+ S :::::::::::
+ T 1:2:a:a:2::
+ V :::::::::::
+ W :::::::::::
+ Y :::::::::::
+
+ bits 10.6
+ 9.5
+ 8.5
+ 7.4
+Relative 6.3
+Entropy 5.3
+(13.8 bits) 4.2
+ 3.2
+ 2.1 * **
+ 1.1 ** ********
+ 0.0 -----------
+
+Multilevel GGGGTATAAAA
+consensus AACA T
+sequence
+
+
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 sites sorted by position p-value
+--------------------------------------------------------------------------------
+Sequence name Start P-value Site
+------------- ----- --------- -----------
+chr21_46046964_46047014_ 13 1.06e-06 AAGGCCAGGA GGGGTATAAAA GCCTGAGAGC
+chr21_46057197_46057247_ 37 3.41e-06 ACAGGCCCTG GGCATATAAAA GCC
+chr21_45971413_45971463_ 10 3.41e-06 CAGGCCCTG GGCATATAAAA GCCCCAGCAG
+chr21_31964683_31964733_ 14 3.41e-06 GATTCACTGA GGCATATAAAA GGCCCTCTGC
+chr21_45993530_45993580_ 8 4.00e-06 CCAAGGA GGAGTATAAAA GCCCCACAAA
+chr21_32202076_32202126_ 14 5.01e-06 CCACCAGCTT GAGGTATAAAA AGCCCTGTAC
+chr21_46031920_46031970_ 16 6.06e-06 ATACCCAGGG AGGGTATAAAA CCTCAGCAGC
+chr21_32410820_32410870_ 22 8.67e-06 AATCACTGAG GATGTATAAAA GTCCCAGGGA
+chr21_32185595_32185645_ 19 8.67e-06 CACCAGAGCT GGGATATATAA AGAAGGTTCT
+chr21_31992870_31992920_ 17 8.67e-06 CACTATTGAA GATGTATAAAA TTTCATTTGC
+chr21_46020421_46020471_ 3 1.21e-05 GA GACATATAAAA GCCAACATCC
+chr21_47517957_47518007_ 33 1.59e-05 CCGGCGGGGC GGGGTATAAAG GGGGCGG
+chr21_45978668_45978718_ 5 1.59e-05 CAGA GGGGTATAAAG GTTCCGACCA
+chr21_31914206_31914256_ 16 1.68e-05 CCCACTACTT AGAGTATAAAA TCATTCTGAG
+chr21_32253899_32253949_ 20 2.03e-05 CACCAGCAAG GATATATAAAA GCTCAGGAGT
+chr21_31744582_31744632_ 13 3.06e-05 CAGGTCTAAG AGCATATATAA CTTGGAGTCC
+chr21_19617074_19617124_ 40 3.06e-05 CCTCGGGACG TGGGTATATAA
+chr21_45705687_45705737_ 38 3.82e-05 CGTGGTCGCG GGGGTATAACA GC
+chr21_31768316_31768366_ 1 3.82e-05 . AACGTATATAA ATGGTCCTGT
+chr21_47575506_47575556_ 31 4.02e-05 GCTGCCGGTG AGCGTATAAAG GCCCTGGCG
+chr21_26934381_26934431_ 28 5.52e-05 AGTCACAAGT GAGTTATAAAA GGGTCGCACG
+chr21_31710037_31710087_ 15 5.94e-05 CCCAGGTTTC TGAGTATATAA TCGCCGCACC
+chr21_36411748_36411798_ 23 6.78e-05 AGTTTCAGTT GGCATCTAAAA ATTATATAAC
+chr21_31933633_31933683_ 3 2.08e-04 TC AGAGTATATAT AAATGTTCCT
+chr21_31962741_31962791_ 14 4.05e-04 TATAACTCAG GTTGGATAAAA TAATTTGTAC
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 block diagrams
+--------------------------------------------------------------------------------
+SEQUENCE NAME POSITION P-VALUE MOTIF DIAGRAM
+------------- ---------------- -------------
+chr21_46046964_46047014_ 1.1e-06 12_[1]_27
+chr21_46057197_46057247_ 3.4e-06 36_[1]_3
+chr21_45971413_45971463_ 3.4e-06 9_[1]_30
+chr21_31964683_31964733_ 3.4e-06 13_[1]_26
+chr21_45993530_45993580_ 4e-06 7_[1]_32
+chr21_32202076_32202126_ 5e-06 13_[1]_26
+chr21_46031920_46031970_ 6.1e-06 15_[1]_24
+chr21_32410820_32410870_ 8.7e-06 21_[1]_18
+chr21_32185595_32185645_ 8.7e-06 18_[1]_21
+chr21_31992870_31992920_ 8.7e-06 16_[1]_23
+chr21_46020421_46020471_ 1.2e-05 2_[1]_37
+chr21_47517957_47518007_ 1.6e-05 32_[1]_7
+chr21_45978668_45978718_ 1.6e-05 4_[1]_35
+chr21_31914206_31914256_ 1.7e-05 15_[1]_24
+chr21_32253899_32253949_ 2e-05 19_[1]_20
+chr21_31744582_31744632_ 3.1e-05 12_[1]_27
+chr21_19617074_19617124_ 3.1e-05 39_[1]
+chr21_45705687_45705737_ 3.8e-05 37_[1]_2
+chr21_31768316_31768366_ 3.8e-05 [1]_39
+chr21_47575506_47575556_ 4e-05 30_[1]_9
+chr21_26934381_26934431_ 5.5e-05 27_[1]_12
+chr21_31710037_31710087_ 5.9e-05 14_[1]_25
+chr21_36411748_36411798_ 6.8e-05 22_[1]_17
+chr21_31933633_31933683_ 0.00021 2_[1]_37
+chr21_31962741_31962791_ 0.0004 13_[1]_26
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 in BLOCKS format
+--------------------------------------------------------------------------------
+BL MOTIF 1 width=11 seqs=25
+chr21_46046964_46047014_ ( 13) GGGGTATAAAA 1
+chr21_46057197_46057247_ ( 37) GGCATATAAAA 1
+chr21_45971413_45971463_ ( 10) GGCATATAAAA 1
+chr21_31964683_31964733_ ( 14) GGCATATAAAA 1
+chr21_45993530_45993580_ ( 8) GGAGTATAAAA 1
+chr21_32202076_32202126_ ( 14) GAGGTATAAAA 1
+chr21_46031920_46031970_ ( 16) AGGGTATAAAA 1
+chr21_32410820_32410870_ ( 22) GATGTATAAAA 1
+chr21_32185595_32185645_ ( 19) GGGATATATAA 1
+chr21_31992870_31992920_ ( 17) GATGTATAAAA 1
+chr21_46020421_46020471_ ( 3) GACATATAAAA 1
+chr21_47517957_47518007_ ( 33) GGGGTATAAAG 1
+chr21_45978668_45978718_ ( 5) GGGGTATAAAG 1
+chr21_31914206_31914256_ ( 16) AGAGTATAAAA 1
+chr21_32253899_32253949_ ( 20) GATATATAAAA 1
+chr21_31744582_31744632_ ( 13) AGCATATATAA 1
+chr21_19617074_19617124_ ( 40) TGGGTATATAA 1
+chr21_45705687_45705737_ ( 38) GGGGTATAACA 1
+chr21_31768316_31768366_ ( 1) AACGTATATAA 1
+chr21_47575506_47575556_ ( 31) AGCGTATAAAG 1
+chr21_26934381_26934431_ ( 28) GAGTTATAAAA 1
+chr21_31710037_31710087_ ( 15) TGAGTATATAA 1
+chr21_36411748_36411798_ ( 23) GGCATCTAAAA 1
+chr21_31933633_31933683_ ( 3) AGAGTATATAT 1
+chr21_31962741_31962791_ ( 14) GTTGGATAAAA 1
+//
+
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 position-specific scoring matrix
+--------------------------------------------------------------------------------
+log-odds matrix: alength= 20 w= 11 n= 1200 bayes= 5.33554 E= 2.4e-011
+ -32 -680 91 77 7 138 -20 55 64 107 11 150 142 72 87 396 -148 221 -140 -36
+ -11 -680 89 76 7 137 -21 55 63 107 10 149 141 71 87 396 -239 220 -140 -36
+ -79 41 4 21 -7 44 -62 42 -5 99 0 99 138 52 42 399 -46 223 -173 -68
+ 11 -677 48 47 -2 127 -43 46 27 101 3 124 138 60 62 397 -235 220 -160 -55
+ -596 -820 12 -21 -53 -267 -74 37 16 44 -37 98 31 9 19 319 212 127 -193 -95
+ 165 -261 70 110 77 -521 -4 147 95 201 90 121 124 91 107 425 -527 314 -95 8
+ -838 -990 -89 -149 -151 -841 -161 -117 -113 -66 -209 -68 -69 -129 -91 111 221 -55 -255 -173
+ 176 -858 -79 -103 -115 -717 -148 -95 -108 -17 -162 -61 -12 -95 -69 193 -737 52 -240 -153
+ 134 -686 0 16 -12 -553 -68 44 -8 96 -9 88 124 41 36 384 11 216 -177 -71
+ 165 -261 70 110 77 -521 -4 147 95 201 90 121 124 91 107 425 -527 314 -95 8
+ 147 -614 89 129 93 -121 12 160 113 217 108 144 144 111 125 447 -241 332 -81 22
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 position-specific probability matrix
+--------------------------------------------------------------------------------
+letter-probability matrix: alength= 20 w= 11 nsites= 25 E= 2.4e-011
+ 0.240000 0.000000 0.000000 0.000000 0.000000 0.680000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.080000 0.000000 0.000000 0.000000
+ 0.280000 0.000000 0.000000 0.000000 0.000000 0.680000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+ 0.160000 0.320000 0.000000 0.000000 0.000000 0.360000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.160000 0.000000 0.000000 0.000000
+ 0.320000 0.000000 0.000000 0.000000 0.000000 0.640000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+ 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.960000 0.000000 0.000000 0.000000
+ 0.960000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
+ 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 0.760000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.240000 0.000000 0.000000 0.000000
+ 0.960000 0.040000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 0.840000 0.000000 0.000000 0.000000 0.000000 0.120000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.040000 0.000000 0.000000 0.000000
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+ Motif 1 regular expression
+--------------------------------------------------------------------------------
+[GA][GA][GC][GA]TATA[AT]AA
+--------------------------------------------------------------------------------
+
+
+
+
+Time 1.56 secs.
+
+********************************************************************************
+
+
+********************************************************************************
+SUMMARY OF MOTIFS
+********************************************************************************
+
+--------------------------------------------------------------------------------
+ Combined block diagrams: non-overlapping sites with p-value < 0.0001
+--------------------------------------------------------------------------------
+SEQUENCE NAME COMBINED P-VALUE MOTIF DIAGRAM
+------------- ---------------- -------------
+chr21_19617074_19617124_ 1.22e-03 39_[1(3.06e-05)]
+chr21_26934381_26934431_ 2.21e-03 27_[1(5.52e-05)]_12
+chr21_28217753_28217803_ 7.29e-01 50
+chr21_31710037_31710087_ 2.37e-03 14_[1(5.94e-05)]_25
+chr21_31744582_31744632_ 1.22e-03 12_[1(3.06e-05)]_27
+chr21_31768316_31768366_ 1.53e-03 [1(3.82e-05)]_39
+chr21_31914206_31914256_ 6.70e-04 15_[1(1.68e-05)]_24
+chr21_31933633_31933683_ 1.81e-03 4_[1(4.54e-05)]_35
+chr21_31962741_31962791_ 1.61e-02 50
+chr21_31964683_31964733_ 1.36e-04 13_[1(3.41e-06)]_26
+chr21_31973364_31973414_ 1.99e-01 50
+chr21_31992870_31992920_ 3.47e-04 16_[1(8.67e-06)]_23
+chr21_32185595_32185645_ 3.47e-04 18_[1(8.67e-06)]_21
+chr21_32202076_32202126_ 2.01e-04 13_[1(5.01e-06)]_26
+chr21_32253899_32253949_ 8.11e-04 19_[1(2.03e-05)]_20
+chr21_32410820_32410870_ 3.47e-04 21_[1(8.67e-06)]_18
+chr21_36411748_36411798_ 2.71e-03 22_[1(6.78e-05)]_17
+chr21_37838750_37838800_ 8.23e-02 50
+chr21_45705687_45705737_ 1.53e-03 37_[1(3.82e-05)]_2
+chr21_45971413_45971463_ 1.36e-04 9_[1(3.41e-06)]_30
+chr21_45978668_45978718_ 6.37e-04 4_[1(1.59e-05)]_35
+chr21_45993530_45993580_ 1.60e-04 7_[1(4.00e-06)]_32
+chr21_46020421_46020471_ 4.83e-04 2_[1(1.21e-05)]_37
+chr21_46031920_46031970_ 2.43e-04 15_[1(6.06e-06)]_24
+chr21_46046964_46047014_ 4.26e-05 12_[1(1.06e-06)]_27
+chr21_46057197_46057247_ 1.36e-04 36_[1(3.41e-06)]_3
+chr21_46086869_46086919_ 4.30e-02 50
+chr21_46102103_46102153_ 4.30e-02 50
+chr21_47517957_47518007_ 6.37e-04 32_[1(1.59e-05)]_7
+chr21_47575506_47575556_ 1.61e-03 30_[1(4.02e-05)]_9
+--------------------------------------------------------------------------------
+
+********************************************************************************
+
+
+********************************************************************************
+Stopped because nmotifs = 1 reached.
+********************************************************************************
+
+CPU: dan
+
+********************************************************************************
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme/meme/meme_output_xml_1.xml Tue Feb 01 11:20:02 2011 -0500
@@ -0,0 +1,1284 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<!-- Document definition -->
+<!DOCTYPE MEME[
+<!ELEMENT MEME (
+ training_set,
+ model,
+ motifs,
+ scanned_sites_summary?
+)>
+<!ATTLIST MEME
+ version CDATA #REQUIRED
+ release CDATA #REQUIRED
+>
+<!-- Training-set elements -->
+<!ELEMENT training_set (alphabet, ambigs, sequence+, letter_frequencies)>
+<!ATTLIST training_set datafile CDATA #REQUIRED length CDATA #REQUIRED>
+<!ELEMENT alphabet (letter+)>
+<!ATTLIST alphabet id (amino-acid|nucleotide) #REQUIRED
+ length CDATA #REQUIRED>
+<!ELEMENT ambigs (letter+)>
+<!ELEMENT letter EMPTY>
+<!ATTLIST letter id ID #REQUIRED>
+<!ATTLIST letter symbol CDATA #REQUIRED>
+<!ELEMENT sequence EMPTY>
+<!ATTLIST sequence id ID #REQUIRED
+ name CDATA #REQUIRED
+ length CDATA #REQUIRED
+ weight CDATA #REQUIRED
+>
+<!ELEMENT letter_frequencies (alphabet_array)>
+
+<!-- Model elements -->
+<!ELEMENT model (
+ command_line,
+ host,
+ type,
+ nmotifs,
+ evalue_threshold,
+ object_function,
+ min_width,
+ max_width,
+ minic,
+ wg,
+ ws,
+ endgaps,
+ minsites,
+ maxsites,
+ wnsites,
+ prob,
+ spmap,
+ spfuzz,
+ prior,
+ beta,
+ maxiter,
+ distance,
+ num_sequences,
+ num_positions,
+ seed,
+ seqfrac,
+ strands,
+ priors_file,
+ reason_for_stopping,
+ background_frequencies
+)>
+<!ELEMENT command_line (#PCDATA)*>
+<!ELEMENT host (#PCDATA)*>
+<!ELEMENT type (#PCDATA)*>
+<!ELEMENT nmotifs (#PCDATA)*>
+<!ELEMENT evalue_threshold (#PCDATA)*>
+<!ELEMENT object_function (#PCDATA)*>
+<!ELEMENT min_width (#PCDATA)*>
+<!ELEMENT max_width (#PCDATA)*>
+<!ELEMENT minic (#PCDATA)*>
+<!ELEMENT wg (#PCDATA)*>
+<!ELEMENT ws (#PCDATA)*>
+<!ELEMENT endgaps (#PCDATA)*>
+<!ELEMENT minsites (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT wnsites (#PCDATA)*>
+<!ELEMENT prob (#PCDATA)*>
+<!ELEMENT spmap (#PCDATA)*>
+<!ELEMENT spfuzz (#PCDATA)*>
+<!ELEMENT prior (#PCDATA)*>
+<!ELEMENT beta (#PCDATA)*>
+<!ELEMENT maxiter (#PCDATA)*>
+<!ELEMENT distance (#PCDATA)*>
+<!ELEMENT num_sequences (#PCDATA)*>
+<!ELEMENT num_positions (#PCDATA)*>
+<!ELEMENT seed (#PCDATA)*>
+<!ELEMENT seqfrac (#PCDATA)*>
+<!ELEMENT strands (#PCDATA)*>
+<!ELEMENT priors_file (#PCDATA)*>
+<!ELEMENT reason_for_stopping (#PCDATA)*>
+<!ELEMENT background_frequencies (alphabet_array)>
+<!ATTLIST background_frequencies source CDATA #REQUIRED>
+
+<!-- Motif elements -->
+<!ELEMENT motifs (motif+)>
+<!ELEMENT motif (scores, probabilities, regular_expression?, contributing_sites)>
+<!ATTLIST motif id ID #REQUIRED
+ name CDATA #REQUIRED
+ width CDATA #REQUIRED
+ sites CDATA #REQUIRED
+ llr CDATA #REQUIRED
+ ic CDATA #REQUIRED
+ re CDATA #REQUIRED
+ bayes_threshold CDATA #REQUIRED
+ e_value CDATA #REQUIRED
+ elapsed_time CDATA #REQUIRED
+ url CDATA ""
+>
+<!ELEMENT scores (alphabet_matrix)>
+<!ELEMENT probabilities (alphabet_matrix)>
+<!ELEMENT regular_expression (#PCDATA)*>
+
+<!-- Contributing site elements -->
+<!-- Contributing sites are motif occurences found during the motif discovery phase -->
+<!ELEMENT contributing_sites (contributing_site+)>
+<!ELEMENT contributing_site (left_flank, site, right_flank)>
+<!ATTLIST contributing_site sequence_id IDREF #REQUIRED
+ position CDATA #REQUIRED
+ strand (plus|minus|none) 'none'
+ pvalue CDATA #REQUIRED
+>
+<!-- The left_flank contains the sequence for 10 bases to the left of the motif start -->
+<!ELEMENT left_flank (#PCDATA)>
+<!-- The site contains the sequence for the motif instance -->
+<!ELEMENT site (letter_ref+)>
+<!-- The right_flank contains the sequence for 10 bases to the right of the motif end -->
+<!ELEMENT right_flank (#PCDATA)>
+
+<!-- Scanned site elements -->
+<!-- Scanned sites are motif occurences found during the sequence scan phase -->
+<!ELEMENT scanned_sites_summary (scanned_sites+)>
+<!ATTLIST scanned_sites_summary p_thresh CDATA #REQUIRED>
+<!ELEMENT scanned_sites (scanned_site*)>
+<!ATTLIST scanned_sites sequence_id IDREF #REQUIRED
+ pvalue CDATA #REQUIRED
+ num_sites CDATA #REQUIRED>
+<!ELEMENT scanned_site EMPTY>
+<!ATTLIST scanned_site motif_id IDREF #REQUIRED
+ strand (plus|minus|none) 'none'
+ position CDATA #REQUIRED
+ pvalue CDATA #REQUIRED>
+
+<!-- Utility elements -->
+<!-- A reference to a letter in the alphabet -->
+<!ELEMENT letter_ref EMPTY>
+<!ATTLIST letter_ref letter_id IDREF #REQUIRED>
+<!-- A alphabet-array contains one floating point value for each letter in an alphabet -->
+<!ELEMENT alphabet_array (value+)>
+<!ELEMENT value (#PCDATA)>
+<!ATTLIST value letter_id IDREF #REQUIRED>
+
+<!-- A alphabet_matrix contains one alphabet_array for each position in a motif -->
+<!ELEMENT alphabet_matrix (alphabet_array+)>
+
+]>
+<!-- Begin document body -->
+<MEME version="4.5.0" release="Thu Oct 14 08:44:28 EST 2010">
+<training_set datafile="/dan_110.dat" length="30">
+<alphabet id="amino-acid" length="20">
+<letter id="letter_A" symbol="A"/>
+<letter id="letter_C" symbol="C"/>
+<letter id="letter_D" symbol="D"/>
+<letter id="letter_E" symbol="E"/>
+<letter id="letter_F" symbol="F"/>
+<letter id="letter_G" symbol="G"/>
+<letter id="letter_H" symbol="H"/>
+<letter id="letter_I" symbol="I"/>
+<letter id="letter_K" symbol="K"/>
+<letter id="letter_L" symbol="L"/>
+<letter id="letter_M" symbol="M"/>
+<letter id="letter_N" symbol="N"/>
+<letter id="letter_P" symbol="P"/>
+<letter id="letter_Q" symbol="Q"/>
+<letter id="letter_R" symbol="R"/>
+<letter id="letter_S" symbol="S"/>
+<letter id="letter_T" symbol="T"/>
+<letter id="letter_V" symbol="V"/>
+<letter id="letter_W" symbol="W"/>
+<letter id="letter_Y" symbol="Y"/>
+</alphabet>
+<ambigs>
+<letter id="letter_B" symbol="B"/>
+<letter id="letter_U" symbol="U"/>
+<letter id="letter_X" symbol="X"/>
+<letter id="letter_Z" symbol="Z"/>
+<letter id="letter_star" symbol="*"/>
+<letter id="letter_-" symbol="-"/>
+</ambigs>
+<sequence id="sequence_0" name="chr21_19617074_19617124_+" length="50" weight="1.000000" />
+<sequence id="sequence_1" name="chr21_26934381_26934431_+" length="50" weight="1.000000" />
+<sequence id="sequence_2" name="chr21_28217753_28217803_-" length="50" weight="1.000000" />
+<sequence id="sequence_3" name="chr21_31710037_31710087_-" length="50" weight="1.000000" />
+<sequence id="sequence_4" name="chr21_31744582_31744632_-" length="50" weight="1.000000" />
+<sequence id="sequence_5" name="chr21_31768316_31768366_+" length="50" weight="1.000000" />
+<sequence id="sequence_6" name="chr21_31914206_31914256_-" length="50" weight="1.000000" />
+<sequence id="sequence_7" name="chr21_31933633_31933683_-" length="50" weight="1.000000" />
+<sequence id="sequence_8" name="chr21_31962741_31962791_-" length="50" weight="1.000000" />
+<sequence id="sequence_9" name="chr21_31964683_31964733_+" length="50" weight="1.000000" />
+<sequence id="sequence_10" name="chr21_31973364_31973414_+" length="50" weight="1.000000" />
+<sequence id="sequence_11" name="chr21_31992870_31992920_+" length="50" weight="1.000000" />
+<sequence id="sequence_12" name="chr21_32185595_32185645_-" length="50" weight="1.000000" />
+<sequence id="sequence_13" name="chr21_32202076_32202126_-" length="50" weight="1.000000" />
+<sequence id="sequence_14" name="chr21_32253899_32253949_-" length="50" weight="1.000000" />
+<sequence id="sequence_15" name="chr21_32410820_32410870_-" length="50" weight="1.000000" />
+<sequence id="sequence_16" name="chr21_36411748_36411798_-" length="50" weight="1.000000" />
+<sequence id="sequence_17" name="chr21_37838750_37838800_-" length="50" weight="1.000000" />
+<sequence id="sequence_18" name="chr21_45705687_45705737_+" length="50" weight="1.000000" />
+<sequence id="sequence_19" name="chr21_45971413_45971463_-" length="50" weight="1.000000" />
+<sequence id="sequence_20" name="chr21_45978668_45978718_-" length="50" weight="1.000000" />
+<sequence id="sequence_21" name="chr21_45993530_45993580_+" length="50" weight="1.000000" />
+<sequence id="sequence_22" name="chr21_46020421_46020471_+" length="50" weight="1.000000" />
+<sequence id="sequence_23" name="chr21_46031920_46031970_+" length="50" weight="1.000000" />
+<sequence id="sequence_24" name="chr21_46046964_46047014_+" length="50" weight="1.000000" />
+<sequence id="sequence_25" name="chr21_46057197_46057247_+" length="50" weight="1.000000" />
+<sequence id="sequence_26" name="chr21_46086869_46086919_-" length="50" weight="1.000000" />
+<sequence id="sequence_27" name="chr21_46102103_46102153_-" length="50" weight="1.000000" />
+<sequence id="sequence_28" name="chr21_47517957_47518007_+" length="50" weight="1.000000" />
+<sequence id="sequence_29" name="chr21_47575506_47575556_-" length="50" weight="1.000000" />
+<letter_frequencies>
+<alphabet_array>
+<value letter_id="letter_A">0.294</value>
+<value letter_id="letter_C">0.231</value>
+<value letter_id="letter_D">0.000</value>
+<value letter_id="letter_E">0.000</value>
+<value letter_id="letter_F">0.000</value>
+<value letter_id="letter_G">0.257</value>
+<value letter_id="letter_H">0.000</value>
+<value letter_id="letter_I">0.000</value>
+<value letter_id="letter_K">0.000</value>
+<value letter_id="letter_L">0.000</value>
+<value letter_id="letter_M">0.000</value>
+<value letter_id="letter_N">0.000</value>
+<value letter_id="letter_P">0.000</value>
+<value letter_id="letter_Q">0.000</value>
+<value letter_id="letter_R">0.000</value>
+<value letter_id="letter_S">0.000</value>
+<value letter_id="letter_T">0.217</value>
+<value letter_id="letter_V">0.000</value>
+<value letter_id="letter_W">0.000</value>
+<value letter_id="letter_Y">0.000</value>
+</alphabet_array>
+</letter_frequencies>
+</training_set>
+<model>
+<command_line>meme /dan.dat -o /dataset_dan_files -nostatus </command_line>
+<host>dan</host>
+<type>zoops</type>
+<nmotifs>1</nmotifs>
+<evalue_threshold>inf</evalue_threshold>
+<object_function>E-value of product of p-values</object_function>
+<min_width>8</min_width>
+<max_width>50</max_width>
+<minic> 0.00</minic>
+<wg>11</wg>
+<ws>1</ws>
+<endgaps>yes</endgaps>
+<minsites>2</minsites>
+<maxsites>30</maxsites>
+<wnsites>0.8</wnsites>
+<prob>1</prob>
+<spmap>pam</spmap>
+<spfuzz>120</spfuzz>
+<prior>megap</prior>
+<beta>7500</beta>
+<maxiter>50</maxiter>
+<distance>1e-05</distance>
+<num_sequences>30</num_sequences>
+<num_positions>1500</num_positions>
+<seed>0</seed>
+<seqfrac> 1</seqfrac>
+<strands>none</strands>
+<priors_file>prior30.plib</priors_file>
+<reason_for_stopping>Stopped because nmotifs = 1 reached.</reason_for_stopping>
+<background_frequencies source="dataset with add-one prior applied">
+<alphabet_array>
+<value letter_id="letter_A">0.291</value>
+<value letter_id="letter_C">0.229</value>
+<value letter_id="letter_D">0.001</value>
+<value letter_id="letter_E">0.001</value>
+<value letter_id="letter_F">0.001</value>
+<value letter_id="letter_G">0.255</value>
+<value letter_id="letter_H">0.001</value>
+<value letter_id="letter_I">0.001</value>
+<value letter_id="letter_K">0.001</value>
+<value letter_id="letter_L">0.001</value>
+<value letter_id="letter_M">0.001</value>
+<value letter_id="letter_N">0.001</value>
+<value letter_id="letter_P">0.001</value>
+<value letter_id="letter_Q">0.001</value>
+<value letter_id="letter_R">0.001</value>
+<value letter_id="letter_S">0.001</value>
+<value letter_id="letter_T">0.215</value>
+<value letter_id="letter_V">0.001</value>
+<value letter_id="letter_W">0.001</value>
+<value letter_id="letter_Y">0.001</value>
+</alphabet_array>
+</background_frequencies>
+</model>
+<motifs>
+<motif id="motif_1" name="1" width="11" sites="25" ic="40.0" re="13.8" llr="239" e_value="2.4e-011" bayes_threshold="5.33554" elapsed_time="1.563760">
+<scores>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="letter_A">-32</value>
+<value letter_id="letter_C">-680</value>
+<value letter_id="letter_D">91</value>
+<value letter_id="letter_E">77</value>
+<value letter_id="letter_F">7</value>
+<value letter_id="letter_G">138</value>
+<value letter_id="letter_H">-20</value>
+<value letter_id="letter_I">55</value>
+<value letter_id="letter_K">64</value>
+<value letter_id="letter_L">107</value>
+<value letter_id="letter_M">11</value>
+<value letter_id="letter_N">150</value>
+<value letter_id="letter_P">142</value>
+<value letter_id="letter_Q">72</value>
+<value letter_id="letter_R">87</value>
+<value letter_id="letter_S">396</value>
+<value letter_id="letter_T">-148</value>
+<value letter_id="letter_V">221</value>
+<value letter_id="letter_W">-140</value>
+<value letter_id="letter_Y">-36</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">-11</value>
+<value letter_id="letter_C">-680</value>
+<value letter_id="letter_D">89</value>
+<value letter_id="letter_E">76</value>
+<value letter_id="letter_F">7</value>
+<value letter_id="letter_G">137</value>
+<value letter_id="letter_H">-21</value>
+<value letter_id="letter_I">55</value>
+<value letter_id="letter_K">63</value>
+<value letter_id="letter_L">107</value>
+<value letter_id="letter_M">10</value>
+<value letter_id="letter_N">149</value>
+<value letter_id="letter_P">141</value>
+<value letter_id="letter_Q">71</value>
+<value letter_id="letter_R">87</value>
+<value letter_id="letter_S">396</value>
+<value letter_id="letter_T">-239</value>
+<value letter_id="letter_V">220</value>
+<value letter_id="letter_W">-140</value>
+<value letter_id="letter_Y">-36</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">-79</value>
+<value letter_id="letter_C">41</value>
+<value letter_id="letter_D">4</value>
+<value letter_id="letter_E">21</value>
+<value letter_id="letter_F">-7</value>
+<value letter_id="letter_G">44</value>
+<value letter_id="letter_H">-62</value>
+<value letter_id="letter_I">42</value>
+<value letter_id="letter_K">-5</value>
+<value letter_id="letter_L">99</value>
+<value letter_id="letter_M">0</value>
+<value letter_id="letter_N">99</value>
+<value letter_id="letter_P">138</value>
+<value letter_id="letter_Q">52</value>
+<value letter_id="letter_R">42</value>
+<value letter_id="letter_S">399</value>
+<value letter_id="letter_T">-46</value>
+<value letter_id="letter_V">223</value>
+<value letter_id="letter_W">-173</value>
+<value letter_id="letter_Y">-68</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">11</value>
+<value letter_id="letter_C">-677</value>
+<value letter_id="letter_D">48</value>
+<value letter_id="letter_E">47</value>
+<value letter_id="letter_F">-2</value>
+<value letter_id="letter_G">127</value>
+<value letter_id="letter_H">-43</value>
+<value letter_id="letter_I">46</value>
+<value letter_id="letter_K">27</value>
+<value letter_id="letter_L">101</value>
+<value letter_id="letter_M">3</value>
+<value letter_id="letter_N">124</value>
+<value letter_id="letter_P">138</value>
+<value letter_id="letter_Q">60</value>
+<value letter_id="letter_R">62</value>
+<value letter_id="letter_S">397</value>
+<value letter_id="letter_T">-235</value>
+<value letter_id="letter_V">220</value>
+<value letter_id="letter_W">-160</value>
+<value letter_id="letter_Y">-55</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">-596</value>
+<value letter_id="letter_C">-820</value>
+<value letter_id="letter_D">12</value>
+<value letter_id="letter_E">-21</value>
+<value letter_id="letter_F">-53</value>
+<value letter_id="letter_G">-267</value>
+<value letter_id="letter_H">-74</value>
+<value letter_id="letter_I">37</value>
+<value letter_id="letter_K">16</value>
+<value letter_id="letter_L">44</value>
+<value letter_id="letter_M">-37</value>
+<value letter_id="letter_N">98</value>
+<value letter_id="letter_P">31</value>
+<value letter_id="letter_Q">9</value>
+<value letter_id="letter_R">19</value>
+<value letter_id="letter_S">319</value>
+<value letter_id="letter_T">212</value>
+<value letter_id="letter_V">127</value>
+<value letter_id="letter_W">-193</value>
+<value letter_id="letter_Y">-95</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">165</value>
+<value letter_id="letter_C">-261</value>
+<value letter_id="letter_D">70</value>
+<value letter_id="letter_E">110</value>
+<value letter_id="letter_F">77</value>
+<value letter_id="letter_G">-521</value>
+<value letter_id="letter_H">-4</value>
+<value letter_id="letter_I">147</value>
+<value letter_id="letter_K">95</value>
+<value letter_id="letter_L">201</value>
+<value letter_id="letter_M">90</value>
+<value letter_id="letter_N">121</value>
+<value letter_id="letter_P">124</value>
+<value letter_id="letter_Q">91</value>
+<value letter_id="letter_R">107</value>
+<value letter_id="letter_S">425</value>
+<value letter_id="letter_T">-527</value>
+<value letter_id="letter_V">314</value>
+<value letter_id="letter_W">-95</value>
+<value letter_id="letter_Y">8</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">-838</value>
+<value letter_id="letter_C">-990</value>
+<value letter_id="letter_D">-89</value>
+<value letter_id="letter_E">-149</value>
+<value letter_id="letter_F">-151</value>
+<value letter_id="letter_G">-841</value>
+<value letter_id="letter_H">-161</value>
+<value letter_id="letter_I">-117</value>
+<value letter_id="letter_K">-113</value>
+<value letter_id="letter_L">-66</value>
+<value letter_id="letter_M">-209</value>
+<value letter_id="letter_N">-68</value>
+<value letter_id="letter_P">-69</value>
+<value letter_id="letter_Q">-129</value>
+<value letter_id="letter_R">-91</value>
+<value letter_id="letter_S">111</value>
+<value letter_id="letter_T">221</value>
+<value letter_id="letter_V">-55</value>
+<value letter_id="letter_W">-255</value>
+<value letter_id="letter_Y">-173</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">176</value>
+<value letter_id="letter_C">-858</value>
+<value letter_id="letter_D">-79</value>
+<value letter_id="letter_E">-103</value>
+<value letter_id="letter_F">-115</value>
+<value letter_id="letter_G">-717</value>
+<value letter_id="letter_H">-148</value>
+<value letter_id="letter_I">-95</value>
+<value letter_id="letter_K">-108</value>
+<value letter_id="letter_L">-17</value>
+<value letter_id="letter_M">-162</value>
+<value letter_id="letter_N">-61</value>
+<value letter_id="letter_P">-12</value>
+<value letter_id="letter_Q">-95</value>
+<value letter_id="letter_R">-69</value>
+<value letter_id="letter_S">193</value>
+<value letter_id="letter_T">-737</value>
+<value letter_id="letter_V">52</value>
+<value letter_id="letter_W">-240</value>
+<value letter_id="letter_Y">-153</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">134</value>
+<value letter_id="letter_C">-686</value>
+<value letter_id="letter_D">0</value>
+<value letter_id="letter_E">16</value>
+<value letter_id="letter_F">-12</value>
+<value letter_id="letter_G">-553</value>
+<value letter_id="letter_H">-68</value>
+<value letter_id="letter_I">44</value>
+<value letter_id="letter_K">-8</value>
+<value letter_id="letter_L">96</value>
+<value letter_id="letter_M">-9</value>
+<value letter_id="letter_N">88</value>
+<value letter_id="letter_P">124</value>
+<value letter_id="letter_Q">41</value>
+<value letter_id="letter_R">36</value>
+<value letter_id="letter_S">384</value>
+<value letter_id="letter_T">11</value>
+<value letter_id="letter_V">216</value>
+<value letter_id="letter_W">-177</value>
+<value letter_id="letter_Y">-71</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">165</value>
+<value letter_id="letter_C">-261</value>
+<value letter_id="letter_D">70</value>
+<value letter_id="letter_E">110</value>
+<value letter_id="letter_F">77</value>
+<value letter_id="letter_G">-521</value>
+<value letter_id="letter_H">-4</value>
+<value letter_id="letter_I">147</value>
+<value letter_id="letter_K">95</value>
+<value letter_id="letter_L">201</value>
+<value letter_id="letter_M">90</value>
+<value letter_id="letter_N">121</value>
+<value letter_id="letter_P">124</value>
+<value letter_id="letter_Q">91</value>
+<value letter_id="letter_R">107</value>
+<value letter_id="letter_S">425</value>
+<value letter_id="letter_T">-527</value>
+<value letter_id="letter_V">314</value>
+<value letter_id="letter_W">-95</value>
+<value letter_id="letter_Y">8</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">147</value>
+<value letter_id="letter_C">-614</value>
+<value letter_id="letter_D">89</value>
+<value letter_id="letter_E">129</value>
+<value letter_id="letter_F">93</value>
+<value letter_id="letter_G">-121</value>
+<value letter_id="letter_H">12</value>
+<value letter_id="letter_I">160</value>
+<value letter_id="letter_K">113</value>
+<value letter_id="letter_L">217</value>
+<value letter_id="letter_M">108</value>
+<value letter_id="letter_N">144</value>
+<value letter_id="letter_P">144</value>
+<value letter_id="letter_Q">111</value>
+<value letter_id="letter_R">125</value>
+<value letter_id="letter_S">447</value>
+<value letter_id="letter_T">-241</value>
+<value letter_id="letter_V">332</value>
+<value letter_id="letter_W">-81</value>
+<value letter_id="letter_Y">22</value>
+</alphabet_array>
+</alphabet_matrix>
+</scores>
+<probabilities>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="letter_A">0.240000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.680000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.080000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.280000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.680000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.040000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.160000</value>
+<value letter_id="letter_C">0.320000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.360000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.160000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.320000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.640000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.040000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.000000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.040000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.960000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.960000</value>
+<value letter_id="letter_C">0.040000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.000000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.000000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.000000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.000000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">1.000000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">1.000000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.000000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.000000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.760000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.000000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.240000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.960000</value>
+<value letter_id="letter_C">0.040000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.000000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.000000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="letter_A">0.840000</value>
+<value letter_id="letter_C">0.000000</value>
+<value letter_id="letter_D">0.000000</value>
+<value letter_id="letter_E">0.000000</value>
+<value letter_id="letter_F">0.000000</value>
+<value letter_id="letter_G">0.120000</value>
+<value letter_id="letter_H">0.000000</value>
+<value letter_id="letter_I">0.000000</value>
+<value letter_id="letter_K">0.000000</value>
+<value letter_id="letter_L">0.000000</value>
+<value letter_id="letter_M">0.000000</value>
+<value letter_id="letter_N">0.000000</value>
+<value letter_id="letter_P">0.000000</value>
+<value letter_id="letter_Q">0.000000</value>
+<value letter_id="letter_R">0.000000</value>
+<value letter_id="letter_S">0.000000</value>
+<value letter_id="letter_T">0.040000</value>
+<value letter_id="letter_V">0.000000</value>
+<value letter_id="letter_W">0.000000</value>
+<value letter_id="letter_Y">0.000000</value>
+</alphabet_array>
+</alphabet_matrix>
+</probabilities>
+<regular_expression>
+[GA][GA][GC][GA]TATA[AT]AA
+</regular_expression>
+<contributing_sites>
+<contributing_site sequence_id="sequence_24" position="12" strand="none" pvalue="1.06e-06" >
+<left_flank>AAGGCCAGGA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCCTGAGAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_25" position="36" strand="none" pvalue="3.41e-06" >
+<left_flank>ACAGGCCCTG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_19" position="9" strand="none" pvalue="3.41e-06" >
+<left_flank>CAGGCCCTG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCCCCAGCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_9" position="13" strand="none" pvalue="3.41e-06" >
+<left_flank>GATTCACTGA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GGCCCTCTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_21" position="7" strand="none" pvalue="4.00e-06" >
+<left_flank>CCAAGGA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCCCCACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_13" position="13" strand="none" pvalue="5.01e-06" >
+<left_flank>CCACCAGCTT</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>AGCCCTGTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_23" position="15" strand="none" pvalue="6.06e-06" >
+<left_flank>ATACCCAGGG</left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>CCTCAGCAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_15" position="21" strand="none" pvalue="8.67e-06" >
+<left_flank>AATCACTGAG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GTCCCAGGGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_12" position="18" strand="none" pvalue="8.67e-06" >
+<left_flank>CACCAGAGCT</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>AGAAGGTTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_11" position="16" strand="none" pvalue="8.67e-06" >
+<left_flank>CACTATTGAA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>TTTCATTTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_22" position="2" strand="none" pvalue="1.21e-05" >
+<left_flank>GA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCCAACATCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_28" position="32" strand="none" pvalue="1.59e-05" >
+<left_flank>CCGGCGGGGC</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+</site>
+<right_flank>GGGGCGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_20" position="4" strand="none" pvalue="1.59e-05" >
+<left_flank>CAGA</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+</site>
+<right_flank>GTTCCGACCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_6" position="15" strand="none" pvalue="1.68e-05" >
+<left_flank>CCCACTACTT</left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>TCATTCTGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_14" position="19" strand="none" pvalue="2.03e-05" >
+<left_flank>CACCAGCAAG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GCTCAGGAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_4" position="12" strand="none" pvalue="3.06e-05" >
+<left_flank>CAGGTCTAAG</left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>CTTGGAGTCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_0" position="39" strand="none" pvalue="3.06e-05" >
+<left_flank>CCTCGGGACG</left_flank>
+<site>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank></right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_18" position="37" strand="none" pvalue="3.82e-05" >
+<left_flank>CGTGGTCGCG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_5" position="0" strand="none" pvalue="3.82e-05" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>ATGGTCCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_29" position="30" strand="none" pvalue="4.02e-05" >
+<left_flank>GCTGCCGGTG</left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+</site>
+<right_flank>GCCCTGGCG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_1" position="27" strand="none" pvalue="5.52e-05" >
+<left_flank>AGTCACAAGT</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>GGGTCGCACG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_3" position="14" strand="none" pvalue="5.94e-05" >
+<left_flank>CCCAGGTTTC</left_flank>
+<site>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>TCGCCGCACC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_16" position="22" strand="none" pvalue="6.78e-05" >
+<left_flank>AGTTTCAGTT</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_C"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>ATTATATAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_7" position="2" strand="none" pvalue="2.08e-04" >
+<left_flank>TC</left_flank>
+<site>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+</site>
+<right_flank>AAATGTTCCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_8" position="13" strand="none" pvalue="4.05e-04" >
+<left_flank>TATAACTCAG</left_flank>
+<site>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_G"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_T"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+<letter_ref letter_id="letter_A"/>
+</site>
+<right_flank>TAATTTGTAC</right_flank>
+</contributing_site>
+</contributing_sites>
+</motif>
+</motifs>
+<scanned_sites_summary p_thresh="0.0001">
+<scanned_sites sequence_id="sequence_0" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="39" pvalue="3.06e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_1" pvalue="2.21e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="27" pvalue="5.52e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_2" pvalue="7.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_3" pvalue="2.37e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="14" pvalue="5.94e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_4" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="12" pvalue="3.06e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_5" pvalue="1.53e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="0" pvalue="3.82e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_6" pvalue="6.70e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="15" pvalue="1.68e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_7" pvalue="1.81e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="4" pvalue="4.54e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_8" pvalue="1.61e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_9" pvalue="1.36e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="13" pvalue="3.41e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_10" pvalue="1.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_11" pvalue="3.47e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="16" pvalue="8.67e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_12" pvalue="3.47e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="18" pvalue="8.67e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_13" pvalue="2.01e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="13" pvalue="5.01e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_14" pvalue="8.11e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="19" pvalue="2.03e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_15" pvalue="3.47e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="21" pvalue="8.67e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_16" pvalue="2.71e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="22" pvalue="6.78e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_17" pvalue="8.23e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_18" pvalue="1.53e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="37" pvalue="3.82e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_19" pvalue="1.36e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="9" pvalue="3.41e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_20" pvalue="6.37e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="4" pvalue="1.59e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_21" pvalue="1.60e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="7" pvalue="4.00e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_22" pvalue="4.83e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="2" pvalue="1.21e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_23" pvalue="2.43e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="15" pvalue="6.06e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_24" pvalue="4.26e-05" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="12" pvalue="1.06e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_25" pvalue="1.36e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="36" pvalue="3.41e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_26" pvalue="4.30e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_27" pvalue="4.30e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_28" pvalue="6.37e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="32" pvalue="1.59e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_29" pvalue="1.61e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="none" position="30" pvalue="4.02e-05"/>
+</scanned_sites>
+</scanned_sites_summary>
+</MEME>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_input_1.fasta Tue Feb 01 11:20:02 2011 -0500
@@ -0,0 +1,66 @@
+>chr21_19617074_19617124_+
+AAAAATTATTACTAGGGAGGGGGCCGGAACCTCGGGACGTGGGTATATAA
+>chr21_26934381_26934431_+
+GCGCCTGGTCGGTTATGAGTCACAAGTGAGTTATAAAAGGGTCGCACGTT
+>chr21_28217753_28217803_-
+CAAAGGGGAGGAGTGGGGTGGGGGTGGGGGTTTCACTGGTCCACTATAAA
+>chr21_31710037_31710087_-
+AACACCCAGGTTTCTGAGTATATAATCGCCGCACCAAAGAATTTAATTTT
+>chr21_31744582_31744632_-
+CCCAGGTCTAAGAGCATATATAACTTGGAGTCCAGACTATGACATTCAAA
+>chr21_31768316_31768366_+
+AACGTATATAAATGGTCCTGTCCAGATGTGGCATGCAAACTCAGAATCTT
+>chr21_31914206_31914256_-
+TGACACCCACTACTTAGAGTATAAAATCATTCTGAGAAGTTAGAGACACC
+>chr21_31933633_31933683_-
+TCAGAGTATATATAAATGTTCCTGTCCAGTCACAGTCACCAAACTGACCT
+>chr21_31962741_31962791_-
+ACATATAACTCAGGTTGGATAAAATAATTTGTACAAATCAGGAGAGTCAA
+>chr21_31964683_31964733_+
+TCTGATTCACTGAGGCATATAAAAGGCCCTCTGCGGAGAAGTGTCCATAC
+>chr21_31973364_31973414_+
+aaacttaaaactctataaacttaaaactCTAGAATCTGATCCTGCTATAC
+>chr21_31992870_31992920_+
+CTCATACACTATTGAAGATGTATAAAATTTCATTTGCAGATGGTGACATT
+>chr21_32185595_32185645_-
+TCACCACCCACCAGAGCTGGGATATATAAAGAAGGTTCTGAGACTAGGAA
+>chr21_32202076_32202126_-
+TGCCCACCAGCTTGAGGTATAAAAAGCCCTGTACGGGAAGAGACCTTCAT
+>chr21_32253899_32253949_-
+AGCCCCACCCACCAGCAAGGATATATAAAAGCTCAGGAGTCTGGAGTGAC
+>chr21_32410820_32410870_-
+TCTACCCCACTAATCACTGAGGATGTATAAAAGTCCCAGGGAAGCTGGTG
+>chr21_36411748_36411798_-
+ATAGTTCTGTATAGTTTCAGTTGGCATCtaaaaattatataactttattt
+>chr21_37838750_37838800_-
+gatggttttataaggggcctcaccctcggctcagccctcattcttctcct
+>chr21_45705687_45705737_+
+CCGGGGCGGAGCGGCCTTTGCTCTTTGCGTGGTCGCGGGGGTATAACAGC
+>chr21_45971413_45971463_-
+CAGGCCCTGGGCATATAAAAGCCCCAGCAGCCAACAGGctcacacacaca
+>chr21_45978668_45978718_-
+CAGAGGGGTATAAAGGTTCCGACCACTCAGAGGCCTGGCACGAtcactca
+>chr21_45993530_45993580_+
+CCAAGGAGGAGTATAAAAGCCCCACAAACCCGAGCACCTCACTCACTCGC
+>chr21_46020421_46020471_+
+GAGACATATAAAAGCCAACATCCCTGAGCACCTAACACACGGactcactc
+>chr21_46031920_46031970_+
+GGAAAATACCCAGGGAGGGTATAAAACCTCAGCAGCCAGGGCACACAAAC
+>chr21_46046964_46047014_+
+ACAAGGCCAGGAGGGGTATAAAAGCCTGAGAGCCCCAAGAACctcacaca
+>chr21_46057197_46057247_+
+ATTGCTGAGTCTCCTGCTGGGAAAACACAGGCCCTGGGCATATAAAAGCC
+>chr21_46086869_46086919_-
+GACAGGTGTGCTTCTGTGCTGTGGGGATGCCTGGGCCCAGGTATAAAGGC
+>chr21_46102103_46102153_-
+AGGTGTGTGCTTCTGTGCTGTGGGGATGCCTGGGTCCAGGTATAAAGGCT
+>chr21_47517957_47518007_+
+CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGCGG
+>chr21_47517957_47518007_+
+CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGCGG
+>chr21_47517957_47518007_+
+CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGCGG
+>chr21_47575506_47575556_-
+TGAGAAGCCGGTGGGGAGGTGCTGCCGGTGAGCGTATAAAGGCCCTGGCG
+>chr21_47575506_47575556_-
+TGAGAAGCCGGTGGGGAGGTGCTGCCGGTGAGCGTATAAAGGCCCTGGCG
--- a/tool_conf.xml.sample Tue Feb 01 11:19:40 2011 -0500
+++ b/tool_conf.xml.sample Tue Feb 01 11:20:02 2011 -0500
@@ -197,6 +197,9 @@
<tool file="evolution/codingSnps.xml" /><tool file="evolution/add_scores.xml" /></section>
+ <section name="Motif Tools" id="motifs">
+ <tool file="meme/meme.xml"/>
+ </section><section name="Metagenomic analyses" id="tax_manipulation"><tool file="taxonomy/gi2taxonomy.xml" /><tool file="taxonomy/t2t_report.xml" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/meme/meme.xml Tue Feb 01 11:20:02 2011 -0500
@@ -0,0 +1,347 @@
+<tool id="meme_meme" name="MEME" version="1.0.0">
+ <requirements><requirement type='package'>meme</requirement></requirements>
+ <description>- Multiple Em for Motif Elicitation</description>
+ <command>meme "$input1" -o "${html_outfile.files_path}"
+ -nostatus
+
+ ##-p 8 ##number of processors
+
+ #if str( $options_type.options_type_selector ) == 'advanced':
+ -sf "${ str( $options_type.sf ).replace( ' ', '_' ) }"
+ -${options_type.alphabet_type.alphabet_type_selector}
+ -mod "${options_type.mod_type.mod_type_selector}"
+ -nmotifs "${options_type.nmotifs}"
+ -wnsites "${options_type.wnsites}"
+
+ #if $options_type.evt < float('inf'):
+ -evt "${options_type.evt}"
+ #end if
+
+ #if str( $options_type.mod_type.mod_type_selector ) != 'oops':
+ #if str( $options_type.mod_type.motif_occurrence_type.motif_occurrence_type_selector ) == 'nsites':
+ -nsites "${options_type.mod_type.motif_occurrence_type.nsites}"
+ #elif str( $options_type.mod_type.motif_occurrence_type.motif_occurrence_type_selector ) == 'min_max_sites':
+ -minsites "${options_type.mod_type.motif_occurrence_type.minsites}" -maxsites "${options_type.mod_type.motif_occurrence_type.maxsites}"
+ #end if
+ #end if
+
+ #if str( $options_type.motif_width_type.motif_width_type_selector ) == 'exact':
+ -w "${options_type.motif_width_type.width}"
+ #else
+ -minw "${options_type.motif_width_type.minw}" -maxw "${options_type.motif_width_type.maxw}"
+ #end if
+
+ #if str( $options_type.motif_trim_type.motif_trim_type_selector ) == 'nomatrim':
+ -nomatrim
+ #else
+ -wg "${options_type.motif_trim_type.wg}" -ws "${options_type.motif_trim_type.ws}" ${options_type.motif_trim_type.noendgaps}
+ #end if
+
+ #if str( $options_type.bfile ) != 'None':
+ -bfile "${options_type.bfile}"
+ #end if
+
+ #if str( $options_type.pspfile ) != 'None':
+ -psp "${options_type.pspfile}"
+ #end if
+
+ #if str( $options_type.alphabet_type.alphabet_type_selector ) == "dna":
+ ${options_type.alphabet_type.revcomp} ${options_type.alphabet_type.pal}
+ #end if
+
+ -maxiter "${options_type.maxiter}" -distance "${options_type.distance}"
+
+ -prior "${options_type.alphabet_type.prior_type.prior_type_selector}"
+ #if str( $options_type.alphabet_type.prior_type.prior_type_selector ) != 'addone':
+ -b "${options_type.alphabet_type.prior_type.prior_b}"
+ #if str( $options_type.alphabet_type.prior_type.plib ) != 'None':
+ -plib "${options_type.alphabet_type.prior_type.plib}"
+ #end if
+ #end if
+
+ #if str( $options_type.alphabet_type.spmap_type.spmap_type_selector ) == 'cons':
+ -cons "${options_type.alphabet_type.spmap_type.cons}"
+ #else
+ -spmap "${options_type.alphabet_type.spmap_type.spmap_type_selector}"
+ -spfuzz "${options_type.alphabet_type.spmap_type.spfuzz}"
+ #end if
+
+ #if str( $options_type.branching_type.branching_type_selector ) == 'x_branch':
+ -x_branch -bfactor "${options_type.branching_type.bfactor}" -heapsize "${options_type.branching_type.heapsize}"
+ #end if
+
+ ##-maxsize "1000000" ##remove hardcoded maxsize? should increase number of processors instead
+
+ #end if
+
+ 2>&1 || echo "Error running MEME."
+
+
+ && mv ${html_outfile.files_path}/meme.html ${html_outfile}
+
+ && mv ${html_outfile.files_path}/meme.txt ${txt_outfile}
+
+ && mv ${html_outfile.files_path}/meme.xml ${xml_outfile}
+
+ </command>
+ <inputs>
+ <param format="fasta" name="input1" type="data" label="Sequences"/>
+
+ <conditional name="options_type">
+ <param name="options_type_selector" type="select" label="Options Configuration">
+ <option value="basic" selected="true">Basic</option>
+ <option value="advanced">Advanced</option>
+ </param>
+ <when value="basic">
+ <!-- do nothing here -->
+ </when>
+ <when value="advanced">
+
+ <param name="sf" type="text" value="Galaxy FASTA Input" label="Name of sequence set" />
+
+ <conditional name="alphabet_type">
+ <param name="alphabet_type_selector" type="select" label="Sequence Alphabet">
+ <option value="protein">Protein</option>
+ <option value="dna" selected="true">DNA</option>
+ </param>
+ <when value="protein">
+ <conditional name="prior_type">
+ <param name="prior_type_selector" type="select" label="Choice of prior">
+ <option value="dirichlet">simple Dirichlet prior</option>
+ <option value="dmix" selected="true">mixture of Dirichlets prior</option>
+ <option value="mega">extremely low variance dmix</option>
+ <option value="megap">mega for all but last iteration of EM; dmix on last iteration</option>
+ <option value="addone">add +1 to each observed count</option>
+ </param>
+ <when value="dirichlet">
+ <param name="prior_b" type="float" value="0.01" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="dmix">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="mega">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="megap">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="addone">
+ <!-- no values here? -->
+ </when>
+ </conditional>
+ <conditional name="spmap_type">
+ <param name="spmap_type_selector" type="select" label="EM starting points">
+ <option value="uni">uni</option>
+ <option value="pam" selected="true">pam</option>
+ <option value="cons">Use starting point from string</option>
+ </param>
+ <when value="uni">
+ <param name="spfuzz" type="float" value="0.5" label="Fuzziness of the mapping" />
+ </when>
+ <when value="pam">
+ <param name="spfuzz" type="integer" value="120" label="Fuzziness of the mapping" />
+ </when>
+ <when value="cons">
+ <param name="cons" type="text" value="" label="Starting point from string" />
+ </when>
+ </conditional>
+ </when>
+ <when value="dna">
+ <param name="revcomp" label="Check reverse complement" type="boolean" truevalue="-revcomp" falsevalue="" checked="False"/>
+ <param name="pal" label="Check for palindromes" type="boolean" truevalue="-pal" falsevalue="" checked="False"/>
+ <conditional name="prior_type">
+ <param name="prior_type_selector" type="select" label="Sequence Alphabet">
+ <option value="dirichlet" selected="true">simple Dirichlet prior</option>
+ <option value="dmix">mixture of Dirichlets prior</option>
+ <option value="mega">extremely low variance dmix</option>
+ <option value="megap">mega for all but last iteration of EM; dmix on last iteration</option>
+ <option value="addone">add +1 to each observed count</option>
+ </param>
+ <when value="dirichlet">
+ <param name="prior_b" type="float" value="0.01" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="dmix">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="mega">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="megap">
+ <param name="prior_b" type="float" value="0" label="strength of prior on model parameters" />
+ <param name="plib" type="data" format="txt" optional="True" label="Dirichlet prior file" />
+ </when>
+ <when value="addone">
+ <!-- no values here? -->
+ </when>
+ </conditional>
+ <conditional name="spmap_type">
+ <param name="spmap_type_selector" type="select" label="EM starting points">
+ <option value="uni" selected="true">uni</option>
+ <option value="pam">pam</option>
+ <option value="cons">Use starting point from string</option>
+ </param>
+ <when value="uni">
+ <param name="spfuzz" type="float" value="0.5" label="Fuzziness of the mapping" />
+ </when>
+ <when value="pam">
+ <param name="spfuzz" type="integer" value="120" label="Fuzziness of the mapping" />
+ </when>
+ <when value="cons">
+ <param name="cons" type="text" value="" label="Starting point from string" />
+ </when>
+ </conditional>
+ </when>
+ </conditional>
+
+ <param name="nmotifs" type="integer" value="1" label="Number of different motifs to search" />
+ <param name="evt" type="float" value="inf" label="E-value to stop looking for motifs" />
+ <conditional name="mod_type">
+ <param name="mod_type_selector" type="select" label="Expected motif distribution">
+ <option value="oops">One Occurrence Per Sequence</option>
+ <option value="zoops" selected="true">Zero or One Occurrence Per Sequence</option>
+ <option value="anr">Any Number of Repetitions</option>
+ </param>
+ <when value="oops">
+ <!-- no values here -->
+ </when>
+ <when value="zoops">
+ <conditional name="motif_occurrence_type">
+ <param name="motif_occurrence_type_selector" type="select" label="Number of motif occurrences">
+ <option value="default" selected="true">Use defaults</option>
+ <option value="nsites">nsites</option>
+ <option value="min_max_sites">min and max sites</option>
+ </param>
+ <when value="default">
+ <!-- no values here -->
+ </when>
+ <when value="nsites">
+ <param name="nsites" type="integer" value="1" label="Search nsites number of occurrences" />
+ </when>
+ <when value="min_max_sites">
+ <param name="minsites" type="integer" value="1" label="minsites" />
+ <param name="maxsites" type="integer" value="50" label="maxsites" />
+ </when>
+ </conditional>
+ </when>
+ <when value="anr">
+ <conditional name="motif_occurrence_type">
+ <param name="motif_occurrence_type_selector" type="select" label="Number of motif occurrences">
+ <option value="default" selected="true">Use defaults</option>
+ <option value="nsites">nsites</option>
+ <option value="min_max_sites">min and max sites</option>
+ </param>
+ <when value="default">
+ <!-- no values here -->
+ </when>
+ <when value="nsites">
+ <param name="nsites" type="integer" value="1" label="Search nsites number of occurrences" />
+ </when>
+ <when value="min_max_sites">
+ <param name="minsites" type="integer" value="1" label="minsites" />
+ <param name="maxsites" type="integer" value="50" label="maxsites" />
+ </when>
+ </conditional>
+ </when>
+ </conditional>
+ <param name="wnsites" type="float" value="0.8" label="Weight on the prior on nsites" />
+
+ <conditional name="motif_width_type">
+ <param name="motif_width_type_selector" type="select" label="Motif width type">
+ <option value="exact">Exact width</option>
+ <option value="range" selected="true">Specify a range</option>
+ </param>
+ <when value="exact">
+ <param name="width" type="integer" value="10" label="Width of motif to search" />
+ </when>
+ <when value="range">
+ <param name="minw" type="integer" value="8" label="Min width of motif to search" />
+ <param name="maxw" type="integer" value="50" label="Max width of motif to search" />
+ </when>
+ </conditional>
+
+ <conditional name="motif_trim_type">
+ <param name="motif_trim_type_selector" type="select" label="Motif trim type">
+ <option value="nomatrim">No motif trim</option>
+ <option value="trim" selected="true">Trim motif</option>
+ </param>
+ <when value="nomatrim">
+ <!-- no values here -->
+ </when>
+ <when value="trim">
+ <param name="wg" type="integer" value="11" label="Gap cost" />
+ <param name="ws" type="integer" value="1" label="Space cost" />
+ <param name="noendgaps" label="Do not penalize endgaps" type="boolean" truevalue="-noendgaps" falsevalue="" checked="False"/>
+ </when>
+ </conditional>
+
+ <param name="bfile" type="data" format="txt" optional="True" label="Background Model" />
+ <param name="pspfile" type="data" format="txt" optional="True" label="Position-Specific Prior" />
+
+ <param name="maxiter" type="integer" value="50" label="Number of iterations of EM to run" />
+ <param name="distance" type="float" value="0.001" label="Convergence criterion" />
+
+ <conditional name="branching_type">
+ <param name="branching_type_selector" type="select" label="x-branching type">
+ <option value="x_branch">Perform x-branching</option>
+ <option value="no_x_branch" selected="true">No x-branching</option>
+ </param>
+ <when value="no_x_branch">
+ <!-- no values here -->
+ </when>
+ <when value="x_branch">
+ <param name="bfactor" type="integer" value="3" label="Number of iterations of branching" />
+ <param name="heapsize" type="integer" value="64" label="Maximum number of heaps to use" />
+ </when>
+ </conditional>
+
+ </when>
+ </conditional>
+
+ <param name="non_commercial_use" label="I certify that I am not using this tool for commercial purposes." type="boolean" truevalue="NON_COMMERCIAL_USE" falsevalue="COMMERCIAL_USE" checked="False">
+ <validator type="expression" message="This tool is only available for non-commercial use.">value == True</validator>
+ </param>
+
+ </inputs>
+ <outputs>
+ <data format="html" name="html_outfile" label="${tool.name} on ${on_string} (html)"/>
+ <data format="txt" name="txt_outfile" label="${tool.name} on ${on_string} (text)"/>
+ <data format="memexml" name="xml_outfile" label="${tool.name} on ${on_string} (xml)"/>
+ </outputs>
+ <tests>
+ <test>
+ <param name="input1" value="meme_input_1.fasta" ftype="fasta" dbkey="hg19"/>
+ <param name="options_type_selector" value="basic"/>
+ <param name="non_commercial_use" value="True"/>
+ <output name="html_outfile" file="meme/meme/meme_output_html_1.html" lines_diff="14"/>
+ <output name="txt_outfile" file="meme/meme/meme_output_txt_1.txt" lines_diff="12"/>
+ <output name="xml_outfile" file="meme/meme/meme_output_xml_1.xml" lines_diff="8"/>
+ </test>
+ </tests>
+ <help>
+
+.. class:: warningmark
+
+**WARNING: This tool is only available for non-commercial use. Use for educational, research and non-profit purposes is permitted. Before using, be sure to review, agree, and comply with the license.**
+
+If you want to specify sequence weights, you must include them at the top of your input FASTA file.
+
+.. class:: infomark
+
+**To cite MEME:**
+Timothy L. Bailey and Charles Elkan, "Fitting a mixture model by expectation maximization to discover motifs in biopolymers", Proceedings of the Second International Conference on Intelligent Systems for Molecular Biology, pp. 28-36, AAAI Press, Menlo Park, California, 1994.
+
+
+For detailed information on MEME, click here_. To view the license_.
+
+.. _here: http://meme.nbcr.net/meme/meme-intro.html
+.. _license: http://meme.nbcr.net/meme/COPYRIGHT.html
+
+ </help>
+</tool>
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/8c81782aa093/
changeset: r4966:8c81782aa093
user: dan
date: 2011-02-01 17:17:44
summary: Add MEME tool configuration file.
affected #: 8 files (722 bytes)
Diff too large to display.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0