changeset 2:b48e673af4e8 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/meme commit e2cf796f991cbe8c96e0cc5a0056b7255ac3ad6b
author iuc
date Thu, 17 May 2018 14:11:15 -0400
parents 793225b11202
children ff2f53a32d0e
files fimo_wrapper.py macros.xml meme_psp_gen.xml test-data/dreme1.html test-data/dreme1.txt test-data/dreme1.xml test-data/dreme2.html test-data/dreme2.txt test-data/dreme_fimo_input_1.xml test-data/dreme_output_test1.html test-data/dreme_output_test1.txt test-data/dreme_output_test1.xml test-data/dreme_output_test2.html test-data/dreme_output_test2.txt test-data/dreme_output_test2.xml test-data/fimo_background_probs_hsa_chrM.txt test-data/fimo_output_almost-gff_1.txt test-data/fimo_output_almost-gff_2.txt test-data/fimo_output_html_1.html test-data/fimo_output_html_2.html test-data/fimo_output_interval_1.txt test-data/fimo_output_interval_2.txt test-data/fimo_output_test1.gff test-data/fimo_output_test1.html test-data/fimo_output_test1.txt test-data/fimo_output_test1.xml test-data/fimo_output_test2.gff test-data/fimo_output_test2.html test-data/fimo_output_test2.txt test-data/fimo_output_test2.xml test-data/fimo_output_test3.html test-data/fimo_output_test3.txt test-data/fimo_output_test3.xml test-data/fimo_output_txt_1.txt test-data/fimo_output_txt_2.txt test-data/fimo_output_xml_1.xml test-data/fimo_output_xml_2.xml test-data/hsa_chrM.fa test-data/meme_fimo_input_1.xml test-data/meme_output_html_1.html test-data/meme_output_html_2.html test-data/meme_output_test1.html test-data/meme_output_test1.txt test-data/meme_output_test1.xml test-data/meme_output_test2.html test-data/meme_output_test2.txt test-data/meme_output_test2.xml test-data/meme_output_txt_1.txt test-data/meme_output_txt_2.txt test-data/meme_output_xml_1.xml test-data/meme_output_xml_2.xml test-data/meme_psp_gen_reports_output.tabular test-data/meme_psp_output_test1.memepsp test-data/meme_psp_output_test1.tabular test-data/meme_psp_protein_input.fasta test-data/motif1.gff test-data/output.memepsp test-data/phiX.fasta
diffstat 58 files changed, 47843 insertions(+), 16940 deletions(-) [+]
line wrap: on
line diff
--- a/fimo_wrapper.py	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-#!/usr/bin/env python
-import argparse
-import os
-import shutil
-import string
-import subprocess
-import sys
-import tempfile
-
-BUFFSIZE = 1048576
-# Translation table for reverse Complement, with ambiguity codes.
-DNA_COMPLEMENT = string.maketrans("ACGTRYKMBDHVacgtrykmbdhv", "TGCAYRMKVHDBtgcayrmkvhdb")
-
-
-def get_stderr(tmp_stderr):
-    tmp_stderr.seek(0)
-    stderr = ''
-    try:
-        while True:
-            stderr += tmp_stderr.read(BUFFSIZE)
-            if not stderr or len(stderr) % BUFFSIZE != 0:
-                break
-    except OverflowError:
-        pass
-    return stderr
-
-
-def reverse(sequence):
-    # Reverse sequence string.
-    return sequence[::-1]
-
-
-def dna_complement(sequence):
-    # Complement DNA sequence string.
-    return sequence.translate(DNA_COMPLEMENT)
-
-
-def dna_reverse_complement(sequence):
-    # Returns the reverse complement of the sequence.
-    sequence = reverse(sequence)
-    return dna_complement(sequence)
-
-
-def stop_err(msg):
-    sys.stderr.write(msg)
-    sys.exit(1)
-
-
-parser = argparse.ArgumentParser()
-parser.add_argument('--input_motifs', dest='input_motifs', help='MEME output formatted files for input to fimo')
-parser.add_argument('--input_fasta', dest='input_fasta', help='Fassta sequence file')
-parser.add_argument('--options_type', dest='options_type', help='Basic or Advance options')
-parser.add_argument('--input_psp', dest='input_psp', default=None, help='File containing position specific priors')
-parser.add_argument('--input_prior_dist', dest='input_prior_dist', default=None, help='File containing binned distribution of priors')
-parser.add_argument('--alpha', dest='alpha', type=float, default=1.0, help='The alpha parameter for calculating position specific priors')
-parser.add_argument('--bgfile', dest='bgfile', default=None, help='Background file type, used only if not "default"')
-parser.add_argument('--max_strand', action='store_true', help='If matches on both strands at a given position satisfy the output threshold, only report the match for the strand with the higher score')
-parser.add_argument('--max_stored_scores', dest='max_stored_scores', type=int, help='Maximum score count to store')
-parser.add_argument('--motif', dest='motifs', action='append', default=[], help='Specify motif by id')
-parser.add_argument('--output_separate_motifs', dest='output_separate_motifs', default='no', help='Output one dataset per motif')
-parser.add_argument('--motif_pseudo', dest='motif_pseudo', type=float, default=0.1, help='Pseudocount to add to counts in motif matrix')
-parser.add_argument('--no_qvalue', action='store_true', help='Do not compute a q-value for each p-value')
-parser.add_argument('--norc', action='store_true', help='Do not score the reverse complement DNA strand')
-parser.add_argument('--output_path', dest='output_path', help='Output files directory')
-parser.add_argument('--parse_genomic_coord', dest='parse_genomic_coord', default='no', help='Check each sequence header for UCSC style genomic coordinates')
-parser.add_argument('--remove_duplicate_coords', dest='remove_duplicate_coords', default='no', help='Remove duplicate entries in unique GFF coordinates')
-parser.add_argument('--qv_thresh', action='store_true', help='Use q-values for the output threshold')
-parser.add_argument('--thresh', dest='thresh', type=float, help='p-value threshold')
-parser.add_argument('--gff_output', dest='gff_output', help='Gff output file')
-parser.add_argument('--html_output', dest='html_output', help='HTML output file')
-parser.add_argument('--interval_output', dest='interval_output', help='Interval output file')
-parser.add_argument('--txt_output', dest='txt_output', help='Text output file')
-parser.add_argument('--xml_output', dest='xml_output', help='XML output file')
-args = parser.parse_args()
-
-fimo_cmd_list = ['fimo']
-if args.options_type == 'advanced':
-    fimo_cmd_list.append('--alpha %4f' % args.alpha)
-    if args.bgfile is not None:
-        fimo_cmd_list.append('--bgfile "%s"' % args.bgfile)
-    if args.max_strand:
-        fimo_cmd_list.append('--max-strand')
-    fimo_cmd_list.append('--max-stored-scores %d' % args.max_stored_scores)
-    if len(args.motifs) > 0:
-        for motif in args.motifs:
-            fimo_cmd_list.append('--motif "%s"' % motif)
-    fimo_cmd_list.append('--motif-pseudo %4f' % args.motif_pseudo)
-    if args.no_qvalue:
-        fimo_cmd_list.append('--no-qvalue')
-    if args.norc:
-        fimo_cmd_list.append('--norc')
-    if args.parse_genomic_coord == 'yes':
-        fimo_cmd_list.append('--parse-genomic-coord')
-    if args.qv_thresh:
-        fimo_cmd_list.append('--qv-thresh')
-    fimo_cmd_list.append('--thresh %4f' % args.thresh)
-    if args.input_psp is not None:
-        fimo_cmd_list.append('--psp "%s"' % args.input_psp)
-    if args.input_prior_dist is not None:
-        fimo_cmd_list.append('--prior-dist "%s"' % args.input_prior_dist)
-fimo_cmd_list.append('--o "%s"' % (args.output_path))
-fimo_cmd_list.append('--verbosity 1')
-fimo_cmd_list.append(args.input_motifs)
-fimo_cmd_list.append(args.input_fasta)
-
-fimo_cmd = ' '.join(fimo_cmd_list)
-
-try:
-    tmp_stderr = tempfile.NamedTemporaryFile()
-    proc = subprocess.Popen(args=fimo_cmd, shell=True, stderr=tmp_stderr)
-    returncode = proc.wait()
-    if returncode != 0:
-        stderr = get_stderr(tmp_stderr)
-        stop_err(stderr)
-except Exception as e:
-    stop_err('Error running FIMO:\n%s' % e)
-
-shutil.move(os.path.join(args.output_path, 'fimo.txt'), args.txt_output)
-
-gff_file = os.path.join(args.output_path, 'fimo.gff')
-if args.remove_duplicate_coords == 'yes':
-    tmp_stderr = tempfile.NamedTemporaryFile()
-    # Identify and eliminating identical motif occurrences.  These
-    # are identical if the combination of chrom, start, end and
-    # motif id are identical.
-    cmd = 'sort -k1,1 -k4,4n -k5,5n -k9.1,9.6 -u -o %s %s' % (gff_file, gff_file)
-    proc = subprocess.Popen(args=cmd, stderr=tmp_stderr, shell=True)
-    returncode = proc.wait()
-    if returncode != 0:
-        stderr = get_stderr(tmp_stderr)
-        stop_err(stderr)
-    # Sort GFF output by a combination of chrom, score, start.
-    cmd = 'sort -k1,1 -k4,4n -k6,6n -o %s %s' % (gff_file, gff_file)
-    proc = subprocess.Popen(args=cmd, stderr=tmp_stderr, shell=True)
-    returncode = proc.wait()
-    if returncode != 0:
-        stderr = get_stderr(tmp_stderr)
-        stop_err(stderr)
-if args.output_separate_motifs == 'yes':
-    # Create the collection output directory.
-    collection_path = (os.path.join(os.getcwd(), 'output'))
-    # Keep track of motif occurrences.
-    header_line = None
-    motif_ids = []
-    file_handles = []
-    for line in open(gff_file, 'r'):
-        if line.startswith('#'):
-            if header_line is None:
-                header_line = line
-            continue
-        items = line.split('\t')
-        attribute = items[8]
-        attributes = attribute.split(';')
-        name = attributes[0]
-        motif_id = name.split('=')[1]
-        file_name = os.path.join(collection_path, 'MOTIF%s.gff' % motif_id)
-        if motif_id in motif_ids:
-            i = motif_ids.index(motif_id)
-            fh = file_handles[i]
-            fh.write(line)
-        else:
-            fh = open(file_name, 'wb')
-            if header_line is not None:
-                fh.write(header_line)
-            fh.write(line)
-            motif_ids.append(motif_id)
-            file_handles.append(fh)
-    for file_handle in file_handles:
-        file_handle.close()
-else:
-    shutil.move(gff_file, args.gff_output)
-shutil.move(os.path.join(args.output_path, 'fimo.xml'), args.xml_output)
-shutil.move(os.path.join(args.output_path, 'fimo.html'), args.html_output)
-
-out_file = open(args.interval_output, 'wb')
-out_file.write("#%s\n" % "\t".join(("chr", "start", "end", "pattern name", "score", "strand", "matched sequence", "p-value", "q-value")))
-for line in open(args.txt_output):
-    if line.startswith('#'):
-        continue
-    fields = line.rstrip("\n\r").split("\t")
-    start, end = int(fields[2]), int(fields[3])
-    sequence = fields[7]
-    if start > end:
-        # Flip start and end and set strand.
-        start, end = end, start
-        strand = "-"
-        # We want sequences relative to strand; FIMO always provides + stranded sequence.
-        sequence = dna_reverse_complement(sequence)
-    else:
-        strand = "+"
-    # Make 0-based start position.
-    start -= 1
-    out_file.write("%s\n" % "\t".join([fields[1], str(start), str(end), fields[0], fields[4], strand, sequence, fields[5], fields[6]]))
-out_file.close()
--- a/macros.xml	Wed Apr 25 12:13:08 2018 -0400
+++ b/macros.xml	Thu May 17 14:11:15 2018 -0400
@@ -1,10 +1,11 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <macros>
-    <token name="@WRAPPER_VERSION@">4.11.2</token>
+    <token name="@WRAPPER_VERSION@">4.12.0</token>
     <xml name="requirements">
         <requirements>
             <requirement type="package" version="1.3.23">graphicsmagick</requirement>
-            <requirement type="package" version="4.11.2">meme</requirement>
+            <requirement type="package" version="4.12.0">meme</requirement>
+            <yield/>
         </requirements>
     </xml>
 </macros>
--- a/meme_psp_gen.xml	Wed Apr 25 12:13:08 2018 -0400
+++ b/meme_psp_gen.xml	Thu May 17 14:11:15 2018 -0400
@@ -5,9 +5,11 @@
     </macros>
     <expand macro="requirements" />
     <command detect_errors="exit_code"><![CDATA[
+ln -s '${primary_sequence}' meme_psp_input_pos.fa && 
+ln -s '${control_sequence}' meme_psp_input_neg.fa &&
 psp-gen
--pos '$primary_sequence'
--neg '$control_sequence'
+-pos meme_psp_input_pos.fa
+-neg meme_psp_input_neg.fa
 -minw $adv.minw
 -maxw $adv.maxw
 $adv.alphabet
@@ -84,8 +86,8 @@
             <param name="report_scores" value="yes"/>
             <param name="verbose" value="-verbose"/>
             <param name="non_commercial_use" value="NON_COMMERCIAL_USE"/>
-            <output name="output_psp" file="output.memepsp"/>
-            <output name="output_tabular" file="meme_psp_gen_reports_output.tabular" compare="contains"/>
+            <output name="output_psp" file="meme_psp_output_test1.memepsp"/>
+            <output name="output_tabular" file="meme_psp_output_test1.tabular"/>
         </test>
     </tests>
     <help>
--- a/test-data/dreme1.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6199 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <meta charset="UTF-8">
-    <title>DREME</title>
-    <script>
-      // @JSON_VAR data
-      var data = {
-        "program": "dreme",
-        "version": "4.11.2",
-        "release": "Thu May 05 14:58:55 2016 -0700",
-        "cmd": [
-          "dreme", "-o", "./output", "-p",
-          "/tmp/tmpijN1y0/files/000/dataset_1.dat", "-norc", "-rna", "-s",
-          "1"
-        ],
-        "options": {
-          "revcomp": false,
-          "ngen": 100,
-          "add_pv_thresh": 0.01,
-          "seed": 1,
-          "stop": {
-            "evalue": "0.05"
-          }
-        },
-        "alphabet": {
-          "name": "RNA",
-          "like": "rna",
-          "ncore": 4,
-          "symbols": [
-            {
-              "symbol": "A",
-              "name": "Adenine",
-              "colour": "CC0000"
-            }, {
-              "symbol": "C",
-              "name": "Cytosine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "G",
-              "name": "Guanine",
-              "colour": "FFB300"
-            }, {
-              "symbol": "U",
-              "aliases": "T",
-              "name": "Uracil",
-              "colour": "008000"
-            }, {
-              "symbol": "N",
-              "aliases": "X.",
-              "name": "Any base",
-              "equals": "ACGU"
-            }, {
-              "symbol": "V",
-              "name": "Not U",
-              "equals": "ACG"
-            }, {
-              "symbol": "H",
-              "name": "Not G",
-              "equals": "ACU"
-            }, {
-              "symbol": "D",
-              "name": "Not C",
-              "equals": "AGU"
-            }, {
-              "symbol": "B",
-              "name": "Not A",
-              "equals": "CGU"
-            }, {
-              "symbol": "M",
-              "name": "Amino",
-              "equals": "AC"
-            }, {
-              "symbol": "R",
-              "name": "Purine",
-              "equals": "AG"
-            }, {
-              "symbol": "W",
-              "name": "Weak",
-              "equals": "AU"
-            }, {
-              "symbol": "S",
-              "name": "Strong",
-              "equals": "CG"
-            }, {
-              "symbol": "Y",
-              "name": "Pyrimidine",
-              "equals": "CU"
-            }, {
-              "symbol": "K",
-              "name": "Keto",
-              "equals": "GU"
-            }
-          ]
-        },
-        "background": {
-          "freqs": [0.221, 0.245, 0.221, 0.312]
-        },
-        "sequence_db": {
-          "name": "dataset 1",
-          "file": "/tmp/tmpijN1y0/files/000/dataset_1.dat",
-          "lmod": "Tue Apr 24 13:55:48 CEST 2018",
-          "count": 1000
-        },
-        "control_db": {
-          "name": "shuffled positive sequences",
-          "from": "shuffled",
-          "count": 1000,
-          "freqs": [0.221, 0.245, 0.221, 0.312]
-        },
-        "motifs": [
-          {
-            "db": 0,
-            "id": "UUYUCY",
-            "alt": "MEME",
-            "len": 6,
-            "nsites": 459,
-            "evalue": "1.2e-013",
-            "p": 387,
-            "n": 210,
-            "pvalue": "2.6e-018",
-            "unerased_evalue": "1.2e-013",
-            "pwm": [
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 0.294118, 0.000000, 0.705882], 
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 1.000000, 0.000000, 0.000000], 
-              [0.000000, 0.474946, 0.000000, 0.525054]
-            ],
-            "matches": [
-              {
-                "seq": "UUUUCC",
-                "p": 147,
-                "n": 75,
-                "pvalue": "1.8e-007",
-                "evalue": "8.1e-003"
-              }, {
-                "seq": "UUUUCU",
-                "p": 155,
-                "n": 94,
-                "pvalue": "2.2e-005",
-                "evalue": "1.0e+000"
-              }, {
-                "seq": "UUCUCU",
-                "p": 94,
-                "n": 51,
-                "pvalue": "1.3e-004",
-                "evalue": "6.1e+000"
-              }, {
-                "seq": "UUCUCC",
-                "p": 75,
-                "n": 42,
-                "pvalue": "1.1e-003",
-                "evalue": "5.0e+001"
-              }
-            ]
-          }, {
-            "db": 0,
-            "id": "YAGG",
-            "alt": "MEME",
-            "len": 4,
-            "nsites": 793,
-            "evalue": "5.1e-012",
-            "p": 600,
-            "n": 416,
-            "pvalue": "1.1e-016",
-            "unerased_evalue": "2.4e-012",
-            "pwm": [
-              [0.000000, 0.692308, 0.000000, 0.307692], 
-              [1.000000, 0.000000, 0.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000]
-            ],
-            "matches": [
-              {
-                "seq": "CAGG",
-                "p": 441,
-                "n": 304,
-                "pvalue": "1.5e-010",
-                "evalue": "6.6e-006"
-              }, {
-                "seq": "UAGG",
-                "p": 232,
-                "n": 165,
-                "pvalue": "1.1e-004",
-                "evalue": "4.7e+000"
-              }
-            ]
-          }, {
-            "db": 0,
-            "id": "GAAGAW",
-            "alt": "MEME",
-            "len": 6,
-            "nsites": 89,
-            "evalue": "3.4e-005",
-            "p": 81,
-            "n": 22,
-            "pvalue": "8.2e-010",
-            "unerased_evalue": "3.5e-004",
-            "pwm": [
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [1.000000, 0.000000, 0.000000, 0.000000], 
-              [1.000000, 0.000000, 0.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [1.000000, 0.000000, 0.000000, 0.000000], 
-              [0.494382, 0.000000, 0.000000, 0.505618]
-            ],
-            "matches": [
-              {
-                "seq": "GAAGAU",
-                "p": 45,
-                "n": 7,
-                "pvalue": "2.4e-008",
-                "evalue": "9.9e-004"
-              }, {
-                "seq": "GAAGAA",
-                "p": 40,
-                "n": 16,
-                "pvalue": "7.9e-004",
-                "evalue": "3.3e+001"
-              }
-            ]
-          }, {
-            "db": 0,
-            "id": "SMUGGA",
-            "alt": "MEME",
-            "len": 6,
-            "nsites": 119,
-            "evalue": "3.7e-003",
-            "p": 110,
-            "n": 47,
-            "pvalue": "9.1e-008",
-            "unerased_evalue": "2.6e-005",
-            "pwm": [
-              [0.000000, 0.529412, 0.470588, 0.000000], 
-              [0.428571, 0.571429, 0.000000, 0.000000], 
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [1.000000, 0.000000, 0.000000, 0.000000]
-            ],
-            "matches": [
-              {
-                "seq": "GAUGGA",
-                "p": 22,
-                "n": 6,
-                "pvalue": "1.7e-003",
-                "evalue": "7.1e+001"
-              }, {
-                "seq": "GCUGGA",
-                "p": 33,
-                "n": 14,
-                "pvalue": "3.6e-003",
-                "evalue": "1.5e+002"
-              }, {
-                "seq": "CCUGGA",
-                "p": 32,
-                "n": 15,
-                "pvalue": "8.6e-003",
-                "evalue": "3.5e+002"
-              }, {
-                "seq": "CAUGGA",
-                "p": 29,
-                "n": 13,
-                "pvalue": "9.1e-003",
-                "evalue": "3.7e+002"
-              }
-            ]
-          }
-        ],
-        "runtime": {
-          "host": "ThinkPad-T450s",
-          "when": "Tue Apr 24 13:55:53 CEST 2018",
-          "cpu": 16.65,
-          "real": 16.65,
-          "stop": "evalue"
-        }
-      };
-    </script>
-    <script>
-var site_url = "";
-</script>
-    <script>
-
-/*
- * $
- *
- * Shorthand function for getElementById
- */
-function $(el) {
-  return document.getElementById(el);
-}
-
-
-/*
- * See http://stackoverflow.com/a/5450113/66387
- * Does string multiplication like the perl x operator.
- */
-function string_mult(pattern, count) {
-    if (count < 1) return '';
-    var result = '';
-    while (count > 1) {
-        if (count & 1) result += pattern;
-        count >>= 1, pattern += pattern;
-    }
-    return result + pattern;
-}
-
-/*
- * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
- * Slightly modified with information from
- * https://developer.mozilla.org/en/DOM/window.location
- */
-function parse_params() {
-  "use strict";
-  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
-  search = window.location.search;
-  queryStart = search.indexOf("?") + 1;
-  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
-  query      = search.slice(queryStart, queryEnd - 1);
-
-  if (query === search || query === "") return {};
-
-  params  = {};
-  nvPairs = query.replace(/\+/g, " ").split("&");
-
-  for (i = 0; i < nvPairs.length; i++) {
-    nv = nvPairs[i].split("=");
-    n  = decodeURIComponent(nv[0]);
-    v  = decodeURIComponent(nv[1]);
-    // allow a name to be used multiple times
-    // storing each value in the array
-    if (!(n in params)) {
-      params[n] = [];
-    }
-    params[n].push(nv.length === 2 ? v : null);
-  }
-  return params;
-}
-
-/*
- * coords
- *
- * Calculates the x and y offset of an element.
- * From http://www.quirksmode.org/js/findpos.html
- * with alterations to take into account scrolling regions
- */
-function coords(elem) {
-  var myX = myY = 0;
-  if (elem.getBoundingClientRect) {
-    var rect;
-    rect = elem.getBoundingClientRect();
-    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
-        window.pageXOffset : document.body.scrollLeft);
-    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
-        window.pageYOffset : document.body.scrollTop);
-  } else {
-    // this fall back doesn't properly handle absolutely positioned elements
-    // inside a scrollable box
-    var node;
-    if (elem.offsetParent) {
-      // subtract all scrolling
-      node = elem;
-      do {
-        myX -= node.scrollLeft ? node.scrollLeft : 0;
-        myY -= node.scrollTop ? node.scrollTop : 0;
-      } while (node = node.parentNode);
-      // this will include the page scrolling (which is unwanted) so add it back on
-      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
-      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
-      // sum up offsets
-      node = elem;
-      do {
-        myX += node.offsetLeft;
-        myY += node.offsetTop;
-      } while (node = node.offsetParent);
-    }
-  }
-  return [myX, myY];
-}
-
-/*
- * position_popup
- *
- * Positions a popup relative to an anchor element.
- *
- * The avaliable positions are:
- * 0 - Centered below the anchor.
- */
-function position_popup(anchor, popup, position) {
-  "use strict";
-  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
-  var a_xy, spacer, margin, scrollbar, page_w;
-  // define constants
-  spacer = 5;
-  margin = 15;
-  scrollbar = 15;
-  // define the positions and widths
-  a_xy = coords(anchor);
-  a_x = a_xy[0];
-  a_y = a_xy[1];
-  a_w = anchor.offsetWidth;
-  a_h = anchor.offsetHeight;
-  p_w = popup.offsetWidth;
-  p_h = popup.offsetHeight;
-  page_w = null;
-  if (window.innerWidth) {
-    page_w = window.innerWidth;
-  } else if (document.body) {
-    page_w = document.body.clientWidth;
-  }
-  // check the position type is defined
-  if (typeof position !== "number") {
-    position = 0;
-  }
-  // calculate the popup position
-  switch (position) {
-    case 1:
-      p_x = a_x + a_w + spacer;
-      p_y = a_y + (a_h / 2) - (p_h / 2);
-      break;
-    case 0:
-    default:
-      p_x = a_x + (a_w / 2) - (p_w / 2);
-      p_y = a_y + a_h + spacer;
-      break;
-  }
-  // constrain the popup position
-  if (p_x < margin) {
-    p_x = margin;
-  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
-    p_x = page_w - margin - scrollbar - p_w;
-  }
-  if (p_y < margin) {
-    p_y = margin;
-  }
-  // position the popup
-  popup.style.left = p_x + "px";
-  popup.style.top = p_y + "px";
-}
-
-function lookup_help_popup(popup_id) {
-  var _body, pop, info;
-  pop = document.getElementById(popup_id);
-  if (pop == null) {
-    _body = document.getElementsByTagName("body")[0];
-    pop = document.createElement("div");
-    pop.className = "pop_content";
-    pop.id = popup_id;
-    pop.style.backgroundColor = "#FFC";
-    pop.style.borderColor = "black";
-    info = document.createElement("p");
-    info.style.fontWeight = "bold";
-    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
-    pop.appendChild(info);
-    // this might cause problems with the menu, but as this only happens
-    // when something is already wrong I don't think that's too much of a problem
-    _body.insertBefore(pop, _body.firstChild);
-  }
-  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
-    if (!/\bauto_buttons\b/.test(pop.className)) {
-      pop.className += " auto_buttons";
-      var back_btn_sec = document.createElement("div");
-      back_btn_sec.className = "nested_only pop_back_sec";
-      var back_btn = document.createElement("span");
-      back_btn.className = "pop_back";
-      back_btn.appendChild(document.createTextNode("<< back"));
-      back_btn.addEventListener("click", function(e) {
-        help_return();
-      }, false);
-      back_btn_sec.appendChild(back_btn);
-      pop.insertBefore(back_btn_sec, pop.firstChild);
-      var close_btn_sec = document.createElement("div");
-      close_btn_sec.className = "pop_close_sec";
-      var close_btn = document.createElement("span");
-      close_btn.className = "pop_close";
-      close_btn.appendChild(document.createTextNode("close"));
-      close_btn.addEventListener("click", function(e) {
-        help_popup();
-      }, false);
-      close_btn_sec.appendChild(close_btn);
-      pop.appendChild(close_btn_sec);
-    }
-  }
-  return pop;
-}
-
-/*
- * help_popup
- *
- * Moves around help pop-ups so they appear
- * below an activator.
- */
-function help_popup(activator, popup_id) {
-  "use strict";
-  var pop;
-  // set default values
-  if (typeof help_popup.popup === "undefined") {
-    help_popup.popup = [];
-  }
-  if (typeof help_popup.activator === "undefined") {
-    help_popup.activator = null;
-  }
-  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
-  if (typeof(activator) == "undefined") { // no activator so hide
-    if (last_pop != null) {
-      last_pop.style.display = 'none';
-      help_popup.popup = [];
-    }
-    return;
-  }
-  pop = lookup_help_popup(popup_id);
-  if (pop == last_pop) {
-    if (activator == help_popup.activator) {
-      //hide popup (as we've already shown it for the current help button)
-      last_pop.style.display = 'none';
-      help_popup.popup = [];
-      return; // toggling complete!
-    }
-  } else if (last_pop != null) {
-    //activating different popup so hide current one
-    last_pop.style.display = 'none';
-  }
-  help_popup.popup = [pop];
-  help_popup.activator = activator;
-  toggle_class(pop, "nested", false);
-  //must make the popup visible to measure it or it has zero width
-  pop.style.display = 'block';
-  position_popup(activator, pop);
-}
-
-/*
- * help_refine
- * 
- * Intended for links within a help popup. Stores a stack of state so
- * you can go back.
- */
-function help_refine(popup_id) {
-  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
-    throw new Error("Can not refine a help popup when one is not shown!");
-  }
-  var pop = lookup_help_popup(popup_id);
-  var last_pop = help_popup.popup[help_popup.popup.length - 1];
-  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
-  help_popup.popup.push(pop);
-  toggle_class(pop, "nested", true);
-  last_pop.style.display = "none";
-  //must make the popup visible to measure it or it has zero width
-  pop.style.display = "block";
-  position_popup(help_popup.activator, pop);
-}
-
-/*
- * help_return
- * 
- * Intended for links within a help popup. Stores a stack of state so
- * you can go back.
- */
-function help_return() {
-  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
-    throw new Error("Can not return to a earlier help popup when one is not shown!");
-  }
-  var last_pop = help_popup.popup.pop();
-  last_pop.style.display = "none";
-  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
-  if (pop != null) {
-    toggle_class(pop, "nested", help_popup.popup.length > 1);
-    pop.style.display = "block";
-    position_popup(help_popup.activator, pop);
-  } else {
-    help_popup.activator = null;
-  }
-}
-
-/*
- * update_scroll_pad
- *
- * Creates padding at the bottom of the page to allow
- * scrolling of anything into view.
- */
-function update_scroll_pad() {
-  var page, pad;
-  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
-  pad = $("scrollpad");
-  if (pad === null) {
-    pad = document.createElement("div");
-    pad.id = 'scrollpad';
-    document.getElementsByTagName('body')[0].appendChild(pad);
-  }
-  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
-}
-
-function substitute_classes(node, remove, add) {
-  "use strict";
-  var list, all, i, cls, classes;
-  list = node.className.split(/\s+/);
-  all = {};
-  for (i = 0; i < list.length; i++) {
-    if (list[i].length > 0) all[list[i]] = true;
-  }
-  for (i = 0; i < remove.length; i++) {
-    if (all.hasOwnProperty(remove[i])) {
-      delete all[remove[i]];
-    }
-  }
-  for (i = 0; i < add.length; i++) {
-    all[add[i]] = true;
-  }
-  classes = "";
-  for (cls in all) {
-    classes += cls + " ";
-  }
-  node.className = classes;
-}
-
-/*
- * toggle_class
- *
- * Adds or removes a class from the node. If the parameter 'enabled' is not 
- * passed then the existence of the class will be toggled, otherwise it will be
- * included if enabled is true.
- */
-function toggle_class(node, cls, enabled) {
-  var classes = node.className;
-  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
-  var found = false;
-  for (var i = 0; i < list.length; i++) {
-    if (list[i] == cls) {
-      list.splice(i, 1);
-      i--;
-      found = true;
-    }
-  }
-  if (typeof enabled == "undefined") {
-    if (!found) list.push(cls);
-  } else {
-    if (enabled) list.push(cls);
-  }
-  node.className = list.join(" ");
-}
-
-/*
- * find_child
- *
- * Searches child nodes in depth first order and returns the first it finds
- * with the className specified.
- * TODO replace with querySelector
- */
-function find_child(node, className) {
-  var pattern;
-  if (node == null || typeof node !== "object") {
-    return null;
-  }
-  if (typeof className === "string") {
-    pattern = new RegExp("\\b" + className + "\\b");
-  } else {
-    pattern = className;
-  }
-  if (node.nodeType == Node.ELEMENT_NODE && 
-      pattern.test(node.className)) {
-    return node;
-  } else {
-    var result = null;
-    for (var i = 0; i < node.childNodes.length; i++) {
-      result = find_child(node.childNodes[i], pattern);
-      if (result != null) break;
-    }
-    return result;
-  }
-}
-
-/*
- * find_parent
- *
- * Searches parent nodes outwards from the node and returns the first it finds
- * with the className specified.
- */
-function find_parent(node, className) {
-  var pattern;
-  pattern = new RegExp("\\b" + className + "\\b");
-  do {
-    if (node.nodeType == Node.ELEMENT_NODE && 
-        pattern.test(node.className)) {
-      return node;
-    }
-  } while (node = node.parentNode);
-  return null;
-}
-
-/*
- * find_parent_tag
- *
- * Searches parent nodes outwards from the node and returns the first it finds
- * with the tag name specified. HTML tags should be specified in upper case.
- */
-function find_parent_tag(node, tag_name) {
-  do {
-    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
-      return node;
-    }
-  } while (node = node.parentNode);
-  return null;
-}
-
-/*
- * __toggle_help
- *
- * Uses the 'topic' property of the this object to
- * toggle display of a help topic.
- *
- * This function is not intended to be called directly.
- */
-function __toggle_help(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-
-  help_popup(this, this.getAttribute("data-topic"));
-}
-
-function setup_help_button(button) {
-  "use strict";
-  var topic;
-  if (button.hasAttribute("data-topic")) {
-    topic = button.getAttribute("data-topic");
-    if (document.getElementById(topic) != null) {
-      button.tabIndex = "0"; // make keyboard selectable
-      button.addEventListener("click", function() {
-        help_popup(button, topic);
-      }, false);
-      button.addEventListener("keydown", function(e) {
-        // toggle only on Enter or Spacebar, let other keys do their thing
-        if (e.keyCode !== 13 && e.keyCode !== 32) return;
-        // stop a submit or something like that
-        e.preventDefault();
-        help_popup(button, topic);
-      }, false);
-    } else {
-      button.style.visibility = "hidden";
-    }
-  }
-  button.className += " active";
-}
-
-/*
- * help_button
- *
- * Makes a help button for the passed topic.
- */
-function help_button(topic) {
-  var btn = document.createElement("div");
-  btn.className = "help";
-  btn.setAttribute("data-topic", topic);
-  setup_help_button(btn);
-  return btn;
-}
-
-/*
- * prepare_download
- *
- * Sets the attributes of a link to setup a file download using the given content.
- * If no link is provided then create one and click it.
- */
-function prepare_download(content, mimetype, filename, link) {
-  "use strict";
-  // if no link is provided then create one and click it
-  var click_link = false;
-  if (!link) {
-    link = document.createElement("a");
-    click_link = true;
-  }
-  try {
-    // Use a BLOB to convert the text into a data URL.
-    // We could do this manually with a base 64 conversion.
-    // This will only be supported on modern browsers,
-    // hence the try block.
-    var blob = new Blob([content], {type: mimetype});
-    var reader = new FileReader();
-    reader.onloadend = function() {
-      // If we're lucky the browser will also support the download
-      // attribute which will let us suggest a file name to save the link.
-      // Otherwise it is likely that the filename will be unintelligible. 
-      link.setAttribute("download", filename);
-      link.href = reader.result;
-      if (click_link) {
-        // must add the link to click it
-        document.body.appendChild(link);
-        link.click();
-        document.body.removeChild(link);
-      }
-    }
-    reader.readAsDataURL(blob);
-  } catch (error) {
-    if (console && console.log) console.log(error);
-    // probably an old browser
-    link.href = "";
-    link.visible = false;
-  }
-}
-
-/*
- * add_cell
- *
- * Add a cell to the table row.
- */
-function add_cell(row, node, cls, click_action) {
-  var cell = row.insertCell(row.cells.length);
-  if (node) cell.appendChild(node);
-  if (cls && cls !== "") cell.className = cls;
-  if (click_action) cell.addEventListener("click", click_action, false);
-}
-
-/*
- * add_header_cell
- *
- * Add a header cell to the table row.
- */
-function add_header_cell(row, node, help_topic, cls, colspan) {
-  var th = document.createElement("th");
-  if (node) th.appendChild(node);
-  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
-  if (cls && cls !== "") th.className = cls;
-  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
-  row.appendChild(th);
-}
-
-/*
- * add_text_cell
- *
- * Add a text cell to the table row.
- */
-function add_text_cell(row, text, cls, action) {
-  var node = null;
-  if (typeof(text) != 'undefined') node = document.createTextNode(text);
-  add_cell(row, node, cls, action);
-}
-
-/*
- * add_text_header_cell
- *
- * Add a text header cell to the table row.
- */
-function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
-  var node = null;
-  if (typeof(text) != 'undefined') {
-    var nbsp = (help_topic ? "\u00A0" : "");
-    var str = "" + text;
-    var parts = str.split(/\n/);
-    if (parts.length === 1) {
-      if (action) {
-        node = document.createElement("span");
-        node.appendChild(document.createTextNode(str + nbsp));
-      } else {
-        node = document.createTextNode(str + nbsp);
-      }
-    } else {
-      node = document.createElement("span");
-      for (var i = 0; i < parts.length; i++) {
-        if (i !== 0) {
-          node.appendChild(document.createElement("br"));
-        }
-        node.appendChild(document.createTextNode(parts[i]));
-      }
-    }
-    if (action) {
-      node.addEventListener("click", action, false);
-      node.style.cursor = "pointer";
-    }
-  }
-  add_header_cell(row, node, help_topic, cls, colspan);
-}
-
-function setup_help() {
-  "use strict";
-  var help_buttons, i;
-  help_buttons = document.querySelectorAll(".help:not(.active)");
-  for (i = 0; i < help_buttons.length; i++) {
-    setup_help_button(help_buttons[i]);
-  }
-}
-
-function setup_scrollpad() {
-  "use strict";
-  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
-    window.addEventListener("resize", update_scroll_pad, false);
-    update_scroll_pad();
-  }
-}
-
-// anon function to avoid polluting global scope
-(function() {
-  "use strict";
-  window.addEventListener("load", function load(evt) {
-    window.removeEventListener("load", load, false);
-    setup_help();
-    setup_scrollpad();
-  }, false);
-})();
-
-/*
- *  make_link
- *
- *  Creates a text node and if a URL is specified it surrounds it with a link.
- *  If the URL doesn't begin with "http://" it automatically adds it, as
- *  relative links don't make much sense in this context.
- */
-function make_link(text, url) {
-  var textNode = null;
-  var link = null;
-  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
-  if (typeof url === "string") {
-    if (url.indexOf("//") == -1) {
-      url = "http://" + url;
-    }
-    link = document.createElement('a');
-    link.href = url;
-    if (textNode) link.appendChild(textNode);
-    return link;
-  }
-  return textNode;
-}
-</script>
-    <script>
-function motif_logo_template(inputs) {
-  function _input(name) {
-    if (typeof inputs[name] === "undefined") {
-      throw new Error("Missing template variable: " + name);
-    }
-    return inputs[name];
-  }
-  return (
-"%!PS-Adobe-3.0 EPSF-3.0\n" +
-"%%Title: Sequence Logo : " + _input("TITLE") + "\n" +
-"%%Creator: " + _input("CREATOR") + "\n" +
-"%%CreationDate: " + _input("CREATIONDATE") + "\n" +
-"%%BoundingBox:   0  0  " + _input("BOUNDINGWIDTH") + " " + _input("BOUNDINGHEIGHT") + " \n" +
-"%%Pages: 0\n" +
-"%%DocumentFonts: \n" +
-"%%EndComments\n" +
-"\n" +
-"% ---- CONSTANTS ----\n" +
-"\/cmfactor 72 2.54 div def % defines points -> cm conversion\n" +
-"\/cm {cmfactor mul} bind def % defines centimeters\n" +
-"\n" +
-"% ---- VARIABLES ----\n" +
-"\n" +
-"% NA = Nucleic Acid, AA = Amino Acid\n" +
-"\/logoType (" + _input("LOGOTYPE") + ") def \n" +
-"\n" +
-"\/logoTitle (" + _input("TITLE") + ") def\n" +
-"\n" +
-"% Dimensions in cm\n" +
-"\/logoWidth " + _input("LOGOWIDTH") + " cm def\n" +
-"\/logoHeight " + _input("LOGOLINEHEIGHT") + " cm def\n" +
-"\/totalHeight " + _input("LOGOHEIGHT") + " cm def\n" +
-"\n" +
-"\/yaxis " + _input("YAXIS") + " def\n" +
-"\/yaxisLabel (" + _input("YAXISLABEL") + ") def\n" +
-"\/yaxisBits  " + _input("BARBITS") + " def % bits\n" +
-"\/yaxisTicBits " + _input("TICBITS") + " def\n" +
-"\n" +
-"\/xaxis " + _input("NUMBERING") + " def\n" +
-"\/xaxisLabel (" + _input("XAXISLABEL") + ") def\n" +
-"\/showEnds (" + _input("SHOWENDS") + ") def \n" +
-"\n" +
-"\/showFineprint true def\n" +
-"\/fineprint (" + _input("FINEPRINT") + ") def\n" +
-"\n" +
-"\/charsPerLine " + _input("CHARSPERLINE") + " def\n" +
-"\n" +
-"\/showingBox " + _input("SHOWINGBOX") + " def    \n" +
-"\/shrinking false def   % true falses\n" +
-"\/shrink  1.0 def\n" +
-"\/outline " + _input("OUTLINE") + " def\n" +
-"\n" +
-"\/IbeamFraction  " + _input("ERRORBARFRACTION") + " def\n" +
-"\/IbeamGray      0.50 def\n" +
-"\/IbeamLineWidth 0.5 def\n" +
-"\n" +
-"\/fontsize       " + _input("FONTSIZE") + " def\n" +
-"\/titleFontsize  " + _input("TITLEFONTSIZE") + " def\n" +
-"\/smallFontsize  " + _input("SMALLFONTSIZE") + " def\n" +
-"\n" +
-"\/topMargin      " + _input("TOPMARGIN") + " cm def\n" +
-"\/bottomMargin   " + _input("BOTTOMMARGIN") + " cm def\n" +
-"\n" +
-"\/defaultColor [0 0 0] def \n" +
-"\n" +
-_input("COLORDICT") + "\n" +
-"\n" +
-"\/colorDict fullColourDict def\n" +
-"\n" +
-"% ---- DERIVED PARAMETERS ----\n" +
-"\n" +
-"\/leftMargin\n" +
-"  fontsize 3.5 mul\n" +
-"\n" +
-"def \n" +
-"\n" +
-"\/rightMargin \n" +
-"  %Add extra room if showing ends\n" +
-"  showEnds (false) eq { fontsize}{fontsize 1.5 mul} ifelse\n" +
-"def\n" +
-"\n" +
-"\/yaxisHeight \n" +
-"  logoHeight \n" +
-"  bottomMargin sub  \n" +
-"  topMargin sub\n" +
-"def\n" +
-"\n" +
-"\/ticWidth fontsize 2 div def\n" +
-"\n" +
-"\/pointsPerBit yaxisHeight yaxisBits div  def\n" +
-"\n" +
-"\/stackMargin 1 def\n" +
-"\n" +
-"% Do not add space aroung characters if characters are boxed\n" +
-"\/charRightMargin \n" +
-"  showingBox { 0.0 } {stackMargin} ifelse\n" +
-"def\n" +
-"\n" +
-"\/charTopMargin \n" +
-"  showingBox { 0.0 } {stackMargin} ifelse\n" +
-"def\n" +
-"\n" +
-"\/charWidth\n" +
-"  logoWidth\n" +
-"  leftMargin sub\n" +
-"  rightMargin sub\n" +
-"  charsPerLine div\n" +
-"  charRightMargin sub\n" +
-"def\n" +
-"\n" +
-"\/charWidth4 charWidth 4 div def\n" +
-"\/charWidth2 charWidth 2 div def\n" +
-"\n" +
-"\/stackWidth \n" +
-"  charWidth charRightMargin add\n" +
-"def\n" +
-" \n" +
-"\/numberFontsize \n" +
-"  fontsize charWidth lt {fontsize}{charWidth} ifelse\n" +
-"def\n" +
-"\n" +
-"% movements to place 5'\/N and 3'\/C symbols\n" +
-"\/leftEndDeltaX  fontsize neg         def\n" +
-"\/leftEndDeltaY  fontsize 1.5 mul neg def\n" +
-"\/rightEndDeltaX fontsize 0.25 mul     def\n" +
-"\/rightEndDeltaY leftEndDeltaY        def\n" +
-"\n" +
-"% Outline width is proporional to charWidth, \n" +
-"% but no less that 1 point\n" +
-"\/outlinewidth \n" +
-"  charWidth 32 div dup 1 gt  {}{pop 1} ifelse\n" +
-"def\n" +
-"\n" +
-"\n" +
-"% ---- PROCEDURES ----\n" +
-"\n" +
-"\/StartLogo { \n" +
-"  % Save state\n" +
-"  save \n" +
-"  gsave \n" +
-"\n" +
-"  % Print Logo Title, top center \n" +
-"  gsave \n" +
-"    SetStringFont\n" +
-"\n" +
-"    logoWidth 2 div\n" +
-"    logoTitle\n" +
-"    stringwidth pop 2 div sub\n" +
-"    totalHeight\n" +
-"    titleFontsize sub\n" +
-"    moveto\n" +
-"\n" +
-"    logoTitle\n" +
-"    show\n" +
-"  grestore\n" +
-"\n" +
-"  % Print X-axis label, bottom center\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"\n" +
-"    logoWidth 2 div\n" +
-"    xaxisLabel\n" +
-"    stringwidth pop 2 div sub\n" +
-"    0\n" +
-"    titleFontsize 3 div\n" +
-"    add\n" +
-"    moveto\n" +
-"\n" +
-"    xaxisLabel\n" +
-"    show\n" +
-"  grestore\n" +
-"\n" +
-"  % Show Fine Print\n" +
-"  showFineprint {\n" +
-"    gsave\n" +
-"      SetSmallFont\n" +
-"      logoWidth\n" +
-"        fineprint stringwidth pop sub\n" +
-"        smallFontsize sub\n" +
-"          smallFontsize 3 div\n" +
-"      moveto\n" +
-"    \n" +
-"      fineprint show\n" +
-"    grestore\n" +
-"  } if\n" +
-"\n" +
-"  % Move to lower left corner of last line, first stack\n" +
-"  leftMargin bottomMargin translate\n" +
-"\n" +
-"  % Move above first line ready for StartLine \n" +
-"  0 totalHeight translate\n" +
-"\n" +
-"  SetLogoFont\n" +
-"} bind def\n" +
-"\n" +
-"\/EndLogo { \n" +
-"  grestore \n" +
-"  showpage \n" +
-"  restore \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/StartLine { \n" +
-"  % move down to the bottom of the line:\n" +
-"  0 logoHeight neg translate\n" +
-"  \n" +
-"  gsave \n" +
-"    yaxis { MakeYaxis } if\n" +
-"    xaxis { showEnds (true) eq {ShowLeftEnd} if } if\n" +
-"} bind def\n" +
-"\n" +
-"\/EndLine{ \n" +
-"    xaxis { showEnds (true) eq {ShowRightEnd} if } if\n" +
-"  grestore \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/MakeYaxis {\n" +
-"  gsave    \n" +
-"    stackMargin neg 0 translate\n" +
-"    ShowYaxisBar\n" +
-"    ShowYaxisLabel\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowYaxisBar { \n" +
-"  gsave  \n" +
-"    SetStringFont\n" +
-"\n" +
-"    \/str 10 string def % string to hold number  \n" +
-"    \/smallgap stackMargin 2 div def\n" +
-"\n" +
-"    % Draw first tic and bar\n" +
-"    gsave    \n" +
-"      ticWidth neg 0 moveto \n" +
-"      ticWidth 0 rlineto \n" +
-"      0 yaxisHeight rlineto\n" +
-"      stroke\n" +
-"    grestore\n" +
-"\n" +
-"   \n" +
-"    % Draw the tics\n" +
-"    % initial increment limit proc for\n" +
-"    0 yaxisTicBits yaxisBits abs %cvi\n" +
-"    {\/loopnumber exch def\n" +
-"\n" +
-"      % convert the number coming from the loop to a string\n" +
-"      % and find its width\n" +
-"      loopnumber 10 str cvrs\n" +
-"      \/stringnumber exch def % string representing the number\n" +
-"\n" +
-"      stringnumber stringwidth pop\n" +
-"      \/numberwidth exch def % width of number to show\n" +
-"\n" +
-"      \/halfnumberheight\n" +
-"         stringnumber CharBoxHeight 2 div\n" +
-"      def\n" +
-"\n" +
-"      numberwidth % move back width of number\n" +
-"      neg loopnumber pointsPerBit mul % shift on y axis\n" +
-"      halfnumberheight sub % down half the digit\n" +
-"\n" +
-"      moveto % move back the width of the string\n" +
-"\n" +
-"      ticWidth neg smallgap sub % Move back a bit more  \n" +
-"      0 rmoveto % move back the width of the tic  \n" +
-"\n" +
-"      stringnumber show\n" +
-"      smallgap 0 rmoveto % Make a small gap  \n" +
-"\n" +
-"      % now show the tic mark\n" +
-"      0 halfnumberheight rmoveto % shift up again\n" +
-"      ticWidth 0 rlineto\n" +
-"      stroke\n" +
-"    } for\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\/ShowYaxisLabel {\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"\n" +
-"    % How far we move left depends on the size of\n" +
-"    % the tic labels.\n" +
-"    \/str 10 string def % string to hold number  \n" +
-"    yaxisBits yaxisTicBits div cvi yaxisTicBits mul \n" +
-"    str cvs stringwidth pop\n" +
-"    ticWidth 1.5 mul  add neg  \n" +
-"\n" +
-"\n" +
-"    yaxisHeight\n" +
-"    yaxisLabel stringwidth pop\n" +
-"    sub 2 div\n" +
-"\n" +
-"    translate\n" +
-"    90 rotate\n" +
-"    0 0 moveto\n" +
-"    yaxisLabel show\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/StartStack {  % <stackNumber> startstack\n" +
-"  xaxis {MakeNumber}{pop} ifelse\n" +
-"  gsave\n" +
-"} bind def\n" +
-"\n" +
-"\/EndStack {\n" +
-"  grestore\n" +
-"  stackWidth 0 translate\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% Draw a character whose height is proportional to symbol bits\n" +
-"\/MakeSymbol{ % charbits character MakeSymbol\n" +
-"  gsave\n" +
-"    \/char exch def\n" +
-"    \/bits exch def\n" +
-"\n" +
-"    \/bitsHeight \n" +
-"       bits pointsPerBit mul \n" +
-"    def\n" +
-"\n" +
-"    \/charHeight \n" +
-"       bitsHeight charTopMargin sub\n" +
-"       dup \n" +
-"       0.0 gt {}{pop 0.0} ifelse % if neg replace with zero \n" +
-"    def \n" +
-" \n" +
-"    charHeight 0.0 gt {\n" +
-"      char SetColor\n" +
-"      charWidth charHeight char ShowChar\n" +
-"\n" +
-"      showingBox { % Unfilled box\n" +
-"        0 0 charWidth charHeight false ShowBox\n" +
-"      } if\n" +
-"\n" +
-"\n" +
-"    } if\n" +
-"\n" +
-"  grestore\n" +
-"\n" +
-"  0 bitsHeight translate \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowChar { % <width> <height> <char> ShowChar\n" +
-"  gsave\n" +
-"    \/tc exch def    % The character\n" +
-"    \/ysize exch def % the y size of the character\n" +
-"    \/xsize exch def % the x size of the character\n" +
-"\n" +
-"    \/xmulfactor 1 def \n" +
-"    \/ymulfactor 1 def\n" +
-"    \/limmulfactor 0.01 def\n" +
-"    \/drawable true def\n" +
-"\n" +
-"  \n" +
-"    % if ysize is negative, make everything upside down!\n" +
-"    ysize 0 lt {\n" +
-"      % put ysize normal in this orientation\n" +
-"      \/ysize ysize abs def\n" +
-"      xsize ysize translate\n" +
-"      180 rotate\n" +
-"    } if\n" +
-"\n" +
-"    shrinking {\n" +
-"      xsize 1 shrink sub 2 div mul\n" +
-"        ysize 1 shrink sub 2 div mul translate \n" +
-"\n" +
-"      shrink shrink scale\n" +
-"    } if\n" +
-"\n" +
-"    % Calculate the font scaling factors\n" +
-"    % Loop twice to catch small correction due to first scaling\n" +
-"    2 {\n" +
-"      gsave\n" +
-"        xmulfactor ymulfactor scale\n" +
-"      \n" +
-"        ysize % desired size of character in points\n" +
-"        tc CharBoxHeight \n" +
-"        dup 0.0 ne {\n" +
-"          div % factor by which to scale up the character\n" +
-"          \/ymulfactor exch def\n" +
-"        } % end if\n" +
-"        {pop pop}\n" +
-"        ifelse\n" +
-"\n" +
-"        xsize % desired size of character in points\n" +
-"        tc CharBoxWidth  \n" +
-"        dup 0.0 ne {\n" +
-"          div % factor by which to scale up the character\n" +
-"          \/xmulfactor exch def\n" +
-"        } % end if\n" +
-"        {pop pop}\n" +
-"        ifelse\n" +
-"      grestore\n" +
-"      % if the multiplication factors get too small we need to avoid a crash\n" +
-"      xmulfactor limmulfactor lt {\n" +
-"        \/xmulfactor 1 def\n" +
-"        \/drawable false def\n" +
-"      } if\n" +
-"      ymulfactor limmulfactor lt {\n" +
-"        \/ymulfactor 1 def\n" +
-"        \/drawable false def\n" +
-"      } if\n" +
-"    } repeat\n" +
-"\n" +
-"    % Adjust horizontal position if the symbol is an I\n" +
-"    tc (I) eq {\n" +
-"      charWidth 2 div % half of requested character width\n" +
-"      tc CharBoxWidth 2 div % half of the actual character\n" +
-"      sub 0 translate\n" +
-"      % Avoid x scaling for I \n" +
-"      \/xmulfactor 1 def \n" +
-"    } if\n" +
-"\n" +
-"\n" +
-"    % ---- Finally, draw the character\n" +
-"    drawable { \n" +
-"      newpath\n" +
-"      xmulfactor ymulfactor scale\n" +
-"\n" +
-"      % Move lower left corner of character to start point\n" +
-"      tc CharBox pop pop % llx lly : Lower left corner\n" +
-"      exch neg exch neg\n" +
-"      moveto\n" +
-"\n" +
-"      outline {  % outline characters:\n" +
-"        outlinewidth setlinewidth\n" +
-"        tc true charpath\n" +
-"        gsave 1 setgray fill grestore\n" +
-"        clip stroke\n" +
-"      } { % regular characters\n" +
-"        tc show\n" +
-"      } ifelse\n" +
-"    } if\n" +
-"\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowBox { % x1 y1 x2 y2 filled ShowBox\n" +
-"  gsave\n" +
-"    \/filled exch def \n" +
-"    \/y2 exch def\n" +
-"    \/x2 exch def\n" +
-"    \/y1 exch def\n" +
-"    \/x1 exch def\n" +
-"    newpath\n" +
-"    x1 y1 moveto\n" +
-"    x2 y1 lineto\n" +
-"    x2 y2 lineto\n" +
-"    x1 y2 lineto\n" +
-"    closepath\n" +
-"\n" +
-"    clip\n" +
-"    \n" +
-"    filled {\n" +
-"      fill\n" +
-"    }{ \n" +
-"      0 setgray stroke   \n" +
-"    } ifelse\n" +
-"\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/MakeNumber { % number MakeNumber\n" +
-"  gsave\n" +
-"    SetNumberFont\n" +
-"    stackWidth 0 translate\n" +
-"    90 rotate % rotate so the number fits\n" +
-"    dup stringwidth pop % find the length of the number\n" +
-"    neg % prepare for move\n" +
-"    stackMargin sub % Move back a bit\n" +
-"    charWidth (0) CharBoxHeight % height of numbers\n" +
-"    sub 2 div %\n" +
-"    moveto % move back to provide space\n" +
-"    show\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/Ibeam{ % heightInBits Ibeam\n" +
-"  gsave\n" +
-"    % Make an Ibeam of twice the given height in bits\n" +
-"    \/height exch  pointsPerBit mul def \n" +
-"    \/heightDRAW height IbeamFraction mul def\n" +
-"\n" +
-"    IbeamLineWidth setlinewidth\n" +
-"    IbeamGray setgray \n" +
-"\n" +
-"    charWidth2 height neg translate\n" +
-"    ShowIbar\n" +
-"    newpath\n" +
-"      0 0 moveto\n" +
-"      0 heightDRAW rlineto\n" +
-"    stroke\n" +
-"    newpath\n" +
-"      0 height moveto\n" +
-"      0 height rmoveto\n" +
-"      currentpoint translate\n" +
-"    ShowIbar\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    0 heightDRAW neg rlineto\n" +
-"    currentpoint translate\n" +
-"    stroke\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowIbar { % make a horizontal bar\n" +
-"  gsave\n" +
-"    newpath\n" +
-"      charWidth4 neg 0 moveto\n" +
-"      charWidth4 0 lineto\n" +
-"    stroke\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowLeftEnd {\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"    leftEndDeltaX leftEndDeltaY moveto\n" +
-"    logoType (NA) eq {(5) show ShowPrime} if\n" +
-"    logoType (AA) eq {(N) show} if\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowRightEnd { \n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"    rightEndDeltaX rightEndDeltaY moveto\n" +
-"    logoType (NA) eq {(3) show ShowPrime} if\n" +
-"    logoType (AA) eq {(C) show} if\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowPrime {\n" +
-"  gsave\n" +
-"    SetPrimeFont\n" +
-"    (\\242) show \n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-" \n" +
-"\/SetColor{ % <char> SetColor\n" +
-"  dup colorDict exch known {\n" +
-"    colorDict exch get aload pop setrgbcolor\n" +
-"  } {\n" +
-"    pop\n" +
-"    defaultColor aload pop setrgbcolor\n" +
-"  } ifelse \n" +
-"} bind def\n" +
-"\n" +
-"% define fonts\n" +
-"\/SetTitleFont {\/Times-Bold findfont titleFontsize scalefont setfont} bind def\n" +
-"\/SetLogoFont  {\/Helvetica-Bold findfont charWidth  scalefont setfont} bind def\n" +
-"\/SetStringFont{\/Helvetica-Bold findfont fontsize scalefont setfont} bind def\n" +
-"\/SetPrimeFont {\/Symbol findfont fontsize scalefont setfont} bind def\n" +
-"\/SetSmallFont {\/Helvetica findfont smallFontsize scalefont setfont} bind def\n" +
-"\n" +
-"\/SetNumberFont {\n" +
-"    \/Helvetica-Bold findfont \n" +
-"    numberFontsize\n" +
-"    scalefont\n" +
-"    setfont\n" +
-"} bind def\n" +
-"\n" +
-"%Take a single character and return the bounding box\n" +
-"\/CharBox { % <char> CharBox <lx> <ly> <ux> <uy>\n" +
-"  gsave\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    % take the character off the stack and use it here:\n" +
-"    true charpath \n" +
-"    flattenpath \n" +
-"    pathbbox % compute bounding box of 1 pt. char => lx ly ux uy\n" +
-"    % the path is here, but toss it away ...\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% The height of a characters bounding box\n" +
-"\/CharBoxHeight { % <char> CharBoxHeight <num>\n" +
-"  CharBox\n" +
-"  exch pop sub neg exch pop\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% The width of a characters bounding box\n" +
-"\/CharBoxWidth { % <char> CharBoxHeight <num>\n" +
-"  CharBox\n" +
-"  pop exch pop sub neg \n" +
-"} bind def\n" +
-"\n" +
-"% Set the colour scheme to be faded to indicate trimming\n" +
-"\/MuteColour {\n" +
-"  \/colorDict mutedColourDict def\n" +
-"} def\n" +
-"\n" +
-"% Restore the colour scheme to the normal colours\n" +
-"\/RestoreColour {\n" +
-"  \/colorDict fullColourDict def\n" +
-"} def\n" +
-"\n" +
-"% Draw the background for a trimmed section\n" +
-"% takes the number of columns as a parameter\n" +
-"\/DrawTrimBg { % <num> DrawTrimBox\n" +
-"  \/col exch def\n" +
-"  \n" +
-"  \/boxwidth \n" +
-"    col stackWidth mul \n" +
-"  def\n" +
-" \n" +
-"  gsave\n" +
-"    0.97 setgray\n" +
-"\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    boxwidth 0 rlineto\n" +
-"    0 yaxisHeight rlineto\n" +
-"    0 yaxisHeight lineto\n" +
-"    closepath\n" +
-"    \n" +
-"    fill\n" +
-"  grestore\n" +
-"} def\n" +
-"\n" +
-"\/DrawTrimEdge {\n" +
-"  gsave\n" +
-"    0.2 setgray\n" +
-"    [2] 0 setdash\n" +
-"\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    0 yaxisHeight lineto\n" +
-"    \n" +
-"    stroke\n" +
-"\n" +
-"} def\n" +
-"\n" +
-"\n" +
-"% Deprecated names\n" +
-"\/startstack {StartStack} bind  def\n" +
-"\/endstack {EndStack}     bind def\n" +
-"\/makenumber {MakeNumber} bind def\n" +
-"\/numchar { MakeSymbol }  bind def\n" +
-"\n" +
-"%%EndProlog\n" +
-"\n" +
-"%%Page: 1 1\n" +
-"StartLogo\n" +
-"\n" +
-_input("DATA") + "\n" +
-"\n" +
-"EndLogo\n" +
-"\n" +
-"%%EOF\n"
-  );
-}</script>
-    <script>
-//======================================================================
-// start Alphabet object
-//======================================================================
-var Alphabet = function(alphabet, background) {
-  "use strict";
-  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
-  generate_background = (background == null);
-  if (generate_background) {
-    background = [];
-    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
-  } else if (alphabet.ncore != background.length) {
-    throw new Error("The background length does not match the alphabet length.");
-  }
-  this.name = alphabet.name;
-  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
-  this.ncore = alphabet.ncore;
-  this.symbols = alphabet.symbols;
-  this.background = background;
-  this.genbg = generate_background;
-  this.encode = {};
-  this.encode2core = {};
-  this.complement = {};
-  // check if all symbols are same case
-  var seen_uc = false;
-  var seen_lc = false;
-  var check_case = function (syms) {
-    var s, sym;
-    if (typeof syms === "string") {
-      for (s = 0; s < syms.length; s++) {
-        sym = syms.charAt(s);
-        if (sym >= 'a' && sym <= 'z') seen_lc = true;
-        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
-      }
-    }
-  };
-  for (i = 0; i < this.symbols.length; i++) {
-    check_case(this.symbols[i].symbol);
-    check_case(this.symbols[i].aliases);
-  }
-  // now map symbols to indexes
-  var update_array = function(array, syms, index) {
-    var s, sym;
-    if (typeof syms === "string") {
-      for (s = 0; s < syms.length; s++) {
-        sym = syms.charAt(s);
-        array[sym] = index;
-        // when only a single case is used, then encode as case insensitive
-        if (seen_uc != seen_lc) {
-          if (sym >= 'a' && sym <= 'z') {
-            array[sym.toUpperCase()] = index;
-          } else if (sym >= 'A' && sym <= 'Z') {
-            array[sym.toLowerCase()] = index;
-          }
-        }
-      }
-    }
-  }
-  // map core symbols to index
-  for (i = 0; i < this.ncore; i++) {
-    update_array(this.encode2core, this.symbols[i].symbol, i);
-    update_array(this.encode, this.symbols[i].symbol, i);
-    update_array(this.encode2core, this.symbols[i].aliases, i);
-    update_array(this.encode, this.symbols[i].aliases, i);
-  }
-  // map ambigous symbols to index
-  ambigs = {};
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    update_array(this.encode, this.symbols[i].symbol, i);
-    update_array(this.encode, this.symbols[i].aliases, i);
-    ambigs[this.symbols[i].equals] = i;
-  }
-  // determine complements
-  for (i = 0; i < this.ncore; i++) {
-    complement = this.symbols[i].complement;
-    if (typeof complement === "string") {
-      this.complement[i] = this.encode2core[complement];
-    }
-  }
-  next_symbol:
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    complement = "";
-    for (j = 0; j < this.symbols[i].equals.length; j++) {
-      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
-      if (typeof comp_e_sym !== "number") continue next_symbol;
-      complement += this.symbols[comp_e_sym].symbol;
-    }
-    complement = complement.split("").sort().join("");
-    if (typeof ambigs[complement] === "number") {
-      this.complement[i] = ambigs[complement];
-    }
-  }
-  // determine case insensitivity
-  this.case_insensitive = true;
-  if (seen_uc == seen_lc) {
-    // when there is a mixture of cases it probably won't
-    // be case insensitive but we still need to check
-    loop:
-    for (i = 0; i < this.symbols.length; i++) {
-      sym = this.symbols[i].symbol;
-      if (sym >= 'A' && sym <= 'Z') {
-        if (this.encode[sym.toLowerCase()] != i) {
-          this.case_insensitive = false;
-          break loop;
-        }
-      } else if (sym >= 'a' && sym <= 'z') {
-        if (this.encode[sym.toUpperCase()] != i) {
-          this.case_insensitive = false;
-          break loop;
-        }
-      }
-      aliases = this.symbols[i].aliases;
-      if (aliases != null) {
-        for (j = 0; j < aliases.length; j++) {
-          sym = aliases.charAt(j);
-          if (sym >= 'A' && sym <= 'Z') {
-            if (this.encode[sym.toLowerCase()] != i) {
-              this.case_insensitive = false;
-              break loop;
-            }
-          } else if (sym >= 'a' && sym <= 'z') {
-            if (this.encode[sym.toUpperCase()] != i) {
-              this.case_insensitive = false;
-              break loop;
-            }
-          }
-        }
-      }
-    }
-  }
-  // normalise aliases to remove the prime symbol and eliminate
-  // the alternate cases when the alphabet is case insensitive
-  var seen, out;
-  for (i = 0; i < this.symbols.length; i++) {
-    sym = this.symbols[i].symbol;
-    aliases = this.symbols[i].aliases;
-    if (typeof aliases != "string") aliases = "";
-    seen = {};
-    out = [];
-    if (this.case_insensitive) {
-      sym = sym.toUpperCase();
-      aliases = aliases.toUpperCase();
-    }
-    seen[sym] = true;
-    for (j = 0; j < aliases.length; j++) {
-      if (!seen[aliases.charAt(j)]) {
-        seen[aliases.charAt(j)] = true;
-        out.push(aliases.charAt(j));
-      }
-    }
-    this.symbols[i].aliases = out.sort().join("");
-  }
-};
-// return the name of the alphabet
-Alphabet.prototype.get_alphabet_name = function() {
-  return this.name;
-};
-// return if the alphabet can be complemented
-Alphabet.prototype.has_complement = function() {
-  return (typeof this.symbols[0].complement === "string");
-};
-// return true if an uppercase letter has the same meaning as the lowercase form
-Alphabet.prototype.is_case_insensitive = function() {
-  return this.case_insensitive;
-};
-// return the information content of an alphabet letter
-Alphabet.prototype.get_ic = function() {
-  return Math.log(this.ncore) / Math.LN2;
-};
-// return the count of the core alphabet symbols
-Alphabet.prototype.get_size_core = function() {
-  return this.ncore;
-};
-// return the count of all alphabet symbols
-Alphabet.prototype.get_size_full = function() {
-  return this.symbols.length;
-};
-// return the symbol for the given alphabet index
-Alphabet.prototype.get_symbol = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  return this.symbols[alph_index].symbol;
-};
-// return the aliases for the given alphabet index
-Alphabet.prototype.get_aliases = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  var sym_obj = this.symbols[alph_index];
-  return (sym_obj.aliases != null ? sym_obj.aliases : "");
-};
-// return the name for the given alphabet index
-Alphabet.prototype.get_name = function(alph_index) {
-  "use strict";
-  var sym;
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  sym = this.symbols[alph_index];
-  return (typeof sym.name === "string" ? sym.name : sym.symbol);
-};
-// return the alphabet it is like or null
-Alphabet.prototype.get_like = function() {
-  "use strict";
-  return this.like;
-};
-// return the index of the complement for the given alphabet index
-Alphabet.prototype.get_complement = function(alph_index) {
-  var comp_e_sym = this.complement[alph_index];
-  if (typeof comp_e_sym === "number") {
-    return comp_e_sym;
-  } else {
-    return -1;
-  }
-};
-// return a string containing the core symbols
-Alphabet.prototype.get_symbols = function() {
-  "use strict";
-  var i, core_symbols;
-  core_symbols = "";
-  for (i = 0; i < this.ncore; i++) {
-    core_symbols += this.symbols[i].symbol;
-  }
-  return core_symbols;
-};
-// return if the background was not a uniform generated background
-Alphabet.prototype.has_bg = function() {
-  "use strict";
-  return !this.genbg;
-};
-// get the background frequency for the index
-Alphabet.prototype.get_bg_freq = function(alph_index) {
-  "use strict";
-  var freq, i, symbols;
-  if (alph_index >= 0) {
-    if (alph_index < this.ncore) {
-      return this.background[alph_index];
-    } else if (alph_index < this.symbols.length) {
-      freq = 0;
-      symbols = this.symbols[alph_index].equals;
-      for (i = 0; i < symbols.length; i++) {
-        freq += this.background[this.encode2core[symbols.charAt(i)]];
-      }
-      return freq;
-    } 
-  }
-  throw new Error("The alphabet index is out of range.");
-};
-// get the colour of the index
-Alphabet.prototype.get_colour = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("BAD_ALPHABET_INDEX");
-  }
-  if (typeof this.symbols[alph_index].colour != "string") {
-    return "black";
-  }
-  return "#" + this.symbols[alph_index].colour;
-};
-// get the rgb componets of the colour at the index
-Alphabet.prototype.get_rgb = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("BAD_ALPHABET_INDEX");
-  }
-  if (typeof this.symbols[alph_index].colour != "string") {
-    return {"red": 0, "green": 0, "blue": 0};
-  }
-  var colour = this.symbols[alph_index].colour;
-  var red = parseInt(colour.substr(0, 2), 16) / 255;
-  var green = parseInt(colour.substr(2, 2), 16) / 255;
-  var blue = parseInt(colour.substr(4, 2), 16) / 255;
-  return {"red": red, "green": green, "blue": blue};
-};
-// convert a symbol into the index
-Alphabet.prototype.get_index = function(letter) {
-  "use strict";
-  var alph_index;
-  alph_index = this.encode[letter];
-  if (typeof alph_index === "undefined") {
-    return -1;
-  }
-  return alph_index;
-};
-// convert a symbol into the list of core indexes that it equals
-Alphabet.prototype.get_indexes = function(letter) {
-  "use strict";
-  var alph_index, comprise_str, i, comprise_list;
-  alph_index = this.encode[letter];
-  if (typeof alph_index === "undefined") {
-    throw new Error("Unknown letter");
-  }
-  comprise_str = this.symbols[alph_index].equals;
-  comprise_list = [];
-  if (typeof comprise_str == "string") {
-    for (i = 0; i < comprise_str.length; i++) {
-      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
-    }
-  } else {
-    comprise_list.push(alph_index);
-  }
-  return comprise_list;
-};
-// check if a symbol is the primary way of representing the symbol in the alphabet
-Alphabet.prototype.is_prime_symbol = function(letter) {
-  var alph_index;
-  alph_index = this.encode[letter];
-  if (alph_index == null) return false;
-  if (this.is_case_insensitive()) {
-    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
-  } else {
-    return (this.symbols[alph_index].symbol == letter);
-  }
-};
-// compare 2 alphabets
-Alphabet.prototype.equals = function(other) {
-  "use strict";
-  var i, sym1, sym2;
-  // first check that it's actually an alphabet object
-  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
-    return false;
-  }
-  // second shortcircuit if it's the same object
-  if (this === other) return true;
-  // compare
-  if (this.name !== other.name) return false;
-  if (this.ncore !== other.ncore) return false;
-  if (this.symbols.length !== other.symbols.length) return false;
-  for (i = 0; i < this.symbols.length; i++) {
-    sym1 = this.symbols[i];
-    sym2 = other.symbols[i];
-    if (sym1.symbol !== sym2.symbol) return false;
-    if (sym1.aliases !== sym2.aliases) return false;
-    if (sym1.name !== sym2.name) return false;
-    if (typeof sym1.colour !== typeof sym2.colour || 
-        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
-         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
-      return false;
-    }
-    if (sym1.complement !== sym2.complement) return false;
-    if (sym1.equals !== sym2.equals) return false;
-  }
-  return true;
-};
-Alphabet.prototype.check_core_subset = function(super_alph) {
-  var complement_same = true;
-  var seen_set = {};
-  var sub_i, sub_symbol, super_i, super_symbol;
-  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
-    sub_symbol = this.symbols[sub_i];
-    super_i = super_alph.encode[sub_symbol.symbol]; 
-    if (super_i == null) return 0;
-    super_symbol = super_alph.symbols[super_i];
-    if (seen_set[super_i]) return 0;
-    seen_set[super_i] = true;
-    // check complement
-    if (sub_symbol.complement != null && super_symbol.complement != null) {
-      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
-        complement_same = false;
-      }
-    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
-      complement_same = false;
-    }
-  }
-  return (complement_same ? 1 : -1);
-};
-// convert a sequence to its reverse complement
-Alphabet.prototype.invcomp_seq = function(seq) {
-  "use strict";
-  var syms, i, e_sym, comp_e_sym;
-  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
-  syms = seq.split("");
-  for (i = 0; i < syms.length; i++) {
-    e_sym = this.encode[syms[i]];
-    if (typeof e_sym === "undefined") {
-      e_sym = this.ncore; // wildcard
-    }
-    comp_e_sym = this.complement[e_sym];
-    if (typeof comp_e_sym === "undefined") {
-      comp_e_sym = e_sym; // not complementable
-    }
-    syms[i] = this.symbols[comp_e_sym].symbol;
-  }
-  return syms.reverse().join("");
-};
-// convert the alphabet to the text version
-Alphabet.prototype.as_text = function() {
-  "use strict";
-  function name_as_text(name) {
-    var i, c, out;
-    out = "\"";
-    for (i = 0; i < name.length; i++) {
-      c = name.charAt(i);
-      if (c == "\"") {
-        out += "\\\"";
-      } else if (c == "/") {
-        out += "\\/";
-      } else if (c == "\\") {
-        out += "\\\\";
-      } else {
-        out += c;
-      }
-    }
-    out += "\"";
-    return out;
-  }
-  function symbol_as_text(sym) {
-    var out;
-    out = sym.symbol;
-    if (typeof sym.name === "string" && sym.name != sym.symbol) {
-      out += " " + name_as_text(sym.name);
-    }
-    if (typeof sym.colour === "string") {
-      out += " " + sym.colour;
-    }
-    return out;
-  }
-  var out, i, j, c, sym;
-  out = "";
-  // output core symbols with 2 way complements
-  for (i = 0; i < this.ncore; i++) {
-    c = this.complement[i];
-    if (typeof c === "number" && i < c && this.complement[c] === i) {
-      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
-    }
-  }
-  // output core symbols with no complement
-  for (i = 0; i < this.ncore; i++) {
-    if (typeof this.complement[i] === "undefined") {
-      out += symbol_as_text(this.symbols[i]) + "\n";
-    }
-  }
-  // output ambiguous symbols that have comprising characters
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    if (this.symbols[i].equals.length == 0) break;
-    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
-      }
-    }
-  }
-  // output aliases of core symbols
-  for (i = 0; i < this.ncore; i++) {
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
-      }
-    }
-  }
-  // output gap symbols
-  i = this.symbols.length - 1;
-  if (this.symbols[i].equals.length == 0) {
-    out += symbol_as_text(this.symbols[i]) + " =\n";
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " =\n";
-      }
-    }
-  }
-  return out;
-};
-// output the alphabet as it appears in minimal MEME format
-Alphabet.prototype.as_meme = function() {
-  "use strict";
-  function name_as_text(name) {
-    var i, c, out;
-    out = "\"";
-    for (i = 0; i < name.length; i++) {
-      c = name.charAt(i);
-      if (c == "\"") {
-        out += "\\\"";
-      } else if (c == "/") {
-        out += "\\/";
-      } else if (c == "\\") {
-        out += "\\\\";
-      } else {
-        out += c;
-      }
-    }
-    out += "\"";
-    return out;
-  }
-  if (this.equals(AlphStd.DNA)) {
-    return "ALPHABET= ACGT\n";
-  } else if (this.equals(AlphStd.PROTEIN)) {
-    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
-  } else {
-    return "ALPHABET" + 
-      (this.name != null ? " " + name_as_text(this.name) : "") + 
-      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
-      this.as_text() + "END ALPHABET\n";
-  }
-};
-
-// Returns a table showing all the letters in the alphabet
-Alphabet.prototype.as_table = function() {
-  "use strict";
-  var i, j, row, th, td, aliases, equals, sym;
-  var table = document.createElement("table");
-  // create the core symbol header
-  row = table.insertRow(table.rows.length);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Symbol(s)"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Name"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  if (this.has_complement()) {
-    th.appendChild(document.createTextNode("Complement"));
-  }
-  row.appendChild(th);
-  // list the core symbols
-  for (i = 0; i < this.ncore; i++) {
-    row = table.insertRow(table.rows.length);
-    td = document.createElement("td");
-    if (this.symbols[i].colour != null) {
-      td.style.color = '#' + this.symbols[i].colour;
-    }
-    td.appendChild(document.createTextNode(this.symbols[i].symbol));
-    aliases = this.get_aliases(i);
-    if (aliases.length > 0) {
-      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].name != null) {
-      td.appendChild(document.createTextNode(this.symbols[i].name));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].complement != null) {
-      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
-      td.appendChild(document.createTextNode(this.symbols[i].complement));
-    }
-    row.appendChild(td);
-  }
-  // create the ambiguous symbol header
-  row = table.insertRow(table.rows.length);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Symbol(s)"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Name"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Matches"));
-  row.appendChild(th);
-  // list the ambiguous symbols
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    row = table.insertRow(table.rows.length);
-    td = document.createElement("td");
-    if (this.symbols[i].colour != null) {
-      td.style.color = '#' + this.symbols[i].colour;
-    }
-    td.appendChild(document.createTextNode(this.symbols[i].symbol));
-    aliases = this.get_aliases(i);
-    if (aliases.length > 0) {
-      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].name != null) {
-      td.appendChild(document.createTextNode(this.symbols[i].name));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    equals = this.symbols[i].equals.split('');
-    for (j = 0; j < equals.length; j++) {
-      if (j != 0) td.appendChild(document.createTextNode(' '));
-      sym = document.createElement("span");
-      sym.style.color = this.get_colour(this.get_index(equals[j]));
-      sym.appendChild(document.createTextNode(equals[j]));
-      td.appendChild(sym);
-    }
-    row.appendChild(td);
-  }
-  return table;
-};
-
-// returns a dictionary of the colours for EPS
-Alphabet.prototype._as_eps_dict = function() {
-  "use strict";
-  var i, sym, rgb;
-  var out = "/fullColourDict <<\n";
-  for (i = 0; i < this.ncore; i++) {
-    sym = this.get_symbol(i);
-    sym = sym.replace(/\\/g, "\\\\");
-    sym = sym.replace(/\(/g, "\\(");
-    sym = sym.replace(/\)/g, "\\)");
-    rgb = this.get_rgb(i);
-    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
-  }
-  out += ">> def\n";
-  out += "/mutedColourDict <<\n";
-  for (i = 0; i < this.ncore; i++) {
-    sym = this.get_symbol(i);
-    sym = sym.replace(/\\/g, "\\\\");
-    sym = sym.replace(/\(/g, "\\(");
-    sym = sym.replace(/\)/g, "\\)");
-    rgb = Alphabet.lighten_colour(this.get_rgb(i));
-    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
-  }
-  out += ">> def\n";
-  return out;
-};
-
-// return the alphabet name or a list of primary symbols
-Alphabet.prototype.toString = function() {
-  "use strict";
-  if (this.name != null) {
-    return this.name;
-  } else {
-    return this.get_symbols();
-  }
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Helper functions
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-// Convert a colour specified in RGB colourspace values into LAB colourspace
-Alphabet.rgb2lab = function(rgb) {
-  "use strict";
-  var xyzHelper, labHelper;
-  // XYZ helper
-  xyzHelper = function(value) {
-    if (value > 0.0445) {
-      value = (value + 0.055) / 1.055;
-      value = Math.pow(value, 2.4);
-    } else {
-      value /= 12.92;
-    }
-    value *= 100;
-    return value;
-  };
-  // lab helper
-  labHelper = function(value) {
-    if (value > 0.008856) {
-      value = Math.pow(value, 1.0 / 3.0);
-    } else {
-      value = (7.787 * value) + (16.0 / 116.0);
-    }
-    return value;
-  };
-  // convert into XYZ colourspace
-  var c1, c2, c3;
-  if (typeof rgb == "number") {
-    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
-    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
-    c3 = xyzHelper((rgb & 0xFF) / 255.0);
-  } else {
-    c1 = xyzHelper(rgb.red);
-    c2 = xyzHelper(rgb.green);
-    c3 = xyzHelper(rgb.blue);
-  }
-  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
-  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
-  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
-  // convert into Lab colourspace
-  c1 = labHelper(x / 95.047);
-  c2 = labHelper(y / 100.0);
-  c3 = labHelper(z / 108.883);
-  var l = (116.0 * c2) - 16;
-  var a = 500.0 * (c1 - c2);
-  var b = 200.0 * (c2 - c3);
-  return {"l": l, "a": a, "b": b};
-};
-
-// Convert a colour specified in HSV colourspace into RGB colourspace
-Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
-  // achromatic (grey)
-  var r = value;
-  var g = value;
-  var b = value;
-  if (sat != 0) {
-    var h = hue / 60.0;
-    var i = Math.floor(h);
-    var f = h - i;
-    var p = value * (1.0 - sat);
-    var q = value * (1.0 - (sat * f));
-    var t = value * (1.0 - (sat * (1.0 - f)));
-    if (i == 0) {
-      r = value;
-      g = t;
-      b = p;
-    } else if (i == 1) {
-      r = q;
-      g = value;
-      b = p;
-    } else if (i == 2) {
-      r = p;
-      g = value;
-      b = t;
-    } else if (i == 3) {
-      r = p;
-      g = q;
-      b = value;
-    } else if (i == 4) {
-      r = t;
-      g = p;
-      b = value;
-    } else {
-      r = value;
-      g = p;
-      b = q;
-    }
-  }
-  if (output_object) {
-    return {"red": r, "green": g, "blue": b};
-  } else {
-    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
-  }
-};
-
-// Calculate a distance score between two colours in LAB colourspace
-Alphabet.lab_dist = function(lab1, lab2) {
-  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
-  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
-  var dc = c1 - c2;
-  var dl = lab1.l - lab2.l;
-  var da = lab1.a - lab2.a;
-  var db = lab1.b - lab2.b;
-  // we don't want NaN due to rounding errors so fudge things a bit...
-  var dh = 0;
-  var dh_squared = (da * da) + (db * db) - (dc * dc);
-  if (dh_squared > 0) {
-    dh = Math.sqrt(dh_squared);
-  }
-  var first = dl;
-  var second = dc / (1.0 + (0.045 * c1));
-  var third = dh / (1.0 + (0.015 * c1));
-  return Math.sqrt((first * first) + (second * second) + (third * third));
-};
-
-// convert an RGB value into a HSL value
-Alphabet.rgb2hsl = function(rgb) {
-  "use strict";
-  var min, max, delta, h, s, l, r, g, b;
-  if (typeof rgb == "number") {
-    r = ((rgb >> 16) & 0xFF) / 255.0;
-    g = ((rgb >> 8) & 0xFF) / 255.0;
-    b = (rgb & 0xFF) / 255.0;
-  } else {
-    r = rgb.red;
-    g = rgb.green;
-    b = rgb.blue;
-  }
-  min = Math.min(r, g, b);
-  max = Math.max(r, g, b);
-  delta = max - min;
-  l = min + (delta / 2);
-  if (max == min) {
-    h = 0; // achromatic (grayscale)
-    s = 0;
-  } else {
-    if (l > 0.5) {
-      s = delta / (2 - max - min);
-    } else {
-      s = delta / (max + min);
-    }
-    if (max == r) {
-      h = (g - b) / delta;
-      if (g < b) h += 6;
-    } else if (max == g) {
-      h = ((b - r) / delta) + 2;
-    } else {
-      h = ((r - g) / delta) + 4;
-    }
-    h /= 6;
-  }
-  return {"h": h, "s": s, "l": l};
-};
-
-// convert a HSL value into an RGB value
-Alphabet.hsl2rgb = function(hsl, output_object) {
-  "use strict";
-  function _hue(p, q, t) {
-    "use strict";
-    if (t < 0) t += 1;
-    else if (t > 1) t -= 1;
-    if (t < (1.0 / 6.0)) {
-      return p + ((q - p) * 6.0 * t);
-    } else if (t < 0.5) {
-      return q;
-    } else if (t < (2.0 / 3.0)) {
-      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
-    } else {
-      return p;
-    }
-  }
-  var r, g, b, p, q;
-  if (hsl.s == 0) {
-    // achromatic (grayscale)
-    r = hsl.l;
-    g = hsl.l;
-    b = hsl.l;
-  } else {
-    if (hsl.l < 0.5) {
-      q = hsl.l * (1 + hsl.s);
-    } else {
-      q = hsl.l + hsl.s - (hsl.l * hsl.s);
-    }
-    p = (2 * hsl.l) - q;
-    r = _hue(p, q, hsl.h + (1.0 / 3.0));
-    g = _hue(p, q, hsl.h);
-    b = _hue(p, q, hsl.h - (1.0 / 3.0));
-  }
-  if (output_object) {
-    return {"red": r, "green": g, "blue": b};
-  } else {
-    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
-  }
-};
-
-Alphabet.lighten_colour = function(rgb) {
-  "use strict";
-  var hsl = Alphabet.rgb2hsl(rgb);
-  hsl.l += (1.0 - hsl.l) * 2 / 3;
-  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
-};
-
-//======================================================================
-// end Alphabet object
-//======================================================================
-
-//======================================================================
-// start StandardAlphabet object
-//======================================================================
-
-// an extension of the alphabet object to support some additional fields 
-// only present in standard alphabets.
-var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
-  Alphabet.apply(this, [alphabet_data]);
-  this.enum_code = enum_code;
-  this.enum_name = enum_name;
-};
-StandardAlphabet.prototype = Alphabet.prototype;
-StandardAlphabet.prototype.constructor = StandardAlphabet;
-
-// A unique code for this standard alphabet.
-// This code will be a power of 2 to enable creation of bitsets for
-// a selection of standard alphabets.
-StandardAlphabet.prototype.get_code = function() {
-  return this.enum_code;
-};
-
-// A unique name for this standard alphabet.
-// this name will be all upper case and the same as the property that
-// refers to this alphabet in the AlphStd collection.
-StandardAlphabet.prototype.get_enum = function() {
-  return this.enum_name;
-};
-
-//======================================================================
-// end StandardAlphabet object
-//======================================================================
-
-// A collection of standard alphabets.
-var AlphStd = {
-  RNA: new StandardAlphabet(1, "RNA", {
-    "name": "RNA",
-    "like": "RNA",
-    "ncore": 4,
-    "symbols": [
-      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
-      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
-      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
-      {"symbol": "U", "name": "Uracil", "colour": "008000",
-        "aliases": "T"},
-      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
-      {"symbol": "V", "name": "Not U", "equals": "ACG"},
-      {"symbol": "H", "name": "Not G", "equals": "ACU"},
-      {"symbol": "D", "name": "Not C", "equals": "AGU"},
-      {"symbol": "B", "name": "Not A", "equals": "CGU"},
-      {"symbol": "M", "name": "Amino", "equals": "AC"},
-      {"symbol": "R", "name": "Purine", "equals": "AG"},
-      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
-      {"symbol": "S", "name": "Strong", "equals": "CG"},
-      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
-      {"symbol": "K", "name": "Keto", "equals": "GU"}
-    ]
-  }), 
-  DNA: new StandardAlphabet(2, "DNA", {
-    "name": "DNA",
-    "like": "DNA",
-    "ncore": 4,
-    "symbols": [
-      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
-      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
-      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
-      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
-        "aliases": "U"},
-      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
-      {"symbol": "V", "name": "Not T", "equals": "ACG"},
-      {"symbol": "H", "name": "Not G", "equals": "ACT"},
-      {"symbol": "D", "name": "Not C", "equals": "AGT"},
-      {"symbol": "B", "name": "Not A", "equals": "CGT"},
-      {"symbol": "M", "name": "Amino", "equals": "AC"},
-      {"symbol": "R", "name": "Purine", "equals": "AG"},
-      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
-      {"symbol": "S", "name": "Strong", "equals": "CG"},
-      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
-      {"symbol": "K", "name": "Keto", "equals": "GT"}
-    ]
-  }), 
-  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
-    "name": "Protein",
-    "like": "PROTEIN",
-    "ncore": 20,
-    "symbols": [
-      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
-      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
-      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
-      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
-      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
-      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
-      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
-      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
-      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
-      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
-      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
-      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
-      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
-      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
-      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
-      {"symbol": "S", "name": "Serine", "colour": "008000"},
-      {"symbol": "T", "name": "Threonine", "colour": "008000"},
-      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
-      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
-      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
-      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
-      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
-      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
-      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
-    ]
-  })
-};
-
-//======================================================================
-// start Symbol object
-//======================================================================
-var Symbol = function(alph_index, scale, alphabet) {
-  "use strict";
-  //variable prototype
-  this.symbol = alphabet.get_symbol(alph_index);
-  this.scale = scale;
-  this.colour = alphabet.get_colour(alph_index);
-};
-
-Symbol.prototype.get_symbol = function() {
-  "use strict";
-  return this.symbol;
-};
-
-Symbol.prototype.get_scale = function() {
-  "use strict";
-  return this.scale;
-};
-
-Symbol.prototype.get_colour = function() {
-  "use strict";
-  return this.colour;
-};
-
-Symbol.prototype.toString = function() {
-  "use strict";
-  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
-};
-
-function compare_symbol(sym1, sym2) {
-  "use strict";
-  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
-//======================================================================
-var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
-  "use strict";
-  var row, col, data, row_sum, delta, evalue_re;
-  if (typeof name !== "string") {
-    name = "";
-  }
-  this.name = name;
-  //construct
-  if (matrix instanceof Pspm) {
-    // copy constructor
-    this.alph_length = matrix.alph_length;
-    this.motif_length = matrix.motif_length;
-    this.name = matrix.name;
-    this.alt = matrix.alt;
-    this.nsites = matrix.nsites;
-    this.evalue = matrix.evalue;
-    this.ltrim = matrix.ltrim;
-    this.rtrim = matrix.rtrim;
-    this.pspm = [];
-    for (row = 0; row < matrix.motif_length; row++) {
-      this.pspm[row] = [];
-      for (col = 0; col < matrix.alph_length; col++) {
-        this.pspm[row][col] = matrix.pspm[row][col];
-      }
-    }
-    if (matrix.pssm != null) {
-      this.pssm = [];
-      for (row = 0; row < matrix.motif_length; row++) {
-        this.pspm[row] = [];
-        for (col = 0; col < matrix.alph_length; col++) {
-          this.pssm[row][col] = matrix.pssm[row][col];
-        }
-      }
-    }
-  } else {
-    // check parameters
-    if (ltrim == null) {
-      ltrim = 0;
-    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
-      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
-    }
-    if (rtrim == null) {
-      rtrim = 0;
-    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
-      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
-    }
-    if (nsites != null) {
-      if (typeof nsites !== "number" || nsites < 0) {
-        throw new Error("nsites must be a positive number, got: " + nsites);
-      } else if (nsites == 0) {
-        nsites = null;
-      }
-    }
-    if (evalue != null) {
-      if (typeof evalue === "number") {
-        if (evalue < 0) {
-          throw new Error("evalue must be a non-negative number, got: " + evalue);
-        }
-      } else if (typeof evalue === "string") {
-        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
-        if (!evalue_re.test(evalue)) {
-          throw new Error("evalue must be a non-negative number, got: " + evalue);
-        }
-      } else {
-        throw new Error("evalue must be a non-negative number, got: " + evalue);
-      }
-    }
-    // set properties
-    this.name = name;
-    this.alt = alt;
-    this.nsites = nsites;
-    this.evalue = evalue;
-    this.ltrim = ltrim;
-    this.rtrim = rtrim;
-    if (typeof matrix === "string") {
-      // string constructor
-      data = parse_pspm_string(matrix);
-      this.alph_length = data["alph_length"];
-      this.motif_length = data["motif_length"];
-      this.pspm = data["pspm"];
-      if (this.evalue == null) {
-        if (data["evalue"] != null) {
-          this.evalue = data["evalue"];
-        } else {
-          this.evalue = 0;
-        }
-      }
-      if (this.nsites == null) {
-        if (typeof data["nsites"] === "number") {
-          this.nsites = data["nsites"];
-        } else {
-          this.nsites = 20;
-        }
-      }
-    } else {
-      // assume pspm is a nested array
-      this.motif_length = matrix.length;
-      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
-      if (this.nsites == null) {
-        this.nsites = 20;
-      }
-      if (this.evalue == null) {
-        this.evalue = 0;
-      }
-      this.pspm = [];
-      // copy pspm and check
-      for (row = 0; row < this.motif_length; row++) {
-        if (this.alph_length != matrix[row].length) {
-          throw new Error("COLUMN_MISMATCH");
-        }
-        this.pspm[row] = [];
-        row_sum = 0;
-        for (col = 0; col < this.alph_length; col++) {
-          this.pspm[row][col] = matrix[row][col];
-          row_sum += this.pspm[row][col];
-        }
-        delta = 0.1;
-        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
-            (row_sum < 1 && (1 - row_sum) > delta)) {
-          throw new Error("INVALID_SUM");
-        }
-      }
-      // copy pssm
-      if (pssm != null) {
-        this.pssm = [];
-        for (row = 0; row < this.motif_length; row++) {
-          this.pssm[row] = [];
-          for (col = 0; col < this.alph_length; col++) {
-            this.pssm[row][col] = pssm[row][col];
-          }
-        }
-      }
-    }
-  }
-};
-
-Pspm.prototype.copy = function() {
-  "use strict";
-  return new Pspm(this);
-};
-
-Pspm.prototype.reverse = function() {
-  "use strict";
-  var x, y, temp, temp_trim;
-  //reverse
-  x = 0;
-  y = this.motif_length-1;
-  while (x < y) {
-    temp = this.pspm[x];
-    this.pspm[x] = this.pspm[y];
-    this.pspm[y] = temp;
-    x++;
-    y--;
-  }
-  // reverse pssm (if defined)
-  if (typeof this.pssm !== "undefined") {
-    //reverse
-    x = 0;
-    y = this.motif_length-1;
-    while (x < y) {
-      temp = this.pssm[x];
-      this.pspm[x] = this.pssm[y];
-      this.pssm[y] = temp;
-      x++;
-      y--;
-    }
-  }
-  //swap triming
-  temp_trim = this.ltrim;
-  this.ltrim = this.rtrim;
-  this.rtrim = temp_trim;
-  return this; //allow function chaining...
-};
-
-Pspm.prototype.reverse_complement = function(alphabet) {
-  "use strict";
-  var x, y, temp, i, row, c, temp_trim;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size of the pspm.");
-  }
-  if (!alphabet.has_complement()) {
-    throw new Error("The specified alphabet can not be complemented.");
-  }
-  // reverse motif
-  this.reverse();
-  //complement
-  for (x = 0; x < this.motif_length; x++) {
-    row = this.pspm[x];
-    for (i = 0; i < row.length; i++) {
-      c = alphabet.get_complement(i);
-      if (c < i) continue;
-      temp = row[i];
-      row[i] = row[c];
-      row[c] = temp;
-    }
-  }
-  // complement pssm (if defined)
-  if (typeof this.pssm !== "undefined") {
-    //complement
-    for (x = 0; x < this.motif_length; x++) {
-      row = this.pssm[x];
-      for (i = 0; i < row.length; i++) {
-        c = alphabet.get_complement(i);
-        if (c < i) continue;
-        temp = row[i];
-        row[i] = row[c];
-        row[c] = temp;
-      }
-    }
-  }
-  return this; //allow function chaining...
-};
-
-Pspm.prototype.get_stack = function(position, alphabet, ssc) {
-  "use strict";
-  var row, stack_ic, alphabet_ic, stack, i, sym;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size of the pspm.");
-  }
-  row = this.pspm[position];
-  stack_ic = this.get_stack_ic(position, alphabet);
-  if (ssc) stack_ic -= this.get_error(alphabet);
-  alphabet_ic = alphabet.get_ic();
-  stack = [];
-  for (i = 0; i < this.alph_length; i++) {
-    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;
-};
-
-Pspm.prototype.get_stack_ic = function(position, alphabet) {
-  "use strict";
-  var row, H, i;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size fo the pspm.");
-  }
-  row = this.pspm[position];
-  H = 0;
-  for (i = 0; i < this.alph_length; i++) {
-    if (row[i] === 0) {
-      continue;
-    }
-    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
-  }
-  return alphabet.get_ic() - H;
-};
-
-Pspm.prototype.get_error = function(alphabet) {
-  "use strict";
-  if (this.nsites === 0) {
-    return 0;
-  }
-  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
-};
-
-Pspm.prototype.get_motif_length = function() {
-  "use strict";
-  return this.motif_length;
-};
-
-Pspm.prototype.get_alph_length = function() {
-  "use strict";
-  return this.alph_length;
-};
-
-Pspm.prototype.get_left_trim = function() {
-  "use strict";
-  return this.ltrim;
-};
-
-Pspm.prototype.get_right_trim = function() {
-  "use strict";
-  return this.rtrim;
-};
-
-Pspm.prototype.as_best_match = function(alphabet) {
-  "use strict";
-  var match, odds, best_odds, best_index;
-  var i, j;
-  match = "";
-  for (i = 0; i < this.motif_length; i++) {
-    best_index = 0;
-    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
-    for (j = 1; j < this.alph_length; j++) {
-      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
-      if (odds > best_odds) {
-        best_odds = odds;
-        best_index = j;
-      }
-    }
-    match += alphabet.get_symbol(best_index);
-  }
-  return match;
-};
-
-Pspm.prototype.as_count_matrix = function() {
-  "use strict";
-  var count, count_text, text;
-  var i, j;
-  text = "";
-  for (i = 0; i < this.motif_length; i++) {
-    if (i !== 0) {
-      text += "\n";
-    }
-    for (j = 0; j < this.alph_length; j++) {
-      if (j !== 0) {
-        text += " ";
-      }
-      count = Math.round(this.nsites * this.pspm[i][j]);
-      count_text = "" + count;
-      // pad up to length of 4
-      if (count_text.length < 4) {
-        text += (new Array(5 - count_text.length)).join(" ") + count_text;
-      } else {
-        text += count_text;
-      }
-    }
-  }
-  return text; 
-};
-
-Pspm.prototype.as_probability_matrix = function() {
-  "use strict";
-  var text;
-  var i, j;
-  text = "";
-  for (i = 0; i < this.motif_length; i++) {
-    if (i !== 0) {
-      text += "\n";
-    }
-    for (j = 0; j < this.alph_length; j++) {
-      if (j !== 0) {
-        text += " ";
-      }
-      text += this.pspm[i][j].toFixed(6);
-    }
-  }
-  return text; 
-};
-
-Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
-  "use strict";
-  var me, score, out, row, col, score_text;
-  me = this;
-  if (typeof this.pssm === "undefined") {
-    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
-      throw new Error("The alphabet is required to generate the pssm.");
-    }
-    if (typeof pseudo === "undefined") {
-      pseudo = 0.01;
-    } else if (typeof pseudo !== "number" || pseudo < 0) {
-      throw new Error("Expected positive number for pseudocount");
-    }
-    score = function(row, col) {
-      "use strict";
-      var p, bg, p2;
-      p = me.pspm[row][col];
-      bg = alphabet.get_bg_freq(col);
-      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
-      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
-    };
-  } else {
-    score = function(row, col) {
-      "use strict";
-      return me.pssm[row][col];
-    };
-  }
-  out = "";
-  for (row = 0; row < this.motif_length; row++) {
-    for (col = 0; col < this.alph_length; col++) {
-      if (col !== 0) {
-        out += " ";
-      }
-      score_text = "" + score(row, col);
-      // pad out to 6 characters
-      if (score_text.length < 6) {
-        out += (new Array(7 - score_text.length)).join(" ") + score_text;
-      } else {
-        out += score_text;
-      }
-    }
-    out += "\n";
-  }
-  return out;
-}
-
-Pspm.prototype.as_pspm = function() {
-  "use strict";
-  return "letter-probability matrix: alength= " + this.alph_length + 
-      " w= " + this.motif_length + " nsites= " + this.nsites + 
-      " E= " + (typeof this.evalue === "number" ? 
-          this.evalue.toExponential() : this.evalue) + "\n" +
-      this.as_probability_matrix();
-};
-
-Pspm.prototype.as_pssm = function(alphabet, pseudo) {
-  "use strict";
-  return "log-odds matrix: alength= " + this.alph_length + 
-      " w= " + this.motif_length + 
-      " E= " + (typeof this.evalue == "number" ?
-          this.evalue.toExponential() : this.evalue) + "\n" +
-      this.as_score_matrix(alphabet, pseudo);
-};
-
-Pspm.prototype.as_meme = function(options) {
-  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
-  var out, alen, i;
-  // get the options
-  if (typeof options !== "object" || options === null) {
-    options = {};
-  }
-  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
-  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
-  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
-  if (!with_pspm && !with_pssm) with_pspm = true;
-  if (with_header) {
-    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
-      version = options["version"];
-    } else if (typeof options["version"] === "number") {
-      version = options["version"].toFixed(0);
-    } else {
-      version = "4";
-    }
-    if (typeof options["strands"] === "number" && options["strands"] === 1) {
-      strands = 1;
-    } else {
-      strands = 2;
-    }
-    if (typeof options["bg_source"] === "string") {
-      bg_source = options["bg_source"];
-    } else {
-      bg_source = "unknown source";
-    }
-    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
-        && options["alphabet"] instanceof Alphabet) {
-      alphabet = options["alphabet"];
-    } else {
-      throw new Error("The alphabet is required to generate the header.");
-    }
-  }
-  // now create the output
-  out = "";
-  if (with_header) {
-    out = "MEME version " + version + "\n\n";
-    out += alphabet.as_meme() + "\n";
-    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
-      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
-    }
-    out += "Background letter frequencies (from " + bg_source + "):\n";
-    alen = alphabet.get_size_core();
-    for (i = 0; i < alen; i++) {
-      if (i !== 0) {
-        if (i % 9 === 0) { // maximum of nine entries per line
-          out += "\n";
-        } else {
-          out += " ";
-        }
-      }
-      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
-    }
-  }
-  out += "\n\n";
-  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
-  if (with_pssm) {
-    out += "\n\n";
-    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
-  }
-  if (with_pspm) {
-    out += "\n\n";
-    out += this.as_pspm();
-  }
-  return out;
-}
-
-Pspm.prototype.toString = function() {
-  "use strict";
-  var str, i, row;
-  str = "";
-  for (i = 0; i < this.pspm.length; i++) {
-    row = this.pspm[i];
-    str += row.join("\t") + "\n";
-  }
-  return str;
-};
-
-function parse_pspm_properties(str) {
-  "use strict";
-  var parts, i, eqpos, before, after, properties, prop, num, num_re;
-  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
-  parts = trim(str).split(/\s+/);
-  // split up words containing =
-  for (i = 0; i < parts.length;) {
-    eqpos = parts[i].indexOf("=");
-    if (eqpos != -1) {
-      before = parts[i].substr(0, eqpos);
-      after = parts[i].substr(eqpos+1);
-      if (before.length > 0 && after.length > 0) {
-        parts.splice(i, 1, before, "=", after);
-        i += 3;
-      } else if (before.length > 0) {
-        parts.splice(i, 1, before, "=");
-        i += 2;
-      } else if (after.length > 0) {
-        parts.splice(i, 1, "=", after);
-        i += 2;
-      } else {
-        parts.splice(i, 1, "=");
-        i++;
-      }
-    } else {
-      i++;
-    }
-  }
-  properties = {};
-  for (i = 0; i < parts.length; i += 3) {
-    if (parts.length - i < 3) {
-      throw new Error("Expected PSPM property was incomplete. "+
-          "Remaing parts are: " + parts.slice(i).join(" "));
-    }
-    if (parts[i+1] !== "=") {
-      throw new Error("Expected '=' in PSPM property between key and " +
-          "value but got " + parts[i+1]); 
-    }
-    prop = parts[i].toLowerCase();
-    num = parts[i+2];
-    if (!num_re.test(num)) {
-      throw new Error("Expected numeric value for PSPM property '" + 
-          prop + "' but got '" + num + "'");
-    }
-    properties[prop] = num;
-  }
-  return properties;
-}
-
-function parse_pspm_string(pspm_string) {
-  "use strict";
-  var header_re, lines, first_line, line_num, col_num, alph_length, 
-      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
-      j, prob;
-  header_re = /^letter-probability\s+matrix:(.*)$/i;
-  lines = pspm_string.split(/\n/);
-  first_line = true;
-  line_num = 0;
-  col_num = 0;
-  alph_length;
-  motif_length;
-  nsites;
-  evalue;
-  pspm = [];
-  for (i = 0; i < lines.length; i++) {
-    line = trim(lines[i]);
-    if (line.length === 0) { 
-      continue;
-    }
-    // check the first line for a header though allow matrices without it
-    if (first_line) {
-      first_line = false;
-      match = header_re.exec(line);
-      if (match !== null) {
-        props = parse_pspm_properties(match[1]);
-        if (props.hasOwnProperty("alength")) {
-          alph_length = parseFloat(props["alength"]);
-          if (alph_length != 4 && alph_length != 20) {
-            throw new Error("PSPM property alength should be 4 or 20" +
-                " but got " + alph_length);
-          }
-        }
-        if (props.hasOwnProperty("w")) {
-          motif_length = parseFloat(props["w"]);
-          if (motif_length % 1 !== 0 || motif_length < 1) {
-            throw new Error("PSPM property w should be an integer larger " +
-                "than zero but got " + motif_length);
-          }
-        }
-        if (props.hasOwnProperty("nsites")) {
-          nsites = parseFloat(props["nsites"]);
-          if (nsites <= 0) {
-            throw new Error("PSPM property nsites should be larger than " +
-                "zero but got " + nsites);
-          }
-        }
-        if (props.hasOwnProperty("e")) {
-          evalue = props["e"];
-          if (evalue < 0) {
-            throw new Error("PSPM property evalue should be " +
-                "non-negative but got " + evalue);
-          }
-        }
-        continue;
-      }
-    }
-    pspm[line_num] = [];
-    col_num = 0;
-    parts = line.split(/\s+/);
-    for (j = 0; j < parts.length; j++) {
-      prob = parseFloat(parts[j]);
-      if (prob != parts[j] || prob < 0 || prob > 1) {
-        throw new Error("Expected probability but got '" + parts[j] + "'"); 
-      }
-      pspm[line_num][col_num] = prob;
-      col_num++;
-    }
-    line_num++;
-  }
-  if (typeof motif_length === "number") {
-    if (pspm.length != motif_length) {
-      throw new Error("Expected PSPM to have a motif length of " + 
-          motif_length + " but it was actually " + pspm.length);
-    }
-  } else {
-    motif_length = pspm.length;
-  }
-  if (typeof alph_length !== "number") {
-    alph_length = pspm[0].length;
-    if (alph_length != 4 && alph_length != 20) {
-      throw new Error("Expected length of first row in the PSPM to be " +
-          "either 4 or 20 but got " + alph_length);
-    }
-  }
-  for (i = 0; i < pspm.length; i++) {
-    if (pspm[i].length != alph_length) {
-      throw new Error("Expected PSPM row " + i + " to have a length of " + 
-          alph_length + " but the length was " + pspm[i].length);
-    }
-  }
-  return {"pspm": pspm, "motif_length": motif_length, 
-    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
-}
-//======================================================================
-// end Pspm object
-//======================================================================
-
-//======================================================================
-// start Logo object
-//======================================================================
-
-var Logo = function(alphabet, options) {
-  "use strict";
-  this.alphabet = alphabet;
-  this.fine_text = "";
-  this.x_axis = 1;
-  this.y_axis = true;
-  this.xlate_nsyms = 1;
-  this.xlate_start = null;
-  this.xlate_end = null;
-  this.pspm_list = [];
-  this.pspm_column = [];
-  this.rows = 0;
-  this.columns = 0;
-  if (typeof options === "string") {
-    // the old method signature had fine_text here so we support that
-    this.fine_text = options;
-  } else if (typeof options === "object" && options != null) {
-    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
-    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
-    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
-    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
-    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
-    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
-    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
-  }
-};
-
-Logo.prototype.add_pspm = function(pspm, column) {
-  "use strict";
-  var col;
-  if (typeof column === "undefined") {
-    column = 0;
-  } else if (column < 0) {
-    throw new Error("Column index out of bounds.");
-  }
-  this.pspm_list[this.rows] = pspm;
-  this.pspm_column[this.rows] = column;
-  this.rows++;
-  col = column + pspm.get_motif_length();
-  if (col > this.columns) {
-    this.columns = col;
-  }
-};
-
-Logo.prototype.get_columns = function() {
-  "use strict";
-  return this.columns;
-};
-
-Logo.prototype.get_xlate_nsyms = function() {
-  "use strict";
-  return this.xlate_nsyms;
-};
-
-Logo.prototype.get_xlate_start = function() {
-  "use strict";
-  return (this.xlate_start != null ? this.xlate_start : 0);
-};
-
-Logo.prototype.get_xlate_end = function() {
-  "use strict";
-  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
-};
-
-Logo.prototype.get_xlate_columns = function() {
-  "use strict";
-  return this.get_xlate_end() - this.get_xlate_start();
-};
-
-Logo.prototype.get_rows = function() {
-  "use strict";
-  return this.rows;
-};
-
-Logo.prototype.get_pspm = function(row_index) {
-  "use strict";
-  if (row_index < 0 || row_index >= this.rows) {
-    throw new Error("INDEX_OUT_OF_BOUNDS");
-  }
-  return this.pspm_list[row_index];
-};
-
-Logo.prototype.get_offset = function(row_index) {
-  "use strict";
-  if (row_index < 0 || row_index >= this.rows) {
-    throw new Error("INDEX_OUT_OF_BOUNDS");
-  }
-  return this.pspm_column[row_index];
-};
-
-Logo.prototype._as_eps_data = function(ssc, errbars) {
-  var i, j, pos, stack_pos, pspm, stack, sym, out;
-  out = "";
-  for (i = 0; i < this.rows; i++) {
-    out += "\nStartLine\n";
-    // Indent
-    for (j = 0; j < this.pspm_column[i]; j++) {
-      out += "() startstack\nendstack\n\n";
-    }
-    pspm = this.pspm_list[i];
-    if (pspm.get_left_trim() > 0) {
-      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
-    }
-    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
-      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
-        out += "DrawTrimEdge\nRestoreColour\n";
-      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
-        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
-      }
-      out += "(" + (pos + 1) + ") startstack\n";
-      stack = pspm.get_stack(pos, this.alphabet, ssc);
-      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
-        sym = stack[stack_pos];
-        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
-      }
-      if (errbars) {
-        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
-      }
-      out += "endstack\n\n";
-    }
-    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
-      out += "RestoreColour\n";
-    }
-    out += "EndLine\n";
-  }
-  return out;
-};
-
-Logo.prototype.as_eps = function(options) {
-  "use strict";
-  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
-  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
-  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
-
-  var LOGOHEIGHT = 7.5; // default height of line in cm
-  var cm2pts, height, width, now, ssc, errbars;
-  if (typeof options === "undefined") {
-    options = {};
-  }
-  cm2pts = 72 / 2.54;
-  if (typeof options.logo_height == "number") {
-    height = options.logo_height;
-  } else {
-    height = LOGOHEIGHT * this.rows;
-  }
-  if (typeof options.logo_width == "number") {
-    width = options.logo_width;
-  } else {
-    width = this.columns + 2;
-  }
-  now = new Date();
-  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
-  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
-  var values = {
-    "LOGOHEIGHT": height,
-    "LOGOWIDTH": width,
-    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
-    "BOUNDINGWIDTH": Math.round(width * cm2pts),
-    "LOGOLINEHEIGHT": (height / this.rows),
-    "CHARSPERLINE": this.columns,
-    "BARBITS": this.alphabet.get_ic(),
-    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
-    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
-    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
-    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
-    "TITLE": (typeof options.title == "string" ? options.title : ""),
-    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
-    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
-    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
-    "SSC": ssc,
-    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
-    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
-    "ERRBAR": errbars,
-    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
-    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
-    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
-    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
-    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
-    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
-    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
-    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
-    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
-    "COLORDICT": this.alphabet._as_eps_dict(),
-    "DATA": this._as_eps_data(ssc, errbars)
-  };
-  // now this requires that the script containing the template has been imported!
-  return motif_logo_template(values);
-};
-
-//======================================================================
-// end Logo object
-//======================================================================
-
-// calculate the exact size (in pixels) of an object drawn on the
-// canvas assuming that the background of the canvas is transparent.
-function canvas_bounds(ctx, cwidth, cheight) {
-  "use strict";
-  var data, r, c, top_line, bottom_line, left_line, right_line, 
-      txt_width, txt_height;
-
-  // extract the image data
-  data = ctx.getImageData(0, 0, cwidth, cheight).data;
-
-  // set initial values
-  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
-  txt_width = 0; txt_height = 0;
-
-  // Find the top-most line with a non-transparent 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;
-    }
-  }
-  
-  // Only bother looking if we found at least one set pixel... 
-  if (top_line != -1) {
-
-    //find the last line with a non-transparent pixel
-    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;
-      }
-    }
-    // calculate height
-    txt_height = bottom_line - top_line + 1;
-
-    // Find the left-most line with a non-transparent pixel
-    for (c = 0; c < cwidth; c++) {
-      for (r = top_line; r <= bottom_line; 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-transparent pixel
-    for (c = cwidth-1; c >= left_line; c--) {
-      for(r = top_line; r <= bottom_line; 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};
-}
-
-//======================================================================
-// 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).
-var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
-  "use strict";
-  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
-      i, sym, size, tenpercent, avg_width, scale, 
-      target_width, target_height;
-  //variable prototypes
-  this.alphabet = alphabet;
-  this.scale = logo_scale;
-  this.sym_cache = {};
-  this.stack_num_cache = [];
-  this.scale_num_cache = [];
-  // size of canvas
-  default_size = 60; // size of measuring canvas
-  safety_pad = 20; // pixels to pad around so we don't miss the edges
-  // create a canvas to do our measuring
-  canvas = document.createElement("canvas");
-  if (!canvas.getContext) throw new Error("No canvas support");
-  canvas.width = default_size + 2 * safety_pad;
-  canvas.height = default_size + 2 * safety_pad;
-  middle = Math.round(canvas.width / 2);
-  baseline = Math.round(canvas.height - safety_pad);
-  ctx = canvas.getContext('2d');
-  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
-  ctx.font = font;
-  ctx.textAlign = "center";
-  ctx.translate(middle, baseline);
-  // list of widths
-  widths = [];
-  sizes = [];
-  //now measure each letter in the alphabet
-  for (i = 0; i < alphabet.get_size_core(); ++i) {
-    // reset the canvas
-    ctx.clearRect(0, 0, canvas.width, canvas.height);
-    ctx.fillStyle = alphabet.get_colour(i);
-    // draw the test text
-    ctx.fillText(alphabet.get_symbol(i), 0, 0);
-    //measure
-    size = canvas_bounds(ctx, canvas.width, canvas.height);
-    if (size.width === 0) throw new Error("Invisible symbol!");
-    widths.push(size.width);
-    sizes[i] = size;
-  }
-  //sort the widths
-  widths.sort(function(a,b) {return a - b;});
-  //drop 10% of the items off each end
-  tenpercent = Math.floor(widths.length / 10);
-  for (i = 0; i < tenpercent; ++i) {
-    widths.pop();
-    widths.shift();
-  }
-  //calculate average width
-  avg_width = 0;
-  for (i = 0; i < widths.length; ++i) {
-    avg_width += widths[i];
-  }
-  avg_width /= widths.length;
-  // calculate the target width
-  target_width = width * this.scale * 2;
-  // calculate scales
-  for (i = 0; i < alphabet.get_size_core(); ++i) {
-    sym = alphabet.get_symbol(i);
-    size = sizes[i];
-    // calculate scale
-    scale = target_width / Math.max(avg_width, size.width);
-    // estimate scaled height
-    target_height = size.height * scale;
-    // create an appropriately sized canvas
-    canvas = document.createElement("canvas");
-    canvas.width = target_width;
-    canvas.height = target_height + safety_pad * 2;
-    // calculate the middle
-    middle = Math.round(canvas.width / 2);
-    // calculate the baseline
-    baseline = Math.round(canvas.height - safety_pad);
-    // get the context and prepare to draw the rasterized text
-    ctx = canvas.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 text
-    ctx.fillText(sym, 0, 0);
-    ctx.restore();
-    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
-  }
-};
-
-RasterizedAlphabet.prototype.get_alphabet = function() {
-  return this.alphabet;
-};
-
-RasterizedAlphabet.prototype.get_scale = function() {
-  return this.scale;
-};
-
-RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
-  "use strict";
-  var entry, image, size;
-  entry = this.sym_cache[letter];
-  image = entry.image;
-  size = entry.size;
-  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
-};
-
-RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
-  var image, image_ctx, text_length;
-  if (index >= this.stack_num_cache.length) {
-    image = document.createElement("canvas");
-    // measure the text
-    image_ctx = image.getContext('2d');
-    image_ctx.save();
-    image_ctx.font = font;
-    text_length = image_ctx.measureText("" + (index + 1)).width;
-    image_ctx.restore();
-    // resize the canvas to fit
-    image.width = Math.ceil(stack_width);
-    image.height = Math.ceil(text_length);
-    // draw the text
-    image_ctx = image.getContext('2d');
-    image_ctx.translate(Math.round(stack_width / 2), 0);
-    image_ctx.font = font;
-    image_ctx.textBaseline = "middle";
-    image_ctx.textAlign = "right";
-    image_ctx.rotate(-(Math.PI / 2));
-    image_ctx.fillText("" + (index + 1), 0, 0);
-    this.stack_num_cache[index] = image;
-  } else {
-    image = this.stack_num_cache[index];
-  }
-  ctx.drawImage(image, 0, 0);
-}
-
-RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
-  var image, image_ctx, text_size, m_length;
-  if (num >= this.scale_num_cache.length) {
-    image = document.createElement("canvas");
-    // measure the text
-    image_ctx = image.getContext('2d');
-    image_ctx.font = font;
-    text_size = image_ctx.measureText("" + num);
-    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
-      // resize the canvas to fit
-      image.width = Math.ceil(text_size.width);
-      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
-      // draw the text
-      image_ctx = image.getContext('2d');
-      image_ctx.font = font;
-      image_ctx.textAlign = "right";
-      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
-    } else {
-      // measure width of 'm' to approximate height, we double it later anyway
-      m_length = image_ctx.measureText("m").width;
-      // resize the canvas to fit
-      image.width = Math.ceil(text_size.width);
-      image.height = Math.ceil(2 * m_length);
-      // draw the text
-      image_ctx = image.getContext('2d');
-      image_ctx.font = font;
-      image_ctx.textAlign = "right";
-      image_ctx.textBaseline = "middle";
-      image_ctx.fillText("" + num, image.width, m_length);
-    }
-    this.scale_num_cache[num] = image;
-  } else {
-    image = this.scale_num_cache[num];
-  }
-  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
-}
-
-//======================================================================
-// end RasterizedAlphabet
-//======================================================================
-
-//======================================================================
-// start LogoMetrics object
-//======================================================================
-
-var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
-  "use strict";
-  var i, row_height;
-  //variable prototypes
-  this.pad_top = (has_names ? 5 : 0);
-  this.pad_left = (y_axis ? 10 : 0);
-  this.pad_right = (has_finetext ? 15 : 0);
-  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_axis = y_axis;
-  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_axis = x_axis;
-  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;
-  //calculate the width of the y axis numbers
-  ctx.font = this.y_num_font;
-  for (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)
-  if (x_axis == 1) {
-    ctx.font = this.x_num_font;
-    for (i = 1; i <= logo_columns; i++) {
-      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
-    }
-  } else if (x_axis == 0) {
-    this.x_num_height = 4;
-    this.x_num_width = 4;
-  } else {
-    this.x_num_height = 0;
-    this.x_num_width = 0;
-  }
-  
-  //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) {
-    row_height = this.stack_height + this.pad_middle;
-    if (has_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_axis ? this.y_num_height/2 : 0);
-
-  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
-  if (has_names) {
-    this.summed_height += fine_txt_total + this.name_height;
-    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
-        this.x_num_height + this.x_num_above + this.name_spacer);
-  } else {
-    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
-        this.x_num_height + this.x_num_above + fine_txt_total);
-  }
-
-  //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;
-  if (this.y_axis) {
-    //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;
-
-};
-
-//======================================================================
-// end LogoMetrics object
-//======================================================================
-
-//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
-function image_ok(img) {
-  "use strict";
-  // 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) {
-  "use strict";
-  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, raster) {
-  "use strict";
-  var tic_height, i;
-  tic_height = metrics.stack_height / alphabet_ic;
-  ctx.save();
-  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.rotate(-(Math.PI / 2));
-  ctx.textAlign = "center";
-  ctx.fillText("bits", 0, 0);
-  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);
-  for (i = 0; i <= alphabet_ic; i++) {
-    //draw the number
-    ctx.save();
-    ctx.translate(-1, 0);
-    raster.draw_scale_num(ctx, metrics.y_num_font, i);
-    ctx.restore();
-    //draw the tic
-    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
-    //prepare for next tic
-    ctx.translate(0, -tic_height);
-  }
-  ctx.restore();
-
-  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
-
-  ctx.restore();
-}
-
-function draw_stack_num(ctx, metrics, row_index, raster) {
-  "use strict";
-  ctx.save();
-  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
-  if (metrics.x_axis == 1) {
-    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
-  } else if (metrics.x_axis == 0) {
-    // draw dots instead of the numbers (good for small logos)
-    ctx.beginPath();
-    var radius = Math.round(metrics.x_num_height / 2);
-    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
-    ctx.fill();
-  }
-  ctx.restore();
-}
-
-function draw_stack(ctx, metrics, symbols, raster) {
-  "use strict";
-  var preferred_pad, sym_min, i, sym, sym_height, pad;
-  preferred_pad = 0;
-  sym_min = 5;
-
-  ctx.save();//1
-  ctx.translate(0, metrics.stack_height);
-  for (i = 0; i < symbols.length; i++) {
-    sym = symbols[i];
-    sym_height = metrics.stack_height * sym.get_scale();
-    
-    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
-    //translate past the padding
-    ctx.translate(0, -(pad/2));
-  }
-  ctx.restore();//1
-}
-
-function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
-  "use strict";
-  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
-  dx = x2 - x1;
-  dy = y2 - y1;
-  tlen = Math.pow(dx*dx + dy*dy, 0.5);
-  theta = Math.atan2(dy,dx);
-  mulx = Math.cos(theta);
-  muly = Math.sin(theta);
-  lx = [];
-  ly = [];
-  for (i = 0; i < pattern; ++i) {
-    lx.push(pattern[i] * mulx);
-    ly.push(pattern[i] * muly);
-  }
-  i = start;
-  x = x1;
-  y = y1;
-  len = 0;
-  ctx.beginPath();
-  while (len + pattern[i] < tlen) {
-    ctx.moveTo(x, y);
-    x += lx[i];
-    y += ly[i];
-    ctx.lineTo(x, y);
-    len += pattern[i];
-    i = (i + 1) % pattern.length;
-    x += lx[i];
-    y += ly[i];
-    len += pattern[i];
-    i = (i + 1) % pattern.length;
-  }
-  if (len < tlen) {
-    ctx.moveTo(x, y);
-    x += mulx * (tlen - len);
-    y += muly * (tlen - len);
-    ctx.lineTo(x, y);
-  }
-  ctx.stroke();
-}
-
-function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
-  "use strict";
-  var left_size = left_end - left_start;
-  var right_size = right_end - right_start;
-  var line_x;
-
-  ctx.save();//s8
-  ctx.fillStyle = "rgb(240, 240, 240)";
-  if (left_size > 0) {
-    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
-  }
-  if (right_size > 0) {
-    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
-  }
-  ctx.fillStyle = "rgb(51, 51, 51)";
-  if (left_size > 0 && left_divider) {
-    line_x = (left_end * metrics.stack_width) - 0.5;
-    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
-  }
-  if (right_size > 0 && right_divider) {
-    line_x = (right_start * metrics.stack_width) + 0.5;
-    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
-  }
-  ctx.restore();//s8
-}
-
-function size_logo_on_canvas(logo, canvas, show_names, scale) {
-  "use strict";
-  var draw_name, draw_finetext, metrics;
-  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
-  draw_finetext = (logo.fine_text.length > 0);
-  if (canvas.width !== 0 && canvas.height !== 0) {
-    return;
-  }
-  metrics = new LogoMetrics(canvas.getContext('2d'), 
-      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
-  if (typeof scale == "number") {
-    //resize the canvas to fit the scaled logo
-    canvas.width = metrics.summed_width * scale;
-    canvas.height = metrics.summed_height * scale;
-  } else {
-    if (canvas.width === 0 && canvas.height === 0) {
-      canvas.width = metrics.summed_width;
-      canvas.height = metrics.summed_height;
-    } else if (canvas.width === 0) {
-      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
-    } else if (canvas.height === 0) {
-      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
-    }
-  }
-}
-
-function draw_logo_on_canvas(logo, canvas, show_names, scale) {
-  "use strict";
-  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
-      offset, col_index, motif_position, ssc;
-  ssc = false;
-  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
-  draw_finetext = (logo.fine_text.length > 0);
-  ctx = canvas.getContext('2d');
-  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
-  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
-  if (typeof scale == "number") {
-    //resize the canvas to fit the scaled logo
-    canvas.width = metrics.summed_width * scale;
-    canvas.height = metrics.summed_height * scale;
-  } else {
-    if (canvas.width === 0 && canvas.height === 0) {
-      scale = 1;
-      canvas.width = metrics.summed_width;
-      canvas.height = metrics.summed_height;
-    } else if (canvas.width === 0) {
-      scale = canvas.height / metrics.summed_height;
-      canvas.width = metrics.summed_width * scale;
-    } else if (canvas.height === 0) {
-      scale = canvas.width / metrics.summed_width;
-      canvas.height = metrics.summed_height * scale;
-    } else {
-      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
-    }
-  }
-  // cache the raster based on the assumption that we will be drawing a lot
-  // of logos the same size and alphabet
-  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
-    draw_logo_on_canvas.raster_cache = [];
-  }
-  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
-    raster = draw_logo_on_canvas.raster_cache[i];
-    if (raster.get_alphabet().equals(logo.alphabet) &&
-        Math.abs(raster.get_scale() - scale) < 0.1) break;
-    raster = null;
-  }
-  if (raster == null) {
-    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
-    draw_logo_on_canvas.raster_cache.push(raster);
-  }
-  ctx = canvas.getContext('2d');
-  ctx.save();//s1
-  ctx.scale(scale, scale);
-  ctx.save();//s2
-  ctx.save();//s7
-  //create margin
-  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
-  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
-    pspm = logo.get_pspm(pspm_i);
-    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
-      ctx.font = metrics.name_font;
-      ctx.textAlign = "center";
-      ctx.fillText(pspm.name, 0, 0);
-      ctx.restore();//s4
-      ctx.translate(0, Math.round(metrics.name_height + 
-          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
-    }
-    //draw scale
-    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
-    ctx.save();//s5
-    //translate across past the scale
-    if (logo.y_axis) {
-      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
-        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
-    }
-    //draw the trimming background
-    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
-      var left_start = offset * logo.get_xlate_nsyms();
-      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
-      var left_divider = true;
-      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
-        // no overlap
-        left_start = 0;
-        left_end = 0;
-        left_divider = false;
-      } else {
-        if (left_start < logo.get_xlate_start()) {
-          left_start = logo.get_xlate_start();
-        }
-        if (left_end > logo.get_xlate_end()) {
-          left_end = logo.get_xlate_end();
-          left_divider = false;
-        }
-        left_start -= logo.get_xlate_start();
-        left_end -= logo.get_xlate_start();
-        if (left_end < left_start) {
-          left_start = 0;
-          left_end = 0;
-          left_divider = false;
-        }
-      }
-      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
-      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
-      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
-      var right_divider = true;
-      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
-        // no overlap
-        right_start = 0;
-        right_end = 0;
-        right_divider = false;
-      } else {
-        if (right_start < logo.get_xlate_start()) {
-          right_start = logo.get_xlate_start();
-          right_divider = false;
-        }
-        if (right_end > logo.get_xlate_end()) {
-          right_end = logo.get_xlate_end();
-        }
-        right_start -= logo.get_xlate_start();
-        right_end -= logo.get_xlate_start();
-        if (right_end < right_start) {
-          right_start = 0;
-          right_end = 0;
-          right_divider = false;
-        }
-      }
-      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
-    }
-    //draw letters
-    var xlate_col;
-    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
-      ctx.translate(metrics.stack_pad_left,0);
-      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
-      if (xlate_col % logo.get_xlate_nsyms() == 0) {
-        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
-          motif_position = col_index - offset;
-          draw_stack_num(ctx, metrics, motif_position, raster);
-          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
-        }
-      } else {
-        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
-          ctx.save();// s5.1
-          ctx.translate(0, Math.round(metrics.stack_height));
-          // TODO draw a dot or dash or something to indicate continuity of the motif
-          ctx.restore(); //s5.1
-        }
-      }
-      ctx.translate(Math.round(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
-  if (logo.fine_text.length > 0) {
-    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) {
-  "use strict";
-  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) {
-  "use strict";
-  var logo = new Logo(alphabet, fine_text);
-  logo.add_pspm(pspm);
-  return logo;
-}
-
-function logo_2(alphabet, fine_text, target, query, query_offset) {
-  "use strict";
-  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) {
-  "use strict";
-  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, null, 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) {
-  "use strict";
-  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, null, scale);
-  //replace the element with the canvas
-  element.parentNode.replaceChild(canvas, element);
-}
-
-/*
- * Fast string trimming implementation found at
- * http://blog.stevenlevithan.com/archives/faster-trim-javascript
- *
- * Note that regex is good at removing leading space but
- * bad at removing trailing space as it has to first go through
- * the whole string.
- */
-function trim (str) {
-  "use strict";
-  var ws, i;
-  str = str.replace(/^\s\s*/, '');
-  ws = /\s/; i = str.length;
-  while (ws.test(str.charAt(--i)));
-  return str.slice(0, i + 1);
-}
-</script>
-    <script>
-var current_motif = 0;
-var dreme_alphabet = new Alphabet(data.alphabet, data.control_db.freqs);
-
-/*
- * Create a pspm for the given motif data
- */
-function motif_pspm(m) {
-  return new Pspm(m.pwm, m.id, 0, 0, m.nsites, m.evalue);
-}
-
-/*
- * Create a count matrix from the given motif data
- */
-function motif_count_matrix(motif) {
-  return motif_pspm(motif).as_count_matrix();
-}
-
-/*
- * Create a probablity matrix from the given motif data
- */
-function motif_prob_matrix(motif) {
-  return motif_pspm(motif).as_probability_matrix();
-}
-
-/*
- * Create a minimal meme format motif from the given motif data
- */
-function motif_minimal_meme(motif) {
-  return motif_pspm(motif).as_meme({
-    "with_header": true, 
-    "with_pspm": true,
-    "with_pssm": false,
-    "version": data["version"],
-    "alphabet": dreme_alphabet,
-    "strands": (data.options.revcomp ? 2 : 1)
-  });
-}
-
-/*
- * Fill in a template variable
- */
-function set_tvar(template, tvar, value) {
-  var node;
-  node = find_child(template, tvar);
-  if (node === null) {
-    throw new Error("Template does not contain variable " + tvar);
-  }
-  node.innerHTML = "";
-  if (typeof value !== "object") {
-    node.appendChild(document.createTextNode(value));
-  } else {
-    node.appendChild(value);
-  }
-}
-
-/*
- * Make a canvas with the motif logo drawn on it. 
- */
-function make_logo(motif, height, rc) {
-  var pspm = new Pspm(motif["pwm"]);
-  if (rc) pspm = pspm.copy().reverse_complement(dreme_alphabet);
-  var logo = new Logo(dreme_alphabet);
-  logo.add_pspm(pspm, 0);
-  var canvas = document.createElement('canvas');
-  canvas.height = height;
-  canvas.width = 0;
-  draw_logo_on_canvas(logo, canvas, false);
-  return canvas;
-}
-
-/*
- * Create a button designed to contain a single symbol
- */
-function make_sym_btn(symbol, title, action) {
-  var box, sbox;
-  box = document.createElement("div");
-  box.tabIndex = 0;
-  box.className = "sym_btn";
-  sbox = document.createElement("span");
-  if (typeof symbol == "string") {
-    sbox.appendChild(document.createTextNode(symbol));
-  } else {
-    sbox.appendChild(symbol);
-  }
-  box.appendChild(sbox);
-  box.title = title;
-  box.addEventListener('click', action, false);
-  box.addEventListener('keydown', action, false);
-  return box;
-}
-
-/*
- * Create a pair of text spans with different classes.
- * This is useful when using CSS to only display one of them.
- */
-function text_pair(txt1, cls1, txt2, cls2) {
-  var container, part1, part2;
-  container = document.createElement("span");
-  part1 = document.createElement("span");
-  part1.appendChild(document.createTextNode(txt1));
-  part1.className = cls1;
-  container.appendChild(part1);
-  part2 = document.createElement("span");
-  part2.appendChild(document.createTextNode(txt2));
-  part2.className = cls2;
-  container.appendChild(part2);
-  return container;
-}
-
-/*
- * Make a colourised sequence.
- */
-function make_seq(seq) {
-  var i, j, letter, lbox, sbox;
-  sbox = document.createElement("span");
-  for (i = 0; i < seq.length; i = j) {
-    letter = seq.charAt(i);
-    for (j = i+1; j < seq.length; j++) {
-      if (seq.charAt(j) !== letter) {
-        break;
-      }
-    }
-    lbox = document.createElement("span");
-    lbox.style.color = dreme_alphabet.get_colour(dreme_alphabet.get_index(letter));
-    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
-    sbox.appendChild(lbox);
-  }
-  return sbox;
-}
-
-/*
- * Create a description element taking into account the newlines in the source text.
- */
-function make_description(text) {
-  var i, j, lines, p;
-  var container = document.createElement("div");
-  var paragraphs = text.split(/\n\n+/);
-  for (i = 0; i < paragraphs.length; i++) {
-    lines = paragraphs[i].split(/\n/);
-    p = document.createElement("p");
-    p.appendChild(document.createTextNode(lines[0]));
-    for (j = 1; j < lines.length; j++) {
-      p.appendChild(document.createElement("br"));
-      p.appendChild(document.createTextNode(lines[j]));
-    }
-    container.appendChild(p);
-  }
-  return container;
-}
-
-/*
- * Make the table header for the discovered motifs.
- */
-function make_motif_header() {
-  var row = document.createElement("tr");
-  add_text_header_cell(row, "", "", "motif_ordinal");
-  add_text_header_cell(row, "Motif", "pop_motifs_word", "motif_word");
-  add_text_header_cell(row, "Logo", "pop_motifs_logo", "motif_logo");
-  if (data.options.revcomp) {
-    add_text_header_cell(row, "RC Logo", "pop_motifs_rc_logo", "motif_logo");
-  }
-  add_text_header_cell(row, "E-value", "pop_motifs_evalue", "motif_evalue");
-  add_text_header_cell(row, "Unerased E-value", "pop_motifs_uevalue", "motif_evalue");
-  add_text_header_cell(row, "More", "pop_more", "motif_more");
-  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
-  row.className = "more";
-  return row;
-}
-
-/*
- * Make a compact motif summary row for the discovered motifs.
- */
-function make_motif_row(tbody, ordinal, motif) {
-  var row = document.createElement("tr");
-  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
-  add_text_cell(row, motif["id"], "motif_word");
-  add_cell(row, make_logo(motif, 50, false), "motif_logo");
-  if (data.options.revcomp) {
-    add_cell(row, make_logo(motif, 50, true), "motif_logo");
-  }
-  add_text_cell(row, motif["evalue"], "motif_evalue");
-  add_text_cell(row, motif["unerased_evalue"], "motif_evalue");
-  add_cell(row, make_sym_btn(text_pair("\u21A7", "less", "\u21A5", "more"), "Show more information.", function(e) { toggle_class(tbody, "collapsed"); }, "\u21A5", ""), "motif_more");
-  add_cell(row, make_sym_btn("\u21E2", "Submit the motif to another MEME Suite program or download it.", function(e) { action_show_outpop(e, ordinal); }), "motif_submit");
-  return row;
-}
-
-/*
- * Make a sortable table of enriched matching rows.
- */
-function make_motif_words(motif) {
-  var row, i, match;
-  var table = document.createElement("table");
-  var thead = document.createElement("thead");
-  row = document.createElement("tr");
-  add_text_header_cell(row, "Word", "pop_match_word", "match_word", function(e) {sort_table(this, compare_words);});
-  add_text_header_cell(row, "Positives", "pop_match_pos", "match_count", function(e) {sort_table(this, compare_counts);});
-  add_text_header_cell(row, "Negatives", "pop_match_neg", "match_count", function(e) {sort_table(this, compare_counts);});
-  add_text_header_cell(row, "P-value", "pop_match_pval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
-  add_text_header_cell(row, "E-value", "pop_match_eval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
-  thead.appendChild(row);
-  table.appendChild(thead);
-  var tbody = document.createElement("tbody");
-  for (i = 0; i < motif.matches.length; i++) {
-    match = motif.matches[i];
-    row = document.createElement("tr");
-    add_cell(row, make_seq(match.seq), "match_word");
-    add_text_cell(row, match.p + " / " + data.sequence_db.count, "match_count");
-    add_text_cell(row, match.n + " / " + data.control_db.count, "match_count");
-    add_text_cell(row, match.pvalue, "match_evalue");
-    add_text_cell(row, match.evalue, "match_evalue");
-    tbody.appendChild(row);
-  }
-  table.appendChild(tbody);
-  return table;
-}
-
-/*
- * Make an expanded view of a discovered motif.
- */
-function make_motif_exp(tbody, ordinal, motif) {
-  "use strict";
-  var box, pspm, logo_box;
-  box = $("tmpl_motif_expanded").cloneNode(true);
-  toggle_class(box, "template", false);
-  box.id = "";
-  find_child(box, "tvar_logo").appendChild(make_logo(motif, 150, false));
-  if (data.options.revcomp) {
-    find_child(box, "tvar_rclogo").appendChild(make_logo(motif, 150, true));
-  }
-  set_tvar(box, "tvar_p", motif["p"]);
-  set_tvar(box, "tvar_p_total", data.sequence_db.count);
-  set_tvar(box, "tvar_n", motif["n"]);
-  set_tvar(box, "tvar_n_total", data.control_db.count);
-  set_tvar(box, "tvar_pvalue", motif["pvalue"]);
-  set_tvar(box, "tvar_evalue", motif["evalue"]);
-  set_tvar(box, "tvar_uevalue", motif["unerased_evalue"]);
-  set_tvar(box, "tvar_words", make_motif_words(motif));
-  var cell = document.createElement("td");
-  cell.colSpan = 8;
-  cell.appendChild(box);
-  var row = document.createElement("tr");
-  row.className = "more";
-  row.appendChild(cell);
-  return row;
-}
-
-/*
- * Convert a string containing a scientific number into the log of that number
- * without having an intermediate representation of the number.
- * This is intended to avoid underflow problems with the tiny evalues that
- * MEME and DREME can create.
- */
-function sci2log(scinum) {
-  "use strict";
-  var ev_re, match, sig, exp;
-  ev_re = /^(.*)e(.*)$/;
-  if (match = ev_re.exec(scinum)) {
-    sig = parseFloat(match[1]);
-    exp = parseInt(match[2]);
-    return Math.log(sig) + (exp * Math.log(10));
-  }
-  return 0;
-}
-
-/*
- * Create a table of discovered motifs. A fresh table body is used for each
- * motif to make hiding/showing rows with css easier.
- */
-function make_motifs() {
-  "use strict";
-  var i, row, tbody, motif, ordinal;
-  // make the motifs table
-  var container = $("motifs");
-  container.innerHTML = ""; // clear content
-  var table = document.createElement("table");
-  // add a header that is always shown
-  var thead = document.createElement("thead");
-  thead.appendChild(make_motif_header());
-  table.appendChild(thead);
-  for (i = 0; i < data.motifs.length; i++) {
-    ordinal = i + 1;
-    motif = data.motifs[i];
-    tbody = document.createElement("tbody");
-    tbody.className = "collapsed";
-    tbody.appendChild(make_motif_row(tbody, ordinal, motif));
-    tbody.appendChild(make_motif_exp(tbody, ordinal, motif));
-    // create a following header for every row except the last one
-    if ((i + 1) < data.motifs.length) tbody.appendChild(make_motif_header());
-    table.appendChild(tbody);
-  }
-  container.appendChild(table);
-}
-
-/*
- * Create a table showing all the alphabet symbols, their names and frequencies.
- */
-function make_alpha_bg(alph, freqs) {
-  function colour_symbol(index) {
-    var span = document.createElement("span");
-    span.appendChild(document.createTextNode(alph.get_symbol(index)));
-    span.style.color = alph.get_colour(index);
-    span.className = "alpha_symbol";
-    return span;
-  }
-  var table, thead, tbody, row, th, span, i;
-  // create table
-  table = document.createElement("table");
-  table.className = "inputs";
-  // create header
-  thead = document.createElement("thead");
-  table.appendChild(thead);
-  row = thead.insertRow(thead.rows.length);
-  if (alph.has_complement()) {
-    add_text_header_cell(row, "Name", "pop_alph_name");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-    add_text_header_cell(row, "Name", "pop_alph_name");
-  } else {
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "Name", "pop_alph_name");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-  }
-  // add alphabet entries
-  tbody = document.createElement("tbody");
-  table.appendChild(tbody);
-  if (alph.has_complement()) {
-    for (i = 0; i < alph.get_size_core(); i++) {
-      var c = alph.get_complement(i);
-      if (i > c) continue;
-      row = tbody.insertRow(tbody.rows.length);
-      add_text_cell(row, alph.get_name(i));
-      add_text_cell(row, "" + freqs[i].toFixed(3));
-      add_cell(row, colour_symbol(i)); 
-      add_text_cell(row, "~");
-      add_cell(row, colour_symbol(c)); 
-      add_text_cell(row, "" + freqs[c].toFixed(3));
-      add_text_cell(row, alph.get_name(c));
-    }
-  } else {
-    for (i = 0; i < alph.get_size_core(); i++) {
-      row = tbody.insertRow(tbody.rows.length);
-      add_cell(row, colour_symbol(i)); 
-      add_text_cell(row, alph.get_name(i));
-      add_text_cell(row, "" + freqs[i].toFixed(3));
-    }
-  }
-  return table;
-}
-
-/*
- * Updates the format download text in the popup.
- * This is called when either the format or current motif changes.
- */
-function update_outpop_format(index) {
-  var motif = data.motifs[index];
-  var fn = [motif_count_matrix, motif_prob_matrix, motif_minimal_meme];
-  var suffix = ["_counts.txt", "_freqs.txt", ".meme"];
-  var format = parseInt($("text_format").value);
-  var text = fn[format](motif);
-  prepare_download(text, "text/plain", motif.id + suffix[format], $("outpop_text_dl"));
-  $("outpop_text").value = text;
-}
-
-/*
- * Updates the motif logos and format download text in the popup.
- * This is called whenever the current motif changes.
- */
-function update_outpop_motif(index) {
-  "use strict";
-  var motifs, motif, pspm, logo, canvas, num;
-  motifs = data["motifs"];
-  if (index < 0 || index >= motifs.length) {return;}
-  current_motif = index;
-  motif = motifs[index];
-  pspm = new Pspm(motif["pwm"]);
-  logo = new Logo(dreme_alphabet, "");
-  logo.add_pspm(pspm, 0);
-  canvas = $("outpop_logo");
-  canvas.width = canvas.width; // clear canvas
-  draw_logo_on_canvas(logo, canvas, false);
-  canvas = $("outpop_logo_rc");
-  canvas.width = canvas.width; // clear rc canvas
-  if (data.options.revcomp) {
-    pspm.reverse_complement(dreme_alphabet);
-    logo = new Logo(dreme_alphabet, "");
-    logo.add_pspm(pspm, 0);
-    draw_logo_on_canvas(logo, canvas, false);
-  }
-  num = $("outpop_num");
-  num.innerHTML = "";
-  num.appendChild(document.createTextNode("" + (index + 1)));
-  update_outpop_format(index);
-}
-
-
-/*
- * Initialise and display the download popup.
- */
-function action_show_outpop(e, ordinal) {
-  "use strict";
-  function init() {
-    "use strict";
-    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
-    var tab1, tab2, tab3;
-    var pnl1, pnl2, pnl3;
-    var format_list;
-    var tbl_submit, inputs, i, default_prog;
-    close_btn = $("outpop_close");
-    close_btn.addEventListener("click", action_hide_outpop, false);
-    close_btn.addEventListener("keydown", action_hide_outpop, false);
-    next_btn = $("outpop_next");
-    next_btn.addEventListener("click", action_outpop_next, false);
-    next_btn.addEventListener("keydown", action_outpop_next, false);
-    prev_btn = $("outpop_prev");
-    prev_btn.addEventListener("click", action_outpop_prev, false);
-    prev_btn.addEventListener("keydown", action_outpop_prev, false);
-    cancel_btn = $("outpop_cancel");
-    cancel_btn.addEventListener("click", action_hide_outpop, false);
-    do_btn = $("outpop_do");
-    do_btn.addEventListener("click", action_outpop_submit, false);
-    tab1 = $("outpop_tab_1");
-    tab1.tabIndex = 0;
-    tab1.addEventListener("click", action_outpop_tab, false);
-    tab1.addEventListener("keydown", action_outpop_tab, false);
-    tab2 = $("outpop_tab_2");
-    tab2.tabIndex = 0;
-    tab2.addEventListener("click", action_outpop_tab, false);
-    tab2.addEventListener("keydown", action_outpop_tab, false);
-    tab3 = $("outpop_tab_3");
-    tab3.tabIndex = 0;
-    tab3.addEventListener("click", action_outpop_tab, false);
-    tab3.addEventListener("keydown", action_outpop_tab, false);
-    pnl1 = $("outpop_pnl_1");
-    pnl2 = $("outpop_pnl_2");
-    pnl3 = $("outpop_pnl_3");
-    toggle_class(tab1, "activeTab", true);
-    toggle_class(tab2, "activeTab", false);
-    toggle_class(tab3, "activeTab", false);
-    pnl1.style.display = "block";
-    pnl2.style.display = "none";
-    pnl3.style.display = "none";
-    format_list = $("text_format");
-    format_list.addEventListener("change", action_outpop_format, false);
-    // setup program selection
-    tbl_submit = $("programs");
-    // when not dna, hide the inputs for programs that require dna motifs
-    toggle_class(tbl_submit, "alphabet_dna", dreme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
-    // add a click listener for the radio buttons
-    inputs = tbl_submit.querySelectorAll("input[type='radio']");
-    for (i = 0; i < inputs.length; i++) {
-      inputs[i].addEventListener("click", action_outpop_program, false);
-    }
-    // ensure that a default program option is selected for DNA and Protein
-    default_prog = document.getElementById(dreme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo");
-    default_prog.checked = true;
-    action_outpop_program.call(default_prog);
-    // disable reverse-complement when not DNA
-    $("logo_rc_option").disabled = !dreme_alphabet.has_complement(); 
-    // set errorbars on when ssc is on
-    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
-  }
-  // store the focused element
-  action_hide_outpop.last_active = document.activeElement;
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  // hide the help popup
-  help_popup();
-  // on first load initilize the popup
-  if (!action_show_outpop.ready) {
-    init();
-    action_show_outpop.ready = true;
-  }
-  update_outpop_motif(ordinal - 1);
-  // display the download popup
-  $("grey_out_page").style.display = "block";
-  $("download").style.display = "block";
-  $("outpop_close").focus();
-}
-
-/*
- * Hide the download popup.
- */
-function action_hide_outpop(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  $("download").style.display = "none";
-  $("grey_out_page").style.display = "none";
-  if (typeof action_hide_outpop.last_active !== "undefined") {
-    action_hide_outpop.last_active.focus();
-  }
-}
-
-/*
- * Show the next motif in the download popup.
- */
-function action_outpop_next(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  update_outpop_motif(current_motif + 1);
-}
-
-/*
- * Show the previous motif in the download popup.
- */
-function action_outpop_prev(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  update_outpop_motif(current_motif - 1);
-}
-
-/*
- * Highlight the selected row in the program list.
- */
-function action_outpop_program() {
-  "use strict";
-  var table, tr, rows, i;
-  tr = find_parent_tag(this, "TR");
-  table = find_parent_tag(tr, "TABLE");
-  rows = table.querySelectorAll("tr");
-  for (i = 0; i < rows.length; i++) {
-    toggle_class(rows[i], "selected", rows[i] === tr);
-  }
-}
-
-/*
- * Enable error bars when small sample correction is enabled.
- */
-function action_outpop_ssc() {
-  "use strict";
-  $("logo_err").value = $("logo_ssc").value;
-}
-
-/*
- * Submit the motif to the selected program.
- */
-function action_outpop_submit(e) {
-  "use strict";
-  var form, input, program, motifs;
-  // find out which program is selected
-  var radios, i;
-  radios = document.getElementsByName("program");
-  program = "fimo"; // default to fimo, since it works with all alphabet types
-  for (i = 0; i < radios.length; i++) {
-    if (radios[i].checked) program = radios[i].value;
-  }
-
-  motifs = motif_minimal_meme(data.motifs[current_motif]);
-  form = document.createElement("form");
-  form.setAttribute("method", "post");
-  form.setAttribute("action", site_url + "/tools/" + program);
-  
-  input = document.createElement("input");
-  input.setAttribute("type", "hidden");
-  input.setAttribute("name", "motifs_embed");
-  input.setAttribute("value", motifs);
-  form.appendChild(input);
-
-  document.body.appendChild(form);
-  form.submit();
-  document.body.removeChild(form);
-}
-
-/*
- * Download the format text.
- * Wire the link containing the data URI text to a download button so it looks
- * the same as the server submit stuff.
- */
-function action_outpop_download_motif(e) {
-  $("outpop_text_dl").click();
-}
-
-/*
- * Download the motif logo.
- * The EPS format can be calculated locally in Javascript
- */
-function action_outpop_download_logo(e) {
-  "use strict";
-  var pspm, logo, eps;
-  var logo_rc, logo_ssc, logo_width, logo_height;
-  var motif = data.motifs[current_motif];
-  if ($("logo_format").value == "0") { // EPS
-    logo_rc = ($("logo_rc").value == "1");
-    logo_ssc = ($("logo_ssc").value == "1");
-    logo_width = parseFloat($("logo_width").value);
-    if (isNaN(logo_width) || !isFinite(logo_width) || logo_width <= 0) logo_width = null;
-    logo_height = parseFloat($("logo_height").value);
-    if (isNaN(logo_height) || !isFinite(logo_height) || logo_height <= 0) logo_height = null;
-    // create a PSPM from the motif
-    pspm = motif_pspm(motif);
-    if (logo_rc) pspm.reverse_complement(dreme_alphabet);
-    logo = new Logo(dreme_alphabet);
-    logo.add_pspm(pspm, 0);
-    eps = logo.as_eps({"ssc": logo_ssc, "logo_width": logo_width, "logo_height": logo_height});
-    prepare_download(eps, "application/postscript", motif.id + ".eps");
-  } else {
-    $("logo_motifs").value = motif_minimal_meme(motif);
-    $("logo_form").submit();
-  }
-}
-
-/*
- * Change the selected tab in the download popup.
- */
-function action_outpop_tab(e) {
-  "use strict";
-  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  tab1 = $("outpop_tab_1");
-  tab2 = $("outpop_tab_2");
-  tab3 = $("outpop_tab_3");
-  pnl1 = $("outpop_pnl_1");
-  pnl2 = $("outpop_pnl_2");
-  pnl3 = $("outpop_pnl_3");
-  do_btn = $("outpop_do");
-
-  toggle_class(tab1, "activeTab", (this === tab1));
-  toggle_class(tab2, "activeTab", (this === tab2));
-  toggle_class(tab3, "activeTab", (this === tab3));
-  pnl1.style.display = ((this === tab1) ? "block" : "none");
-  pnl2.style.display = ((this === tab2) ? "block" : "none");
-  pnl3.style.display = ((this === tab3) ? "block" : "none");
-  do_btn.value = ((this === tab1) ? "Submit" : "Download");
-  do_btn.removeEventListener("click", action_outpop_submit, false);
-  do_btn.removeEventListener("click", action_outpop_download_logo, false);
-  do_btn.removeEventListener("click", action_outpop_download_motif, false);
-  if (this === tab1) {
-    do_btn.addEventListener("click", action_outpop_submit, false);
-  } else if (this === tab2) {
-    do_btn.addEventListener("click", action_outpop_download_motif, false);
-  } else {
-    do_btn.addEventListener("click", action_outpop_download_logo, false);
-  }
-}
-
-/*
- * Update the text in the download format popup.
- */
-function action_outpop_format() {
-  update_outpop_format(current_motif);
-}
-
-/*
- * Find all text nodes in the given container.
- */
-function text_nodes(container) {
-  var textNodes = [];
-  var stack = [container];
-  // depth first search to maintain ordering when flattened 
-  while (stack.length > 0) {
-    var node = stack.pop();
-    if (node.nodeType == Node.TEXT_NODE) {
-      textNodes.push(node);
-    } else {
-      for (var i = node.childNodes.length-1; i >= 0; i--) {
-        stack.push(node.childNodes[i]);
-      }
-    }
-  }
-  return textNodes;
-}
-
-/*
- * Get the text out of a specific text node.
- */
-function node_text(node) {
-  if (node === undefined) {
-    return '';
-  } else if (node.textContent) {
-    return node.textContent;
-  } else if (node.innerText) {
-    return node.innerText;
-  } else {
-    return '';
-  }
-}
-
-/*
- * Get the text contained within the element.
- */
-function elem_text(elem, separator) {
-  if (separator === undefined) separator = '';
-  return text_nodes(elem).map(node_text).join(separator);
-}
-
-/*
- * Sort all rows in the first table body based on the column of the given element and the comparison function.
- * The sort is not very fast and is intended for small tables only.
- */
-function sort_table(colEle, compare_function) {
-  //find the parent of colEle that is either a td or th
-  var i, j;
-  var cell = colEle;
-  while (true) {
-    if (cell == null) return;
-    if (cell.nodeType == Node.ELEMENT_NODE && 
-        (cell.tagName.toLowerCase() == "td" || cell.tagName.toLowerCase() == "th")) {
-      break;
-    }
-    cell = cell.parentNode;
-  }
-  //find the parent of cell that is a tr
-  var row = cell;
-  while (true) {
-    if (row == null) return;
-    if (row.nodeType == Node.ELEMENT_NODE && row.tagName.toLowerCase() == "tr") {
-      break;
-    }
-    row = row.parentNode;
-  }
-  //find the parent of row that is a table
-  var table = row;
-  while (true) {
-    if (table == null) return;
-    if (table.nodeType == Node.ELEMENT_NODE && table.tagName.toLowerCase() == "table") {
-      break;
-    }
-    table = table.parentNode;
-  }
-  var column_index = cell.cellIndex;
-  // do a bubble sort, because the tables are so small it doesn't matter
-  var change;
-  var trs = table.tBodies[0].getElementsByTagName('tr');
-  var already_sorted = true;
-  var reverse = false;
-  while (true) {
-    do {
-      change = false;
-      for (i = 0; i < trs.length -1; i++) {
-        var v1 = elem_text(trs[i].cells[column_index]);
-        var v2 = elem_text(trs[i+1].cells[column_index]);
-        if (reverse) {
-          var tmp = v1;
-          v1 = v2;
-          v2 = tmp;
-        }
-        if (compare_function(v1, v2) > 0) {
-          exchange(trs[i], trs[i+1], table);
-          change = true;
-          already_sorted = false;
-          trs = table.tBodies[0].getElementsByTagName('tr');
-        }
-      }
-    } while (change);
-    if (reverse) break;// we've sorted twice so exit
-    if (!already_sorted) break;// sort did something so exit
-    // when it's sorted one way already then sort the opposite way
-    reverse = true;
-  }
-  // put arrows on the headers
-  var headers = table.tHead.getElementsByTagName('tr');
-  for (i = 0; i < headers.length; i++) {
-    for (j = 0; j < headers[i].cells.length; j++) {
-      var cell = headers[i].cells[j];
-      var arrows = cell.getElementsByClassName("sort_arrow");
-      var arrow;
-      if (arrows.length == 0) {
-        arrow = document.createElement("span");
-        arrow.className = "sort_arrow";
-        cell.insertBefore(arrow, cell.firstChild);
-      } else {
-        arrow = arrows[0];
-      }
-      arrow.innerHTML = "";
-      if (j == column_index) {
-        arrow.appendChild(document.createTextNode(reverse ? "\u25B2" : "\u25BC"));
-      }
-    }
-  }
-}
-
-/*
- * Swap two rows in a table.
- */
-function exchange(oRowI, oRowJ, oTable) {
-  var i = oRowI.rowIndex;
-  var j = oRowJ.rowIndex;
-   if (i == j+1) {
-    oTable.tBodies[0].insertBefore(oRowI, oRowJ);
-  } if (j == i+1) {
-    oTable.tBodies[0].insertBefore(oRowJ, oRowI);
-  } else {
-    var tmpNode = oTable.tBodies[0].replaceChild(oRowI, oRowJ);
-    if(typeof(oRowI) != "undefined") {
-      oTable.tBodies[0].insertBefore(tmpNode, oRowI);
-    } else {
-      oTable.appendChild(tmpNode);
-    }
-  }
-}
-
-/*
- * Compare two E-values which may be very small.
- */
-function compare_evalues(v1, v2) {
-  var e1 = sci2log(v1);
-  var e2 = sci2log(v2);
-  if (e1 < e2) return -1;
-  else if (e1 > e2) return 1;
-  return 0;
-}
-
-/*
- * Compare two counts.
- */
-function compare_counts(v1, v2) {
-  var re = /(\d+)\s*\/\s*\d+/;
-  var m1 = re.exec(v1);
-  var m2 = re.exec(v2);
-  if (m1 == null && m2 == null) return 0;
-  if (m1 == null) return -1;
-  if (m2 == null) return 1;
-  return parseInt(m2[1]) - parseInt(m1[1]);
-}
-
-/*
- * Compare two sequence words.
- */
-function compare_words(v1, v2) {
-  return v1.localeCompare(v2);
-}
-
-
-</script>
-    <style>
-/* 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;
-  cursor: pointer;
-  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
-}
-
-div.help:hover {
-  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
-}
-
-p.spaced { line-height: 1.8em;}
-
-span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
-
-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; overflow: hidden;}
-
-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;}
-
-.explain h5 {font-size:1em; margin-left: 1em;}
-
-div.doc {margin-left: 2em; margin-bottom: 3em;}
-
-th.trainingset {
-  border-bottom: thin dashed black; 
-  font-weight:normal; 
-  padding:0px 10px;
-}
-div.pop_content {
-  position:absolute;
-  z-index:50;
-  width:300px;
-  padding: 5px;
-  background: #E4ECEC;
-  font-size: 12px;
-  font-family: Arial;
-  border-style: double;
-  border-width: 3px;
-  border-color: #AA2244;
-  display:none;
-}
-
-div.pop_content > *:first-child {
-  margin-top: 0px;
-}
-
-div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
-div.pop_content h5, div.pop_content h6, div.pop_content p {
-  margin: 0px;
-}
-
-div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
-div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
-  margin-top: 5px;
-}
-
-div.pop_content p + p {
-  margin-top: 5px;
-}
-
-div.pop_content > *:last-child {
-  margin-bottom: 0px;
-}
-
-div.pop_content div.pop_close {
-  /* old definition */
-  float:right;
-  bottom: 0;
-}
-
-div.pop_content span.pop_close, div.pop_content span.pop_back {
-  display: inline-block;
-  border: 2px outset #661429;
-  background-color: #CCC;
-  padding-left: 1px;
-  padding-right: 1px;
-  padding-top: 0px;
-  padding-bottom: 0px;
-  cursor: pointer;
-  color: #AA2244; /*#661429;*/
-  font-weight: bold;
-}
-
-div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
-  border-style: inset;
-}
-
-div.pop_content span.pop_close {
-  float:right;
-  /*border: 2px outset #AA002B;*/
-  /*color: #AA2244;*/
-}
-
-div.pop_content:not(.nested) .nested_only {
-  display: none;
-}
-
-div.pop_back_sec {
-  margin-bottom: 5px;
-}
-
-div.pop_close_sec {
-  margin-top: 5px;
-}
-
-table.hide_advanced tr.advanced {
-  display: none;
-}
-span.show_more {
-  display: none;
-}
-table.hide_advanced span.show_more {
-  display: inline;
-}
-table.hide_advanced span.show_less {
-  display: none;
-}
-
-
-/*****************************************************************************
- * Program logo styling
- ****************************************************************************/
-div.prog_logo {
-  border-bottom: 0.25em solid #0f5f60;
-  height: 4.5em;
-  width: 24em;
-  display:inline-block;
-}
-div.prog_logo img {
-  float:left;
-  width: 4em;
-  border-style: none;
-  margin-right: 0.2em;
-}
-div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
-  margin:0;
-  padding:0;
-  font-family: Arial, Helvetica,  sans-serif;
-  font-size: 3.2em;
-  line-height: 1em;
-  vertical-align: top;
-  display: block;
-  color: #026666;
-  letter-spacing: -0.06em;
-  text-shadow: 0.04em 0.06em 0.05em #666;
-}
-div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
-  display: block;
-  margin:0;
-  padding:0;
-  font-family: Helvetica, sans-serif;
-  font-size: 0.9em;
-  line-height: 1em;
-  letter-spacing: -0.06em;
-  color: black;
-}
-
-div.big.prog_logo {
-  font-size: 18px;
-}
-
-</style>
-    <style>
-/* dreme output specific css */
-div.header {
-  position: relative;
-  overflow: hidden;
-  margin-top: 15px;
-  margin-bottom: 5px;
-  margin-right: 3px;
-  margin-left: 3px;
-}
-div.header > h2 {
-  font-size: 1.5em;
-  font-style: normal;
-  margin: 0;
-  font-variant: small-caps; 
-  font-family: Georgia, "Times New Roman", Times, serif;
-}
-div.header > span {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-}
-
-div.template {
-  position: absolute;
-  z-index: 1;
-  left: 0;
-  top: 0;
-  visibility: hidden;
-}
-
-div.sym_btn {
-  display:inline-block;
-  text-decoration: underline;
-  cursor: pointer;
-  font-size: 20px;
-  line-height:20px; 
-  text-align: center;
-  width: 20px;
-  height: 20px;
-  color: blue;
-}
-div.sym_btn:hover {
-  color: white;
-  background-color: blue;
-}
-
-div.sym_btn.positioned {
-  position: absolute;
-  top: 0px;
-}
-
-div.box + div.box {
-  margin-top: 5px;
-}
-
-th.motif_ordinal {
-
-}
-td.motif_ordinal {
-  text-align: right;
-  padding-right: 10px;
-  font-weight: bold;
-  font-size: large;
-}
-th.motif_word {
-  padding-right: 10px;
-}
-td.motif_word {
-  font-size:15px; 
-  font-family: 'Courier New', Courier, monospace;
-  padding-right: 10px;
-}
-th.motif_logo {
-  padding-right: 10px;
-}
-td.motif_logo {
-  padding-right: 10px;
-}
-th.motif_evalue {
-  text-align:right;
-  padding-right: 10px;
-}
-td.motif_evalue {
-  text-align: right;
-  white-space: nowrap;
-  padding-right: 20px;
-}
-th.motif_more {
-  padding: 0 5px;
-}
-td.motif_more {
-  text-align: center;
-  padding: 0 5px;
-}
-th.motif_submit {
-  padding: 0 5px;
-}
-td.motif_submit {
-  text-align: center;
-  padding: 0 5px;
-}
-th.match_word {
-  padding-right: 10px;
-}
-td.match_word {
-  padding-right: 10px;
-  font-weight: bold;
-  font-size: large; 
-  font-family: 'Courier New', Courier, monospace;
-}
-th.match_evalue, th.match_count {
-  text-align: right;
-  padding-right: 10px;
-}
-td.match_evalue, td.match_count {
-  text-align: right;
-  white-space: nowrap;
-  padding-right: 20px;
-}
-
-div.tabArea {
-  font-size: 80%;
-  font-weight: bold;
-}
-
-.norc div.tabArea {
-  display: none;
-}
-
-span.tab, span.tab:visited {
-  cursor: pointer;
-  color: #888;
-  background-color: #ddd;
-  border: 2px solid #ccc;
-  padding: 2px 1em;
-  text-decoration: none;
-}
-span.tab.middle {
-  border-left-width: 0px;
-}
-div.tabArea.base span.tab {
-  border-top-width: 0px;
-}
-div.tabArea.top span.tab {
-  border-bottom-width: 0px;
-}
-
-span.tab:hover {
-  background-color: #bbb;
-  border-color: #bbb;
-  color: #666;
-}
-span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
-  background-color: white;
-  color: black;
-  cursor: default;
-}
-div.tabMain {
-  border: 2px solid #ccc;
-  background-color: white;
-  padding: 10px;
-}
-div.tabMain.base {
-  margin-top: 5px;
-  display: inline-block;
-  max-width: 98%;
-}
-
-div.tabMain.top {
-  margin-bottom: 5px;
-}
-
-div.grey_background {
-  position:fixed; 
-  z-index: 8;
-  background-color: #000;
-  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
-  opacity: 0.5;
-  left: 0;
-  top: 0;
-  width: 100%;
-  height: 100%;
-}
-
-div.popup_wrapper {
-  position:fixed; 
-  z-index:9;
-  width:100%; 
-  height:0; 
-  top:50%; 
-  left:0;
-}
-
-div.popup {
-  width: 600px; 
-  z-index:9;
-  margin-left: auto;
-  margin-right: auto;
-  padding: 5px;
-  background-color: #FFF;
-  border-style: double;
-  border-width: 5px;
-  border-color: #00666a;
-  position:relative; 
-}
-div.close {
-  cursor: pointer;
-  border: 1px solid black; 
-  width:15px; 
-  height:15px; 
-  line-height:15px; /* this causes vertical centering */
-  text-align:center; 
-  background-color:#FFF; 
-  color:#000; 
-  font-size:15px;
-  font-family:monospace;
-}
-
-div.close:hover {
-  color:#FFF;
-  background-color:#000; 
-}
-
-div.navnum {
-  width:100%; 
-  height:20px; 
-  line-height:20px; 
-  text-align:center; 
-  font-size:medium;
-}
-
-div.navarrow {
-  font-size: 30px;
-  text-decoration:none;
-  cursor: pointer;
-  -moz-user-select: none;  
-  -webkit-user-select: none;  
-  -ms-user-select: none;
-}
-
-div.navarrow > span.inactive {
-  display: inline;
-}
-div.navarrow > span.active {
-  display: none;
-}
-
-div.navarrow:hover > span.active {
-  display: inline;
-}
-div.navarrow:hover > span.inactive {
-  display: none;
-}
-
-table.programs {
-  width: 100%;
-}
-
-table.programs tr {
-  background-color: #EFE;
-}
-
-table.programs tr.selected {
-  background-color: #262;
-  color: #FFF;
-}
-
-table.programs tr.dna_only {
-  display: none;
-}
-
-table.programs.alphabet_dna tr.dna_only {
-  display: table-row;
-}
-
-table.inputs {
-  margin-top: 20px;
-  border-collapse:collapse;
-}
-table.inputs * td, table.inputs * th {
-  padding-left: 15px;
-  padding-right: 15px;
-  padding-top: 1px;
-  padding-bottom: 1px;
-}
-
-/* program settings */
-span.strand_none, span.strand_given, span.strand_both {
-  display: none;
-}
-td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
-  display: inline;
-}
-
-/* show the expanded motif only when the collapsed one is hidden */
-tbody *.less, tbody.collapsed *.more {
-  display: none;
-}
-
-tbody.collapsed *.less {
-  display: inline;
-}
-
-</style>
-  </head>
-  <body data-scrollpad="true">
-    <!--  -->
-    <div id="grey_out_page" class="grey_background" style="display:none;">
-    </div>
-
-    <!-- Help popups -->
-    <div class="pop_content" id="pop_">
-      <p>Help poup.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_motifs_word">
-      <p>
-        The name of the motif uses the IUPAC codes for nucleotides which has 
-        a different letter to represent each of the 15 possible combinations.
-      </p>
-      <p>
-        The name is itself a representation of the motif though the position
-        weight matrix is not directly equalivant as it is generated from the
-        sites found that matched the letters given in the name.
-      </p>
-      <p>
-        <a id="doc_alphabets_url" href="#">
-        Read more about the MEME suite's use of the IUPAC alphabets.
-        </a>
-        <script>$("doc_alphabets_url").href = site_url + "/doc/alphabets.html";</script>
-      </p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_logo">
-      <p>The logo of the motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_rc_logo">
-      <p>The logo of the reverse complement motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_evalue">
-      <p>The E-value is the enrichment p-value times the number of candidate 
-        motifs tested.</p>
-      <p>The enrichment p-value is calculated using Fisher's Exact Test for 
-        enrichment of the motif in the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_uevalue">
-      <p>The E-value of the motif calculated without erasing the sites of 
-        previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_more">
-      <p>Show more information on the motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_submit_dl">
-      <p>Submit your motif to another MEME Suite program or download your motif.</p>
-      <h5>Supported Programs</h5>
-      <dl>
-        <dt>Tomtom</dt>
-        <dd>Tomtom is a tool for searching for similar known motifs. 
-          </dd>
-        <dt>MAST</dt>
-        <dd>MAST is a tool for searching biological sequence databases for 
-          sequences that contain one or more of a group of known motifs.
-          </dd>
-        <dt>FIMO</dt>
-        <dd>FIMO is a tool for searching biological sequence databases for 
-          sequences that contain one or more known motifs.
-          </dd>
-        <dt>GOMO</dt>
-        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
-          terms) for DNA binding motifs.
-          </dd>
-        <dt>SpaMo</dt>
-        <dd>SpaMo is a tool for inferring possible transcription factor
-          complexes by finding motifs with enriched spacings.
-          </dd>
-      </dl>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_positives">
-      <p># positive sequences matching the motif / # positive sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_negatives">
-      <p># negative sequences matching the motif / # negative sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_pvalue">
-      <p>The p-value of Fisher's Exact Test for enrichment of the motif in 
-        the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_evalue">
-      <p>The E-value is the motif p-value times the number of candidate motifs 
-        tested.</p>
-      <p>Note that the p-value was calculated with counts made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_uevalue">
-      <p>The E-value of the motif calculated without erasing the sites of 
-        previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_word">
-      <p>All words matching the motif whose uncorrected p-value is less than
-      <span id="help_add_pv_thresh"></span>.</p>
-      <script>$("help_add_pv_thresh").innerHTML = data.options.add_pv_thresh;</script>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_pos">
-      <p># positive sequences with matches to the word / # positive sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_neg">
-      <p># negative sequences with matches to the word / # negative sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_pval">
-      <p>The p-value of Fisher's Exact Test for enrichment of the word in 
-        the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_eval">
-      <p>The word p-value times the number of candidates tested.</p>
-      <p>Note that the p-value was calculated with counts made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_seq_source">
-      <p>The sequence file used by DREME to find the motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_seq_alph">
-      <p>The alphabet of the sequences.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_seq_count">
-      <p>The count of the sequences.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_alph_name">
-      <p>The name of the alphabet symbol.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_alph_control">
-      <p>The frequency of the alphabet symbol in the control dataset.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <!-- templates -->
-
-    <div class="template box expanded_motif" id="tmpl_motif_expanded">
-      <div>
-        <span class="tvar_logo"></span>
-        <span class="tvar_rclogo"></span>
-      </div>
-      <h4>Details</h4>
-      <table class="details">
-        <thead>
-          <tr>
-            <th class="match_count">Positives <div class="help" data-topic="pop_motif_positives"></div></th>
-            <th class="match_count">Negatives <div class="help" data-topic="pop_motif_negatives"></div></th>
-            <th class="match_evalue">P-value <div class="help" data-topic="pop_motif_pvalue"></div></th>
-            <th class="match_evalue">E-value <div class="help" data-topic="pop_motif_evalue"></div></th>
-            <th class="match_evalue">Unerased E-value <div class="help" data-topic="pop_motif_uevalue"></div></th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr>
-            <td class="match_count">
-              <span class="tvar_p"></span> / <span class="tvar_p_total"></span>
-            </td>
-            <td class="match_count">
-              <span class="tvar_n"></span> / <span class="tvar_n_total"></span>
-            </td>
-            <td class="tvar_pvalue match_evalue"></td>
-            <td class="tvar_evalue match_evalue"></td>
-            <td class="tvar_uevalue match_evalue"></td>
-          </tr>
-        </tbody>
-      </table>
-      <h4>Enriched Matching Words</h4>
-      <div class="tvar_words"></div>
-    </div>
-
-
-    <div class="popup_wrapper">
-      <div class="popup" style="display:none; top: -150px;" id="download">
-        <div>
-          <div style="float:right; ">
-            <div id="outpop_close" class="close" tabindex="0">x</div>
-          </div>
-          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
-          <div style="clear:both"></div>
-        </div>
-          <div style="height:100px">
-            <div style="float:right; width: 30px;">
-              <div id="outpop_prev" class="navarrow" tabindex="0">
-                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
-              </div>
-              <div id="outpop_num" class="navnum"></div>
-              <div id="outpop_next" class="navarrow" tabindex="0">
-                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
-              </div>
-            </div>
-            <div id="logo_box" style="height: 100px; margin-right: 40px;">
-              <canvas id="outpop_logo" height="100" width="250"></canvas>
-              <canvas id="outpop_logo_rc" height="100" width="250"></canvas>
-            </div>
-          </div>
-          <div>
-            <!-- tabs start -->
-            <div class="tabArea top">
-              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
-                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
-                id="outpop_tab_3" class="tab middle">Download Logo</span>
-            </div>
-            <div class="tabMain top">
-              <!-- Submit to another program -->
-              <div id="outpop_pnl_1">
-                <h4 class="compact">Submit to program</h4>
-                <table id="programs" class="programs">
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
-                    <td><label for="submit_tomtom">Tomtom</label></td>
-                    <td><label for="submit_tomtom">Find similar motifs in
-                        published libraries or a library you supply.</label></td>
-                  </tr>
-                  <tr>
-                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
-                    <td><label for="submit_fimo">FIMO</label></td>
-                    <td><label for="submit_fimo">Find motif occurrences in
-                        sequence data.</label></td>
-                  </tr>
-                  <tr>
-                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
-                    <td><label for="submit_mast">MAST</label></td>
-                    <td><label for="submit_mast">Rank sequences by affinity to
-                        groups of motifs.</label></td>
-                  </tr>
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
-                    <td><label for="submit_gomo">GOMo</label></td>
-                    <td><label for="submit_gomo">Identify possible roles (Gene
-                        Ontology terms) for motifs.</label></td>
-                  </tr>
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
-                    <td><label for="submit_spamo">SpaMo</label></td>
-                    <td><label for="submit_spamo">Find other motifs that are
-                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
-                  </tr>
-                </table>
-              </div>
-              <!-- download text format  -->
-              <div id="outpop_pnl_2">
-                <div>
-                  <label for="text_format">Format:</label>
-                  <select id="text_format">
-                    <option value="0">Count Matrix</option>
-                    <option value="1">Probability Matrix</option>
-                    <option value="2">Minimal MEME</option>
-                  </select>
-                </div>
-                <textarea id="outpop_text" name="content"
-                  style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
-                  rows="8" readonly="readonly" wrap="off"></textarea>
-                <a id="outpop_text_dl" download="meme.txt" href=""></a>
-              </div>
-              <!-- download logo format -->
-              <div id="outpop_pnl_3">
-                <form id="logo_form" method="post" action="">
-                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
-                  <input type="hidden" name="program" value="DREME"/>
-                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
-                  <table>
-                    <tr>
-                      <td><label for="logo_format">Format:</label></td>
-                      <td>
-                        <select id="logo_format" name="png">
-                          <option value="1">PNG (for web)</option>
-                          <option value="0">EPS (for publication)</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_rc">Orientation:</label></td>
-                      <td>
-                        <select id="logo_rc" name="rc1">
-                          <option value="0">Normal</option>
-                          <option value="1" id="logo_rc_option">Reverse Complement</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
-                      <td>
-                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
-                        <select id="logo_ssc" name="ssc">
-                          <option value="0">Off</option>
-                          <option value="1">On</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_width">Width:</label></td>
-                      <td>
-                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_height">Height:</label></td>
-                      <td>
-                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
-                      </td>
-                    </tr>
-                  </table>
-                </form>
-              </div>
-              <!-- Buttons -->
-              <div>
-                <div style="float:left;">
-                  <input type="button" id="outpop_do" value="Submit" />
-                </div>
-                <div style="float:right;">
-                  <input id="outpop_cancel" type="button" value="Cancel" />
-                </div>
-                <div style="clear:both;"></div>
-              </div>
-            </div>
-        </div>
-      </div>
-    </div>
-
-
-
-    <!-- Page starts here -->
-    <div id="top" class="pad1">
-      <div class="prog_logo big">
-        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAAAd0SU1FB9wLGwYBMoyhiwgAACAASURBVHja7Z13fFRV9sC/503JpIeaKFVREBQVEEFFQVcUuyDouuraFoVV17IrayPjDP4U3XXXhrpiXxuKKF1dV8WCiEgXRUAQlJIYAilMf+f3x3szmVSSkICyOR/eh8wr9717z7mn3XPOhRZogRbYLQiQJiJGy1D8D0LHjh1/XrZsmQK9gU3Ap0mE0QL7KTx411136Z///GdV1ZhpmvrYY4+pqsZUVceNG6dAz5Zh2j/hnpKSEtM0TVVVrfq/qmosFtMxY8Yo8CPQHejucDjyfm0dbZFp1WGaxmJ3ppSWSiQUIhQKIWJxehGhpKSE1LQ0uvfowQHZ2exYt65D8dq1qzUaXR2LxTYCP7UM4a8MVFWA9mY0+nLhmjV63LHH6vMvvKATJkzQfn366CtPPKEDjjtOV61apeeedZZqMKgaCKju2KFmYaFqJKJaWqqqqoACR/9a+u5sQT+IiD77zDPbKCnR00aOZPHSpcydO5fLf/972rdvTzgcZsEnnzDmqquYPmsW/PxzxbMOB4NPOokRZ5+tB3XrJsAUYKmqOkQkVuVVKUBGDRbGz/vSvPlfBHcVDpB7XP/+Gz9/5x1mzJ/P1i1buPbaa1m/fj1du3alW5curPvqqxobCoVCpKSkIO3a1Wc89bCuBy51OZwu1RgiBqGYGf1uw09/Bd5t4QDNT+wKfPXoxIl9jzm6gkt/OmsWn3/4oRIMyrfLlzPuzjvp27cvHTt2ZNGXX+K/7baaW8zJITM1lflz5wL8ZtWqVWm9evXaVcv7Q2cN6hM68tAuR2MIhirFpUEef+MdBFK1RQQ0v6g/MC9PLxk5Uq+/7joIBECSJmwwKKqKR4RTTjyR0885h2effZaNa9Ywa9YstKQkoQzGwSwuJhwIwK5ddO3a9b+9evWqjQPoSf16qUOQles2gYLL5WDaBwu5dtSw8L/eeKdFB2huaJWTo0NOOMF8wOs1qiG/QhfghtGj+dMNN4DblhJlZVBaWg35AIYI7NgBbjcbNmwwjz766I+WLl16OfCDfUs3YB3AAdke6d7tYNR2Jv6wuZA2rbIwxbFPxfD/jBn4t7vv5uUnnzRsTNelEEIoBKWl1qH1YM7hMAXffWcsWbBgMLAB+AgoAtYC5SJCp86dUTPG89M/ACASi1mDH4u2+AH2Bvzhpps+p3Xrmi+mp2Oa5h613y4nh1WLFuHxeHTq1KmDVbWVqjJjxozU4cOH88rsj1FXKteMOh3D4eQ/ny/hjnwfn32zyWUYxtAWK6D54YW1X355WbcePSr32elk1EUX8cYbb1gzvvG+BEzA2b49msQ1RARVZe7cuTzzjwl079qB6R8s4PhThjF58mQADjroIDZs2CAtBLAXFMEaTwaDe4R8ALKzEbcbVUVVE4hP/t/lctGnTx9+c8op3HvffQm9YubMmZx77rlic2Rzbw7I/5oreNzJgwapqqI7dqA7d1pHSUnyVG5Uw0MGD6agoCCB7IQ+kcQFIpEIkydPZszYsQmuoaqEw2H95JNPdOHChTHgervJT4DTWzhA08OjwGWT7r8/u3xXhckei8W47c47obwcMjMtsy9OEHUojdhI/M2oUXwwb16dIqKqJVFaWkJmZlal60OGDJk7b968M1SVsWPH8uSTTxYC7WmBvQIbV6xcGQK0aM0a3bRsmW5fu1b1559NLSzUakdBgXXYawC7A0CXLVtW7fzMmTOrnTNNU03T1OXLl5u1ia4WaA4lQbXVmDFjcoFcIHfJ0qUXqKqaBQXVCMC0kZ+MtNogEAjoli1bar0ef/bee++tiXDMFszsQ+jbt+/r1111leqOHZWJIBBQ7913azgc1qaAeABCVUKqQgBvAO8BL7RgZu9xhd6nnnpqNLpzp8559VXVkhL9ZOZM/X79+j1Bdm1sP2KaZix+rqioSBctWqSqejPw2KhRo+IPxjp06KC0rOg2p82AkE8O4zkbiAJ6ySWXVJLRjUW2qmqrVq30+eefr3RrFWYQf4+pqjpq1Khq7zYMY4/0g5agxppgPCnARcC1GPRFSUF5gAn0VNVz69vMkiVLWLNmDRdeeGGt93Tu3JmNGzfu1slkGAZbt24lNze30jWHw4Fpmo3GYwv7SIY7GYKD8UA/INteQFaKEL7iqBNPPPHYhjTXp08f+vTpU+O1rVu38sc//pE5c+ZgmiaGUbtLJu5HqMNdfYXT6VwdjUY/b+EAdXm9DMNlmmYrAA/I6SKe6ao/JM38v2Pw52oPrgV9Seu06RugTzT62ZogNzeXbdu2ISIYhpFmmmagxRNYC7Gbptlnw5Il29Z/9dW2H1ev3jpddQPwQ79+/f5k32NNsSpStdeSXonZ99JLL+0RAkWEG2+8samUU7Zt2xb3KKppmptbREAd43Vwly5fdDniCLS42DoRDILb3fnRiRPzLzzrrIdVlX9MeoKCw36GSMUIpaWlJVh0UVHRHiPt4YcfbhqKruxyFiDUIsfrhpWAfjprlpplZVZUb1UHTyBgRfnGD1Xt0KlTvR0++xIcDodecMEFCvxDVXv/79nrM2lnzuAanUWdnV8InzocDu104IGqO3aY+vPPWqOrt7BQdds2jcRijTLzmsg5VO93RCyCNa+88kotKCgosTnC6f8rIkD/PGcsQ044AYAZL9XOgkdfdlnxibEYuzZvjkpOjrN1q1Yc1Llz4p4Lzz+fcePH21qBidMwGDhwIA8++CAn2O1XZcWjR4/mmmuuoX///k2ruIjw9ttvc/755+9enjudAGIYBu3atctUVXr16vXOqlWrOovIpv169pszeX/yP/9Z+0xOPqLRymy+yvHp7Nl61tChetbQoTpt6tRaF2x+qSLh6quvTvw9adIkE3hrw4YNjv3WDNSZDEZ5/6Hl9zhvGjsWzKZbOykH0tu2Tdjie9H9XCmYpCHPjR49mqeffjqZi5iq+jQwVkTM/c4MVCUfcM564y6u+8ufmxRRV1xxxb6xWUUSR0Ofa2clqdgSzOTVV181otHoNTNnzjxjv9MBzBl0EeUUNeD9e2Dkfc/z53xPnUGeN4wezcFHHlmvwX1j1iwAJk6cuNf7tmLFit16CavCww8/jMPhSHZ+sWDBAi688EL97W9/O0tVPSIS2m9EgDmda8XgSRRFKvqjigooQh85h+Xx819BaxO2nQ/ODGAjrA5A9WyeTA4kg1y2UCnO75cOJ510Eh9//HGN10aOHKmLFi2a98MPP5y834gAEYaikIx8+7wAhpr8oabnpgMvA5/Av4C+1Y5bWMRoIJUXBg0apL8G5KsqH3/8cY0iUFWZOnWqnHfeeUNUtcPeJoBUwFPHkdoYbqQ+BBiitYVMWYs57iqnYskv0trEoGlzjXGMX7du3R3RaNMlcDz55JN1c7VGKrFVg1DjiE++duutt6phGAtV1dhbBHBW6+zM0iM6tSkccFTPwv6HH1o44KiehUd0ap34PahPr0Kga4MJ4CjOUWgjUgvxKIiDc8yZpMVPReEkrZ/uk2hz69atr7344ot2i3sOY8aMqRXJt99+e40yf9q0aU2iRHbs2FEGDhx4wPr1689sbiXwcDEck3My044ePWKo4dRwRjQUILPtgZRt34rDeTCxWJSs1rk8PmUOKSkeCYWCDSR5OiXQpLYggLCCS8TCv0CmmBWELtDNThPeKZBdzzdtuPrqqyU1NVXPPPNMsrKyqs26hkJtil12dnaN7HvEiBEN1kPatGnD9OnTOe+88yqdnzRpkoiIpzk5wMnZGWkrhxxz+HG3XHRqqsPplPKyMlxZ7dkVCODMaEtZeRlpOe3419S5dOt8ANFYrDHy/5i4wocgKH9Xg0MFvkiewVolqNKexu+p5TFIq+/7fve733Wcm5PzStzbJyK43e4mHbjbbrutmgyvmmdQX+jatSu1ia4tW7asbS4O0Mntcn5wxx9GaUlJiQQiiivFQKNhHAaEy8pwuj1kt8njqTfepXvXA+nToyvzvlzZCK2HYxGsf8oKPNxunE5U3+Kv6uBdBI8qHlEOB76sLiBQA04GfPV840/dIPDEV1/dd5lhXP0TLAmrzveIyKlnnXV3z549uSknp/Qf27dnDh06lGHDhu2RLG+M4ygOmzZt4swzz+SCCy6o8f7PPvtsS3MRwPI22Zn61LT3JRwoQw0noIg4UP0Wp8uNwzAQEbp3PZDB/Xqxs2xXwzs8B6dGcNvs3BST2+V0ogAynI/N6SwTYYCCC8FTnQEkwNEwqYNDwbgZCoAPROSBL6CLMXv2rctmz85eC5suX7Yss3fv5lmMi0QiqGo1ziMiZGdns2LFCjp37kynTp3w+/01EoqtDJY0FwEEI6FAzgF5OQw6vi/ZuZ2qsDTFYRj4n5pKSXmAwcc0cqBCHC0ODrFlf1TdLK6CqWUKA5IxvhwkDCfsoSY3AHhCLQKIZ+x4gNgy0KOgpP9RR5kh1QNVVZrafEx28lRF7M6dO+vFXbZt2zYzLiKbRQfof2QvBg/sh5HZlrJdAcp2BSgPBO0jRFnAUvaGDuhNWKVR+XhacQiwQkJsq9RRk9fFVgvjKCgHUTjY/j0TCNOApItnraacWAUgNgI9kr4n8Hu4HejxCVwhIufbkT9ah07RoD5PmTIFwzBqVCDrS2hjxozh0ksvzW1WP4DGPTGqlO/4GTEMMGMJRBticGiXA4hEYxAO1J17V7sCmJpkq70vw6shsrwWV6fadPGFQkSg+6dW9a7dQtuK7glgSAXxuA3IFbgnaQhmPvroo2kvvviiTJkyhfnz51ebsa+++mqD+nzRRRdVUxAbsu6hqvztb3/ToqKi9LfeessNuJqFAFJcTsx4UqXhsIY8o03i7x+3FfH1uk10ymvbKOTbLP4uxEaFWb3CVtw5ZP9f0yw37OttU6mkI9QK7SALONh+7geFTp9bhHBI8jsdkGkTQeDyyy+XRy6++MCJQ4aQ4jJwuxy4nQYOw2DqM4/w6KOPNsi/EJ/p4XCYYDCIiDBz5sz6IF9FhKysLFHVZ4YPH74DiDQLAfxnwTI8bhcA6QceCmrCrh1JyFGcDgebC7ZbMe+N0XohB0BNtkuUFdUNapYqrBTlWnawIPnRKm8z+sHO+rzTsPP3HfCdAcUKrRwWAcTZglj0WNmpNV+15OgLYMLYU/nsoYP4+w0D6NPzIFYu/YqbLDEhDZ3NW7duZf369agq55xzTr0IZ+TIkfTs2fMqEflns4qAXcEQD7000+pQeBehcMTqY0paJXZkGILDYbDw63UYTkcjGQGFMrJ6oUXjZEKEOEHOZbJcTsy+1wW018revtKvbGKqr3SzxYgA6tiNFxFg1nhy+x4coaA0g+8Lc1mxqSsOw8CMmYrAIYcc8pWIMGHCBD744IN4mjGzZ8+u9UM6d+5Mz5496yP7TWDh+PHj5c0337z5m2++eS75YnNYAUuBYcUlZRTtLKNtNjhTMyAWhkAJVCm57zAMPl60ktRUD4FG+Nu1jjUEYxQlVe51A22A4hDsTIEihdxwPXUAJ7QywWXP9gKgvQluhSyjMmEkOqmzOBqTawpLiKalf+WcumQkaZ7VRCMRwsEyycnKCq9bt+4e4G2v1wswbs2aNfcfcsghnH322XsU26CqFBQUGHl5eZMsCca/apSDTQxnAEsNw+Bfb7yDw+nAiIYs5ljDfguC4HQ5oQEeOX2LTsDRtgqwraHjIrDhBNgKfA+kOmFIPblNOhADchXuAGKm1auOSRbJarGqh6PT6YPJuTj4dvgDrPv7zJNp3+pHwsEQS77bqNlpLkrLylxVfBEP9OvXL7t169bFzzzzTKMJIO4YysvLU9216wWgNRDYGwQAdrFkj8dj6WmGUaupVx4MIohCDXK8ts45SMewuJdq40usaoUdbzRABDgU3hZrrwBxWs/GrdJLgamAQ+dyACnI1PlDNslZW5Z/tvxC98at82MSLg+nOwkhEvnHy+8QicYEeDP5JSUlJSXFxcVnXH311Yfcd999DepTfJFpxIgRiAgbFi+Oh8gJtWnCzQBvJ3ynBdvrObkaKPs18aDRAIRrfcVHLc9nWRYoOTbCU0LWgpJD4Zn+VoiBiIGDCA+tWt/5xElPnb/11uzhOfD6tNUb1sy654XZcx+c8v5MPPpM4Q0l5yb67k36tnyuwcsaYN2bb7652lbidzvjwUpIFZFvZ8yY8U9AFi1bJpgmpw4e7Hn8iSfa7y0C2BFXmMLRmGUFZOVZXKBKR9I8KbYzr/khDVphKYJxKGggAXSsgWhjapmBAfueoKTQ86ftbd4cNvZv342KPtj3b/4FC4C/AOfbxygC/BGYjJerKymY+dyNn6fwsR1g8eLFh4kFNdr+yev9IsLAgQMBnjFN8xawah8RCjH12Wfd2dnZf9pbBHCl9U1JXj61TfHUrEZX4tpTiMJRgEcrMPiuzbu7NcDqSDYHDCzF0p0w5WBtaSDd3fGKDwdc1/rO464bt+kZbmRrjY35yQMW4+VBNNH0kYnr3sS5/r17917bt29fzjzzzER0kmmaiAiHdu/OgL59WfzBB0QikUqv+L/HHoNWrcjOztY/33jjnap6dnNbAYmPq8S2DAcYTUdvWuGTq7PAnzmdozEpM4azNsmMe99G5nr791H1fGerJCL4RKCvEzpbcSd8Y99jOohFx7cfNf/JS9Yu5C4b+V5yUcZWoiA/d+NjCV4mIVxGPjvwVzJJ7yGfUvxMXLly5aH2uRduvfXW30+bNo1Vq1bN9Hg8Zxd8842069TJKoAdDlf65uVLl743b/bsUwcff7zx1xtvVBE5CpjV7ARAJbepQGlBHaK+gSqA4BZLoIeBGnOAzHcRCeJVAy9wElbd3jgU1TyhdwuH2Q+8HYMrndaagClgKBTbDao4gtnzTlr93YZ/sslm688AF+InM2l2tyKfAEIaPo7HyybCDALgrwzEzTx8pPR6rJesYlXyN1z+97///fKMjAyXx+OJANF2HTo4CNSaFX76I5Mn6+Djj+emcePkhWnTzli6ePH/NbcIALghMcBij7DhqHGkXbYTyOPxXFw/9sJVGveKhqkWSWK+TT8JsdJGfk1UmdKYDomle84Pw4VRCKj1uyPQmQo38I8pMe75eGqSVePnanxJyAfwUYyfVOAa+3enj679aMW9H99bFLwn+Ln6NWKapq66flWNxFlWVhZpqNiipIQ+3bufoKr/anYCcDqdyypZ+6oEgoGqwbuEI1Fuu/J8cjLTFOhUrw4ZpCS5X6uy/KEYzEfoJdVV/Y72gMQX0x0NHIc0gc3HQ2SQlXi5zrAcLO74esMxML8//LsBQ/U1+TyOFx3yxJCH7njjjpM9Lo+ISIZhGPVhjY7vvv66Tg722cKF4HKBKrfecIOKyEnNTgAulyvJTWmha9eW7xEUl9NRKcwpHImi2mCTrDboIVW2hEl65veSNCkUFoiFyH71fGc/S5dMNBKxiSgSg28bOVSfIUxC+fCREY+s59GKHIZ6Qu+1dRealq0FBectWLBAAXr26SM9DjnksCVLlvTdGzoAYhgEy3bgycgmvU0eGijhgHatq/mw60fsu9ccpGK5tyZiidp/L7bPXwakaP11ALcJHye1G8WS/+4YBBs1QD4U+Bo45U/+PzXK9e5yuSq6XD3aWIEZp40cKSUbNyrl5fLa5Mn06dMnrVk5gL0Vm+XtKy4EEVLSMkGEDZsLKsKi7aybmy85m2CwYWOoDSeUDvbfZQthmgF3S8NCvdVIcqfO5oznT2POfxww5Xj4jn0Dg6KRSJyd0uGgg2q8qbSs7IzNP/0ksViMjPR0Jk+e3LwcQERmqypqmrTueDCoJpb+K0W0CIgKu4JNU91E6yYE077+qgGt1FoXkPrQ0nJwhaBrhUqxsN/duLIBTz+YyL6DBWaSuR0Oh2vMZDZEPuzQu3eJqmYempe3CXikua2ADBGxAkOo0AUioSrmSkome6sWssI2+0vi9nz8w7IWWG7eWmGXpVekAz/Cyr5geCD2M5hL+IWAmiaFRUU1LiCZqiERWSYiAaDL3jADUVW6dcy1RlmsSOBoMgGoWg6iRkYFST3PKbDQ0tYHUF0/UIEsl4XcOtcRBCKTuMYNWg6aB/IK9Iv9UghARKo5gqrg46SsrKz2e8MVXAnHoJDexqbS5HAMgWBZk7J7Tfo/mfdErb46arLt6/MuAzmojPSVU7i4OwT7gsyDfr+oqlyqWrHbWS1QUlJSvldcwTWlMZmmSVp2a3YW7UiSylEUSE9NaeIPoFwAFdJFCRh7mAp/LLo5j9e+DZAxEPgDHFP6S0G8y+UCtxsxDFrl5OAwjB9i9UwwbRYCSE1NTVFV0jzuauxZq85XO7Pz+Rkf4XanEA7Xf1JJ7d66dUQZpk7mohyCtQCkdbUT3s1YCItag7YB9wg4KvhLmvnDkmoR2/L/jfo+21wi4OGYaeqNvzuLmGnaYeL2QDprZlE/7yhtsC9Aa+7RQkyOM0awNp4cqyYxo3osQPJvtxN+U/fbytdD/zN/aciPm9zxgwZyuuYiAAUkGAoTLN2BiAFlRVbwlMOdUFhcTme1Ldb2WBE6h4XG+RRW0gOcGAYcYfdXbeSLwncmPG/fuxsZNHj3PNXLoc2K6b9wYigSupwbGNug527nZrxMx8uBe4sAKsynnUVWSFgSbYgITofBh4u+xu1qvBTanQEvlf9ok6R6isKiGBzeiJjCuuD4ZhvIfN7DyTtRjT6vj+gk7iJGvrUEXQdBtsPL53qvrsbHefjYvNcJoE3nQzFj8awgC11tsjO57OzB/PDTNis82jSJRmON4TMOcXNCXaZbTQShMMMJJw5M8utT+e+KJmJEGvBF/ya/0rJz04Gf05hIevq49C4dHuwgOkEnTr94+pXG3UYxXsprQH4PrEDQITEz1mGvKoGVNP9YLCGI4/hwuxw899qHiQCRcCRK6a5Ag6phYWn4DkyOISnAIXFtFjlqkpcsEW1q+MgDI3tXlIOOV1o+A3im0uRQbuGeKtE8Xt6ASkEoG/BhpeH6MPEyGS95+GqJAtpTeIiNm9kssk3ye3ftfT3wb5SX8PIZJrOZwL3cxFCUTvh5FqB/Xv8ruZNcHDyBn6K9SgAJuW6HhyngcDj3SN5rZQO+ZtYRpZc4yNDqzy5OQj6KpS9QOd4PDCbhY2MVNjwNHyOqEMQBeNmAcjF+PsdysZ6FFR3cfJDKSyu2rTDwsxYvxUC7Nultvp7749z/e+ubt7hv6H3xYNO3T+t2WtclY5fcszeVwKpmScULDQc7Nm+o17NL4IAaiUoxRHfLHQ6KZ2mQTlShVy3WY827bFRFvsWGR9Rw3xZ8dMXP53h5Dx8BlEnNrvr7+R5hjv0NrVCuL7qtqMexHY+VNFcaqvoR+UTxcf7EoRPz97YVUAnh5TsqZ25Z6wG1Y3ARdPsSvozC+Fq8iy8ma/k1EolB3wSq04hRS9yfNOVChDKKfD7GT64d5CE1yOamLBjQm3y+sAniIfJR8vnD+Nnjh8pd0gc/zqlfTxXqSH5tdgIQh5NYknPHNGO07nCQlRHkMFizcUul+7+EEQrLgWMEMudXDuOOY62Iiiz002tBRq5URnQ8O2JHLZ/q+XRPRaKfnfg5iXyOAYIog2v4rqvx8h7eSvpG48BHCD8D8NolboQr8PM0afyH/yP7uSXP6cjDR6qIPLbPCKDs581ktM2rpIkbTjfZGWm4nE4Wrfo+ce30aPQ0gdelIk1suLPCfKvNDGxXTfGciaHKwBruj5kwt5bmfmoSVuAlHcGNn1uQJI+cl1S8BPDzND5Ow5fIB2gKOAkvgo8X8LIVH4KXdVf2uVLI54p94QhKhP6nt26PiGHrAla9gFgsyvUXDSMQDNOv18EJVt5F9US1F2xs5LqB3+7GE5ii06tk95aSJkJ2LSKiqkNnrcIcAy48sWZTsKGzshyYZn/gNXjJJp8XUVrjs4paNDn4OBl4CC9ulP72uW54KUCYXdejzWYFHNyhPSJimYGGEzSGQ6Ns27KJtq1y2BUKgcbo0eVAAqEwrbMyMIp3uqtYbS7g8M/BcVwVbV8FEUUx6KIx+gIfJC5mcCbQVuIpRy5q3WHTgMIoXNKPKra0lwwUL5L0XqsYXVHco4iSDfyIn8cT8t0K8boLL0OB2cBDwN0Im5uV1fqI70S1KencbncdbzYC2Fq0w1oRVAVPBlq+nSlzP+LIzq1p1+aYRKZQLFEfUCv7kSvs80tdcC8VSRyIEFOTXRikq5WVcYr5Jh8aF6Dm2xgoN2Hlo/5HlFOD82kLdsx9FehnvW5HFXOvLVao9yuAQRTFQRQoRVmAUGqXoC0CnHgZh9IJpTtesvDxNF6eQ/Hhr+Id9HIYVuyBAEvwsU/jCZptLSAQClcIanEQDEdZvbmYEjMlYRq63W6m/OdzAqEwRTvLksmgIMlec8bssiwJ2Mk6YGVivV8ZKS477l7JQ+hjhyGEENAwTir0it33WSgGvkH4FlhVMr4kHViG8D1CayAHP53x0wc/vfHRFZgBPAisw0suEKiG/HwUK5l0FfD1HiE/n3FNgahm4QDJAaEgEA3iSXFxxx9GgghqmoghqEKq221XXDLi4rnIztm7LE4ADhgO/DfR4qWY5vREHJGqcChwhU5nKvCICh5bh1ibrAQohBywsR7sNEZS8GeWL+sTVT1fRKYnIWAW8Cx+W977GW4j/jzgRdTOcfAyFzgN2IKvCU1AaRrcNRcHGNOtY57l7bM9gPEUIVEzyTsIwXAET4qb1tnpcc3RNGGjWCHcaiPy5K9qswbssvCi/E2Fb9XgAtFEINKcKq7gsEKjQpAqId9C+NkIHrxMJZ8rbcLZBrwOvIcQxcst+DgDHw58VTyNzQVeO9MI4E+cz1+rW0PNzgFEhB8LiiqigtQEhxuJhSElA8JWZdBIOMzFw04gEAqT17YV5s/FCEwOw/1uuFEgw9L36Bi1qm58DqBvISqsUOhvl4lVxMrSTSDf0hVMtf6PU44a0wAADOxJREFUn3I2qcD18YqtJ1js3Y/gs7dq86JNMuO9OFBS8e+GcL38AZiAz/ae3sIgfVD/DVwo98veNwMPaJNTMdMjAUhrXaurWFUZecoATNMkBl96rLy7Fyo8v2Q54KoEgQ1HxeRf8ZTqeLl4iXMEQTD5UiN8KyDFy+gOuAVGD6SGlbOmYcmLbUSk2cUeXE3UsgehG16OrOJFrIrVc/FxAF4EL7dKpqwTkUzJl6v3jR+g0lqAQLicJKldjWNErcgh0wFb+kFU4Lvk5VyF3E+pZEerUPtSrQg7RXAA6wrnkgrc1h9ea0YzrJ9tBu6yZ36sidotx8cylP/aJibkEyJ5BTSfyfiIb2t/JcpoRXfh5SGEW+pyPze7J9CMRSzEh8vt11X+lnhmcHFJGbtgmwkLbYTPxpbX9hMnpVvr2xb2f2IpymqtzUOovI6DHRRzZHgbT/SHvze7/PUlqZy+Jk528NMOr+3UEYL4WJbk2ppuE8Ig4EH8dMfaMfRW/Gys61uanQBKCjYj8WqhalZUDgXEcLD42/VEojEem/IuLpcz8aUGbLft7PipzCgk0seN64iqEJUaOI/d/Eo5n1K5nED/2v3/vzaovnI5nmKdoGWMYxTwHj5a4eVRfLyOb/fBLM1OAK7UNKLhoB2IZev0CfvOwdpNW4nFYjgEypTCATbCTYvdB5NYhgGc+kVyAoda8Xw1sIAdmKxkfwMf99j6Raatb/TAYCxw76Aeg/6CnzTyeRz4x742AxOQ2ToPrSNGPVEvwDA40TTzAeZDZwP+A/TQCnkPMESS6wka/KhKTLWyG1FMJhvDKWV/BCUdtXZCE6QNPl57/MvHp8/fNH+aPaAd8FV4TfeZK7hCyzdxuOrOVkn1uGmdlU7fguDOhTBArLp58Uze5AQfF3AmtoUg5bxDGisQjrb3CUSEsLIXAjL2FfjZBTyLl+s0omNV9XC5XT5iIifjJYqvYTjdK9vGWYtCUWKRcC1EAqaVMpYr8K5ABxvzPyu8lMQFDIE+iXZ/S7kq/1TTrk5v7Rs03TiXH9jfQXno5d++/FdLg+YW8nkJu0DnL44A4gpf8eYNSKisxpKx9se8FN/JS+FHE07TuPPHeqrs2zwrGijJ3HsT4d9qEkL5gihj+F8AofCSIy+ZLSJiHGCkImTga7jes3cIQBwI0LZL90T5uNQUN0n1+uJOI6ddSvI7gcEDYEnMEgfrDNh16ZVMuOyaymvqci7l4uCPAscS5UQZYVXr+kWCFw/5XNpErT2Bl3mQKA/bqHLre4cAnCnWHLZdww7D4PE33sPpMDBVCYYjyRtHLVc49RirkDMu+DkTplx/Mb5VnVmFn8+q0ddZlMl5LDdGNCiGf19o8UHgVbw82ARtTQBOAejVvtdCfAxvHAHk4yOfmXjrXTO/8X7BlIxEQfUtQ4sItg9y5KGdMU0zTsWLIzDk2KSghmPAPOxe5n9+KFvxVY///xUqcTEaUBl9N0QQA/j6uq+vNk1zTuMkSYU78SWEQpQZ+PlwT74rNTVVO7RvzUWnHR93BliewMxcKN2G4XDwwLzpDOvQhz7du7Jm4xZ6z/n46xNUj64WljWeS1Bi3NOMbtx9AfHFoyYA0zQLDcNot2ciwM+l+LgZYSNeFC+X4G1qEWFxggm5r+PY6CAtxY0gvDx7Hk+53RdUQ76X36HsqIz8+Zn7iTkn5DeByPJiNhb5NesAPtbZixkLgbHkN5VHTatSLa/O+RhPiguny8VmkUiVGTKSGC7uSQ5qXDQK3K79hgsIfcnn/AZwjYer/P4C355NUqfdkA+pISJWWY6fI8hnIjALP5820htklYhRZYO7gKtWnMorfMp5pwwkGI4kfAVJbP8iYDJBKuLJ+eIWYCZEOmCtE/z6wccK8rmMpP0V6pjpU/BxUdLvl/FZNY/2nAD8NdfUxcsg8ilE6IFyCV5W4KvfDluVIFwOqZmwcyuSYmA4LKI9uEP76hWtLLb/AlBi+Ym/NICnQB8FvRKMf+5nFv3h9UD+DnxJSnp+EwWb7NYM9PEpftqhBBC6AB3twMbdTPgqhWAMB5QUgOEg3eXh6TffQ0Qo2F6FlsZzMcrLdrybsOVQB+gLIK+CXAuOt2BA4X6Ffj9nkV9rsgp4ObkS8r1kIPRtqtcb9fzIAPA8ynm28vJinaJNhEAwnCAGQwwrLkuVVzM/AXFgqtIxtyLML3RuaBjCYwl1IepciCttEX89+Wt6z/kdyELo+2UT59b9UnSBTnWoTq/ZiBe8DEK5CB9L9i4BWNxgJX7uxctHwH/JR/FyYhJbOiX+ZyQa5dQB1qbQhsNBSeFPliQIlFVgT8HjdlG0s8yOCMZEWWR/1TpWn5rJc08fyf0fLGHFsC/gmOftJw8mn6f2G+RbBH2pHcxRVel7Fz/xfX4PQTkFfxPkFO6RJ9DHEPy8gHAqMA8vx9lX1sRr0LicTuZ9ZW1yoKaJM8WDqsmM7C+4qei8Srs0/LClEIfDIGVGynsIp+HmFe5eOJVpvkugJAbGRXDsU/ZglaL0wZ8U+frrVwQVH0uRiiLUSVCSxAmm4cff1K937sGH/9f2JBaTz834eZ58lgNHqipOO9RLVUnNbGU5AtOzeOfdJXhS3PHVPwxDCF4TRLbLQGLi5a4VCrumoOEfIethkDH2bFhUbdOFX+aMdgC/QdmF8AJWfkFOPcLCT8FLb3yVts9bYre5EpLkfjwFLZ9DgG74G7913p7HA/hpRT7r8PIwPrLx8qg8IDbRWmG7ajggFkVRHA4rUbRjbmvmZixma7diPE95UId+ESyb1xVCr8Gx38PCiRC8CU6M4OXf+DjmVzKjY8B7NpK6JbHzOVh7FK/Cz4QanvwUrVjqTngKrXE9osq9t5DPQIQVifI0+4wALCLoRj4R8jkaMEzsDaPsAD1JyYRdxYm9/qKeGMHLggzddjzlgRCPx94lFnr8jyAvQb/vYeEEcE7Ce2w7YAE+OjdgBrpQ2iEU1icmrllZe+UxOrMScoUsfElRSz6ieHkT7L4KP9Rg++cA3yRi/5tEBHiTskkra58K5FCRVJFVp+3px0U+EZQRsQGxQ9Z/UnCa3RErGFSE7Fg6ZZlBUtJcXLJtCAK0ykq3zcZYAI5dAgvvwBF7lbuOPQblM6TyTty78ZTFgHeAMfALthYsS6ojXlYB1wMz8KGChBQFL2vw0ZX8JP+Ml09QzsHfdMiPc4D7azFNFDgQiODjbnuAb0bwxNGKcritqMzBzyybCFbHesZSnfMrPLYhwrgEWpmZzB+0mq7rc3FJ5eVrd9qNzwWdb9/K1cMGk7F9O7ABfz02dsznLWA7wiZ8jVsT30dE8CPQCS9DUd4ARuoOvfH292/X+96574JEZpFVfHKUbYI3eXSz7IadrrQR3BqlE0IaVkxeCJ+dj5/PowijgFyUE4AhrlmuAZGzI+fesXkkgrI6awcHl+XwwAFvcvyMXmwpLOZ3ZwyC9Na4gsXc88xbRA+68TPOes4gs+hKrMIQB9jf9yjCw/iS4vy8ZAPHAq/gox2/ZogrdF6+xcdhtnjItJXHTsBIfM2X0+DcjRw7ogbNcztwpR2eHEM5AR834KUz8APCBZEhkb84J7pY/4dtFLp2MiDSn+ScTDNeNNL2GEZvimA8mPeymVW0EFiDErMVIAOftRN3Jflp+c4v+NUjP1lX8HEYXhaggM8eLC/rsfYoajYCkEZSbW+U9ggG8B5KCTADP5fhZYkUSh5l5LXrlMXBgVx+Ez0JgqXMT/+G0vcCDO53OKkeD2ZaNs+lvc62B0rR0bHbtJ1+AzjxMy1pZjyFtd9uJjAK+BTffpPoUZNIU1tHUGAw/hr9A/vYD1DZVhW8HIdyDfkoyunaVt+lLRRHykihE0TDoCZhiWCq0io7g03fLufLo8ro9+khvNd9GeHW0ZsQXsbHX2wl9HK7ysZMhEvw8R/2d7C8gr9JKIp7xQvd9J24C2UGWLlrKeoiKjFu2zycmGny3oIVnH1aX/xZr3PnllGoKve2mUrqI6ndAuMCG7Ayf0pQyvGTQQs0KzRHUOgw/CyPk9ag8p5cuv0UAhKh+KfvibYx+XDV19y5ZRTRcIiH8mbieMZJcHRwNMpbKCUoHVqQ/2slAB+D8CKe+z0XuF9wU2IGOCCYzbK0DSw8ooRdrYJsWlWEAu+3W4G37CLMo00Q0hA+x4/gb+aKWi3QrBwAfKiIFOKEHms74ED4MHsF3QMHkvdjNtt3lmkwFObbnVujTy59d6drvnOjpmm0Vp9EC/zKCMAGx2ZHzAyHYmXbC2JXLTgilrOmNHZc58xYaSDMP16cPsN4zXHk+sHbMsO7wl1wM67Jc+pboJmsgPrBAlXNKy8uIJN0XA7LMxiOmfGNnQpLS8tIeO/2cb28FmiBFmiBFmiBFmiBFmiBFmiBFmiB/wH4f+jryq6sRdUDAAAAAElFTkSuQmCC" alt="DREME Logo"/>
-        <h1>DREME</h1>
-        <h2>Discriminative Regular Expression Motif Elicitation</h2>
-      </div>
-      <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>
-      <p>
-        If you use DREME in your research please cite the following paper:<br />
-        <span class="citation">
-          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
-          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
-        </span>
-      </p>
-    </div>
-    <!-- navigation -->
-    <div class="pad2">
-      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
-      &nbsp;&nbsp;|&nbsp;&nbsp;
-      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
-      &nbsp;&nbsp;|&nbsp;&nbsp;
-      <a class="jump" href="#info_sec">Program information</a>
-    </div>
-    <!-- alert the user when their browser is not up to the task -->
-    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
-    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
-    <script>
-      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
-    </script>
-    <!-- description -->
-    <div id="description_section" style="display:none">
-      <div id="description" class="header">
-        <h2>Description</h2>
-      </div>
-      <div id="description_text" class="box">
-      </div>
-    </div>
-    <script>
-      if (data.description) {
-        $("description_text").innerHTML = "";
-        $("description_text").appendChild(make_description(data.description));
-        $("description_section").style.display = "block";
-      }
-    </script>
-    <!-- motifs -->
-    <div id="motifs_sec" class="header">
-      <h2>Discovered Motifs</h2>
-      <span><a href="#inputs_sec">Next</a>&nbsp;<a href="#">Top</a></span>
-    </div>
-    <div id="motifs" class="box">
-      <p>No motifs were discovered!</p>
-    </div>
-    <script>make_motifs();</script>
-    <!-- inputs and settings -->
-    <div id="inputs_sec" class="header">
-      <h2>Inputs &amp; Settings</h2>
-      <span><a href="#motifs_sec">Previous</a>&nbsp;<a href="#info_sec">Next</a>&nbsp;<a href="#">Top</a></span>
-    </div>
-    <div class="box">
-      <h4>Sequences</h4>
-      <table id="seq_info" class="inputs">
-        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
-          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
-          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
-        </tr>
-        <tr>
-          <td id="ins_seq_source"></td>
-          <td id="ins_seq_alphabet"></td>
-          <td id="ins_seq_count"></td>
-        </tr>
-      </table>
-      <script>
-      {
-        var db = data.sequence_db;
-        $("ins_seq_source").innerHTML = db.file;
-        $("ins_seq_alphabet").innerHTML = dreme_alphabet.get_alphabet_name();
-        $("ins_seq_count").innerHTML = db.count;
-      }
-      </script>
-      <h4>Control Sequences</h4>
-      <table id="seq_info" class="inputs">
-        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
-          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
-        </tr>
-        <tr>
-          <td id="ins_cseq_source"></td>
-          <td id="ins_cseq_count"></td>
-        </tr>
-      </table>
-      <script>
-      {
-        var db = data.control_db;
-        if (db.from == "shuffled") {
-          $("ins_cseq_source").innerHTML = "Shuffled Sequences";
-        } else {
-          $("ins_cseq_source").innerHTML = db.file;
-        }
-        $("ins_cseq_count").innerHTML = db.count;
-      }
-      </script>
-      <h4>Background</h4>
-      <span id="alpha_bg"></span>
-      <script>
-      {
-        $("alpha_bg").appendChild(make_alpha_bg(dreme_alphabet, data.control_db.freqs));
-      }
-      </script>
-      <h4>Other Settings</h4>
-      <table id="tbl_settings" class="inputs hide_advanced">
-        <tr>
-          <th>Strand Handling</th>
-          <td id="opt_strand">
-            <span class="strand_none">This alphabet only has one strand</span>
-            <span class="strand_given">Only the given strand is processed</span>
-            <span class="strand_both">Both the given and reverse complement strands are processed</span>
-          </td>
-        </tr>
-        <tr><th># REs to Generalize</th><td id="opt_ngen"></td></tr>
-        <tr><th>Shuffle Seed</th><td id="opt_seed"></td></tr>
-        <tr><th>E-value Threshold</th><td id="opt_stop_evalue"></td></tr>
-        <tr><th>Max Motif Count</th><td id="opt_stop_count"></td></tr>
-        <tr><th>Max Run Time</th><td id="opt_stop_time"></td></tr>
-      </table>
-      <script>
-      {
-        $("opt_strand").className = (dreme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
-        $("opt_ngen").innerHTML = data.options.ngen;
-        $("opt_seed").innerHTML = data.options.seed;
-        $("opt_stop_evalue").innerHTML = data.options.stop.evalue;
-        $("opt_stop_count").innerHTML = (typeof data.options.stop.count == "number" ? data.options.stop.count : "No maximum motif count.");
-        $("opt_stop_time").innerHTML = (typeof data.options.stop.time == "number" ? data.options.stop.time + " seconds." : "No maximum running time.");
-      }
-      </script>
-    </div>
-    <!-- list information on this program -->
-    <div id="info_sec" class="bar" style="position:relative">
-      <div style="position: absolute; right: 0;"><a href="#inputs_sec">Previous</a> <a href="#">Top</a></div>
-      <div class="subsection">
-        <h5 id="version">DREME version</h5>
-        <span id="ins_version"></span> 
-        (Release date: <span id="ins_release"></span>)<br>
-      </div>
-      <script>
-        $("ins_version").innerHTML = data["version"];
-        $("ins_release").innerHTML = data["release"];
-      </script>
-      <div class="subsection">
-        <h5 id="reference">Reference</h5>
-        <span class="citation">
-          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
-          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
-        </span>
-      </div>
-      <div class="subsection">
-        <h5 id="command">Command line</h5>
-        <textarea id="cmd" rows="3" style="width:100%;" readonly="readonly">
-        </textarea>
-        <script>$("cmd").value = data["cmd"].join(" ");</script>
-      </div>
-    </div>
-    
-  </body>
-</html>
--- a/test-data/dreme1.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-# DREME 4.12.0
-#     command: dreme -oc dreme_out -rna -norc -p dreme_test_sites.fa -e 0.05 -mink 3 -maxk 8
-#   positives: 1000 from dreme_test_sites.fa (Thu Apr 19 19:09:45 CEST 2018)
-#   negatives: 1000 from shuffled positives
-#        host: ThinkPad-T450s
-#        when: Thu Apr 19 19:11:17 CEST 2018
-
-MEME version 4.12.0
-
-ALPHABET "RNA" RNA-LIKE
-A "Adenine" CC0000
-C "Cytosine" 0000CC
-G "Guanine" FFB300
-U "Uracil" 008000
-N "Any base" = ACGU
-X = ACGU
-. = ACGU
-V "Not U" = ACG
-H "Not G" = ACU
-D "Not C" = AGU
-B "Not A" = CGU
-M "Amino" = AC
-R "Purine" = AG
-W "Weak" = AU
-S "Strong" = CG
-Y "Pyrimidine" = CU
-K "Keto" = GU
-T = U
-END ALPHABET
-
-Background letter frequencies (from dataset):
-A 0.221 C 0.245 G 0.221 U 0.312
-
-
-MOTIF UUYUCY DREME-1
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST      UUYUCY        387        210   2.6e-018   1.2e-013
-#           UUUUCC        147         75   1.8e-007   8.1e-003
-#           UUUUCU        155         94   2.2e-005   1.0e+000
-#           UUCUCU         94         51   1.3e-004   6.1e+000
-#           UUCUCC         75         42   1.1e-003   5.0e+001
-
-letter-probability matrix: alength= 4 w= 6 nsites= 459 E= 1.2e-013
-0.000000 0.000000 0.000000 1.000000
-0.000000 0.000000 0.000000 1.000000
-0.000000 0.294118 0.000000 0.705882
-0.000000 0.000000 0.000000 1.000000
-0.000000 1.000000 0.000000 0.000000
-0.000000 0.474946 0.000000 0.525054
-
-
-MOTIF YAGG DREME-2
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST        YAGG        600        416   1.1e-016   5.1e-012
-#             CAGG        441        304   1.5e-010   6.6e-006
-#             UAGG        232        165   1.1e-004   4.7e+000
-
-letter-probability matrix: alength= 4 w= 4 nsites= 793 E= 5.1e-012
-0.000000 0.692308 0.000000 0.307692
-1.000000 0.000000 0.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-
-
-MOTIF GAAGAW DREME-3
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST      GAAGAW         81         22   8.2e-010   3.4e-005
-#           GAAGAU         45          7   2.4e-008   9.9e-004
-#           GAAGAA         40         16   7.9e-004   3.3e+001
-
-letter-probability matrix: alength= 4 w= 6 nsites= 89 E= 3.4e-005
-0.000000 0.000000 1.000000 0.000000
-1.000000 0.000000 0.000000 0.000000
-1.000000 0.000000 0.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-1.000000 0.000000 0.000000 0.000000
-0.494382 0.000000 0.000000 0.505618
-
-
-MOTIF SMUGGA DREME-4
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST      SMUGGA        110         47   9.1e-008   3.7e-003
-#           GAUGGA         22          6   1.7e-003   7.1e+001
-#           GCUGGA         33         14   3.6e-003   1.5e+002
-#           CCUGGA         32         15   8.6e-003   3.5e+002
-#           CAUGGA         29         13   9.1e-003   3.7e+002
-
-letter-probability matrix: alength= 4 w= 6 nsites= 119 E= 3.7e-003
-0.000000 0.529412 0.470588 0.000000
-0.428571 0.571429 0.000000 0.000000
-0.000000 0.000000 0.000000 1.000000
-0.000000 0.000000 1.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-1.000000 0.000000 0.000000 0.000000
-
-
-# Stopping reason: E-value threshold exceeded
-#    Running time: 13.45 seconds
--- a/test-data/dreme1.xml	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<dreme version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
-  <model>
-    <command_line>dreme -oc dreme_out -rna -norc -p dreme_test_sites.fa -e 0</command_line>
-    <positives name="dreme test sites" count="1000" file="dreme_test_sites.fa" last_mod_date="Thu Apr 19 19:09:45 CEST 2018" />
-    <negatives name="shuffled positive sequences" count="1000" from="shuffled"/>
-    <alphabet name="RNA" like="rna">
-      <letter id="A" symbol="A" name="Adenine" colour="CC0000"/>
-      <letter id="C" symbol="C" name="Cytosine" colour="0000CC"/>
-      <letter id="G" symbol="G" name="Guanine" colour="FFB300"/>
-      <letter id="U" symbol="U" aliases="T" name="Uracil" colour="008000"/>
-      <letter id="N" symbol="N" aliases="X." equals="ACGU" name="Any base"/>
-      <letter id="V" symbol="V" equals="ACG" name="Not U"/>
-      <letter id="H" symbol="H" equals="ACU" name="Not G"/>
-      <letter id="D" symbol="D" equals="AGU" name="Not C"/>
-      <letter id="B" symbol="B" equals="CGU" name="Not A"/>
-      <letter id="M" symbol="M" equals="AC" name="Amino"/>
-      <letter id="R" symbol="R" equals="AG" name="Purine"/>
-      <letter id="W" symbol="W" equals="AU" name="Weak"/>
-      <letter id="S" symbol="S" equals="CG" name="Strong"/>
-      <letter id="Y" symbol="Y" equals="CU" name="Pyrimidine"/>
-      <letter id="K" symbol="K" equals="GU" name="Keto"/>
-    </alphabet>
-    <strands>none</strands>
-    <background A="0.221" C="0.245" G="0.221" U="0.312" from="dataset"/>
-    <stop evalue="0"/>
-    <ngen>100</ngen>
-    <add_pv_thresh>0.01</add_pv_thresh>
-    <seed>1</seed>
-    <host>ThinkPad-T450s</host>
-    <when>Thu Apr 19 19:40:08 CEST 2018</when>
-  </model>
-  <motifs>
--- a/test-data/dreme2.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6118 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <meta charset="UTF-8">
-    <title>DREME</title>
-    <script>
-      // @JSON_VAR data
-      var data = {
-        "program": "dreme",
-        "version": "4.12.0",
-        "release": "Tue Jun 27 16:22:50 2017 -0700",
-        "cmd": [
-          "dreme", "-oc", "dreme_out_adv", "-rna", "-norc", "-p",
-          "dreme_test_sites.fa", "-e", "0.00001", "-mink", "4", "-maxk", "10"
-        ],
-        "options": {
-          "revcomp": false,
-          "ngen": 100,
-          "add_pv_thresh": 0.01,
-          "seed": 1,
-          "stop": {
-            "evalue": "1e-05"
-          }
-        },
-        "alphabet": {
-          "name": "RNA",
-          "like": "rna",
-          "ncore": 4,
-          "symbols": [
-            {
-              "symbol": "A",
-              "name": "Adenine",
-              "colour": "CC0000"
-            }, {
-              "symbol": "C",
-              "name": "Cytosine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "G",
-              "name": "Guanine",
-              "colour": "FFB300"
-            }, {
-              "symbol": "U",
-              "aliases": "T",
-              "name": "Uracil",
-              "colour": "008000"
-            }, {
-              "symbol": "N",
-              "aliases": "X.",
-              "name": "Any base",
-              "equals": "ACGU"
-            }, {
-              "symbol": "V",
-              "name": "Not U",
-              "equals": "ACG"
-            }, {
-              "symbol": "H",
-              "name": "Not G",
-              "equals": "ACU"
-            }, {
-              "symbol": "D",
-              "name": "Not C",
-              "equals": "AGU"
-            }, {
-              "symbol": "B",
-              "name": "Not A",
-              "equals": "CGU"
-            }, {
-              "symbol": "M",
-              "name": "Amino",
-              "equals": "AC"
-            }, {
-              "symbol": "R",
-              "name": "Purine",
-              "equals": "AG"
-            }, {
-              "symbol": "W",
-              "name": "Weak",
-              "equals": "AU"
-            }, {
-              "symbol": "S",
-              "name": "Strong",
-              "equals": "CG"
-            }, {
-              "symbol": "Y",
-              "name": "Pyrimidine",
-              "equals": "CU"
-            }, {
-              "symbol": "K",
-              "name": "Keto",
-              "equals": "GU"
-            }
-          ]
-        },
-        "background": {
-          "freqs": [0.221, 0.245, 0.221, 0.312]
-        },
-        "sequence_db": {
-          "name": "dreme test sites",
-          "file": "dreme_test_sites.fa",
-          "lmod": "Thu Apr 19 19:09:45 CEST 2018",
-          "count": 1000
-        },
-        "control_db": {
-          "name": "shuffled positive sequences",
-          "from": "shuffled",
-          "count": 1000,
-          "freqs": [0.221, 0.245, 0.221, 0.312]
-        },
-        "motifs": [
-          {
-            "db": 0,
-            "id": "UUYUCY",
-            "alt": "DREME-1",
-            "len": 6,
-            "nsites": 459,
-            "evalue": "3.3e-013",
-            "p": 387,
-            "n": 210,
-            "pvalue": "2.6e-018",
-            "unerased_evalue": "3.3e-013",
-            "pwm": [
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 0.294118, 0.000000, 0.705882], 
-              [0.000000, 0.000000, 0.000000, 1.000000], 
-              [0.000000, 1.000000, 0.000000, 0.000000], 
-              [0.000000, 0.474946, 0.000000, 0.525054]
-            ],
-            "matches": [
-              {
-                "seq": "UUUUCC",
-                "p": 147,
-                "n": 75,
-                "pvalue": "1.8e-007",
-                "evalue": "2.2e-002"
-              }, {
-                "seq": "UUUUCU",
-                "p": 155,
-                "n": 94,
-                "pvalue": "2.2e-005",
-                "evalue": "2.8e+000"
-              }, {
-                "seq": "UUCUCU",
-                "p": 94,
-                "n": 51,
-                "pvalue": "1.3e-004",
-                "evalue": "1.7e+001"
-              }, {
-                "seq": "UUCUCC",
-                "p": 75,
-                "n": 42,
-                "pvalue": "1.1e-003",
-                "evalue": "1.4e+002"
-              }
-            ]
-          }, {
-            "db": 0,
-            "id": "YAGG",
-            "alt": "DREME-2",
-            "len": 4,
-            "nsites": 793,
-            "evalue": "1.4e-011",
-            "p": 600,
-            "n": 416,
-            "pvalue": "1.1e-016",
-            "unerased_evalue": "6.3e-012",
-            "pwm": [
-              [0.000000, 0.692308, 0.000000, 0.307692], 
-              [1.000000, 0.000000, 0.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000], 
-              [0.000000, 0.000000, 1.000000, 0.000000]
-            ],
-            "matches": [
-              {
-                "seq": "CAGG",
-                "p": 441,
-                "n": 304,
-                "pvalue": "1.5e-010",
-                "evalue": "1.8e-005"
-              }, {
-                "seq": "UAGG",
-                "p": 232,
-                "n": 165,
-                "pvalue": "1.1e-004",
-                "evalue": "1.3e+001"
-              }
-            ]
-          }
-        ],
-        "runtime": {
-          "host": "ThinkPad-T450s",
-          "when": "Tue Apr 24 18:44:36 CEST 2018",
-          "cpu": 18.17,
-          "real": 18.17,
-          "stop": "evalue"
-        }
-      };
-    </script>
-    <script>
-var site_url = "http://meme-suite.org";
-</script>
-    <script>
-
-/*
- * $
- *
- * Shorthand function for getElementById
- */
-function $(el) {
-  return document.getElementById(el);
-}
-
-
-/*
- * See http://stackoverflow.com/a/5450113/66387
- * Does string multiplication like the perl x operator.
- */
-function string_mult(pattern, count) {
-    if (count < 1) return '';
-    var result = '';
-    while (count > 1) {
-        if (count & 1) result += pattern;
-        count >>= 1, pattern += pattern;
-    }
-    return result + pattern;
-}
-
-/*
- * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
- * Slightly modified with information from
- * https://developer.mozilla.org/en/DOM/window.location
- */
-function parse_params() {
-  "use strict";
-  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
-  search = window.location.search;
-  queryStart = search.indexOf("?") + 1;
-  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
-  query      = search.slice(queryStart, queryEnd - 1);
-
-  if (query === search || query === "") return {};
-
-  params  = {};
-  nvPairs = query.replace(/\+/g, " ").split("&");
-
-  for (i = 0; i < nvPairs.length; i++) {
-    nv = nvPairs[i].split("=");
-    n  = decodeURIComponent(nv[0]);
-    v  = decodeURIComponent(nv[1]);
-    // allow a name to be used multiple times
-    // storing each value in the array
-    if (!(n in params)) {
-      params[n] = [];
-    }
-    params[n].push(nv.length === 2 ? v : null);
-  }
-  return params;
-}
-
-/*
- * coords
- *
- * Calculates the x and y offset of an element.
- * From http://www.quirksmode.org/js/findpos.html
- * with alterations to take into account scrolling regions
- */
-function coords(elem) {
-  var myX = myY = 0;
-  if (elem.getBoundingClientRect) {
-    var rect;
-    rect = elem.getBoundingClientRect();
-    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
-        window.pageXOffset : document.body.scrollLeft);
-    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
-        window.pageYOffset : document.body.scrollTop);
-  } else {
-    // this fall back doesn't properly handle absolutely positioned elements
-    // inside a scrollable box
-    var node;
-    if (elem.offsetParent) {
-      // subtract all scrolling
-      node = elem;
-      do {
-        myX -= node.scrollLeft ? node.scrollLeft : 0;
-        myY -= node.scrollTop ? node.scrollTop : 0;
-      } while (node = node.parentNode);
-      // this will include the page scrolling (which is unwanted) so add it back on
-      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
-      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
-      // sum up offsets
-      node = elem;
-      do {
-        myX += node.offsetLeft;
-        myY += node.offsetTop;
-      } while (node = node.offsetParent);
-    }
-  }
-  return [myX, myY];
-}
-
-/*
- * position_popup
- *
- * Positions a popup relative to an anchor element.
- *
- * The avaliable positions are:
- * 0 - Centered below the anchor.
- */
-function position_popup(anchor, popup, position) {
-  "use strict";
-  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
-  var a_xy, spacer, margin, scrollbar, page_w;
-  // define constants
-  spacer = 5;
-  margin = 15;
-  scrollbar = 15;
-  // define the positions and widths
-  a_xy = coords(anchor);
-  a_x = a_xy[0];
-  a_y = a_xy[1];
-  a_w = anchor.offsetWidth;
-  a_h = anchor.offsetHeight;
-  p_w = popup.offsetWidth;
-  p_h = popup.offsetHeight;
-  page_w = null;
-  if (window.innerWidth) {
-    page_w = window.innerWidth;
-  } else if (document.body) {
-    page_w = document.body.clientWidth;
-  }
-  // check the position type is defined
-  if (typeof position !== "number") {
-    position = 0;
-  }
-  // calculate the popup position
-  switch (position) {
-    case 1:
-      p_x = a_x + a_w + spacer;
-      p_y = a_y + (a_h / 2) - (p_h / 2);
-      break;
-    case 0:
-    default:
-      p_x = a_x + (a_w / 2) - (p_w / 2);
-      p_y = a_y + a_h + spacer;
-      break;
-  }
-  // constrain the popup position
-  if (p_x < margin) {
-    p_x = margin;
-  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
-    p_x = page_w - margin - scrollbar - p_w;
-  }
-  if (p_y < margin) {
-    p_y = margin;
-  }
-  // position the popup
-  popup.style.left = p_x + "px";
-  popup.style.top = p_y + "px";
-}
-
-function lookup_help_popup(popup_id) {
-  var _body, pop, info;
-  pop = document.getElementById(popup_id);
-  if (pop == null) {
-    _body = document.getElementsByTagName("body")[0];
-    pop = document.createElement("div");
-    pop.className = "pop_content";
-    pop.id = popup_id;
-    pop.style.backgroundColor = "#FFC";
-    pop.style.borderColor = "black";
-    info = document.createElement("p");
-    info.style.fontWeight = "bold";
-    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
-    pop.appendChild(info);
-    // this might cause problems with the menu, but as this only happens
-    // when something is already wrong I don't think that's too much of a problem
-    _body.insertBefore(pop, _body.firstChild);
-  }
-  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
-    if (!/\bauto_buttons\b/.test(pop.className)) {
-      pop.className += " auto_buttons";
-      var back_btn_sec = document.createElement("div");
-      back_btn_sec.className = "nested_only pop_back_sec";
-      var back_btn = document.createElement("span");
-      back_btn.className = "pop_back";
-      back_btn.appendChild(document.createTextNode("<< back"));
-      back_btn.addEventListener("click", function(e) {
-        help_return();
-      }, false);
-      back_btn_sec.appendChild(back_btn);
-      pop.insertBefore(back_btn_sec, pop.firstChild);
-      var close_btn_sec = document.createElement("div");
-      close_btn_sec.className = "pop_close_sec";
-      var close_btn = document.createElement("span");
-      close_btn.className = "pop_close";
-      close_btn.appendChild(document.createTextNode("close"));
-      close_btn.addEventListener("click", function(e) {
-        help_popup();
-      }, false);
-      close_btn_sec.appendChild(close_btn);
-      pop.appendChild(close_btn_sec);
-    }
-  }
-  return pop;
-}
-
-/*
- * help_popup
- *
- * Moves around help pop-ups so they appear
- * below an activator.
- */
-function help_popup(activator, popup_id) {
-  "use strict";
-  var pop;
-  // set default values
-  if (typeof help_popup.popup === "undefined") {
-    help_popup.popup = [];
-  }
-  if (typeof help_popup.activator === "undefined") {
-    help_popup.activator = null;
-  }
-  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
-  if (typeof(activator) == "undefined") { // no activator so hide
-    if (last_pop != null) {
-      last_pop.style.display = 'none';
-      help_popup.popup = [];
-    }
-    return;
-  }
-  pop = lookup_help_popup(popup_id);
-  if (pop == last_pop) {
-    if (activator == help_popup.activator) {
-      //hide popup (as we've already shown it for the current help button)
-      last_pop.style.display = 'none';
-      help_popup.popup = [];
-      return; // toggling complete!
-    }
-  } else if (last_pop != null) {
-    //activating different popup so hide current one
-    last_pop.style.display = 'none';
-  }
-  help_popup.popup = [pop];
-  help_popup.activator = activator;
-  toggle_class(pop, "nested", false);
-  //must make the popup visible to measure it or it has zero width
-  pop.style.display = 'block';
-  position_popup(activator, pop);
-}
-
-/*
- * help_refine
- * 
- * Intended for links within a help popup. Stores a stack of state so
- * you can go back.
- */
-function help_refine(popup_id) {
-  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
-    throw new Error("Can not refine a help popup when one is not shown!");
-  }
-  var pop = lookup_help_popup(popup_id);
-  var last_pop = help_popup.popup[help_popup.popup.length - 1];
-  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
-  help_popup.popup.push(pop);
-  toggle_class(pop, "nested", true);
-  last_pop.style.display = "none";
-  //must make the popup visible to measure it or it has zero width
-  pop.style.display = "block";
-  position_popup(help_popup.activator, pop);
-}
-
-/*
- * help_return
- * 
- * Intended for links within a help popup. Stores a stack of state so
- * you can go back.
- */
-function help_return() {
-  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
-    throw new Error("Can not return to a earlier help popup when one is not shown!");
-  }
-  var last_pop = help_popup.popup.pop();
-  last_pop.style.display = "none";
-  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
-  if (pop != null) {
-    toggle_class(pop, "nested", help_popup.popup.length > 1);
-    pop.style.display = "block";
-    position_popup(help_popup.activator, pop);
-  } else {
-    help_popup.activator = null;
-  }
-}
-
-/*
- * update_scroll_pad
- *
- * Creates padding at the bottom of the page to allow
- * scrolling of anything into view.
- */
-function update_scroll_pad() {
-  var page, pad;
-  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
-  pad = $("scrollpad");
-  if (pad === null) {
-    pad = document.createElement("div");
-    pad.id = 'scrollpad';
-    document.getElementsByTagName('body')[0].appendChild(pad);
-  }
-  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
-}
-
-function substitute_classes(node, remove, add) {
-  "use strict";
-  var list, all, i, cls, classes;
-  list = node.className.split(/\s+/);
-  all = {};
-  for (i = 0; i < list.length; i++) {
-    if (list[i].length > 0) all[list[i]] = true;
-  }
-  for (i = 0; i < remove.length; i++) {
-    if (all.hasOwnProperty(remove[i])) {
-      delete all[remove[i]];
-    }
-  }
-  for (i = 0; i < add.length; i++) {
-    all[add[i]] = true;
-  }
-  classes = "";
-  for (cls in all) {
-    classes += cls + " ";
-  }
-  node.className = classes;
-}
-
-/*
- * toggle_class
- *
- * Adds or removes a class from the node. If the parameter 'enabled' is not 
- * passed then the existence of the class will be toggled, otherwise it will be
- * included if enabled is true.
- */
-function toggle_class(node, cls, enabled) {
-  var classes = node.className;
-  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
-  var found = false;
-  for (var i = 0; i < list.length; i++) {
-    if (list[i] == cls) {
-      list.splice(i, 1);
-      i--;
-      found = true;
-    }
-  }
-  if (typeof enabled == "undefined") {
-    if (!found) list.push(cls);
-  } else {
-    if (enabled) list.push(cls);
-  }
-  node.className = list.join(" ");
-}
-
-/*
- * find_child
- *
- * Searches child nodes in depth first order and returns the first it finds
- * with the className specified.
- * TODO replace with querySelector
- */
-function find_child(node, className) {
-  var pattern;
-  if (node == null || typeof node !== "object") {
-    return null;
-  }
-  if (typeof className === "string") {
-    pattern = new RegExp("\\b" + className + "\\b");
-  } else {
-    pattern = className;
-  }
-  if (node.nodeType == Node.ELEMENT_NODE && 
-      pattern.test(node.className)) {
-    return node;
-  } else {
-    var result = null;
-    for (var i = 0; i < node.childNodes.length; i++) {
-      result = find_child(node.childNodes[i], pattern);
-      if (result != null) break;
-    }
-    return result;
-  }
-}
-
-/*
- * find_parent
- *
- * Searches parent nodes outwards from the node and returns the first it finds
- * with the className specified.
- */
-function find_parent(node, className) {
-  var pattern;
-  pattern = new RegExp("\\b" + className + "\\b");
-  do {
-    if (node.nodeType == Node.ELEMENT_NODE && 
-        pattern.test(node.className)) {
-      return node;
-    }
-  } while (node = node.parentNode);
-  return null;
-}
-
-/*
- * find_parent_tag
- *
- * Searches parent nodes outwards from the node and returns the first it finds
- * with the tag name specified. HTML tags should be specified in upper case.
- */
-function find_parent_tag(node, tag_name) {
-  do {
-    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
-      return node;
-    }
-  } while (node = node.parentNode);
-  return null;
-}
-
-/*
- * __toggle_help
- *
- * Uses the 'topic' property of the this object to
- * toggle display of a help topic.
- *
- * This function is not intended to be called directly.
- */
-function __toggle_help(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-
-  help_popup(this, this.getAttribute("data-topic"));
-}
-
-function setup_help_button(button) {
-  "use strict";
-  var topic;
-  if (button.hasAttribute("data-topic")) {
-    topic = button.getAttribute("data-topic");
-    if (document.getElementById(topic) != null) {
-      button.tabIndex = "0"; // make keyboard selectable
-      button.addEventListener("click", function() {
-        help_popup(button, topic);
-      }, false);
-      button.addEventListener("keydown", function(e) {
-        // toggle only on Enter or Spacebar, let other keys do their thing
-        if (e.keyCode !== 13 && e.keyCode !== 32) return;
-        // stop a submit or something like that
-        e.preventDefault();
-        help_popup(button, topic);
-      }, false);
-    } else {
-      button.style.visibility = "hidden";
-    }
-  }
-  button.className += " active";
-}
-
-/*
- * help_button
- *
- * Makes a help button for the passed topic.
- */
-function help_button(topic) {
-  var btn = document.createElement("div");
-  btn.className = "help";
-  btn.setAttribute("data-topic", topic);
-  setup_help_button(btn);
-  return btn;
-}
-
-/*
- * prepare_download
- *
- * Sets the attributes of a link to setup a file download using the given content.
- * If no link is provided then create one and click it.
- */
-function prepare_download(content, mimetype, filename, link) {
-  "use strict";
-  // if no link is provided then create one and click it
-  var click_link = false;
-  if (!link) {
-    link = document.createElement("a");
-    click_link = true;
-  }
-  try {
-    // Use a BLOB to convert the text into a data URL.
-    // We could do this manually with a base 64 conversion.
-    // This will only be supported on modern browsers,
-    // hence the try block.
-    var blob = new Blob([content], {type: mimetype});
-    var reader = new FileReader();
-    reader.onloadend = function() {
-      // If we're lucky the browser will also support the download
-      // attribute which will let us suggest a file name to save the link.
-      // Otherwise it is likely that the filename will be unintelligible. 
-      link.setAttribute("download", filename);
-      link.href = reader.result;
-      if (click_link) {
-        // must add the link to click it
-        document.body.appendChild(link);
-        link.click();
-        document.body.removeChild(link);
-      }
-    }
-    reader.readAsDataURL(blob);
-  } catch (error) {
-    if (console && console.log) console.log(error);
-    // probably an old browser
-    link.href = "";
-    link.visible = false;
-  }
-}
-
-/*
- * add_cell
- *
- * Add a cell to the table row.
- */
-function add_cell(row, node, cls, click_action) {
-  var cell = row.insertCell(row.cells.length);
-  if (node) cell.appendChild(node);
-  if (cls && cls !== "") cell.className = cls;
-  if (click_action) cell.addEventListener("click", click_action, false);
-}
-
-/*
- * add_header_cell
- *
- * Add a header cell to the table row.
- */
-function add_header_cell(row, node, help_topic, cls, colspan) {
-  var th = document.createElement("th");
-  if (node) th.appendChild(node);
-  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
-  if (cls && cls !== "") th.className = cls;
-  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
-  row.appendChild(th);
-}
-
-/*
- * add_text_cell
- *
- * Add a text cell to the table row.
- */
-function add_text_cell(row, text, cls, action) {
-  var node = null;
-  if (typeof(text) != 'undefined') node = document.createTextNode(text);
-  add_cell(row, node, cls, action);
-}
-
-/*
- * add_text_header_cell
- *
- * Add a text header cell to the table row.
- */
-function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
-  var node = null;
-  if (typeof(text) != 'undefined') {
-    var nbsp = (help_topic ? "\u00A0" : "");
-    var str = "" + text;
-    var parts = str.split(/\n/);
-    if (parts.length === 1) {
-      if (action) {
-        node = document.createElement("span");
-        node.appendChild(document.createTextNode(str + nbsp));
-      } else {
-        node = document.createTextNode(str + nbsp);
-      }
-    } else {
-      node = document.createElement("span");
-      for (var i = 0; i < parts.length; i++) {
-        if (i !== 0) {
-          node.appendChild(document.createElement("br"));
-        }
-        node.appendChild(document.createTextNode(parts[i]));
-      }
-    }
-    if (action) {
-      node.addEventListener("click", action, false);
-      node.style.cursor = "pointer";
-    }
-  }
-  add_header_cell(row, node, help_topic, cls, colspan);
-}
-
-function setup_help() {
-  "use strict";
-  var help_buttons, i;
-  help_buttons = document.querySelectorAll(".help:not(.active)");
-  for (i = 0; i < help_buttons.length; i++) {
-    setup_help_button(help_buttons[i]);
-  }
-}
-
-function setup_scrollpad() {
-  "use strict";
-  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
-    window.addEventListener("resize", update_scroll_pad, false);
-    update_scroll_pad();
-  }
-}
-
-// anon function to avoid polluting global scope
-(function() {
-  "use strict";
-  window.addEventListener("load", function load(evt) {
-    window.removeEventListener("load", load, false);
-    setup_help();
-    setup_scrollpad();
-  }, false);
-})();
-
-/*
- *  make_link
- *
- *  Creates a text node and if a URL is specified it surrounds it with a link.
- *  If the URL doesn't begin with "http://" it automatically adds it, as
- *  relative links don't make much sense in this context.
- */
-function make_link(text, url) {
-  var textNode = null;
-  var link = null;
-  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
-  if (typeof url === "string") {
-    if (url.indexOf("//") == -1) {
-      url = "http://" + url;
-    }
-    link = document.createElement('a');
-    link.href = url;
-    if (textNode) link.appendChild(textNode);
-    return link;
-  }
-  return textNode;
-}
-</script>
-    <script>
-function motif_logo_template(inputs) {
-  function _input(name) {
-    if (typeof inputs[name] === "undefined") {
-      throw new Error("Missing template variable: " + name);
-    }
-    return inputs[name];
-  }
-  return (
-"%!PS-Adobe-3.0 EPSF-3.0\n" +
-"%%Title: Sequence Logo : " + _input("TITLE") + "\n" +
-"%%Creator: " + _input("CREATOR") + "\n" +
-"%%CreationDate: " + _input("CREATIONDATE") + "\n" +
-"%%BoundingBox:   0  0  " + _input("BOUNDINGWIDTH") + " " + _input("BOUNDINGHEIGHT") + " \n" +
-"%%Pages: 0\n" +
-"%%DocumentFonts: \n" +
-"%%EndComments\n" +
-"\n" +
-"% ---- CONSTANTS ----\n" +
-"\/cmfactor 72 2.54 div def % defines points -> cm conversion\n" +
-"\/cm {cmfactor mul} bind def % defines centimeters\n" +
-"\n" +
-"% ---- VARIABLES ----\n" +
-"\n" +
-"% NA = Nucleic Acid, AA = Amino Acid\n" +
-"\/logoType (" + _input("LOGOTYPE") + ") def \n" +
-"\n" +
-"\/logoTitle (" + _input("TITLE") + ") def\n" +
-"\n" +
-"% Dimensions in cm\n" +
-"\/logoWidth " + _input("LOGOWIDTH") + " cm def\n" +
-"\/logoHeight " + _input("LOGOLINEHEIGHT") + " cm def\n" +
-"\/totalHeight " + _input("LOGOHEIGHT") + " cm def\n" +
-"\n" +
-"\/yaxis " + _input("YAXIS") + " def\n" +
-"\/yaxisLabel (" + _input("YAXISLABEL") + ") def\n" +
-"\/yaxisBits  " + _input("BARBITS") + " def % bits\n" +
-"\/yaxisTicBits " + _input("TICBITS") + " def\n" +
-"\n" +
-"\/xaxis " + _input("NUMBERING") + " def\n" +
-"\/xaxisLabel (" + _input("XAXISLABEL") + ") def\n" +
-"\/showEnds (" + _input("SHOWENDS") + ") def \n" +
-"\n" +
-"\/showFineprint true def\n" +
-"\/fineprint (" + _input("FINEPRINT") + ") def\n" +
-"\n" +
-"\/charsPerLine " + _input("CHARSPERLINE") + " def\n" +
-"\n" +
-"\/showingBox " + _input("SHOWINGBOX") + " def    \n" +
-"\/shrinking false def   % true falses\n" +
-"\/shrink  1.0 def\n" +
-"\/outline " + _input("OUTLINE") + " def\n" +
-"\n" +
-"\/IbeamFraction  " + _input("ERRORBARFRACTION") + " def\n" +
-"\/IbeamGray      0.50 def\n" +
-"\/IbeamLineWidth 0.5 def\n" +
-"\n" +
-"\/fontsize       " + _input("FONTSIZE") + " def\n" +
-"\/titleFontsize  " + _input("TITLEFONTSIZE") + " def\n" +
-"\/smallFontsize  " + _input("SMALLFONTSIZE") + " def\n" +
-"\n" +
-"\/topMargin      " + _input("TOPMARGIN") + " cm def\n" +
-"\/bottomMargin   " + _input("BOTTOMMARGIN") + " cm def\n" +
-"\n" +
-"\/defaultColor [0 0 0] def \n" +
-"\n" +
-_input("COLORDICT") + "\n" +
-"\n" +
-"\/colorDict fullColourDict def\n" +
-"\n" +
-"% ---- DERIVED PARAMETERS ----\n" +
-"\n" +
-"\/leftMargin\n" +
-"  fontsize 3.5 mul\n" +
-"\n" +
-"def \n" +
-"\n" +
-"\/rightMargin \n" +
-"  %Add extra room if showing ends\n" +
-"  showEnds (false) eq { fontsize}{fontsize 1.5 mul} ifelse\n" +
-"def\n" +
-"\n" +
-"\/yaxisHeight \n" +
-"  logoHeight \n" +
-"  bottomMargin sub  \n" +
-"  topMargin sub\n" +
-"def\n" +
-"\n" +
-"\/ticWidth fontsize 2 div def\n" +
-"\n" +
-"\/pointsPerBit yaxisHeight yaxisBits div  def\n" +
-"\n" +
-"\/stackMargin 1 def\n" +
-"\n" +
-"% Do not add space aroung characters if characters are boxed\n" +
-"\/charRightMargin \n" +
-"  showingBox { 0.0 } {stackMargin} ifelse\n" +
-"def\n" +
-"\n" +
-"\/charTopMargin \n" +
-"  showingBox { 0.0 } {stackMargin} ifelse\n" +
-"def\n" +
-"\n" +
-"\/charWidth\n" +
-"  logoWidth\n" +
-"  leftMargin sub\n" +
-"  rightMargin sub\n" +
-"  charsPerLine div\n" +
-"  charRightMargin sub\n" +
-"def\n" +
-"\n" +
-"\/charWidth4 charWidth 4 div def\n" +
-"\/charWidth2 charWidth 2 div def\n" +
-"\n" +
-"\/stackWidth \n" +
-"  charWidth charRightMargin add\n" +
-"def\n" +
-" \n" +
-"\/numberFontsize \n" +
-"  fontsize charWidth lt {fontsize}{charWidth} ifelse\n" +
-"def\n" +
-"\n" +
-"% movements to place 5'\/N and 3'\/C symbols\n" +
-"\/leftEndDeltaX  fontsize neg         def\n" +
-"\/leftEndDeltaY  fontsize 1.5 mul neg def\n" +
-"\/rightEndDeltaX fontsize 0.25 mul     def\n" +
-"\/rightEndDeltaY leftEndDeltaY        def\n" +
-"\n" +
-"% Outline width is proporional to charWidth, \n" +
-"% but no less that 1 point\n" +
-"\/outlinewidth \n" +
-"  charWidth 32 div dup 1 gt  {}{pop 1} ifelse\n" +
-"def\n" +
-"\n" +
-"\n" +
-"% ---- PROCEDURES ----\n" +
-"\n" +
-"\/StartLogo { \n" +
-"  % Save state\n" +
-"  save \n" +
-"  gsave \n" +
-"\n" +
-"  % Print Logo Title, top center \n" +
-"  gsave \n" +
-"    SetStringFont\n" +
-"\n" +
-"    logoWidth 2 div\n" +
-"    logoTitle\n" +
-"    stringwidth pop 2 div sub\n" +
-"    totalHeight\n" +
-"    titleFontsize sub\n" +
-"    moveto\n" +
-"\n" +
-"    logoTitle\n" +
-"    show\n" +
-"  grestore\n" +
-"\n" +
-"  % Print X-axis label, bottom center\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"\n" +
-"    logoWidth 2 div\n" +
-"    xaxisLabel\n" +
-"    stringwidth pop 2 div sub\n" +
-"    0\n" +
-"    titleFontsize 3 div\n" +
-"    add\n" +
-"    moveto\n" +
-"\n" +
-"    xaxisLabel\n" +
-"    show\n" +
-"  grestore\n" +
-"\n" +
-"  % Show Fine Print\n" +
-"  showFineprint {\n" +
-"    gsave\n" +
-"      SetSmallFont\n" +
-"      logoWidth\n" +
-"        fineprint stringwidth pop sub\n" +
-"        smallFontsize sub\n" +
-"          smallFontsize 3 div\n" +
-"      moveto\n" +
-"    \n" +
-"      fineprint show\n" +
-"    grestore\n" +
-"  } if\n" +
-"\n" +
-"  % Move to lower left corner of last line, first stack\n" +
-"  leftMargin bottomMargin translate\n" +
-"\n" +
-"  % Move above first line ready for StartLine \n" +
-"  0 totalHeight translate\n" +
-"\n" +
-"  SetLogoFont\n" +
-"} bind def\n" +
-"\n" +
-"\/EndLogo { \n" +
-"  grestore \n" +
-"  showpage \n" +
-"  restore \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/StartLine { \n" +
-"  % move down to the bottom of the line:\n" +
-"  0 logoHeight neg translate\n" +
-"  \n" +
-"  gsave \n" +
-"    yaxis { MakeYaxis } if\n" +
-"    xaxis { showEnds (true) eq {ShowLeftEnd} if } if\n" +
-"} bind def\n" +
-"\n" +
-"\/EndLine{ \n" +
-"    xaxis { showEnds (true) eq {ShowRightEnd} if } if\n" +
-"  grestore \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/MakeYaxis {\n" +
-"  gsave    \n" +
-"    stackMargin neg 0 translate\n" +
-"    ShowYaxisBar\n" +
-"    ShowYaxisLabel\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowYaxisBar { \n" +
-"  gsave  \n" +
-"    SetStringFont\n" +
-"\n" +
-"    \/str 10 string def % string to hold number  \n" +
-"    \/smallgap stackMargin 2 div def\n" +
-"\n" +
-"    % Draw first tic and bar\n" +
-"    gsave    \n" +
-"      ticWidth neg 0 moveto \n" +
-"      ticWidth 0 rlineto \n" +
-"      0 yaxisHeight rlineto\n" +
-"      stroke\n" +
-"    grestore\n" +
-"\n" +
-"   \n" +
-"    % Draw the tics\n" +
-"    % initial increment limit proc for\n" +
-"    0 yaxisTicBits yaxisBits abs %cvi\n" +
-"    {\/loopnumber exch def\n" +
-"\n" +
-"      % convert the number coming from the loop to a string\n" +
-"      % and find its width\n" +
-"      loopnumber 10 str cvrs\n" +
-"      \/stringnumber exch def % string representing the number\n" +
-"\n" +
-"      stringnumber stringwidth pop\n" +
-"      \/numberwidth exch def % width of number to show\n" +
-"\n" +
-"      \/halfnumberheight\n" +
-"         stringnumber CharBoxHeight 2 div\n" +
-"      def\n" +
-"\n" +
-"      numberwidth % move back width of number\n" +
-"      neg loopnumber pointsPerBit mul % shift on y axis\n" +
-"      halfnumberheight sub % down half the digit\n" +
-"\n" +
-"      moveto % move back the width of the string\n" +
-"\n" +
-"      ticWidth neg smallgap sub % Move back a bit more  \n" +
-"      0 rmoveto % move back the width of the tic  \n" +
-"\n" +
-"      stringnumber show\n" +
-"      smallgap 0 rmoveto % Make a small gap  \n" +
-"\n" +
-"      % now show the tic mark\n" +
-"      0 halfnumberheight rmoveto % shift up again\n" +
-"      ticWidth 0 rlineto\n" +
-"      stroke\n" +
-"    } for\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\/ShowYaxisLabel {\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"\n" +
-"    % How far we move left depends on the size of\n" +
-"    % the tic labels.\n" +
-"    \/str 10 string def % string to hold number  \n" +
-"    yaxisBits yaxisTicBits div cvi yaxisTicBits mul \n" +
-"    str cvs stringwidth pop\n" +
-"    ticWidth 1.5 mul  add neg  \n" +
-"\n" +
-"\n" +
-"    yaxisHeight\n" +
-"    yaxisLabel stringwidth pop\n" +
-"    sub 2 div\n" +
-"\n" +
-"    translate\n" +
-"    90 rotate\n" +
-"    0 0 moveto\n" +
-"    yaxisLabel show\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/StartStack {  % <stackNumber> startstack\n" +
-"  xaxis {MakeNumber}{pop} ifelse\n" +
-"  gsave\n" +
-"} bind def\n" +
-"\n" +
-"\/EndStack {\n" +
-"  grestore\n" +
-"  stackWidth 0 translate\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% Draw a character whose height is proportional to symbol bits\n" +
-"\/MakeSymbol{ % charbits character MakeSymbol\n" +
-"  gsave\n" +
-"    \/char exch def\n" +
-"    \/bits exch def\n" +
-"\n" +
-"    \/bitsHeight \n" +
-"       bits pointsPerBit mul \n" +
-"    def\n" +
-"\n" +
-"    \/charHeight \n" +
-"       bitsHeight charTopMargin sub\n" +
-"       dup \n" +
-"       0.0 gt {}{pop 0.0} ifelse % if neg replace with zero \n" +
-"    def \n" +
-" \n" +
-"    charHeight 0.0 gt {\n" +
-"      char SetColor\n" +
-"      charWidth charHeight char ShowChar\n" +
-"\n" +
-"      showingBox { % Unfilled box\n" +
-"        0 0 charWidth charHeight false ShowBox\n" +
-"      } if\n" +
-"\n" +
-"\n" +
-"    } if\n" +
-"\n" +
-"  grestore\n" +
-"\n" +
-"  0 bitsHeight translate \n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowChar { % <width> <height> <char> ShowChar\n" +
-"  gsave\n" +
-"    \/tc exch def    % The character\n" +
-"    \/ysize exch def % the y size of the character\n" +
-"    \/xsize exch def % the x size of the character\n" +
-"\n" +
-"    \/xmulfactor 1 def \n" +
-"    \/ymulfactor 1 def\n" +
-"    \/limmulfactor 0.01 def\n" +
-"    \/drawable true def\n" +
-"\n" +
-"  \n" +
-"    % if ysize is negative, make everything upside down!\n" +
-"    ysize 0 lt {\n" +
-"      % put ysize normal in this orientation\n" +
-"      \/ysize ysize abs def\n" +
-"      xsize ysize translate\n" +
-"      180 rotate\n" +
-"    } if\n" +
-"\n" +
-"    shrinking {\n" +
-"      xsize 1 shrink sub 2 div mul\n" +
-"        ysize 1 shrink sub 2 div mul translate \n" +
-"\n" +
-"      shrink shrink scale\n" +
-"    } if\n" +
-"\n" +
-"    % Calculate the font scaling factors\n" +
-"    % Loop twice to catch small correction due to first scaling\n" +
-"    2 {\n" +
-"      gsave\n" +
-"        xmulfactor ymulfactor scale\n" +
-"      \n" +
-"        ysize % desired size of character in points\n" +
-"        tc CharBoxHeight \n" +
-"        dup 0.0 ne {\n" +
-"          div % factor by which to scale up the character\n" +
-"          \/ymulfactor exch def\n" +
-"        } % end if\n" +
-"        {pop pop}\n" +
-"        ifelse\n" +
-"\n" +
-"        xsize % desired size of character in points\n" +
-"        tc CharBoxWidth  \n" +
-"        dup 0.0 ne {\n" +
-"          div % factor by which to scale up the character\n" +
-"          \/xmulfactor exch def\n" +
-"        } % end if\n" +
-"        {pop pop}\n" +
-"        ifelse\n" +
-"      grestore\n" +
-"      % if the multiplication factors get too small we need to avoid a crash\n" +
-"      xmulfactor limmulfactor lt {\n" +
-"        \/xmulfactor 1 def\n" +
-"        \/drawable false def\n" +
-"      } if\n" +
-"      ymulfactor limmulfactor lt {\n" +
-"        \/ymulfactor 1 def\n" +
-"        \/drawable false def\n" +
-"      } if\n" +
-"    } repeat\n" +
-"\n" +
-"    % Adjust horizontal position if the symbol is an I\n" +
-"    tc (I) eq {\n" +
-"      charWidth 2 div % half of requested character width\n" +
-"      tc CharBoxWidth 2 div % half of the actual character\n" +
-"      sub 0 translate\n" +
-"      % Avoid x scaling for I \n" +
-"      \/xmulfactor 1 def \n" +
-"    } if\n" +
-"\n" +
-"\n" +
-"    % ---- Finally, draw the character\n" +
-"    drawable { \n" +
-"      newpath\n" +
-"      xmulfactor ymulfactor scale\n" +
-"\n" +
-"      % Move lower left corner of character to start point\n" +
-"      tc CharBox pop pop % llx lly : Lower left corner\n" +
-"      exch neg exch neg\n" +
-"      moveto\n" +
-"\n" +
-"      outline {  % outline characters:\n" +
-"        outlinewidth setlinewidth\n" +
-"        tc true charpath\n" +
-"        gsave 1 setgray fill grestore\n" +
-"        clip stroke\n" +
-"      } { % regular characters\n" +
-"        tc show\n" +
-"      } ifelse\n" +
-"    } if\n" +
-"\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowBox { % x1 y1 x2 y2 filled ShowBox\n" +
-"  gsave\n" +
-"    \/filled exch def \n" +
-"    \/y2 exch def\n" +
-"    \/x2 exch def\n" +
-"    \/y1 exch def\n" +
-"    \/x1 exch def\n" +
-"    newpath\n" +
-"    x1 y1 moveto\n" +
-"    x2 y1 lineto\n" +
-"    x2 y2 lineto\n" +
-"    x1 y2 lineto\n" +
-"    closepath\n" +
-"\n" +
-"    clip\n" +
-"    \n" +
-"    filled {\n" +
-"      fill\n" +
-"    }{ \n" +
-"      0 setgray stroke   \n" +
-"    } ifelse\n" +
-"\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/MakeNumber { % number MakeNumber\n" +
-"  gsave\n" +
-"    SetNumberFont\n" +
-"    stackWidth 0 translate\n" +
-"    90 rotate % rotate so the number fits\n" +
-"    dup stringwidth pop % find the length of the number\n" +
-"    neg % prepare for move\n" +
-"    stackMargin sub % Move back a bit\n" +
-"    charWidth (0) CharBoxHeight % height of numbers\n" +
-"    sub 2 div %\n" +
-"    moveto % move back to provide space\n" +
-"    show\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/Ibeam{ % heightInBits Ibeam\n" +
-"  gsave\n" +
-"    % Make an Ibeam of twice the given height in bits\n" +
-"    \/height exch  pointsPerBit mul def \n" +
-"    \/heightDRAW height IbeamFraction mul def\n" +
-"\n" +
-"    IbeamLineWidth setlinewidth\n" +
-"    IbeamGray setgray \n" +
-"\n" +
-"    charWidth2 height neg translate\n" +
-"    ShowIbar\n" +
-"    newpath\n" +
-"      0 0 moveto\n" +
-"      0 heightDRAW rlineto\n" +
-"    stroke\n" +
-"    newpath\n" +
-"      0 height moveto\n" +
-"      0 height rmoveto\n" +
-"      currentpoint translate\n" +
-"    ShowIbar\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    0 heightDRAW neg rlineto\n" +
-"    currentpoint translate\n" +
-"    stroke\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowIbar { % make a horizontal bar\n" +
-"  gsave\n" +
-"    newpath\n" +
-"      charWidth4 neg 0 moveto\n" +
-"      charWidth4 0 lineto\n" +
-"    stroke\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowLeftEnd {\n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"    leftEndDeltaX leftEndDeltaY moveto\n" +
-"    logoType (NA) eq {(5) show ShowPrime} if\n" +
-"    logoType (AA) eq {(N) show} if\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowRightEnd { \n" +
-"  gsave\n" +
-"    SetStringFont\n" +
-"    rightEndDeltaX rightEndDeltaY moveto\n" +
-"    logoType (NA) eq {(3) show ShowPrime} if\n" +
-"    logoType (AA) eq {(C) show} if\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"\/ShowPrime {\n" +
-"  gsave\n" +
-"    SetPrimeFont\n" +
-"    (\\242) show \n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-" \n" +
-"\/SetColor{ % <char> SetColor\n" +
-"  dup colorDict exch known {\n" +
-"    colorDict exch get aload pop setrgbcolor\n" +
-"  } {\n" +
-"    pop\n" +
-"    defaultColor aload pop setrgbcolor\n" +
-"  } ifelse \n" +
-"} bind def\n" +
-"\n" +
-"% define fonts\n" +
-"\/SetTitleFont {\/Times-Bold findfont titleFontsize scalefont setfont} bind def\n" +
-"\/SetLogoFont  {\/Helvetica-Bold findfont charWidth  scalefont setfont} bind def\n" +
-"\/SetStringFont{\/Helvetica-Bold findfont fontsize scalefont setfont} bind def\n" +
-"\/SetPrimeFont {\/Symbol findfont fontsize scalefont setfont} bind def\n" +
-"\/SetSmallFont {\/Helvetica findfont smallFontsize scalefont setfont} bind def\n" +
-"\n" +
-"\/SetNumberFont {\n" +
-"    \/Helvetica-Bold findfont \n" +
-"    numberFontsize\n" +
-"    scalefont\n" +
-"    setfont\n" +
-"} bind def\n" +
-"\n" +
-"%Take a single character and return the bounding box\n" +
-"\/CharBox { % <char> CharBox <lx> <ly> <ux> <uy>\n" +
-"  gsave\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    % take the character off the stack and use it here:\n" +
-"    true charpath \n" +
-"    flattenpath \n" +
-"    pathbbox % compute bounding box of 1 pt. char => lx ly ux uy\n" +
-"    % the path is here, but toss it away ...\n" +
-"  grestore\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% The height of a characters bounding box\n" +
-"\/CharBoxHeight { % <char> CharBoxHeight <num>\n" +
-"  CharBox\n" +
-"  exch pop sub neg exch pop\n" +
-"} bind def\n" +
-"\n" +
-"\n" +
-"% The width of a characters bounding box\n" +
-"\/CharBoxWidth { % <char> CharBoxHeight <num>\n" +
-"  CharBox\n" +
-"  pop exch pop sub neg \n" +
-"} bind def\n" +
-"\n" +
-"% Set the colour scheme to be faded to indicate trimming\n" +
-"\/MuteColour {\n" +
-"  \/colorDict mutedColourDict def\n" +
-"} def\n" +
-"\n" +
-"% Restore the colour scheme to the normal colours\n" +
-"\/RestoreColour {\n" +
-"  \/colorDict fullColourDict def\n" +
-"} def\n" +
-"\n" +
-"% Draw the background for a trimmed section\n" +
-"% takes the number of columns as a parameter\n" +
-"\/DrawTrimBg { % <num> DrawTrimBox\n" +
-"  \/col exch def\n" +
-"  \n" +
-"  \/boxwidth \n" +
-"    col stackWidth mul \n" +
-"  def\n" +
-" \n" +
-"  gsave\n" +
-"    0.97 setgray\n" +
-"\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    boxwidth 0 rlineto\n" +
-"    0 yaxisHeight rlineto\n" +
-"    0 yaxisHeight lineto\n" +
-"    closepath\n" +
-"    \n" +
-"    fill\n" +
-"  grestore\n" +
-"} def\n" +
-"\n" +
-"\/DrawTrimEdge {\n" +
-"  gsave\n" +
-"    0.2 setgray\n" +
-"    [2] 0 setdash\n" +
-"\n" +
-"    newpath\n" +
-"    0 0 moveto\n" +
-"    0 yaxisHeight lineto\n" +
-"    \n" +
-"    stroke\n" +
-"\n" +
-"} def\n" +
-"\n" +
-"\n" +
-"% Deprecated names\n" +
-"\/startstack {StartStack} bind  def\n" +
-"\/endstack {EndStack}     bind def\n" +
-"\/makenumber {MakeNumber} bind def\n" +
-"\/numchar { MakeSymbol }  bind def\n" +
-"\n" +
-"%%EndProlog\n" +
-"\n" +
-"%%Page: 1 1\n" +
-"StartLogo\n" +
-"\n" +
-_input("DATA") + "\n" +
-"\n" +
-"EndLogo\n" +
-"\n" +
-"%%EOF\n"
-  );
-}</script>
-    <script>
-//======================================================================
-// start Alphabet object
-//======================================================================
-var Alphabet = function(alphabet, background) {
-  "use strict";
-  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
-  generate_background = (background == null);
-  if (generate_background) {
-    background = [];
-    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
-  } else if (alphabet.ncore != background.length) {
-    throw new Error("The background length does not match the alphabet length.");
-  }
-  this.name = alphabet.name;
-  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
-  this.ncore = alphabet.ncore;
-  this.symbols = alphabet.symbols;
-  this.background = background;
-  this.genbg = generate_background;
-  this.encode = {};
-  this.encode2core = {};
-  this.complement = {};
-  // check if all symbols are same case
-  var seen_uc = false;
-  var seen_lc = false;
-  var check_case = function (syms) {
-    var s, sym;
-    if (typeof syms === "string") {
-      for (s = 0; s < syms.length; s++) {
-        sym = syms.charAt(s);
-        if (sym >= 'a' && sym <= 'z') seen_lc = true;
-        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
-      }
-    }
-  };
-  for (i = 0; i < this.symbols.length; i++) {
-    check_case(this.symbols[i].symbol);
-    check_case(this.symbols[i].aliases);
-  }
-  // now map symbols to indexes
-  var update_array = function(array, syms, index) {
-    var s, sym;
-    if (typeof syms === "string") {
-      for (s = 0; s < syms.length; s++) {
-        sym = syms.charAt(s);
-        array[sym] = index;
-        // when only a single case is used, then encode as case insensitive
-        if (seen_uc != seen_lc) {
-          if (sym >= 'a' && sym <= 'z') {
-            array[sym.toUpperCase()] = index;
-          } else if (sym >= 'A' && sym <= 'Z') {
-            array[sym.toLowerCase()] = index;
-          }
-        }
-      }
-    }
-  }
-  // map core symbols to index
-  for (i = 0; i < this.ncore; i++) {
-    update_array(this.encode2core, this.symbols[i].symbol, i);
-    update_array(this.encode, this.symbols[i].symbol, i);
-    update_array(this.encode2core, this.symbols[i].aliases, i);
-    update_array(this.encode, this.symbols[i].aliases, i);
-  }
-  // map ambigous symbols to index
-  ambigs = {};
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    update_array(this.encode, this.symbols[i].symbol, i);
-    update_array(this.encode, this.symbols[i].aliases, i);
-    ambigs[this.symbols[i].equals] = i;
-  }
-  // determine complements
-  for (i = 0; i < this.ncore; i++) {
-    complement = this.symbols[i].complement;
-    if (typeof complement === "string") {
-      this.complement[i] = this.encode2core[complement];
-    }
-  }
-  next_symbol:
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    complement = "";
-    for (j = 0; j < this.symbols[i].equals.length; j++) {
-      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
-      if (typeof comp_e_sym !== "number") continue next_symbol;
-      complement += this.symbols[comp_e_sym].symbol;
-    }
-    complement = complement.split("").sort().join("");
-    if (typeof ambigs[complement] === "number") {
-      this.complement[i] = ambigs[complement];
-    }
-  }
-  // determine case insensitivity
-  this.case_insensitive = true;
-  if (seen_uc == seen_lc) {
-    // when there is a mixture of cases it probably won't
-    // be case insensitive but we still need to check
-    loop:
-    for (i = 0; i < this.symbols.length; i++) {
-      sym = this.symbols[i].symbol;
-      if (sym >= 'A' && sym <= 'Z') {
-        if (this.encode[sym.toLowerCase()] != i) {
-          this.case_insensitive = false;
-          break loop;
-        }
-      } else if (sym >= 'a' && sym <= 'z') {
-        if (this.encode[sym.toUpperCase()] != i) {
-          this.case_insensitive = false;
-          break loop;
-        }
-      }
-      aliases = this.symbols[i].aliases;
-      if (aliases != null) {
-        for (j = 0; j < aliases.length; j++) {
-          sym = aliases.charAt(j);
-          if (sym >= 'A' && sym <= 'Z') {
-            if (this.encode[sym.toLowerCase()] != i) {
-              this.case_insensitive = false;
-              break loop;
-            }
-          } else if (sym >= 'a' && sym <= 'z') {
-            if (this.encode[sym.toUpperCase()] != i) {
-              this.case_insensitive = false;
-              break loop;
-            }
-          }
-        }
-      }
-    }
-  }
-  // normalise aliases to remove the prime symbol and eliminate
-  // the alternate cases when the alphabet is case insensitive
-  var seen, out;
-  for (i = 0; i < this.symbols.length; i++) {
-    sym = this.symbols[i].symbol;
-    aliases = this.symbols[i].aliases;
-    if (typeof aliases != "string") aliases = "";
-    seen = {};
-    out = [];
-    if (this.case_insensitive) {
-      sym = sym.toUpperCase();
-      aliases = aliases.toUpperCase();
-    }
-    seen[sym] = true;
-    for (j = 0; j < aliases.length; j++) {
-      if (!seen[aliases.charAt(j)]) {
-        seen[aliases.charAt(j)] = true;
-        out.push(aliases.charAt(j));
-      }
-    }
-    this.symbols[i].aliases = out.sort().join("");
-  }
-};
-// return the name of the alphabet
-Alphabet.prototype.get_alphabet_name = function() {
-  return this.name;
-};
-// return if the alphabet can be complemented
-Alphabet.prototype.has_complement = function() {
-  return (typeof this.symbols[0].complement === "string");
-};
-// return true if an uppercase letter has the same meaning as the lowercase form
-Alphabet.prototype.is_case_insensitive = function() {
-  return this.case_insensitive;
-};
-// return the information content of an alphabet letter
-Alphabet.prototype.get_ic = function() {
-  return Math.log(this.ncore) / Math.LN2;
-};
-// return the count of the core alphabet symbols
-Alphabet.prototype.get_size_core = function() {
-  return this.ncore;
-};
-// return the count of all alphabet symbols
-Alphabet.prototype.get_size_full = function() {
-  return this.symbols.length;
-};
-// return the symbol for the given alphabet index
-Alphabet.prototype.get_symbol = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  return this.symbols[alph_index].symbol;
-};
-// return the aliases for the given alphabet index
-Alphabet.prototype.get_aliases = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  var sym_obj = this.symbols[alph_index];
-  return (sym_obj.aliases != null ? sym_obj.aliases : "");
-};
-// return the name for the given alphabet index
-Alphabet.prototype.get_name = function(alph_index) {
-  "use strict";
-  var sym;
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("Alphabet index out of bounds");
-  }
-  sym = this.symbols[alph_index];
-  return (typeof sym.name === "string" ? sym.name : sym.symbol);
-};
-// return the alphabet it is like or null
-Alphabet.prototype.get_like = function() {
-  "use strict";
-  return this.like;
-};
-// return the index of the complement for the given alphabet index
-Alphabet.prototype.get_complement = function(alph_index) {
-  var comp_e_sym = this.complement[alph_index];
-  if (typeof comp_e_sym === "number") {
-    return comp_e_sym;
-  } else {
-    return -1;
-  }
-};
-// return a string containing the core symbols
-Alphabet.prototype.get_symbols = function() {
-  "use strict";
-  var i, core_symbols;
-  core_symbols = "";
-  for (i = 0; i < this.ncore; i++) {
-    core_symbols += this.symbols[i].symbol;
-  }
-  return core_symbols;
-};
-// return if the background was not a uniform generated background
-Alphabet.prototype.has_bg = function() {
-  "use strict";
-  return !this.genbg;
-};
-// get the background frequency for the index
-Alphabet.prototype.get_bg_freq = function(alph_index) {
-  "use strict";
-  var freq, i, symbols;
-  if (alph_index >= 0) {
-    if (alph_index < this.ncore) {
-      return this.background[alph_index];
-    } else if (alph_index < this.symbols.length) {
-      freq = 0;
-      symbols = this.symbols[alph_index].equals;
-      for (i = 0; i < symbols.length; i++) {
-        freq += this.background[this.encode2core[symbols.charAt(i)]];
-      }
-      return freq;
-    } 
-  }
-  throw new Error("The alphabet index is out of range.");
-};
-// get the colour of the index
-Alphabet.prototype.get_colour = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("BAD_ALPHABET_INDEX");
-  }
-  if (typeof this.symbols[alph_index].colour != "string") {
-    return "black";
-  }
-  return "#" + this.symbols[alph_index].colour;
-};
-// get the rgb componets of the colour at the index
-Alphabet.prototype.get_rgb = function(alph_index) {
-  "use strict";
-  if (alph_index < 0 || alph_index >= this.symbols.length) {
-    throw new Error("BAD_ALPHABET_INDEX");
-  }
-  if (typeof this.symbols[alph_index].colour != "string") {
-    return {"red": 0, "green": 0, "blue": 0};
-  }
-  var colour = this.symbols[alph_index].colour;
-  var red = parseInt(colour.substr(0, 2), 16) / 255;
-  var green = parseInt(colour.substr(2, 2), 16) / 255;
-  var blue = parseInt(colour.substr(4, 2), 16) / 255;
-  return {"red": red, "green": green, "blue": blue};
-};
-// convert a symbol into the index
-Alphabet.prototype.get_index = function(letter) {
-  "use strict";
-  var alph_index;
-  alph_index = this.encode[letter];
-  if (typeof alph_index === "undefined") {
-    return -1;
-  }
-  return alph_index;
-};
-// convert a symbol into the list of core indexes that it equals
-Alphabet.prototype.get_indexes = function(letter) {
-  "use strict";
-  var alph_index, comprise_str, i, comprise_list;
-  alph_index = this.encode[letter];
-  if (typeof alph_index === "undefined") {
-    throw new Error("Unknown letter");
-  }
-  comprise_str = this.symbols[alph_index].equals;
-  comprise_list = [];
-  if (typeof comprise_str == "string") {
-    for (i = 0; i < comprise_str.length; i++) {
-      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
-    }
-  } else {
-    comprise_list.push(alph_index);
-  }
-  return comprise_list;
-};
-// check if a symbol is the primary way of representing the symbol in the alphabet
-Alphabet.prototype.is_prime_symbol = function(letter) {
-  var alph_index;
-  alph_index = this.encode[letter];
-  if (alph_index == null) return false;
-  if (this.is_case_insensitive()) {
-    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
-  } else {
-    return (this.symbols[alph_index].symbol == letter);
-  }
-};
-// compare 2 alphabets
-Alphabet.prototype.equals = function(other) {
-  "use strict";
-  var i, sym1, sym2;
-  // first check that it's actually an alphabet object
-  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
-    return false;
-  }
-  // second shortcircuit if it's the same object
-  if (this === other) return true;
-  // compare
-  if (this.name !== other.name) return false;
-  if (this.ncore !== other.ncore) return false;
-  if (this.symbols.length !== other.symbols.length) return false;
-  for (i = 0; i < this.symbols.length; i++) {
-    sym1 = this.symbols[i];
-    sym2 = other.symbols[i];
-    if (sym1.symbol !== sym2.symbol) return false;
-    if (sym1.aliases !== sym2.aliases) return false;
-    if (sym1.name !== sym2.name) return false;
-    if (typeof sym1.colour !== typeof sym2.colour || 
-        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
-         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
-      return false;
-    }
-    if (sym1.complement !== sym2.complement) return false;
-    if (sym1.equals !== sym2.equals) return false;
-  }
-  return true;
-};
-Alphabet.prototype.check_core_subset = function(super_alph) {
-  var complement_same = true;
-  var seen_set = {};
-  var sub_i, sub_symbol, super_i, super_symbol;
-  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
-    sub_symbol = this.symbols[sub_i];
-    super_i = super_alph.encode[sub_symbol.symbol]; 
-    if (super_i == null) return 0;
-    super_symbol = super_alph.symbols[super_i];
-    if (seen_set[super_i]) return 0;
-    seen_set[super_i] = true;
-    // check complement
-    if (sub_symbol.complement != null && super_symbol.complement != null) {
-      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
-        complement_same = false;
-      }
-    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
-      complement_same = false;
-    }
-  }
-  return (complement_same ? 1 : -1);
-};
-// convert a sequence to its reverse complement
-Alphabet.prototype.invcomp_seq = function(seq) {
-  "use strict";
-  var syms, i, e_sym, comp_e_sym;
-  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
-  syms = seq.split("");
-  for (i = 0; i < syms.length; i++) {
-    e_sym = this.encode[syms[i]];
-    if (typeof e_sym === "undefined") {
-      e_sym = this.ncore; // wildcard
-    }
-    comp_e_sym = this.complement[e_sym];
-    if (typeof comp_e_sym === "undefined") {
-      comp_e_sym = e_sym; // not complementable
-    }
-    syms[i] = this.symbols[comp_e_sym].symbol;
-  }
-  return syms.reverse().join("");
-};
-// convert the alphabet to the text version
-Alphabet.prototype.as_text = function() {
-  "use strict";
-  function name_as_text(name) {
-    var i, c, out;
-    out = "\"";
-    for (i = 0; i < name.length; i++) {
-      c = name.charAt(i);
-      if (c == "\"") {
-        out += "\\\"";
-      } else if (c == "/") {
-        out += "\\/";
-      } else if (c == "\\") {
-        out += "\\\\";
-      } else {
-        out += c;
-      }
-    }
-    out += "\"";
-    return out;
-  }
-  function symbol_as_text(sym) {
-    var out;
-    out = sym.symbol;
-    if (typeof sym.name === "string" && sym.name != sym.symbol) {
-      out += " " + name_as_text(sym.name);
-    }
-    if (typeof sym.colour === "string") {
-      out += " " + sym.colour;
-    }
-    return out;
-  }
-  var out, i, j, c, sym;
-  out = "";
-  // output core symbols with 2 way complements
-  for (i = 0; i < this.ncore; i++) {
-    c = this.complement[i];
-    if (typeof c === "number" && i < c && this.complement[c] === i) {
-      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
-    }
-  }
-  // output core symbols with no complement
-  for (i = 0; i < this.ncore; i++) {
-    if (typeof this.complement[i] === "undefined") {
-      out += symbol_as_text(this.symbols[i]) + "\n";
-    }
-  }
-  // output ambiguous symbols that have comprising characters
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    if (this.symbols[i].equals.length == 0) break;
-    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
-      }
-    }
-  }
-  // output aliases of core symbols
-  for (i = 0; i < this.ncore; i++) {
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
-      }
-    }
-  }
-  // output gap symbols
-  i = this.symbols.length - 1;
-  if (this.symbols[i].equals.length == 0) {
-    out += symbol_as_text(this.symbols[i]) + " =\n";
-    if (typeof this.symbols[i].aliases === "string") {
-      for (j = 0; j < this.symbols[i].aliases.length; j++) {
-        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
-        out += this.symbols[i].aliases.charAt(j) + " =\n";
-      }
-    }
-  }
-  return out;
-};
-// output the alphabet as it appears in minimal MEME format
-Alphabet.prototype.as_meme = function() {
-  "use strict";
-  function name_as_text(name) {
-    var i, c, out;
-    out = "\"";
-    for (i = 0; i < name.length; i++) {
-      c = name.charAt(i);
-      if (c == "\"") {
-        out += "\\\"";
-      } else if (c == "/") {
-        out += "\\/";
-      } else if (c == "\\") {
-        out += "\\\\";
-      } else {
-        out += c;
-      }
-    }
-    out += "\"";
-    return out;
-  }
-  if (this.equals(AlphStd.DNA)) {
-    return "ALPHABET= ACGT\n";
-  } else if (this.equals(AlphStd.PROTEIN)) {
-    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
-  } else {
-    return "ALPHABET" + 
-      (this.name != null ? " " + name_as_text(this.name) : "") + 
-      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
-      this.as_text() + "END ALPHABET\n";
-  }
-};
-
-// Returns a table showing all the letters in the alphabet
-Alphabet.prototype.as_table = function() {
-  "use strict";
-  var i, j, row, th, td, aliases, equals, sym;
-  var table = document.createElement("table");
-  // create the core symbol header
-  row = table.insertRow(table.rows.length);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Symbol(s)"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Name"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  if (this.has_complement()) {
-    th.appendChild(document.createTextNode("Complement"));
-  }
-  row.appendChild(th);
-  // list the core symbols
-  for (i = 0; i < this.ncore; i++) {
-    row = table.insertRow(table.rows.length);
-    td = document.createElement("td");
-    if (this.symbols[i].colour != null) {
-      td.style.color = '#' + this.symbols[i].colour;
-    }
-    td.appendChild(document.createTextNode(this.symbols[i].symbol));
-    aliases = this.get_aliases(i);
-    if (aliases.length > 0) {
-      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].name != null) {
-      td.appendChild(document.createTextNode(this.symbols[i].name));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].complement != null) {
-      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
-      td.appendChild(document.createTextNode(this.symbols[i].complement));
-    }
-    row.appendChild(td);
-  }
-  // create the ambiguous symbol header
-  row = table.insertRow(table.rows.length);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Symbol(s)"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Name"));
-  row.appendChild(th);
-  th = document.createElement("th");
-  th.appendChild(document.createTextNode("Matches"));
-  row.appendChild(th);
-  // list the ambiguous symbols
-  for (i = this.ncore; i < this.symbols.length; i++) {
-    row = table.insertRow(table.rows.length);
-    td = document.createElement("td");
-    if (this.symbols[i].colour != null) {
-      td.style.color = '#' + this.symbols[i].colour;
-    }
-    td.appendChild(document.createTextNode(this.symbols[i].symbol));
-    aliases = this.get_aliases(i);
-    if (aliases.length > 0) {
-      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    if (this.symbols[i].name != null) {
-      td.appendChild(document.createTextNode(this.symbols[i].name));
-    }
-    row.appendChild(td);
-    td = document.createElement("td");
-    equals = this.symbols[i].equals.split('');
-    for (j = 0; j < equals.length; j++) {
-      if (j != 0) td.appendChild(document.createTextNode(' '));
-      sym = document.createElement("span");
-      sym.style.color = this.get_colour(this.get_index(equals[j]));
-      sym.appendChild(document.createTextNode(equals[j]));
-      td.appendChild(sym);
-    }
-    row.appendChild(td);
-  }
-  return table;
-};
-
-// returns a dictionary of the colours for EPS
-Alphabet.prototype._as_eps_dict = function() {
-  "use strict";
-  var i, sym, rgb;
-  var out = "/fullColourDict <<\n";
-  for (i = 0; i < this.ncore; i++) {
-    sym = this.get_symbol(i);
-    sym = sym.replace(/\\/g, "\\\\");
-    sym = sym.replace(/\(/g, "\\(");
-    sym = sym.replace(/\)/g, "\\)");
-    rgb = this.get_rgb(i);
-    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
-  }
-  out += ">> def\n";
-  out += "/mutedColourDict <<\n";
-  for (i = 0; i < this.ncore; i++) {
-    sym = this.get_symbol(i);
-    sym = sym.replace(/\\/g, "\\\\");
-    sym = sym.replace(/\(/g, "\\(");
-    sym = sym.replace(/\)/g, "\\)");
-    rgb = Alphabet.lighten_colour(this.get_rgb(i));
-    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
-  }
-  out += ">> def\n";
-  return out;
-};
-
-// return the alphabet name or a list of primary symbols
-Alphabet.prototype.toString = function() {
-  "use strict";
-  if (this.name != null) {
-    return this.name;
-  } else {
-    return this.get_symbols();
-  }
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Helper functions
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-// Convert a colour specified in RGB colourspace values into LAB colourspace
-Alphabet.rgb2lab = function(rgb) {
-  "use strict";
-  var xyzHelper, labHelper;
-  // XYZ helper
-  xyzHelper = function(value) {
-    if (value > 0.0445) {
-      value = (value + 0.055) / 1.055;
-      value = Math.pow(value, 2.4);
-    } else {
-      value /= 12.92;
-    }
-    value *= 100;
-    return value;
-  };
-  // lab helper
-  labHelper = function(value) {
-    if (value > 0.008856) {
-      value = Math.pow(value, 1.0 / 3.0);
-    } else {
-      value = (7.787 * value) + (16.0 / 116.0);
-    }
-    return value;
-  };
-  // convert into XYZ colourspace
-  var c1, c2, c3;
-  if (typeof rgb == "number") {
-    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
-    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
-    c3 = xyzHelper((rgb & 0xFF) / 255.0);
-  } else {
-    c1 = xyzHelper(rgb.red);
-    c2 = xyzHelper(rgb.green);
-    c3 = xyzHelper(rgb.blue);
-  }
-  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
-  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
-  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
-  // convert into Lab colourspace
-  c1 = labHelper(x / 95.047);
-  c2 = labHelper(y / 100.0);
-  c3 = labHelper(z / 108.883);
-  var l = (116.0 * c2) - 16;
-  var a = 500.0 * (c1 - c2);
-  var b = 200.0 * (c2 - c3);
-  return {"l": l, "a": a, "b": b};
-};
-
-// Convert a colour specified in HSV colourspace into RGB colourspace
-Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
-  // achromatic (grey)
-  var r = value;
-  var g = value;
-  var b = value;
-  if (sat != 0) {
-    var h = hue / 60.0;
-    var i = Math.floor(h);
-    var f = h - i;
-    var p = value * (1.0 - sat);
-    var q = value * (1.0 - (sat * f));
-    var t = value * (1.0 - (sat * (1.0 - f)));
-    if (i == 0) {
-      r = value;
-      g = t;
-      b = p;
-    } else if (i == 1) {
-      r = q;
-      g = value;
-      b = p;
-    } else if (i == 2) {
-      r = p;
-      g = value;
-      b = t;
-    } else if (i == 3) {
-      r = p;
-      g = q;
-      b = value;
-    } else if (i == 4) {
-      r = t;
-      g = p;
-      b = value;
-    } else {
-      r = value;
-      g = p;
-      b = q;
-    }
-  }
-  if (output_object) {
-    return {"red": r, "green": g, "blue": b};
-  } else {
-    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
-  }
-};
-
-// Calculate a distance score between two colours in LAB colourspace
-Alphabet.lab_dist = function(lab1, lab2) {
-  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
-  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
-  var dc = c1 - c2;
-  var dl = lab1.l - lab2.l;
-  var da = lab1.a - lab2.a;
-  var db = lab1.b - lab2.b;
-  // we don't want NaN due to rounding errors so fudge things a bit...
-  var dh = 0;
-  var dh_squared = (da * da) + (db * db) - (dc * dc);
-  if (dh_squared > 0) {
-    dh = Math.sqrt(dh_squared);
-  }
-  var first = dl;
-  var second = dc / (1.0 + (0.045 * c1));
-  var third = dh / (1.0 + (0.015 * c1));
-  return Math.sqrt((first * first) + (second * second) + (third * third));
-};
-
-// convert an RGB value into a HSL value
-Alphabet.rgb2hsl = function(rgb) {
-  "use strict";
-  var min, max, delta, h, s, l, r, g, b;
-  if (typeof rgb == "number") {
-    r = ((rgb >> 16) & 0xFF) / 255.0;
-    g = ((rgb >> 8) & 0xFF) / 255.0;
-    b = (rgb & 0xFF) / 255.0;
-  } else {
-    r = rgb.red;
-    g = rgb.green;
-    b = rgb.blue;
-  }
-  min = Math.min(r, g, b);
-  max = Math.max(r, g, b);
-  delta = max - min;
-  l = min + (delta / 2);
-  if (max == min) {
-    h = 0; // achromatic (grayscale)
-    s = 0;
-  } else {
-    if (l > 0.5) {
-      s = delta / (2 - max - min);
-    } else {
-      s = delta / (max + min);
-    }
-    if (max == r) {
-      h = (g - b) / delta;
-      if (g < b) h += 6;
-    } else if (max == g) {
-      h = ((b - r) / delta) + 2;
-    } else {
-      h = ((r - g) / delta) + 4;
-    }
-    h /= 6;
-  }
-  return {"h": h, "s": s, "l": l};
-};
-
-// convert a HSL value into an RGB value
-Alphabet.hsl2rgb = function(hsl, output_object) {
-  "use strict";
-  function _hue(p, q, t) {
-    "use strict";
-    if (t < 0) t += 1;
-    else if (t > 1) t -= 1;
-    if (t < (1.0 / 6.0)) {
-      return p + ((q - p) * 6.0 * t);
-    } else if (t < 0.5) {
-      return q;
-    } else if (t < (2.0 / 3.0)) {
-      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
-    } else {
-      return p;
-    }
-  }
-  var r, g, b, p, q;
-  if (hsl.s == 0) {
-    // achromatic (grayscale)
-    r = hsl.l;
-    g = hsl.l;
-    b = hsl.l;
-  } else {
-    if (hsl.l < 0.5) {
-      q = hsl.l * (1 + hsl.s);
-    } else {
-      q = hsl.l + hsl.s - (hsl.l * hsl.s);
-    }
-    p = (2 * hsl.l) - q;
-    r = _hue(p, q, hsl.h + (1.0 / 3.0));
-    g = _hue(p, q, hsl.h);
-    b = _hue(p, q, hsl.h - (1.0 / 3.0));
-  }
-  if (output_object) {
-    return {"red": r, "green": g, "blue": b};
-  } else {
-    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
-  }
-};
-
-Alphabet.lighten_colour = function(rgb) {
-  "use strict";
-  var hsl = Alphabet.rgb2hsl(rgb);
-  hsl.l += (1.0 - hsl.l) * 2 / 3;
-  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
-};
-
-//======================================================================
-// end Alphabet object
-//======================================================================
-
-//======================================================================
-// start StandardAlphabet object
-//======================================================================
-
-// an extension of the alphabet object to support some additional fields 
-// only present in standard alphabets.
-var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
-  Alphabet.apply(this, [alphabet_data]);
-  this.enum_code = enum_code;
-  this.enum_name = enum_name;
-};
-StandardAlphabet.prototype = Alphabet.prototype;
-StandardAlphabet.prototype.constructor = StandardAlphabet;
-
-// A unique code for this standard alphabet.
-// This code will be a power of 2 to enable creation of bitsets for
-// a selection of standard alphabets.
-StandardAlphabet.prototype.get_code = function() {
-  return this.enum_code;
-};
-
-// A unique name for this standard alphabet.
-// this name will be all upper case and the same as the property that
-// refers to this alphabet in the AlphStd collection.
-StandardAlphabet.prototype.get_enum = function() {
-  return this.enum_name;
-};
-
-//======================================================================
-// end StandardAlphabet object
-//======================================================================
-
-// A collection of standard alphabets.
-var AlphStd = {
-  RNA: new StandardAlphabet(1, "RNA", {
-    "name": "RNA",
-    "like": "RNA",
-    "ncore": 4,
-    "symbols": [
-      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
-      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
-      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
-      {"symbol": "U", "name": "Uracil", "colour": "008000",
-        "aliases": "T"},
-      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
-      {"symbol": "V", "name": "Not U", "equals": "ACG"},
-      {"symbol": "H", "name": "Not G", "equals": "ACU"},
-      {"symbol": "D", "name": "Not C", "equals": "AGU"},
-      {"symbol": "B", "name": "Not A", "equals": "CGU"},
-      {"symbol": "M", "name": "Amino", "equals": "AC"},
-      {"symbol": "R", "name": "Purine", "equals": "AG"},
-      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
-      {"symbol": "S", "name": "Strong", "equals": "CG"},
-      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
-      {"symbol": "K", "name": "Keto", "equals": "GU"}
-    ]
-  }), 
-  DNA: new StandardAlphabet(2, "DNA", {
-    "name": "DNA",
-    "like": "DNA",
-    "ncore": 4,
-    "symbols": [
-      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
-      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
-      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
-      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
-        "aliases": "U"},
-      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
-      {"symbol": "V", "name": "Not T", "equals": "ACG"},
-      {"symbol": "H", "name": "Not G", "equals": "ACT"},
-      {"symbol": "D", "name": "Not C", "equals": "AGT"},
-      {"symbol": "B", "name": "Not A", "equals": "CGT"},
-      {"symbol": "M", "name": "Amino", "equals": "AC"},
-      {"symbol": "R", "name": "Purine", "equals": "AG"},
-      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
-      {"symbol": "S", "name": "Strong", "equals": "CG"},
-      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
-      {"symbol": "K", "name": "Keto", "equals": "GT"}
-    ]
-  }), 
-  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
-    "name": "Protein",
-    "like": "PROTEIN",
-    "ncore": 20,
-    "symbols": [
-      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
-      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
-      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
-      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
-      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
-      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
-      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
-      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
-      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
-      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
-      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
-      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
-      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
-      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
-      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
-      {"symbol": "S", "name": "Serine", "colour": "008000"},
-      {"symbol": "T", "name": "Threonine", "colour": "008000"},
-      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
-      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
-      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
-      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
-      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
-      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
-      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
-    ]
-  })
-};
-
-//======================================================================
-// start Symbol object
-//======================================================================
-var Symbol = function(alph_index, scale, alphabet) {
-  "use strict";
-  //variable prototype
-  this.symbol = alphabet.get_symbol(alph_index);
-  this.scale = scale;
-  this.colour = alphabet.get_colour(alph_index);
-};
-
-Symbol.prototype.get_symbol = function() {
-  "use strict";
-  return this.symbol;
-};
-
-Symbol.prototype.get_scale = function() {
-  "use strict";
-  return this.scale;
-};
-
-Symbol.prototype.get_colour = function() {
-  "use strict";
-  return this.colour;
-};
-
-Symbol.prototype.toString = function() {
-  "use strict";
-  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
-};
-
-function compare_symbol(sym1, sym2) {
-  "use strict";
-  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
-//======================================================================
-var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
-  "use strict";
-  var row, col, data, row_sum, delta, evalue_re;
-  if (typeof name !== "string") {
-    name = "";
-  }
-  this.name = name;
-  //construct
-  if (matrix instanceof Pspm) {
-    // copy constructor
-    this.alph_length = matrix.alph_length;
-    this.motif_length = matrix.motif_length;
-    this.name = matrix.name;
-    this.alt = matrix.alt;
-    this.nsites = matrix.nsites;
-    this.evalue = matrix.evalue;
-    this.ltrim = matrix.ltrim;
-    this.rtrim = matrix.rtrim;
-    this.pspm = [];
-    for (row = 0; row < matrix.motif_length; row++) {
-      this.pspm[row] = [];
-      for (col = 0; col < matrix.alph_length; col++) {
-        this.pspm[row][col] = matrix.pspm[row][col];
-      }
-    }
-    if (matrix.pssm != null) {
-      this.pssm = [];
-      for (row = 0; row < matrix.motif_length; row++) {
-        this.pspm[row] = [];
-        for (col = 0; col < matrix.alph_length; col++) {
-          this.pssm[row][col] = matrix.pssm[row][col];
-        }
-      }
-    }
-  } else {
-    // check parameters
-    if (ltrim == null) {
-      ltrim = 0;
-    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
-      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
-    }
-    if (rtrim == null) {
-      rtrim = 0;
-    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
-      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
-    }
-    if (nsites != null) {
-      if (typeof nsites !== "number" || nsites < 0) {
-        throw new Error("nsites must be a positive number, got: " + nsites);
-      } else if (nsites == 0) {
-        nsites = null;
-      }
-    }
-    if (evalue != null) {
-      if (typeof evalue === "number") {
-        if (evalue < 0) {
-          throw new Error("evalue must be a non-negative number, got: " + evalue);
-        }
-      } else if (typeof evalue === "string") {
-        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
-        if (!evalue_re.test(evalue)) {
-          throw new Error("evalue must be a non-negative number, got: " + evalue);
-        }
-      } else {
-        throw new Error("evalue must be a non-negative number, got: " + evalue);
-      }
-    }
-    // set properties
-    this.name = name;
-    this.alt = alt;
-    this.nsites = nsites;
-    this.evalue = evalue;
-    this.ltrim = ltrim;
-    this.rtrim = rtrim;
-    if (typeof matrix === "string") {
-      // string constructor
-      data = parse_pspm_string(matrix);
-      this.alph_length = data["alph_length"];
-      this.motif_length = data["motif_length"];
-      this.pspm = data["pspm"];
-      if (this.evalue == null) {
-        if (data["evalue"] != null) {
-          this.evalue = data["evalue"];
-        } else {
-          this.evalue = 0;
-        }
-      }
-      if (this.nsites == null) {
-        if (typeof data["nsites"] === "number") {
-          this.nsites = data["nsites"];
-        } else {
-          this.nsites = 20;
-        }
-      }
-    } else {
-      // assume pspm is a nested array
-      this.motif_length = matrix.length;
-      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
-      if (this.nsites == null) {
-        this.nsites = 20;
-      }
-      if (this.evalue == null) {
-        this.evalue = 0;
-      }
-      this.pspm = [];
-      // copy pspm and check
-      for (row = 0; row < this.motif_length; row++) {
-        if (this.alph_length != matrix[row].length) {
-          throw new Error("COLUMN_MISMATCH");
-        }
-        this.pspm[row] = [];
-        row_sum = 0;
-        for (col = 0; col < this.alph_length; col++) {
-          this.pspm[row][col] = matrix[row][col];
-          row_sum += this.pspm[row][col];
-        }
-        delta = 0.1;
-        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
-            (row_sum < 1 && (1 - row_sum) > delta)) {
-          throw new Error("INVALID_SUM");
-        }
-      }
-      // copy pssm
-      if (pssm != null) {
-        this.pssm = [];
-        for (row = 0; row < this.motif_length; row++) {
-          this.pssm[row] = [];
-          for (col = 0; col < this.alph_length; col++) {
-            this.pssm[row][col] = pssm[row][col];
-          }
-        }
-      }
-    }
-  }
-};
-
-Pspm.prototype.copy = function() {
-  "use strict";
-  return new Pspm(this);
-};
-
-Pspm.prototype.reverse = function() {
-  "use strict";
-  var x, y, temp, temp_trim;
-  //reverse
-  x = 0;
-  y = this.motif_length-1;
-  while (x < y) {
-    temp = this.pspm[x];
-    this.pspm[x] = this.pspm[y];
-    this.pspm[y] = temp;
-    x++;
-    y--;
-  }
-  // reverse pssm (if defined)
-  if (typeof this.pssm !== "undefined") {
-    //reverse
-    x = 0;
-    y = this.motif_length-1;
-    while (x < y) {
-      temp = this.pssm[x];
-      this.pspm[x] = this.pssm[y];
-      this.pssm[y] = temp;
-      x++;
-      y--;
-    }
-  }
-  //swap triming
-  temp_trim = this.ltrim;
-  this.ltrim = this.rtrim;
-  this.rtrim = temp_trim;
-  return this; //allow function chaining...
-};
-
-Pspm.prototype.reverse_complement = function(alphabet) {
-  "use strict";
-  var x, y, temp, i, row, c, temp_trim;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size of the pspm.");
-  }
-  if (!alphabet.has_complement()) {
-    throw new Error("The specified alphabet can not be complemented.");
-  }
-  // reverse motif
-  this.reverse();
-  //complement
-  for (x = 0; x < this.motif_length; x++) {
-    row = this.pspm[x];
-    for (i = 0; i < row.length; i++) {
-      c = alphabet.get_complement(i);
-      if (c < i) continue;
-      temp = row[i];
-      row[i] = row[c];
-      row[c] = temp;
-    }
-  }
-  // complement pssm (if defined)
-  if (typeof this.pssm !== "undefined") {
-    //complement
-    for (x = 0; x < this.motif_length; x++) {
-      row = this.pssm[x];
-      for (i = 0; i < row.length; i++) {
-        c = alphabet.get_complement(i);
-        if (c < i) continue;
-        temp = row[i];
-        row[i] = row[c];
-        row[c] = temp;
-      }
-    }
-  }
-  return this; //allow function chaining...
-};
-
-Pspm.prototype.get_stack = function(position, alphabet, ssc) {
-  "use strict";
-  var row, stack_ic, alphabet_ic, stack, i, sym;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size of the pspm.");
-  }
-  row = this.pspm[position];
-  stack_ic = this.get_stack_ic(position, alphabet);
-  if (ssc) stack_ic -= this.get_error(alphabet);
-  alphabet_ic = alphabet.get_ic();
-  stack = [];
-  for (i = 0; i < this.alph_length; i++) {
-    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;
-};
-
-Pspm.prototype.get_stack_ic = function(position, alphabet) {
-  "use strict";
-  var row, H, i;
-  if (this.alph_length != alphabet.get_size_core()) {
-    throw new Error("The alphabet size does not match the size fo the pspm.");
-  }
-  row = this.pspm[position];
-  H = 0;
-  for (i = 0; i < this.alph_length; i++) {
-    if (row[i] === 0) {
-      continue;
-    }
-    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
-  }
-  return alphabet.get_ic() - H;
-};
-
-Pspm.prototype.get_error = function(alphabet) {
-  "use strict";
-  if (this.nsites === 0) {
-    return 0;
-  }
-  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
-};
-
-Pspm.prototype.get_motif_length = function() {
-  "use strict";
-  return this.motif_length;
-};
-
-Pspm.prototype.get_alph_length = function() {
-  "use strict";
-  return this.alph_length;
-};
-
-Pspm.prototype.get_left_trim = function() {
-  "use strict";
-  return this.ltrim;
-};
-
-Pspm.prototype.get_right_trim = function() {
-  "use strict";
-  return this.rtrim;
-};
-
-Pspm.prototype.as_best_match = function(alphabet) {
-  "use strict";
-  var match, odds, best_odds, best_index;
-  var i, j;
-  match = "";
-  for (i = 0; i < this.motif_length; i++) {
-    best_index = 0;
-    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
-    for (j = 1; j < this.alph_length; j++) {
-      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
-      if (odds > best_odds) {
-        best_odds = odds;
-        best_index = j;
-      }
-    }
-    match += alphabet.get_symbol(best_index);
-  }
-  return match;
-};
-
-Pspm.prototype.as_count_matrix = function() {
-  "use strict";
-  var count, count_text, text;
-  var i, j;
-  text = "";
-  for (i = 0; i < this.motif_length; i++) {
-    if (i !== 0) {
-      text += "\n";
-    }
-    for (j = 0; j < this.alph_length; j++) {
-      if (j !== 0) {
-        text += " ";
-      }
-      count = Math.round(this.nsites * this.pspm[i][j]);
-      count_text = "" + count;
-      // pad up to length of 4
-      if (count_text.length < 4) {
-        text += (new Array(5 - count_text.length)).join(" ") + count_text;
-      } else {
-        text += count_text;
-      }
-    }
-  }
-  return text; 
-};
-
-Pspm.prototype.as_probability_matrix = function() {
-  "use strict";
-  var text;
-  var i, j;
-  text = "";
-  for (i = 0; i < this.motif_length; i++) {
-    if (i !== 0) {
-      text += "\n";
-    }
-    for (j = 0; j < this.alph_length; j++) {
-      if (j !== 0) {
-        text += " ";
-      }
-      text += this.pspm[i][j].toFixed(6);
-    }
-  }
-  return text; 
-};
-
-Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
-  "use strict";
-  var me, score, out, row, col, score_text;
-  me = this;
-  if (typeof this.pssm === "undefined") {
-    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
-      throw new Error("The alphabet is required to generate the pssm.");
-    }
-    if (typeof pseudo === "undefined") {
-      pseudo = 0.01;
-    } else if (typeof pseudo !== "number" || pseudo < 0) {
-      throw new Error("Expected positive number for pseudocount");
-    }
-    score = function(row, col) {
-      "use strict";
-      var p, bg, p2;
-      p = me.pspm[row][col];
-      bg = alphabet.get_bg_freq(col);
-      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
-      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
-    };
-  } else {
-    score = function(row, col) {
-      "use strict";
-      return me.pssm[row][col];
-    };
-  }
-  out = "";
-  for (row = 0; row < this.motif_length; row++) {
-    for (col = 0; col < this.alph_length; col++) {
-      if (col !== 0) {
-        out += " ";
-      }
-      score_text = "" + score(row, col);
-      // pad out to 6 characters
-      if (score_text.length < 6) {
-        out += (new Array(7 - score_text.length)).join(" ") + score_text;
-      } else {
-        out += score_text;
-      }
-    }
-    out += "\n";
-  }
-  return out;
-}
-
-Pspm.prototype.as_pspm = function() {
-  "use strict";
-  return "letter-probability matrix: alength= " + this.alph_length + 
-      " w= " + this.motif_length + " nsites= " + this.nsites + 
-      " E= " + (typeof this.evalue === "number" ? 
-          this.evalue.toExponential() : this.evalue) + "\n" +
-      this.as_probability_matrix();
-};
-
-Pspm.prototype.as_pssm = function(alphabet, pseudo) {
-  "use strict";
-  return "log-odds matrix: alength= " + this.alph_length + 
-      " w= " + this.motif_length + 
-      " E= " + (typeof this.evalue == "number" ?
-          this.evalue.toExponential() : this.evalue) + "\n" +
-      this.as_score_matrix(alphabet, pseudo);
-};
-
-Pspm.prototype.as_meme = function(options) {
-  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
-  var out, alen, i;
-  // get the options
-  if (typeof options !== "object" || options === null) {
-    options = {};
-  }
-  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
-  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
-  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
-  if (!with_pspm && !with_pssm) with_pspm = true;
-  if (with_header) {
-    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
-      version = options["version"];
-    } else if (typeof options["version"] === "number") {
-      version = options["version"].toFixed(0);
-    } else {
-      version = "4";
-    }
-    if (typeof options["strands"] === "number" && options["strands"] === 1) {
-      strands = 1;
-    } else {
-      strands = 2;
-    }
-    if (typeof options["bg_source"] === "string") {
-      bg_source = options["bg_source"];
-    } else {
-      bg_source = "unknown source";
-    }
-    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
-        && options["alphabet"] instanceof Alphabet) {
-      alphabet = options["alphabet"];
-    } else {
-      throw new Error("The alphabet is required to generate the header.");
-    }
-  }
-  // now create the output
-  out = "";
-  if (with_header) {
-    out = "MEME version " + version + "\n\n";
-    out += alphabet.as_meme() + "\n";
-    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
-      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
-    }
-    out += "Background letter frequencies (from " + bg_source + "):\n";
-    alen = alphabet.get_size_core();
-    for (i = 0; i < alen; i++) {
-      if (i !== 0) {
-        if (i % 9 === 0) { // maximum of nine entries per line
-          out += "\n";
-        } else {
-          out += " ";
-        }
-      }
-      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
-    }
-  }
-  out += "\n\n";
-  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
-  if (with_pssm) {
-    out += "\n\n";
-    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
-  }
-  if (with_pspm) {
-    out += "\n\n";
-    out += this.as_pspm();
-  }
-  return out;
-}
-
-Pspm.prototype.toString = function() {
-  "use strict";
-  var str, i, row;
-  str = "";
-  for (i = 0; i < this.pspm.length; i++) {
-    row = this.pspm[i];
-    str += row.join("\t") + "\n";
-  }
-  return str;
-};
-
-function parse_pspm_properties(str) {
-  "use strict";
-  var parts, i, eqpos, before, after, properties, prop, num, num_re;
-  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
-  parts = trim(str).split(/\s+/);
-  // split up words containing =
-  for (i = 0; i < parts.length;) {
-    eqpos = parts[i].indexOf("=");
-    if (eqpos != -1) {
-      before = parts[i].substr(0, eqpos);
-      after = parts[i].substr(eqpos+1);
-      if (before.length > 0 && after.length > 0) {
-        parts.splice(i, 1, before, "=", after);
-        i += 3;
-      } else if (before.length > 0) {
-        parts.splice(i, 1, before, "=");
-        i += 2;
-      } else if (after.length > 0) {
-        parts.splice(i, 1, "=", after);
-        i += 2;
-      } else {
-        parts.splice(i, 1, "=");
-        i++;
-      }
-    } else {
-      i++;
-    }
-  }
-  properties = {};
-  for (i = 0; i < parts.length; i += 3) {
-    if (parts.length - i < 3) {
-      throw new Error("Expected PSPM property was incomplete. "+
-          "Remaing parts are: " + parts.slice(i).join(" "));
-    }
-    if (parts[i+1] !== "=") {
-      throw new Error("Expected '=' in PSPM property between key and " +
-          "value but got " + parts[i+1]); 
-    }
-    prop = parts[i].toLowerCase();
-    num = parts[i+2];
-    if (!num_re.test(num)) {
-      throw new Error("Expected numeric value for PSPM property '" + 
-          prop + "' but got '" + num + "'");
-    }
-    properties[prop] = num;
-  }
-  return properties;
-}
-
-function parse_pspm_string(pspm_string) {
-  "use strict";
-  var header_re, lines, first_line, line_num, col_num, alph_length, 
-      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
-      j, prob;
-  header_re = /^letter-probability\s+matrix:(.*)$/i;
-  lines = pspm_string.split(/\n/);
-  first_line = true;
-  line_num = 0;
-  col_num = 0;
-  alph_length;
-  motif_length;
-  nsites;
-  evalue;
-  pspm = [];
-  for (i = 0; i < lines.length; i++) {
-    line = trim(lines[i]);
-    if (line.length === 0) { 
-      continue;
-    }
-    // check the first line for a header though allow matrices without it
-    if (first_line) {
-      first_line = false;
-      match = header_re.exec(line);
-      if (match !== null) {
-        props = parse_pspm_properties(match[1]);
-        if (props.hasOwnProperty("alength")) {
-          alph_length = parseFloat(props["alength"]);
-          if (alph_length != 4 && alph_length != 20) {
-            throw new Error("PSPM property alength should be 4 or 20" +
-                " but got " + alph_length);
-          }
-        }
-        if (props.hasOwnProperty("w")) {
-          motif_length = parseFloat(props["w"]);
-          if (motif_length % 1 !== 0 || motif_length < 1) {
-            throw new Error("PSPM property w should be an integer larger " +
-                "than zero but got " + motif_length);
-          }
-        }
-        if (props.hasOwnProperty("nsites")) {
-          nsites = parseFloat(props["nsites"]);
-          if (nsites <= 0) {
-            throw new Error("PSPM property nsites should be larger than " +
-                "zero but got " + nsites);
-          }
-        }
-        if (props.hasOwnProperty("e")) {
-          evalue = props["e"];
-          if (evalue < 0) {
-            throw new Error("PSPM property evalue should be " +
-                "non-negative but got " + evalue);
-          }
-        }
-        continue;
-      }
-    }
-    pspm[line_num] = [];
-    col_num = 0;
-    parts = line.split(/\s+/);
-    for (j = 0; j < parts.length; j++) {
-      prob = parseFloat(parts[j]);
-      if (prob != parts[j] || prob < 0 || prob > 1) {
-        throw new Error("Expected probability but got '" + parts[j] + "'"); 
-      }
-      pspm[line_num][col_num] = prob;
-      col_num++;
-    }
-    line_num++;
-  }
-  if (typeof motif_length === "number") {
-    if (pspm.length != motif_length) {
-      throw new Error("Expected PSPM to have a motif length of " + 
-          motif_length + " but it was actually " + pspm.length);
-    }
-  } else {
-    motif_length = pspm.length;
-  }
-  if (typeof alph_length !== "number") {
-    alph_length = pspm[0].length;
-    if (alph_length != 4 && alph_length != 20) {
-      throw new Error("Expected length of first row in the PSPM to be " +
-          "either 4 or 20 but got " + alph_length);
-    }
-  }
-  for (i = 0; i < pspm.length; i++) {
-    if (pspm[i].length != alph_length) {
-      throw new Error("Expected PSPM row " + i + " to have a length of " + 
-          alph_length + " but the length was " + pspm[i].length);
-    }
-  }
-  return {"pspm": pspm, "motif_length": motif_length, 
-    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
-}
-//======================================================================
-// end Pspm object
-//======================================================================
-
-//======================================================================
-// start Logo object
-//======================================================================
-
-var Logo = function(alphabet, options) {
-  "use strict";
-  this.alphabet = alphabet;
-  this.fine_text = "";
-  this.x_axis = 1;
-  this.y_axis = true;
-  this.xlate_nsyms = 1;
-  this.xlate_start = null;
-  this.xlate_end = null;
-  this.pspm_list = [];
-  this.pspm_column = [];
-  this.rows = 0;
-  this.columns = 0;
-  if (typeof options === "string") {
-    // the old method signature had fine_text here so we support that
-    this.fine_text = options;
-  } else if (typeof options === "object" && options != null) {
-    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
-    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
-    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
-    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
-    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
-    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
-    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
-  }
-};
-
-Logo.prototype.add_pspm = function(pspm, column) {
-  "use strict";
-  var col;
-  if (typeof column === "undefined") {
-    column = 0;
-  } else if (column < 0) {
-    throw new Error("Column index out of bounds.");
-  }
-  this.pspm_list[this.rows] = pspm;
-  this.pspm_column[this.rows] = column;
-  this.rows++;
-  col = column + pspm.get_motif_length();
-  if (col > this.columns) {
-    this.columns = col;
-  }
-};
-
-Logo.prototype.get_columns = function() {
-  "use strict";
-  return this.columns;
-};
-
-Logo.prototype.get_xlate_nsyms = function() {
-  "use strict";
-  return this.xlate_nsyms;
-};
-
-Logo.prototype.get_xlate_start = function() {
-  "use strict";
-  return (this.xlate_start != null ? this.xlate_start : 0);
-};
-
-Logo.prototype.get_xlate_end = function() {
-  "use strict";
-  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
-};
-
-Logo.prototype.get_xlate_columns = function() {
-  "use strict";
-  return this.get_xlate_end() - this.get_xlate_start();
-};
-
-Logo.prototype.get_rows = function() {
-  "use strict";
-  return this.rows;
-};
-
-Logo.prototype.get_pspm = function(row_index) {
-  "use strict";
-  if (row_index < 0 || row_index >= this.rows) {
-    throw new Error("INDEX_OUT_OF_BOUNDS");
-  }
-  return this.pspm_list[row_index];
-};
-
-Logo.prototype.get_offset = function(row_index) {
-  "use strict";
-  if (row_index < 0 || row_index >= this.rows) {
-    throw new Error("INDEX_OUT_OF_BOUNDS");
-  }
-  return this.pspm_column[row_index];
-};
-
-Logo.prototype._as_eps_data = function(ssc, errbars) {
-  var i, j, pos, stack_pos, pspm, stack, sym, out;
-  out = "";
-  for (i = 0; i < this.rows; i++) {
-    out += "\nStartLine\n";
-    // Indent
-    for (j = 0; j < this.pspm_column[i]; j++) {
-      out += "() startstack\nendstack\n\n";
-    }
-    pspm = this.pspm_list[i];
-    if (pspm.get_left_trim() > 0) {
-      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
-    }
-    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
-      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
-        out += "DrawTrimEdge\nRestoreColour\n";
-      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
-        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
-      }
-      out += "(" + (pos + 1) + ") startstack\n";
-      stack = pspm.get_stack(pos, this.alphabet, ssc);
-      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
-        sym = stack[stack_pos];
-        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
-      }
-      if (errbars) {
-        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
-      }
-      out += "endstack\n\n";
-    }
-    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
-      out += "RestoreColour\n";
-    }
-    out += "EndLine\n";
-  }
-  return out;
-};
-
-Logo.prototype.as_eps = function(options) {
-  "use strict";
-  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
-  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
-  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
-
-  var LOGOHEIGHT = 7.5; // default height of line in cm
-  var cm2pts, height, width, now, ssc, errbars;
-  if (typeof options === "undefined") {
-    options = {};
-  }
-  cm2pts = 72 / 2.54;
-  if (typeof options.logo_height == "number") {
-    height = options.logo_height;
-  } else {
-    height = LOGOHEIGHT * this.rows;
-  }
-  if (typeof options.logo_width == "number") {
-    width = options.logo_width;
-  } else {
-    width = this.columns + 2;
-  }
-  now = new Date();
-  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
-  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
-  var values = {
-    "LOGOHEIGHT": height,
-    "LOGOWIDTH": width,
-    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
-    "BOUNDINGWIDTH": Math.round(width * cm2pts),
-    "LOGOLINEHEIGHT": (height / this.rows),
-    "CHARSPERLINE": this.columns,
-    "BARBITS": this.alphabet.get_ic(),
-    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
-    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
-    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
-    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
-    "TITLE": (typeof options.title == "string" ? options.title : ""),
-    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
-    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
-    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
-    "SSC": ssc,
-    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
-    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
-    "ERRBAR": errbars,
-    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
-    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
-    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
-    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
-    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
-    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
-    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
-    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
-    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
-    "COLORDICT": this.alphabet._as_eps_dict(),
-    "DATA": this._as_eps_data(ssc, errbars)
-  };
-  // now this requires that the script containing the template has been imported!
-  return motif_logo_template(values);
-};
-
-//======================================================================
-// end Logo object
-//======================================================================
-
-// calculate the exact size (in pixels) of an object drawn on the
-// canvas assuming that the background of the canvas is transparent.
-function canvas_bounds(ctx, cwidth, cheight) {
-  "use strict";
-  var data, r, c, top_line, bottom_line, left_line, right_line, 
-      txt_width, txt_height;
-
-  // extract the image data
-  data = ctx.getImageData(0, 0, cwidth, cheight).data;
-
-  // set initial values
-  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
-  txt_width = 0; txt_height = 0;
-
-  // Find the top-most line with a non-transparent 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;
-    }
-  }
-  
-  // Only bother looking if we found at least one set pixel... 
-  if (top_line != -1) {
-
-    //find the last line with a non-transparent pixel
-    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;
-      }
-    }
-    // calculate height
-    txt_height = bottom_line - top_line + 1;
-
-    // Find the left-most line with a non-transparent pixel
-    for (c = 0; c < cwidth; c++) {
-      for (r = top_line; r <= bottom_line; 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-transparent pixel
-    for (c = cwidth-1; c >= left_line; c--) {
-      for(r = top_line; r <= bottom_line; 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};
-}
-
-//======================================================================
-// 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).
-var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
-  "use strict";
-  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
-      i, sym, size, tenpercent, avg_width, scale, 
-      target_width, target_height;
-  //variable prototypes
-  this.alphabet = alphabet;
-  this.scale = logo_scale;
-  this.sym_cache = {};
-  this.stack_num_cache = [];
-  this.scale_num_cache = [];
-  // size of canvas
-  default_size = 60; // size of measuring canvas
-  safety_pad = 20; // pixels to pad around so we don't miss the edges
-  // create a canvas to do our measuring
-  canvas = document.createElement("canvas");
-  if (!canvas.getContext) throw new Error("No canvas support");
-  canvas.width = default_size + 2 * safety_pad;
-  canvas.height = default_size + 2 * safety_pad;
-  middle = Math.round(canvas.width / 2);
-  baseline = Math.round(canvas.height - safety_pad);
-  ctx = canvas.getContext('2d');
-  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
-  ctx.font = font;
-  ctx.textAlign = "center";
-  ctx.translate(middle, baseline);
-  // list of widths
-  widths = [];
-  sizes = [];
-  //now measure each letter in the alphabet
-  for (i = 0; i < alphabet.get_size_core(); ++i) {
-    // reset the canvas
-    ctx.clearRect(0, 0, canvas.width, canvas.height);
-    ctx.fillStyle = alphabet.get_colour(i);
-    // draw the test text
-    ctx.fillText(alphabet.get_symbol(i), 0, 0);
-    //measure
-    size = canvas_bounds(ctx, canvas.width, canvas.height);
-    if (size.width === 0) throw new Error("Invisible symbol!");
-    widths.push(size.width);
-    sizes[i] = size;
-  }
-  //sort the widths
-  widths.sort(function(a,b) {return a - b;});
-  //drop 10% of the items off each end
-  tenpercent = Math.floor(widths.length / 10);
-  for (i = 0; i < tenpercent; ++i) {
-    widths.pop();
-    widths.shift();
-  }
-  //calculate average width
-  avg_width = 0;
-  for (i = 0; i < widths.length; ++i) {
-    avg_width += widths[i];
-  }
-  avg_width /= widths.length;
-  // calculate the target width
-  target_width = width * this.scale * 2;
-  // calculate scales
-  for (i = 0; i < alphabet.get_size_core(); ++i) {
-    sym = alphabet.get_symbol(i);
-    size = sizes[i];
-    // calculate scale
-    scale = target_width / Math.max(avg_width, size.width);
-    // estimate scaled height
-    target_height = size.height * scale;
-    // create an appropriately sized canvas
-    canvas = document.createElement("canvas");
-    canvas.width = target_width;
-    canvas.height = target_height + safety_pad * 2;
-    // calculate the middle
-    middle = Math.round(canvas.width / 2);
-    // calculate the baseline
-    baseline = Math.round(canvas.height - safety_pad);
-    // get the context and prepare to draw the rasterized text
-    ctx = canvas.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 text
-    ctx.fillText(sym, 0, 0);
-    ctx.restore();
-    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
-  }
-};
-
-RasterizedAlphabet.prototype.get_alphabet = function() {
-  return this.alphabet;
-};
-
-RasterizedAlphabet.prototype.get_scale = function() {
-  return this.scale;
-};
-
-RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
-  "use strict";
-  var entry, image, size;
-  entry = this.sym_cache[letter];
-  image = entry.image;
-  size = entry.size;
-  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
-};
-
-RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
-  var image, image_ctx, text_length;
-  if (index >= this.stack_num_cache.length) {
-    image = document.createElement("canvas");
-    // measure the text
-    image_ctx = image.getContext('2d');
-    image_ctx.save();
-    image_ctx.font = font;
-    text_length = image_ctx.measureText("" + (index + 1)).width;
-    image_ctx.restore();
-    // resize the canvas to fit
-    image.width = Math.ceil(stack_width);
-    image.height = Math.ceil(text_length);
-    // draw the text
-    image_ctx = image.getContext('2d');
-    image_ctx.translate(Math.round(stack_width / 2), 0);
-    image_ctx.font = font;
-    image_ctx.textBaseline = "middle";
-    image_ctx.textAlign = "right";
-    image_ctx.rotate(-(Math.PI / 2));
-    image_ctx.fillText("" + (index + 1), 0, 0);
-    this.stack_num_cache[index] = image;
-  } else {
-    image = this.stack_num_cache[index];
-  }
-  ctx.drawImage(image, 0, 0);
-}
-
-RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
-  var image, image_ctx, text_size, m_length;
-  if (num >= this.scale_num_cache.length) {
-    image = document.createElement("canvas");
-    // measure the text
-    image_ctx = image.getContext('2d');
-    image_ctx.font = font;
-    text_size = image_ctx.measureText("" + num);
-    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
-      // resize the canvas to fit
-      image.width = Math.ceil(text_size.width);
-      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
-      // draw the text
-      image_ctx = image.getContext('2d');
-      image_ctx.font = font;
-      image_ctx.textAlign = "right";
-      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
-    } else {
-      // measure width of 'm' to approximate height, we double it later anyway
-      m_length = image_ctx.measureText("m").width;
-      // resize the canvas to fit
-      image.width = Math.ceil(text_size.width);
-      image.height = Math.ceil(2 * m_length);
-      // draw the text
-      image_ctx = image.getContext('2d');
-      image_ctx.font = font;
-      image_ctx.textAlign = "right";
-      image_ctx.textBaseline = "middle";
-      image_ctx.fillText("" + num, image.width, m_length);
-    }
-    this.scale_num_cache[num] = image;
-  } else {
-    image = this.scale_num_cache[num];
-  }
-  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
-}
-
-//======================================================================
-// end RasterizedAlphabet
-//======================================================================
-
-//======================================================================
-// start LogoMetrics object
-//======================================================================
-
-var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
-  "use strict";
-  var i, row_height;
-  //variable prototypes
-  this.pad_top = (has_names ? 5 : 0);
-  this.pad_left = (y_axis ? 10 : 0);
-  this.pad_right = (has_finetext ? 15 : 0);
-  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_axis = y_axis;
-  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_axis = x_axis;
-  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;
-  //calculate the width of the y axis numbers
-  ctx.font = this.y_num_font;
-  for (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)
-  if (x_axis == 1) {
-    ctx.font = this.x_num_font;
-    for (i = 1; i <= logo_columns; i++) {
-      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
-    }
-  } else if (x_axis == 0) {
-    this.x_num_height = 4;
-    this.x_num_width = 4;
-  } else {
-    this.x_num_height = 0;
-    this.x_num_width = 0;
-  }
-  
-  //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) {
-    row_height = this.stack_height + this.pad_middle;
-    if (has_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_axis ? this.y_num_height/2 : 0);
-
-  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
-  if (has_names) {
-    this.summed_height += fine_txt_total + this.name_height;
-    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
-        this.x_num_height + this.x_num_above + this.name_spacer);
-  } else {
-    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
-        this.x_num_height + this.x_num_above + fine_txt_total);
-  }
-
-  //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;
-  if (this.y_axis) {
-    //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;
-
-};
-
-//======================================================================
-// end LogoMetrics object
-//======================================================================
-
-//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
-function image_ok(img) {
-  "use strict";
-  // 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) {
-  "use strict";
-  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, raster) {
-  "use strict";
-  var tic_height, i;
-  tic_height = metrics.stack_height / alphabet_ic;
-  ctx.save();
-  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.rotate(-(Math.PI / 2));
-  ctx.textAlign = "center";
-  ctx.fillText("bits", 0, 0);
-  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);
-  for (i = 0; i <= alphabet_ic; i++) {
-    //draw the number
-    ctx.save();
-    ctx.translate(-1, 0);
-    raster.draw_scale_num(ctx, metrics.y_num_font, i);
-    ctx.restore();
-    //draw the tic
-    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
-    //prepare for next tic
-    ctx.translate(0, -tic_height);
-  }
-  ctx.restore();
-
-  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
-
-  ctx.restore();
-}
-
-function draw_stack_num(ctx, metrics, row_index, raster) {
-  "use strict";
-  ctx.save();
-  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
-  if (metrics.x_axis == 1) {
-    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
-  } else if (metrics.x_axis == 0) {
-    // draw dots instead of the numbers (good for small logos)
-    ctx.beginPath();
-    var radius = Math.round(metrics.x_num_height / 2);
-    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
-    ctx.fill();
-  }
-  ctx.restore();
-}
-
-function draw_stack(ctx, metrics, symbols, raster) {
-  "use strict";
-  var preferred_pad, sym_min, i, sym, sym_height, pad;
-  preferred_pad = 0;
-  sym_min = 5;
-
-  ctx.save();//1
-  ctx.translate(0, metrics.stack_height);
-  for (i = 0; i < symbols.length; i++) {
-    sym = symbols[i];
-    sym_height = metrics.stack_height * sym.get_scale();
-    
-    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
-    //translate past the padding
-    ctx.translate(0, -(pad/2));
-  }
-  ctx.restore();//1
-}
-
-function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
-  "use strict";
-  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
-  dx = x2 - x1;
-  dy = y2 - y1;
-  tlen = Math.pow(dx*dx + dy*dy, 0.5);
-  theta = Math.atan2(dy,dx);
-  mulx = Math.cos(theta);
-  muly = Math.sin(theta);
-  lx = [];
-  ly = [];
-  for (i = 0; i < pattern; ++i) {
-    lx.push(pattern[i] * mulx);
-    ly.push(pattern[i] * muly);
-  }
-  i = start;
-  x = x1;
-  y = y1;
-  len = 0;
-  ctx.beginPath();
-  while (len + pattern[i] < tlen) {
-    ctx.moveTo(x, y);
-    x += lx[i];
-    y += ly[i];
-    ctx.lineTo(x, y);
-    len += pattern[i];
-    i = (i + 1) % pattern.length;
-    x += lx[i];
-    y += ly[i];
-    len += pattern[i];
-    i = (i + 1) % pattern.length;
-  }
-  if (len < tlen) {
-    ctx.moveTo(x, y);
-    x += mulx * (tlen - len);
-    y += muly * (tlen - len);
-    ctx.lineTo(x, y);
-  }
-  ctx.stroke();
-}
-
-function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
-  "use strict";
-  var left_size = left_end - left_start;
-  var right_size = right_end - right_start;
-  var line_x;
-
-  ctx.save();//s8
-  ctx.fillStyle = "rgb(240, 240, 240)";
-  if (left_size > 0) {
-    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
-  }
-  if (right_size > 0) {
-    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
-  }
-  ctx.fillStyle = "rgb(51, 51, 51)";
-  if (left_size > 0 && left_divider) {
-    line_x = (left_end * metrics.stack_width) - 0.5;
-    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
-  }
-  if (right_size > 0 && right_divider) {
-    line_x = (right_start * metrics.stack_width) + 0.5;
-    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
-  }
-  ctx.restore();//s8
-}
-
-function size_logo_on_canvas(logo, canvas, show_names, scale) {
-  "use strict";
-  var draw_name, draw_finetext, metrics;
-  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
-  draw_finetext = (logo.fine_text.length > 0);
-  if (canvas.width !== 0 && canvas.height !== 0) {
-    return;
-  }
-  metrics = new LogoMetrics(canvas.getContext('2d'), 
-      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
-  if (typeof scale == "number") {
-    //resize the canvas to fit the scaled logo
-    canvas.width = metrics.summed_width * scale;
-    canvas.height = metrics.summed_height * scale;
-  } else {
-    if (canvas.width === 0 && canvas.height === 0) {
-      canvas.width = metrics.summed_width;
-      canvas.height = metrics.summed_height;
-    } else if (canvas.width === 0) {
-      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
-    } else if (canvas.height === 0) {
-      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
-    }
-  }
-}
-
-function draw_logo_on_canvas(logo, canvas, show_names, scale) {
-  "use strict";
-  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
-      offset, col_index, motif_position, ssc;
-  ssc = false;
-  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
-  draw_finetext = (logo.fine_text.length > 0);
-  ctx = canvas.getContext('2d');
-  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
-  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
-  if (typeof scale == "number") {
-    //resize the canvas to fit the scaled logo
-    canvas.width = metrics.summed_width * scale;
-    canvas.height = metrics.summed_height * scale;
-  } else {
-    if (canvas.width === 0 && canvas.height === 0) {
-      scale = 1;
-      canvas.width = metrics.summed_width;
-      canvas.height = metrics.summed_height;
-    } else if (canvas.width === 0) {
-      scale = canvas.height / metrics.summed_height;
-      canvas.width = metrics.summed_width * scale;
-    } else if (canvas.height === 0) {
-      scale = canvas.width / metrics.summed_width;
-      canvas.height = metrics.summed_height * scale;
-    } else {
-      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
-    }
-  }
-  // cache the raster based on the assumption that we will be drawing a lot
-  // of logos the same size and alphabet
-  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
-    draw_logo_on_canvas.raster_cache = [];
-  }
-  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
-    raster = draw_logo_on_canvas.raster_cache[i];
-    if (raster.get_alphabet().equals(logo.alphabet) &&
-        Math.abs(raster.get_scale() - scale) < 0.1) break;
-    raster = null;
-  }
-  if (raster == null) {
-    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
-    draw_logo_on_canvas.raster_cache.push(raster);
-  }
-  ctx = canvas.getContext('2d');
-  ctx.save();//s1
-  ctx.scale(scale, scale);
-  ctx.save();//s2
-  ctx.save();//s7
-  //create margin
-  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
-  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
-    pspm = logo.get_pspm(pspm_i);
-    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
-      ctx.font = metrics.name_font;
-      ctx.textAlign = "center";
-      ctx.fillText(pspm.name, 0, 0);
-      ctx.restore();//s4
-      ctx.translate(0, Math.round(metrics.name_height + 
-          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
-    }
-    //draw scale
-    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
-    ctx.save();//s5
-    //translate across past the scale
-    if (logo.y_axis) {
-      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
-        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
-    }
-    //draw the trimming background
-    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
-      var left_start = offset * logo.get_xlate_nsyms();
-      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
-      var left_divider = true;
-      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
-        // no overlap
-        left_start = 0;
-        left_end = 0;
-        left_divider = false;
-      } else {
-        if (left_start < logo.get_xlate_start()) {
-          left_start = logo.get_xlate_start();
-        }
-        if (left_end > logo.get_xlate_end()) {
-          left_end = logo.get_xlate_end();
-          left_divider = false;
-        }
-        left_start -= logo.get_xlate_start();
-        left_end -= logo.get_xlate_start();
-        if (left_end < left_start) {
-          left_start = 0;
-          left_end = 0;
-          left_divider = false;
-        }
-      }
-      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
-      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
-      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
-      var right_divider = true;
-      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
-        // no overlap
-        right_start = 0;
-        right_end = 0;
-        right_divider = false;
-      } else {
-        if (right_start < logo.get_xlate_start()) {
-          right_start = logo.get_xlate_start();
-          right_divider = false;
-        }
-        if (right_end > logo.get_xlate_end()) {
-          right_end = logo.get_xlate_end();
-        }
-        right_start -= logo.get_xlate_start();
-        right_end -= logo.get_xlate_start();
-        if (right_end < right_start) {
-          right_start = 0;
-          right_end = 0;
-          right_divider = false;
-        }
-      }
-      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
-    }
-    //draw letters
-    var xlate_col;
-    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
-      ctx.translate(metrics.stack_pad_left,0);
-      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
-      if (xlate_col % logo.get_xlate_nsyms() == 0) {
-        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
-          motif_position = col_index - offset;
-          draw_stack_num(ctx, metrics, motif_position, raster);
-          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
-        }
-      } else {
-        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
-          ctx.save();// s5.1
-          ctx.translate(0, Math.round(metrics.stack_height));
-          // TODO draw a dot or dash or something to indicate continuity of the motif
-          ctx.restore(); //s5.1
-        }
-      }
-      ctx.translate(Math.round(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
-  if (logo.fine_text.length > 0) {
-    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) {
-  "use strict";
-  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) {
-  "use strict";
-  var logo = new Logo(alphabet, fine_text);
-  logo.add_pspm(pspm);
-  return logo;
-}
-
-function logo_2(alphabet, fine_text, target, query, query_offset) {
-  "use strict";
-  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) {
-  "use strict";
-  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, null, 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) {
-  "use strict";
-  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, null, scale);
-  //replace the element with the canvas
-  element.parentNode.replaceChild(canvas, element);
-}
-
-/*
- * Fast string trimming implementation found at
- * http://blog.stevenlevithan.com/archives/faster-trim-javascript
- *
- * Note that regex is good at removing leading space but
- * bad at removing trailing space as it has to first go through
- * the whole string.
- */
-function trim (str) {
-  "use strict";
-  var ws, i;
-  str = str.replace(/^\s\s*/, '');
-  ws = /\s/; i = str.length;
-  while (ws.test(str.charAt(--i)));
-  return str.slice(0, i + 1);
-}
-</script>
-    <script>
-var current_motif = 0;
-var dreme_alphabet = new Alphabet(data.alphabet, data.control_db.freqs);
-
-/*
- * Create a pspm for the given motif data
- */
-function motif_pspm(m) {
-  return new Pspm(m.pwm, m.id, 0, 0, m.nsites, m.evalue);
-}
-
-/*
- * Create a count matrix from the given motif data
- */
-function motif_count_matrix(motif) {
-  return motif_pspm(motif).as_count_matrix();
-}
-
-/*
- * Create a probablity matrix from the given motif data
- */
-function motif_prob_matrix(motif) {
-  return motif_pspm(motif).as_probability_matrix();
-}
-
-/*
- * Create a minimal meme format motif from the given motif data
- */
-function motif_minimal_meme(motif) {
-  return motif_pspm(motif).as_meme({
-    "with_header": true, 
-    "with_pspm": true,
-    "with_pssm": false,
-    "version": data["version"],
-    "alphabet": dreme_alphabet,
-    "strands": (data.options.revcomp ? 2 : 1)
-  });
-}
-
-/*
- * Fill in a template variable
- */
-function set_tvar(template, tvar, value) {
-  var node;
-  node = find_child(template, tvar);
-  if (node === null) {
-    throw new Error("Template does not contain variable " + tvar);
-  }
-  node.innerHTML = "";
-  if (typeof value !== "object") {
-    node.appendChild(document.createTextNode(value));
-  } else {
-    node.appendChild(value);
-  }
-}
-
-/*
- * Make a canvas with the motif logo drawn on it. 
- */
-function make_logo(motif, height, rc) {
-  var pspm = new Pspm(motif["pwm"]);
-  if (rc) pspm = pspm.copy().reverse_complement(dreme_alphabet);
-  var logo = new Logo(dreme_alphabet);
-  logo.add_pspm(pspm, 0);
-  var canvas = document.createElement('canvas');
-  canvas.height = height;
-  canvas.width = 0;
-  draw_logo_on_canvas(logo, canvas, false);
-  return canvas;
-}
-
-/*
- * Create a button designed to contain a single symbol
- */
-function make_sym_btn(symbol, title, action) {
-  var box, sbox;
-  box = document.createElement("div");
-  box.tabIndex = 0;
-  box.className = "sym_btn";
-  sbox = document.createElement("span");
-  if (typeof symbol == "string") {
-    sbox.appendChild(document.createTextNode(symbol));
-  } else {
-    sbox.appendChild(symbol);
-  }
-  box.appendChild(sbox);
-  box.title = title;
-  box.addEventListener('click', action, false);
-  box.addEventListener('keydown', action, false);
-  return box;
-}
-
-/*
- * Create a pair of text spans with different classes.
- * This is useful when using CSS to only display one of them.
- */
-function text_pair(txt1, cls1, txt2, cls2) {
-  var container, part1, part2;
-  container = document.createElement("span");
-  part1 = document.createElement("span");
-  part1.appendChild(document.createTextNode(txt1));
-  part1.className = cls1;
-  container.appendChild(part1);
-  part2 = document.createElement("span");
-  part2.appendChild(document.createTextNode(txt2));
-  part2.className = cls2;
-  container.appendChild(part2);
-  return container;
-}
-
-/*
- * Make a colourised sequence.
- */
-function make_seq(seq) {
-  var i, j, letter, lbox, sbox;
-  sbox = document.createElement("span");
-  for (i = 0; i < seq.length; i = j) {
-    letter = seq.charAt(i);
-    for (j = i+1; j < seq.length; j++) {
-      if (seq.charAt(j) !== letter) {
-        break;
-      }
-    }
-    lbox = document.createElement("span");
-    lbox.style.color = dreme_alphabet.get_colour(dreme_alphabet.get_index(letter));
-    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
-    sbox.appendChild(lbox);
-  }
-  return sbox;
-}
-
-/*
- * Create a description element taking into account the newlines in the source text.
- */
-function make_description(text) {
-  var i, j, lines, p;
-  var container = document.createElement("div");
-  var paragraphs = text.split(/\n\n+/);
-  for (i = 0; i < paragraphs.length; i++) {
-    lines = paragraphs[i].split(/\n/);
-    p = document.createElement("p");
-    p.appendChild(document.createTextNode(lines[0]));
-    for (j = 1; j < lines.length; j++) {
-      p.appendChild(document.createElement("br"));
-      p.appendChild(document.createTextNode(lines[j]));
-    }
-    container.appendChild(p);
-  }
-  return container;
-}
-
-/*
- * Make the table header for the discovered motifs.
- */
-function make_motif_header() {
-  var row = document.createElement("tr");
-  add_text_header_cell(row, "", "", "motif_ordinal");
-  add_text_header_cell(row, "Motif", "pop_motifs_word", "motif_word");
-  add_text_header_cell(row, "Logo", "pop_motifs_logo", "motif_logo");
-  if (data.options.revcomp) {
-    add_text_header_cell(row, "RC Logo", "pop_motifs_rc_logo", "motif_logo");
-  }
-  add_text_header_cell(row, "E-value", "pop_motifs_evalue", "motif_evalue");
-  add_text_header_cell(row, "Unerased E-value", "pop_motifs_uevalue", "motif_evalue");
-  add_text_header_cell(row, "More", "pop_more", "motif_more");
-  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
-  row.className = "more";
-  return row;
-}
-
-/*
- * Make a compact motif summary row for the discovered motifs.
- */
-function make_motif_row(tbody, ordinal, motif) {
-  var row = document.createElement("tr");
-  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
-  add_text_cell(row, motif["id"], "motif_word");
-  add_cell(row, make_logo(motif, 50, false), "motif_logo");
-  if (data.options.revcomp) {
-    add_cell(row, make_logo(motif, 50, true), "motif_logo");
-  }
-  add_text_cell(row, motif["evalue"], "motif_evalue");
-  add_text_cell(row, motif["unerased_evalue"], "motif_evalue");
-  add_cell(row, make_sym_btn(text_pair("\u21A7", "less", "\u21A5", "more"), "Show more information.", function(e) { toggle_class(tbody, "collapsed"); }, "\u21A5", ""), "motif_more");
-  add_cell(row, make_sym_btn("\u21E2", "Submit the motif to another MEME Suite program or download it.", function(e) { action_show_outpop(e, ordinal); }), "motif_submit");
-  return row;
-}
-
-/*
- * Make a sortable table of enriched matching rows.
- */
-function make_motif_words(motif) {
-  var row, i, match;
-  var table = document.createElement("table");
-  var thead = document.createElement("thead");
-  row = document.createElement("tr");
-  add_text_header_cell(row, "Word", "pop_match_word", "match_word", function(e) {sort_table(this, compare_words);});
-  add_text_header_cell(row, "Positives", "pop_match_pos", "match_count", function(e) {sort_table(this, compare_counts);});
-  add_text_header_cell(row, "Negatives", "pop_match_neg", "match_count", function(e) {sort_table(this, compare_counts);});
-  add_text_header_cell(row, "P-value", "pop_match_pval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
-  add_text_header_cell(row, "E-value", "pop_match_eval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
-  thead.appendChild(row);
-  table.appendChild(thead);
-  var tbody = document.createElement("tbody");
-  for (i = 0; i < motif.matches.length; i++) {
-    match = motif.matches[i];
-    row = document.createElement("tr");
-    add_cell(row, make_seq(match.seq), "match_word");
-    add_text_cell(row, match.p + " / " + data.sequence_db.count, "match_count");
-    add_text_cell(row, match.n + " / " + data.control_db.count, "match_count");
-    add_text_cell(row, match.pvalue, "match_evalue");
-    add_text_cell(row, match.evalue, "match_evalue");
-    tbody.appendChild(row);
-  }
-  table.appendChild(tbody);
-  return table;
-}
-
-/*
- * Make an expanded view of a discovered motif.
- */
-function make_motif_exp(tbody, ordinal, motif) {
-  "use strict";
-  var box, pspm, logo_box;
-  box = $("tmpl_motif_expanded").cloneNode(true);
-  toggle_class(box, "template", false);
-  box.id = "";
-  find_child(box, "tvar_logo").appendChild(make_logo(motif, 150, false));
-  if (data.options.revcomp) {
-    find_child(box, "tvar_rclogo").appendChild(make_logo(motif, 150, true));
-  }
-  set_tvar(box, "tvar_p", motif["p"]);
-  set_tvar(box, "tvar_p_total", data.sequence_db.count);
-  set_tvar(box, "tvar_n", motif["n"]);
-  set_tvar(box, "tvar_n_total", data.control_db.count);
-  set_tvar(box, "tvar_pvalue", motif["pvalue"]);
-  set_tvar(box, "tvar_evalue", motif["evalue"]);
-  set_tvar(box, "tvar_uevalue", motif["unerased_evalue"]);
-  set_tvar(box, "tvar_words", make_motif_words(motif));
-  var cell = document.createElement("td");
-  cell.colSpan = 8;
-  cell.appendChild(box);
-  var row = document.createElement("tr");
-  row.className = "more";
-  row.appendChild(cell);
-  return row;
-}
-
-/*
- * Convert a string containing a scientific number into the log of that number
- * without having an intermediate representation of the number.
- * This is intended to avoid underflow problems with the tiny evalues that
- * MEME and DREME can create.
- */
-function sci2log(scinum) {
-  "use strict";
-  var ev_re, match, sig, exp;
-  ev_re = /^(.*)e(.*)$/;
-  if (match = ev_re.exec(scinum)) {
-    sig = parseFloat(match[1]);
-    exp = parseInt(match[2]);
-    return Math.log(sig) + (exp * Math.log(10));
-  }
-  return 0;
-}
-
-/*
- * Create a table of discovered motifs. A fresh table body is used for each
- * motif to make hiding/showing rows with css easier.
- */
-function make_motifs() {
-  "use strict";
-  var i, row, tbody, motif, ordinal;
-  // make the motifs table
-  var container = $("motifs");
-  container.innerHTML = ""; // clear content
-  var table = document.createElement("table");
-  // add a header that is always shown
-  var thead = document.createElement("thead");
-  thead.appendChild(make_motif_header());
-  table.appendChild(thead);
-  for (i = 0; i < data.motifs.length; i++) {
-    ordinal = i + 1;
-    motif = data.motifs[i];
-    tbody = document.createElement("tbody");
-    tbody.className = "collapsed";
-    tbody.appendChild(make_motif_row(tbody, ordinal, motif));
-    tbody.appendChild(make_motif_exp(tbody, ordinal, motif));
-    // create a following header for every row except the last one
-    if ((i + 1) < data.motifs.length) tbody.appendChild(make_motif_header());
-    table.appendChild(tbody);
-  }
-  container.appendChild(table);
-}
-
-/*
- * Create a table showing all the alphabet symbols, their names and frequencies.
- */
-function make_alpha_bg(alph, freqs) {
-  function colour_symbol(index) {
-    var span = document.createElement("span");
-    span.appendChild(document.createTextNode(alph.get_symbol(index)));
-    span.style.color = alph.get_colour(index);
-    span.className = "alpha_symbol";
-    return span;
-  }
-  var table, thead, tbody, row, th, span, i;
-  // create table
-  table = document.createElement("table");
-  table.className = "inputs";
-  // create header
-  thead = document.createElement("thead");
-  table.appendChild(thead);
-  row = thead.insertRow(thead.rows.length);
-  if (alph.has_complement()) {
-    add_text_header_cell(row, "Name", "pop_alph_name");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-    add_text_header_cell(row, "Name", "pop_alph_name");
-  } else {
-    add_text_header_cell(row, "");
-    add_text_header_cell(row, "Name", "pop_alph_name");
-    add_text_header_cell(row, "Bg.", "pop_alph_control");
-  }
-  // add alphabet entries
-  tbody = document.createElement("tbody");
-  table.appendChild(tbody);
-  if (alph.has_complement()) {
-    for (i = 0; i < alph.get_size_core(); i++) {
-      var c = alph.get_complement(i);
-      if (i > c) continue;
-      row = tbody.insertRow(tbody.rows.length);
-      add_text_cell(row, alph.get_name(i));
-      add_text_cell(row, "" + freqs[i].toFixed(3));
-      add_cell(row, colour_symbol(i)); 
-      add_text_cell(row, "~");
-      add_cell(row, colour_symbol(c)); 
-      add_text_cell(row, "" + freqs[c].toFixed(3));
-      add_text_cell(row, alph.get_name(c));
-    }
-  } else {
-    for (i = 0; i < alph.get_size_core(); i++) {
-      row = tbody.insertRow(tbody.rows.length);
-      add_cell(row, colour_symbol(i)); 
-      add_text_cell(row, alph.get_name(i));
-      add_text_cell(row, "" + freqs[i].toFixed(3));
-    }
-  }
-  return table;
-}
-
-/*
- * Updates the format download text in the popup.
- * This is called when either the format or current motif changes.
- */
-function update_outpop_format(index) {
-  var motif = data.motifs[index];
-  var fn = [motif_count_matrix, motif_prob_matrix, motif_minimal_meme];
-  var suffix = ["_counts.txt", "_freqs.txt", ".meme"];
-  var format = parseInt($("text_format").value);
-  var text = fn[format](motif);
-  prepare_download(text, "text/plain", motif.id + suffix[format], $("outpop_text_dl"));
-  $("outpop_text").value = text;
-}
-
-/*
- * Updates the motif logos and format download text in the popup.
- * This is called whenever the current motif changes.
- */
-function update_outpop_motif(index) {
-  "use strict";
-  var motifs, motif, pspm, logo, canvas, num;
-  motifs = data["motifs"];
-  if (index < 0 || index >= motifs.length) {return;}
-  current_motif = index;
-  motif = motifs[index];
-  pspm = new Pspm(motif["pwm"]);
-  logo = new Logo(dreme_alphabet, "");
-  logo.add_pspm(pspm, 0);
-  canvas = $("outpop_logo");
-  canvas.width = canvas.width; // clear canvas
-  draw_logo_on_canvas(logo, canvas, false);
-  canvas = $("outpop_logo_rc");
-  canvas.width = canvas.width; // clear rc canvas
-  if (data.options.revcomp) {
-    pspm.reverse_complement(dreme_alphabet);
-    logo = new Logo(dreme_alphabet, "");
-    logo.add_pspm(pspm, 0);
-    draw_logo_on_canvas(logo, canvas, false);
-  }
-  num = $("outpop_num");
-  num.innerHTML = "";
-  num.appendChild(document.createTextNode("" + (index + 1)));
-  update_outpop_format(index);
-}
-
-
-/*
- * Initialise and display the download popup.
- */
-function action_show_outpop(e, ordinal) {
-  "use strict";
-  function init() {
-    "use strict";
-    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
-    var tab1, tab2, tab3;
-    var pnl1, pnl2, pnl3;
-    var format_list;
-    var tbl_submit, inputs, i, default_prog;
-    close_btn = $("outpop_close");
-    close_btn.addEventListener("click", action_hide_outpop, false);
-    close_btn.addEventListener("keydown", action_hide_outpop, false);
-    next_btn = $("outpop_next");
-    next_btn.addEventListener("click", action_outpop_next, false);
-    next_btn.addEventListener("keydown", action_outpop_next, false);
-    prev_btn = $("outpop_prev");
-    prev_btn.addEventListener("click", action_outpop_prev, false);
-    prev_btn.addEventListener("keydown", action_outpop_prev, false);
-    cancel_btn = $("outpop_cancel");
-    cancel_btn.addEventListener("click", action_hide_outpop, false);
-    do_btn = $("outpop_do");
-    do_btn.addEventListener("click", action_outpop_submit, false);
-    tab1 = $("outpop_tab_1");
-    tab1.tabIndex = 0;
-    tab1.addEventListener("click", action_outpop_tab, false);
-    tab1.addEventListener("keydown", action_outpop_tab, false);
-    tab2 = $("outpop_tab_2");
-    tab2.tabIndex = 0;
-    tab2.addEventListener("click", action_outpop_tab, false);
-    tab2.addEventListener("keydown", action_outpop_tab, false);
-    tab3 = $("outpop_tab_3");
-    tab3.tabIndex = 0;
-    tab3.addEventListener("click", action_outpop_tab, false);
-    tab3.addEventListener("keydown", action_outpop_tab, false);
-    pnl1 = $("outpop_pnl_1");
-    pnl2 = $("outpop_pnl_2");
-    pnl3 = $("outpop_pnl_3");
-    toggle_class(tab1, "activeTab", true);
-    toggle_class(tab2, "activeTab", false);
-    toggle_class(tab3, "activeTab", false);
-    pnl1.style.display = "block";
-    pnl2.style.display = "none";
-    pnl3.style.display = "none";
-    format_list = $("text_format");
-    format_list.addEventListener("change", action_outpop_format, false);
-    // setup program selection
-    tbl_submit = $("programs");
-    // when not dna, hide the inputs for programs that require dna motifs
-    toggle_class(tbl_submit, "alphabet_dna", dreme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
-    // add a click listener for the radio buttons
-    inputs = tbl_submit.querySelectorAll("input[type='radio']");
-    for (i = 0; i < inputs.length; i++) {
-      inputs[i].addEventListener("click", action_outpop_program, false);
-    }
-    // ensure that a default program option is selected for DNA and Protein
-    default_prog = document.getElementById(dreme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo");
-    default_prog.checked = true;
-    action_outpop_program.call(default_prog);
-    // disable reverse-complement when not DNA
-    $("logo_rc_option").disabled = !dreme_alphabet.has_complement(); 
-    // set errorbars on when ssc is on
-    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
-  }
-  // store the focused element
-  action_hide_outpop.last_active = document.activeElement;
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  // hide the help popup
-  help_popup();
-  // on first load initilize the popup
-  if (!action_show_outpop.ready) {
-    init();
-    action_show_outpop.ready = true;
-  }
-  update_outpop_motif(ordinal - 1);
-  // display the download popup
-  $("grey_out_page").style.display = "block";
-  $("download").style.display = "block";
-  $("outpop_close").focus();
-}
-
-/*
- * Hide the download popup.
- */
-function action_hide_outpop(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  $("download").style.display = "none";
-  $("grey_out_page").style.display = "none";
-  if (typeof action_hide_outpop.last_active !== "undefined") {
-    action_hide_outpop.last_active.focus();
-  }
-}
-
-/*
- * Show the next motif in the download popup.
- */
-function action_outpop_next(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  update_outpop_motif(current_motif + 1);
-}
-
-/*
- * Show the previous motif in the download popup.
- */
-function action_outpop_prev(e) {
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  update_outpop_motif(current_motif - 1);
-}
-
-/*
- * Highlight the selected row in the program list.
- */
-function action_outpop_program() {
-  "use strict";
-  var table, tr, rows, i;
-  tr = find_parent_tag(this, "TR");
-  table = find_parent_tag(tr, "TABLE");
-  rows = table.querySelectorAll("tr");
-  for (i = 0; i < rows.length; i++) {
-    toggle_class(rows[i], "selected", rows[i] === tr);
-  }
-}
-
-/*
- * Enable error bars when small sample correction is enabled.
- */
-function action_outpop_ssc() {
-  "use strict";
-  $("logo_err").value = $("logo_ssc").value;
-}
-
-/*
- * Submit the motif to the selected program.
- */
-function action_outpop_submit(e) {
-  "use strict";
-  var form, input, program, motifs;
-  // find out which program is selected
-  var radios, i;
-  radios = document.getElementsByName("program");
-  program = "fimo"; // default to fimo, since it works with all alphabet types
-  for (i = 0; i < radios.length; i++) {
-    if (radios[i].checked) program = radios[i].value;
-  }
-
-  motifs = motif_minimal_meme(data.motifs[current_motif]);
-  form = document.createElement("form");
-  form.setAttribute("method", "post");
-  form.setAttribute("action", site_url + "/tools/" + program);
-  
-  input = document.createElement("input");
-  input.setAttribute("type", "hidden");
-  input.setAttribute("name", "motifs_embed");
-  input.setAttribute("value", motifs);
-  form.appendChild(input);
-
-  document.body.appendChild(form);
-  form.submit();
-  document.body.removeChild(form);
-}
-
-/*
- * Download the format text.
- * Wire the link containing the data URI text to a download button so it looks
- * the same as the server submit stuff.
- */
-function action_outpop_download_motif(e) {
-  $("outpop_text_dl").click();
-}
-
-/*
- * Download the motif logo.
- * The EPS format can be calculated locally in Javascript
- */
-function action_outpop_download_logo(e) {
-  "use strict";
-  var pspm, logo, eps;
-  var logo_rc, logo_ssc, logo_width, logo_height;
-  var motif = data.motifs[current_motif];
-  if ($("logo_format").value == "0") { // EPS
-    logo_rc = ($("logo_rc").value == "1");
-    logo_ssc = ($("logo_ssc").value == "1");
-    logo_width = parseFloat($("logo_width").value);
-    if (isNaN(logo_width) || !isFinite(logo_width) || logo_width <= 0) logo_width = null;
-    logo_height = parseFloat($("logo_height").value);
-    if (isNaN(logo_height) || !isFinite(logo_height) || logo_height <= 0) logo_height = null;
-    // create a PSPM from the motif
-    pspm = motif_pspm(motif);
-    if (logo_rc) pspm.reverse_complement(dreme_alphabet);
-    logo = new Logo(dreme_alphabet);
-    logo.add_pspm(pspm, 0);
-    eps = logo.as_eps({"ssc": logo_ssc, "logo_width": logo_width, "logo_height": logo_height});
-    prepare_download(eps, "application/postscript", motif.id + ".eps");
-  } else {
-    $("logo_motifs").value = motif_minimal_meme(motif);
-    $("logo_form").submit();
-  }
-}
-
-/*
- * Change the selected tab in the download popup.
- */
-function action_outpop_tab(e) {
-  "use strict";
-  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
-  if (!e) e = window.event;
-  if (e.type === "keydown") {
-    if (e.keyCode !== 13 && e.keyCode !== 32) {
-      return;
-    }
-    // stop a submit or something like that
-    e.preventDefault();
-  }
-  tab1 = $("outpop_tab_1");
-  tab2 = $("outpop_tab_2");
-  tab3 = $("outpop_tab_3");
-  pnl1 = $("outpop_pnl_1");
-  pnl2 = $("outpop_pnl_2");
-  pnl3 = $("outpop_pnl_3");
-  do_btn = $("outpop_do");
-
-  toggle_class(tab1, "activeTab", (this === tab1));
-  toggle_class(tab2, "activeTab", (this === tab2));
-  toggle_class(tab3, "activeTab", (this === tab3));
-  pnl1.style.display = ((this === tab1) ? "block" : "none");
-  pnl2.style.display = ((this === tab2) ? "block" : "none");
-  pnl3.style.display = ((this === tab3) ? "block" : "none");
-  do_btn.value = ((this === tab1) ? "Submit" : "Download");
-  do_btn.removeEventListener("click", action_outpop_submit, false);
-  do_btn.removeEventListener("click", action_outpop_download_logo, false);
-  do_btn.removeEventListener("click", action_outpop_download_motif, false);
-  if (this === tab1) {
-    do_btn.addEventListener("click", action_outpop_submit, false);
-  } else if (this === tab2) {
-    do_btn.addEventListener("click", action_outpop_download_motif, false);
-  } else {
-    do_btn.addEventListener("click", action_outpop_download_logo, false);
-  }
-}
-
-/*
- * Update the text in the download format popup.
- */
-function action_outpop_format() {
-  update_outpop_format(current_motif);
-}
-
-/*
- * Find all text nodes in the given container.
- */
-function text_nodes(container) {
-  var textNodes = [];
-  var stack = [container];
-  // depth first search to maintain ordering when flattened 
-  while (stack.length > 0) {
-    var node = stack.pop();
-    if (node.nodeType == Node.TEXT_NODE) {
-      textNodes.push(node);
-    } else {
-      for (var i = node.childNodes.length-1; i >= 0; i--) {
-        stack.push(node.childNodes[i]);
-      }
-    }
-  }
-  return textNodes;
-}
-
-/*
- * Get the text out of a specific text node.
- */
-function node_text(node) {
-  if (node === undefined) {
-    return '';
-  } else if (node.textContent) {
-    return node.textContent;
-  } else if (node.innerText) {
-    return node.innerText;
-  } else {
-    return '';
-  }
-}
-
-/*
- * Get the text contained within the element.
- */
-function elem_text(elem, separator) {
-  if (separator === undefined) separator = '';
-  return text_nodes(elem).map(node_text).join(separator);
-}
-
-/*
- * Sort all rows in the first table body based on the column of the given element and the comparison function.
- * The sort is not very fast and is intended for small tables only.
- */
-function sort_table(colEle, compare_function) {
-  //find the parent of colEle that is either a td or th
-  var i, j;
-  var cell = colEle;
-  while (true) {
-    if (cell == null) return;
-    if (cell.nodeType == Node.ELEMENT_NODE && 
-        (cell.tagName.toLowerCase() == "td" || cell.tagName.toLowerCase() == "th")) {
-      break;
-    }
-    cell = cell.parentNode;
-  }
-  //find the parent of cell that is a tr
-  var row = cell;
-  while (true) {
-    if (row == null) return;
-    if (row.nodeType == Node.ELEMENT_NODE && row.tagName.toLowerCase() == "tr") {
-      break;
-    }
-    row = row.parentNode;
-  }
-  //find the parent of row that is a table
-  var table = row;
-  while (true) {
-    if (table == null) return;
-    if (table.nodeType == Node.ELEMENT_NODE && table.tagName.toLowerCase() == "table") {
-      break;
-    }
-    table = table.parentNode;
-  }
-  var column_index = cell.cellIndex;
-  // do a bubble sort, because the tables are so small it doesn't matter
-  var change;
-  var trs = table.tBodies[0].getElementsByTagName('tr');
-  var already_sorted = true;
-  var reverse = false;
-  while (true) {
-    do {
-      change = false;
-      for (i = 0; i < trs.length -1; i++) {
-        var v1 = elem_text(trs[i].cells[column_index]);
-        var v2 = elem_text(trs[i+1].cells[column_index]);
-        if (reverse) {
-          var tmp = v1;
-          v1 = v2;
-          v2 = tmp;
-        }
-        if (compare_function(v1, v2) > 0) {
-          exchange(trs[i], trs[i+1], table);
-          change = true;
-          already_sorted = false;
-          trs = table.tBodies[0].getElementsByTagName('tr');
-        }
-      }
-    } while (change);
-    if (reverse) break;// we've sorted twice so exit
-    if (!already_sorted) break;// sort did something so exit
-    // when it's sorted one way already then sort the opposite way
-    reverse = true;
-  }
-  // put arrows on the headers
-  var headers = table.tHead.getElementsByTagName('tr');
-  for (i = 0; i < headers.length; i++) {
-    for (j = 0; j < headers[i].cells.length; j++) {
-      var cell = headers[i].cells[j];
-      var arrows = cell.getElementsByClassName("sort_arrow");
-      var arrow;
-      if (arrows.length == 0) {
-        arrow = document.createElement("span");
-        arrow.className = "sort_arrow";
-        cell.insertBefore(arrow, cell.firstChild);
-      } else {
-        arrow = arrows[0];
-      }
-      arrow.innerHTML = "";
-      if (j == column_index) {
-        arrow.appendChild(document.createTextNode(reverse ? "\u25B2" : "\u25BC"));
-      }
-    }
-  }
-}
-
-/*
- * Swap two rows in a table.
- */
-function exchange(oRowI, oRowJ, oTable) {
-  var i = oRowI.rowIndex;
-  var j = oRowJ.rowIndex;
-   if (i == j+1) {
-    oTable.tBodies[0].insertBefore(oRowI, oRowJ);
-  } if (j == i+1) {
-    oTable.tBodies[0].insertBefore(oRowJ, oRowI);
-  } else {
-    var tmpNode = oTable.tBodies[0].replaceChild(oRowI, oRowJ);
-    if(typeof(oRowI) != "undefined") {
-      oTable.tBodies[0].insertBefore(tmpNode, oRowI);
-    } else {
-      oTable.appendChild(tmpNode);
-    }
-  }
-}
-
-/*
- * Compare two E-values which may be very small.
- */
-function compare_evalues(v1, v2) {
-  var e1 = sci2log(v1);
-  var e2 = sci2log(v2);
-  if (e1 < e2) return -1;
-  else if (e1 > e2) return 1;
-  return 0;
-}
-
-/*
- * Compare two counts.
- */
-function compare_counts(v1, v2) {
-  var re = /(\d+)\s*\/\s*\d+/;
-  var m1 = re.exec(v1);
-  var m2 = re.exec(v2);
-  if (m1 == null && m2 == null) return 0;
-  if (m1 == null) return -1;
-  if (m2 == null) return 1;
-  return parseInt(m2[1]) - parseInt(m1[1]);
-}
-
-/*
- * Compare two sequence words.
- */
-function compare_words(v1, v2) {
-  return v1.localeCompare(v2);
-}
-
-
-</script>
-    <style>
-/* 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;
-  cursor: pointer;
-  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
-}
-
-div.help:hover {
-  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
-}
-
-p.spaced { line-height: 1.8em;}
-
-span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
-
-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; overflow: hidden;}
-
-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;}
-
-.explain h5 {font-size:1em; margin-left: 1em;}
-
-div.doc {margin-left: 2em; margin-bottom: 3em;}
-
-th.trainingset {
-  border-bottom: thin dashed black; 
-  font-weight:normal; 
-  padding:0px 10px;
-}
-div.pop_content {
-  position:absolute;
-  z-index:50;
-  width:300px;
-  padding: 5px;
-  background: #E4ECEC;
-  font-size: 12px;
-  font-family: Arial;
-  border-style: double;
-  border-width: 3px;
-  border-color: #AA2244;
-  display:none;
-}
-
-div.pop_content > *:first-child {
-  margin-top: 0px;
-}
-
-div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
-div.pop_content h5, div.pop_content h6, div.pop_content p {
-  margin: 0px;
-}
-
-div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
-div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
-  margin-top: 5px;
-}
-
-div.pop_content p + p {
-  margin-top: 5px;
-}
-
-div.pop_content > *:last-child {
-  margin-bottom: 0px;
-}
-
-div.pop_content div.pop_close {
-  /* old definition */
-  float:right;
-  bottom: 0;
-}
-
-div.pop_content span.pop_close, div.pop_content span.pop_back {
-  display: inline-block;
-  border: 2px outset #661429;
-  background-color: #CCC;
-  padding-left: 1px;
-  padding-right: 1px;
-  padding-top: 0px;
-  padding-bottom: 0px;
-  cursor: pointer;
-  color: #AA2244; /*#661429;*/
-  font-weight: bold;
-}
-
-div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
-  border-style: inset;
-}
-
-div.pop_content span.pop_close {
-  float:right;
-  /*border: 2px outset #AA002B;*/
-  /*color: #AA2244;*/
-}
-
-div.pop_content:not(.nested) .nested_only {
-  display: none;
-}
-
-div.pop_back_sec {
-  margin-bottom: 5px;
-}
-
-div.pop_close_sec {
-  margin-top: 5px;
-}
-
-table.hide_advanced tr.advanced {
-  display: none;
-}
-span.show_more {
-  display: none;
-}
-table.hide_advanced span.show_more {
-  display: inline;
-}
-table.hide_advanced span.show_less {
-  display: none;
-}
-
-
-/*****************************************************************************
- * Program logo styling
- ****************************************************************************/
-div.prog_logo {
-  border-bottom: 0.25em solid #0f5f60;
-  height: 4.5em;
-  width: 24em;
-  display:inline-block;
-}
-div.prog_logo img {
-  float:left;
-  width: 4em;
-  border-style: none;
-  margin-right: 0.2em;
-}
-div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
-  margin:0;
-  padding:0;
-  font-family: Arial, Helvetica,  sans-serif;
-  font-size: 3.2em;
-  line-height: 1em;
-  vertical-align: top;
-  display: block;
-  color: #026666;
-  letter-spacing: -0.06em;
-  text-shadow: 0.04em 0.06em 0.05em #666;
-}
-div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
-  display: block;
-  margin:0;
-  padding:0;
-  font-family: Helvetica, sans-serif;
-  font-size: 0.9em;
-  line-height: 1em;
-  letter-spacing: -0.06em;
-  color: black;
-}
-
-div.big.prog_logo {
-  font-size: 18px;
-}
-
-</style>
-    <style>
-/* dreme output specific css */
-div.header {
-  position: relative;
-  overflow: hidden;
-  margin-top: 15px;
-  margin-bottom: 5px;
-  margin-right: 3px;
-  margin-left: 3px;
-}
-div.header > h2 {
-  font-size: 1.5em;
-  font-style: normal;
-  margin: 0;
-  font-variant: small-caps; 
-  font-family: Georgia, "Times New Roman", Times, serif;
-}
-div.header > span {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-}
-
-div.template {
-  position: absolute;
-  z-index: 1;
-  left: 0;
-  top: 0;
-  visibility: hidden;
-}
-
-div.sym_btn {
-  display:inline-block;
-  text-decoration: underline;
-  cursor: pointer;
-  font-size: 20px;
-  line-height:20px; 
-  text-align: center;
-  width: 20px;
-  height: 20px;
-  color: blue;
-}
-div.sym_btn:hover {
-  color: white;
-  background-color: blue;
-}
-
-div.sym_btn.positioned {
-  position: absolute;
-  top: 0px;
-}
-
-div.box + div.box {
-  margin-top: 5px;
-}
-
-th.motif_ordinal {
-
-}
-td.motif_ordinal {
-  text-align: right;
-  padding-right: 10px;
-  font-weight: bold;
-  font-size: large;
-}
-th.motif_word {
-  padding-right: 10px;
-}
-td.motif_word {
-  font-size:15px; 
-  font-family: 'Courier New', Courier, monospace;
-  padding-right: 10px;
-}
-th.motif_logo {
-  padding-right: 10px;
-}
-td.motif_logo {
-  padding-right: 10px;
-}
-th.motif_evalue {
-  text-align:right;
-  padding-right: 10px;
-}
-td.motif_evalue {
-  text-align: right;
-  white-space: nowrap;
-  padding-right: 20px;
-}
-th.motif_more {
-  padding: 0 5px;
-}
-td.motif_more {
-  text-align: center;
-  padding: 0 5px;
-}
-th.motif_submit {
-  padding: 0 5px;
-}
-td.motif_submit {
-  text-align: center;
-  padding: 0 5px;
-}
-th.match_word {
-  padding-right: 10px;
-}
-td.match_word {
-  padding-right: 10px;
-  font-weight: bold;
-  font-size: large; 
-  font-family: 'Courier New', Courier, monospace;
-}
-th.match_evalue, th.match_count {
-  text-align: right;
-  padding-right: 10px;
-}
-td.match_evalue, td.match_count {
-  text-align: right;
-  white-space: nowrap;
-  padding-right: 20px;
-}
-
-div.tabArea {
-  font-size: 80%;
-  font-weight: bold;
-}
-
-.norc div.tabArea {
-  display: none;
-}
-
-span.tab, span.tab:visited {
-  cursor: pointer;
-  color: #888;
-  background-color: #ddd;
-  border: 2px solid #ccc;
-  padding: 2px 1em;
-  text-decoration: none;
-}
-span.tab.middle {
-  border-left-width: 0px;
-}
-div.tabArea.base span.tab {
-  border-top-width: 0px;
-}
-div.tabArea.top span.tab {
-  border-bottom-width: 0px;
-}
-
-span.tab:hover {
-  background-color: #bbb;
-  border-color: #bbb;
-  color: #666;
-}
-span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
-  background-color: white;
-  color: black;
-  cursor: default;
-}
-div.tabMain {
-  border: 2px solid #ccc;
-  background-color: white;
-  padding: 10px;
-}
-div.tabMain.base {
-  margin-top: 5px;
-  display: inline-block;
-  max-width: 98%;
-}
-
-div.tabMain.top {
-  margin-bottom: 5px;
-}
-
-div.grey_background {
-  position:fixed; 
-  z-index: 8;
-  background-color: #000;
-  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
-  opacity: 0.5;
-  left: 0;
-  top: 0;
-  width: 100%;
-  height: 100%;
-}
-
-div.popup_wrapper {
-  position:fixed; 
-  z-index:9;
-  width:100%; 
-  height:0; 
-  top:50%; 
-  left:0;
-}
-
-div.popup {
-  width: 600px; 
-  z-index:9;
-  margin-left: auto;
-  margin-right: auto;
-  padding: 5px;
-  background-color: #FFF;
-  border-style: double;
-  border-width: 5px;
-  border-color: #00666a;
-  position:relative; 
-}
-div.close {
-  cursor: pointer;
-  border: 1px solid black; 
-  width:15px; 
-  height:15px; 
-  line-height:15px; /* this causes vertical centering */
-  text-align:center; 
-  background-color:#FFF; 
-  color:#000; 
-  font-size:15px;
-  font-family:monospace;
-}
-
-div.close:hover {
-  color:#FFF;
-  background-color:#000; 
-}
-
-div.navnum {
-  width:100%; 
-  height:20px; 
-  line-height:20px; 
-  text-align:center; 
-  font-size:medium;
-}
-
-div.navarrow {
-  font-size: 30px;
-  text-decoration:none;
-  cursor: pointer;
-  -moz-user-select: none;  
-  -webkit-user-select: none;  
-  -ms-user-select: none;
-}
-
-div.navarrow > span.inactive {
-  display: inline;
-}
-div.navarrow > span.active {
-  display: none;
-}
-
-div.navarrow:hover > span.active {
-  display: inline;
-}
-div.navarrow:hover > span.inactive {
-  display: none;
-}
-
-table.programs {
-  width: 100%;
-}
-
-table.programs tr {
-  background-color: #EFE;
-}
-
-table.programs tr.selected {
-  background-color: #262;
-  color: #FFF;
-}
-
-table.programs tr.dna_only {
-  display: none;
-}
-
-table.programs.alphabet_dna tr.dna_only {
-  display: table-row;
-}
-
-table.inputs {
-  margin-top: 20px;
-  border-collapse:collapse;
-}
-table.inputs * td, table.inputs * th {
-  padding-left: 15px;
-  padding-right: 15px;
-  padding-top: 1px;
-  padding-bottom: 1px;
-}
-
-/* program settings */
-span.strand_none, span.strand_given, span.strand_both {
-  display: none;
-}
-td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
-  display: inline;
-}
-
-/* show the expanded motif only when the collapsed one is hidden */
-tbody *.less, tbody.collapsed *.more {
-  display: none;
-}
-
-tbody.collapsed *.less {
-  display: inline;
-}
-
-</style>
-  </head>
-  <body data-scrollpad="true">
-    <!--  -->
-    <div id="grey_out_page" class="grey_background" style="display:none;">
-    </div>
-
-    <!-- Help popups -->
-    <div class="pop_content" id="pop_">
-      <p>Help poup.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_motifs_word">
-      <p>
-        The name of the motif uses the IUPAC codes for nucleotides which has 
-        a different letter to represent each of the 15 possible combinations.
-      </p>
-      <p>
-        The name is itself a representation of the motif though the position
-        weight matrix is not directly equalivant as it is generated from the
-        sites found that matched the letters given in the name.
-      </p>
-      <p>
-        <a id="doc_alphabets_url" href="#">
-        Read more about the MEME suite's use of the IUPAC alphabets.
-        </a>
-        <script>$("doc_alphabets_url").href = site_url + "/doc/alphabets.html";</script>
-      </p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_logo">
-      <p>The logo of the motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_rc_logo">
-      <p>The logo of the reverse complement motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_evalue">
-      <p>The E-value is the enrichment p-value times the number of candidate 
-        motifs tested.</p>
-      <p>The enrichment p-value is calculated using Fisher's Exact Test for 
-        enrichment of the motif in the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motifs_uevalue">
-      <p>The E-value of the motif calculated without erasing the sites of 
-        previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_more">
-      <p>Show more information on the motif.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_submit_dl">
-      <p>Submit your motif to another MEME Suite program or download your motif.</p>
-      <h5>Supported Programs</h5>
-      <dl>
-        <dt>Tomtom</dt>
-        <dd>Tomtom is a tool for searching for similar known motifs. 
-          </dd>
-        <dt>MAST</dt>
-        <dd>MAST is a tool for searching biological sequence databases for 
-          sequences that contain one or more of a group of known motifs.
-          </dd>
-        <dt>FIMO</dt>
-        <dd>FIMO is a tool for searching biological sequence databases for 
-          sequences that contain one or more known motifs.
-          </dd>
-        <dt>GOMO</dt>
-        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
-          terms) for DNA binding motifs.
-          </dd>
-        <dt>SpaMo</dt>
-        <dd>SpaMo is a tool for inferring possible transcription factor
-          complexes by finding motifs with enriched spacings.
-          </dd>
-      </dl>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_positives">
-      <p># positive sequences matching the motif / # positive sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_negatives">
-      <p># negative sequences matching the motif / # negative sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_pvalue">
-      <p>The p-value of Fisher's Exact Test for enrichment of the motif in 
-        the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_evalue">
-      <p>The E-value is the motif p-value times the number of candidate motifs 
-        tested.</p>
-      <p>Note that the p-value was calculated with counts made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_motif_uevalue">
-      <p>The E-value of the motif calculated without erasing the sites of 
-        previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_word">
-      <p>All words matching the motif whose uncorrected p-value is less than
-      <span id="help_add_pv_thresh"></span>.</p>
-      <script>$("help_add_pv_thresh").innerHTML = data.options.add_pv_thresh;</script>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_pos">
-      <p># positive sequences with matches to the word / # positive sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_neg">
-      <p># negative sequences with matches to the word / # negative sequences.</p>
-      <p>Note these counts are made after erasing sites that match previously
-        found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_pval">
-      <p>The p-value of Fisher's Exact Test for enrichment of the word in 
-        the positive sequences.</p>
-      <p>Note that the counts used in Fisher's Exact Test are made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_match_eval">
-      <p>The word p-value times the number of candidates tested.</p>
-      <p>Note that the p-value was calculated with counts made after 
-        erasing sites that match previously found motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_seq_source">
-      <p>The sequence file used by DREME to find the motifs.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_seq_alph">
-      <p>The alphabet of the sequences.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-    <div class="pop_content" id="pop_seq_count">
-      <p>The count of the sequences.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_alph_name">
-      <p>The name of the alphabet symbol.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <div class="pop_content" id="pop_alph_control">
-      <p>The frequency of the alphabet symbol in the control dataset.</p>
-      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
-    </div>
-
-    <!-- templates -->
-
-    <div class="template box expanded_motif" id="tmpl_motif_expanded">
-      <div>
-        <span class="tvar_logo"></span>
-        <span class="tvar_rclogo"></span>
-      </div>
-      <h4>Details</h4>
-      <table class="details">
-        <thead>
-          <tr>
-            <th class="match_count">Positives <div class="help" data-topic="pop_motif_positives"></div></th>
-            <th class="match_count">Negatives <div class="help" data-topic="pop_motif_negatives"></div></th>
-            <th class="match_evalue">P-value <div class="help" data-topic="pop_motif_pvalue"></div></th>
-            <th class="match_evalue">E-value <div class="help" data-topic="pop_motif_evalue"></div></th>
-            <th class="match_evalue">Unerased E-value <div class="help" data-topic="pop_motif_uevalue"></div></th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr>
-            <td class="match_count">
-              <span class="tvar_p"></span> / <span class="tvar_p_total"></span>
-            </td>
-            <td class="match_count">
-              <span class="tvar_n"></span> / <span class="tvar_n_total"></span>
-            </td>
-            <td class="tvar_pvalue match_evalue"></td>
-            <td class="tvar_evalue match_evalue"></td>
-            <td class="tvar_uevalue match_evalue"></td>
-          </tr>
-        </tbody>
-      </table>
-      <h4>Enriched Matching Words</h4>
-      <div class="tvar_words"></div>
-    </div>
-
-
-    <div class="popup_wrapper">
-      <div class="popup" style="display:none; top: -150px;" id="download">
-        <div>
-          <div style="float:right; ">
-            <div id="outpop_close" class="close" tabindex="0">x</div>
-          </div>
-          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
-          <div style="clear:both"></div>
-        </div>
-          <div style="height:100px">
-            <div style="float:right; width: 30px;">
-              <div id="outpop_prev" class="navarrow" tabindex="0">
-                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
-              </div>
-              <div id="outpop_num" class="navnum"></div>
-              <div id="outpop_next" class="navarrow" tabindex="0">
-                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
-              </div>
-            </div>
-            <div id="logo_box" style="height: 100px; margin-right: 40px;">
-              <canvas id="outpop_logo" height="100" width="250"></canvas>
-              <canvas id="outpop_logo_rc" height="100" width="250"></canvas>
-            </div>
-          </div>
-          <div>
-            <!-- tabs start -->
-            <div class="tabArea top">
-              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
-                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
-                id="outpop_tab_3" class="tab middle">Download Logo</span>
-            </div>
-            <div class="tabMain top">
-              <!-- Submit to another program -->
-              <div id="outpop_pnl_1">
-                <h4 class="compact">Submit to program</h4>
-                <table id="programs" class="programs">
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
-                    <td><label for="submit_tomtom">Tomtom</label></td>
-                    <td><label for="submit_tomtom">Find similar motifs in
-                        published libraries or a library you supply.</label></td>
-                  </tr>
-                  <tr>
-                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
-                    <td><label for="submit_fimo">FIMO</label></td>
-                    <td><label for="submit_fimo">Find motif occurrences in
-                        sequence data.</label></td>
-                  </tr>
-                  <tr>
-                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
-                    <td><label for="submit_mast">MAST</label></td>
-                    <td><label for="submit_mast">Rank sequences by affinity to
-                        groups of motifs.</label></td>
-                  </tr>
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
-                    <td><label for="submit_gomo">GOMo</label></td>
-                    <td><label for="submit_gomo">Identify possible roles (Gene
-                        Ontology terms) for motifs.</label></td>
-                  </tr>
-                  <tr class="dna_only">
-                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
-                    <td><label for="submit_spamo">SpaMo</label></td>
-                    <td><label for="submit_spamo">Find other motifs that are
-                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
-                  </tr>
-                </table>
-              </div>
-              <!-- download text format  -->
-              <div id="outpop_pnl_2">
-                <div>
-                  <label for="text_format">Format:</label>
-                  <select id="text_format">
-                    <option value="0">Count Matrix</option>
-                    <option value="1">Probability Matrix</option>
-                    <option value="2">Minimal MEME</option>
-                  </select>
-                </div>
-                <textarea id="outpop_text" name="content"
-                  style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
-                  rows="8" readonly="readonly" wrap="off"></textarea>
-                <a id="outpop_text_dl" download="meme.txt" href=""></a>
-              </div>
-              <!-- download logo format -->
-              <div id="outpop_pnl_3">
-                <form id="logo_form" method="post" action="">
-                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
-                  <input type="hidden" name="program" value="DREME"/>
-                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
-                  <table>
-                    <tr>
-                      <td><label for="logo_format">Format:</label></td>
-                      <td>
-                        <select id="logo_format" name="png">
-                          <option value="1">PNG (for web)</option>
-                          <option value="0">EPS (for publication)</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_rc">Orientation:</label></td>
-                      <td>
-                        <select id="logo_rc" name="rc1">
-                          <option value="0">Normal</option>
-                          <option value="1" id="logo_rc_option">Reverse Complement</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
-                      <td>
-                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
-                        <select id="logo_ssc" name="ssc">
-                          <option value="0">Off</option>
-                          <option value="1">On</option>
-                        </select>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_width">Width:</label></td>
-                      <td>
-                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><label for="logo_height">Height:</label></td>
-                      <td>
-                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
-                      </td>
-                    </tr>
-                  </table>
-                </form>
-              </div>
-              <!-- Buttons -->
-              <div>
-                <div style="float:left;">
-                  <input type="button" id="outpop_do" value="Submit" />
-                </div>
-                <div style="float:right;">
-                  <input id="outpop_cancel" type="button" value="Cancel" />
-                </div>
-                <div style="clear:both;"></div>
-              </div>
-            </div>
-        </div>
-      </div>
-    </div>
-
-
-
-    <!-- Page starts here -->
-    <div id="top" class="pad1">
-      <div class="prog_logo big">
-        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAAAd0SU1FB9wLGwYBMoyhiwgAACAASURBVHja7Z13fFRV9sC/503JpIeaKFVREBQVEEFFQVcUuyDouuraFoVV17IrayPjDP4U3XXXhrpiXxuKKF1dV8WCiEgXRUAQlJIYAilMf+f3x3szmVSSkICyOR/eh8wr9717z7mn3XPOhRZogRbYLQiQJiJGy1D8D0LHjh1/XrZsmQK9gU3Ap0mE0QL7KTx411136Z///GdV1ZhpmvrYY4+pqsZUVceNG6dAz5Zh2j/hnpKSEtM0TVVVrfq/qmosFtMxY8Yo8CPQHejucDjyfm0dbZFp1WGaxmJ3ppSWSiQUIhQKIWJxehGhpKSE1LQ0uvfowQHZ2exYt65D8dq1qzUaXR2LxTYCP7UM4a8MVFWA9mY0+nLhmjV63LHH6vMvvKATJkzQfn366CtPPKEDjjtOV61apeeedZZqMKgaCKju2KFmYaFqJKJaWqqqqoACR/9a+u5sQT+IiD77zDPbKCnR00aOZPHSpcydO5fLf/972rdvTzgcZsEnnzDmqquYPmsW/PxzxbMOB4NPOokRZ5+tB3XrJsAUYKmqOkQkVuVVKUBGDRbGz/vSvPlfBHcVDpB7XP/+Gz9/5x1mzJ/P1i1buPbaa1m/fj1du3alW5curPvqqxobCoVCpKSkIO3a1Wc89bCuBy51OZwu1RgiBqGYGf1uw09/Bd5t4QDNT+wKfPXoxIl9jzm6gkt/OmsWn3/4oRIMyrfLlzPuzjvp27cvHTt2ZNGXX+K/7baaW8zJITM1lflz5wL8ZtWqVWm9evXaVcv7Q2cN6hM68tAuR2MIhirFpUEef+MdBFK1RQQ0v6g/MC9PLxk5Uq+/7joIBECSJmwwKKqKR4RTTjyR0885h2effZaNa9Ywa9YstKQkoQzGwSwuJhwIwK5ddO3a9b+9evWqjQPoSf16qUOQles2gYLL5WDaBwu5dtSw8L/eeKdFB2huaJWTo0NOOMF8wOs1qiG/QhfghtGj+dMNN4DblhJlZVBaWg35AIYI7NgBbjcbNmwwjz766I+WLl16OfCDfUs3YB3AAdke6d7tYNR2Jv6wuZA2rbIwxbFPxfD/jBn4t7vv5uUnnzRsTNelEEIoBKWl1qH1YM7hMAXffWcsWbBgMLAB+AgoAtYC5SJCp86dUTPG89M/ACASi1mDH4u2+AH2Bvzhpps+p3Xrmi+mp2Oa5h613y4nh1WLFuHxeHTq1KmDVbWVqjJjxozU4cOH88rsj1FXKteMOh3D4eQ/ny/hjnwfn32zyWUYxtAWK6D54YW1X355WbcePSr32elk1EUX8cYbb1gzvvG+BEzA2b49msQ1RARVZe7cuTzzjwl079qB6R8s4PhThjF58mQADjroIDZs2CAtBLAXFMEaTwaDe4R8ALKzEbcbVUVVE4hP/t/lctGnTx9+c8op3HvffQm9YubMmZx77rlic2Rzbw7I/5oreNzJgwapqqI7dqA7d1pHSUnyVG5Uw0MGD6agoCCB7IQ+kcQFIpEIkydPZszYsQmuoaqEw2H95JNPdOHChTHgervJT4DTWzhA08OjwGWT7r8/u3xXhckei8W47c47obwcMjMtsy9OEHUojdhI/M2oUXwwb16dIqKqJVFaWkJmZlal60OGDJk7b968M1SVsWPH8uSTTxYC7WmBvQIbV6xcGQK0aM0a3bRsmW5fu1b1559NLSzUakdBgXXYawC7A0CXLVtW7fzMmTOrnTNNU03T1OXLl5u1ia4WaA4lQbXVmDFjcoFcIHfJ0qUXqKqaBQXVCMC0kZ+MtNogEAjoli1bar0ef/bee++tiXDMFszsQ+jbt+/r1111leqOHZWJIBBQ7913azgc1qaAeABCVUKqQgBvAO8BL7RgZu9xhd6nnnpqNLpzp8559VXVkhL9ZOZM/X79+j1Bdm1sP2KaZix+rqioSBctWqSqejPw2KhRo+IPxjp06KC0rOg2p82AkE8O4zkbiAJ6ySWXVJLRjUW2qmqrVq30+eefr3RrFWYQf4+pqjpq1Khq7zYMY4/0g5agxppgPCnARcC1GPRFSUF5gAn0VNVz69vMkiVLWLNmDRdeeGGt93Tu3JmNGzfu1slkGAZbt24lNze30jWHw4Fpmo3GYwv7SIY7GYKD8UA/INteQFaKEL7iqBNPPPHYhjTXp08f+vTpU+O1rVu38sc//pE5c+ZgmiaGUbtLJu5HqMNdfYXT6VwdjUY/b+EAdXm9DMNlmmYrAA/I6SKe6ao/JM38v2Pw52oPrgV9Seu06RugTzT62ZogNzeXbdu2ISIYhpFmmmagxRNYC7Gbptlnw5Il29Z/9dW2H1ev3jpddQPwQ79+/f5k32NNsSpStdeSXonZ99JLL+0RAkWEG2+8samUU7Zt2xb3KKppmptbREAd43Vwly5fdDniCLS42DoRDILb3fnRiRPzLzzrrIdVlX9MeoKCw36GSMUIpaWlJVh0UVHRHiPt4YcfbhqKruxyFiDUIsfrhpWAfjprlpplZVZUb1UHTyBgRfnGD1Xt0KlTvR0++xIcDodecMEFCvxDVXv/79nrM2lnzuAanUWdnV8InzocDu104IGqO3aY+vPPWqOrt7BQdds2jcRijTLzmsg5VO93RCyCNa+88kotKCgosTnC6f8rIkD/PGcsQ044AYAZL9XOgkdfdlnxibEYuzZvjkpOjrN1q1Yc1Llz4p4Lzz+fcePH21qBidMwGDhwIA8++CAn2O1XZcWjR4/mmmuuoX///k2ruIjw9ttvc/755+9enjudAGIYBu3atctUVXr16vXOqlWrOovIpv169pszeX/yP/9Z+0xOPqLRymy+yvHp7Nl61tChetbQoTpt6tRaF2x+qSLh6quvTvw9adIkE3hrw4YNjv3WDNSZDEZ5/6Hl9zhvGjsWzKZbOykH0tu2Tdjie9H9XCmYpCHPjR49mqeffjqZi5iq+jQwVkTM/c4MVCUfcM564y6u+8ufmxRRV1xxxb6xWUUSR0Ofa2clqdgSzOTVV181otHoNTNnzjxjv9MBzBl0EeUUNeD9e2Dkfc/z53xPnUGeN4wezcFHHlmvwX1j1iwAJk6cuNf7tmLFit16CavCww8/jMPhSHZ+sWDBAi688EL97W9/O0tVPSIS2m9EgDmda8XgSRRFKvqjigooQh85h+Xx819BaxO2nQ/ODGAjrA5A9WyeTA4kg1y2UCnO75cOJ510Eh9//HGN10aOHKmLFi2a98MPP5y834gAEYaikIx8+7wAhpr8oabnpgMvA5/Av4C+1Y5bWMRoIJUXBg0apL8G5KsqH3/8cY0iUFWZOnWqnHfeeUNUtcPeJoBUwFPHkdoYbqQ+BBiitYVMWYs57iqnYskv0trEoGlzjXGMX7du3R3RaNMlcDz55JN1c7VGKrFVg1DjiE++duutt6phGAtV1dhbBHBW6+zM0iM6tSkccFTPwv6HH1o44KiehUd0ap34PahPr0Kga4MJ4CjOUWgjUgvxKIiDc8yZpMVPReEkrZ/uk2hz69atr7344ot2i3sOY8aMqRXJt99+e40yf9q0aU2iRHbs2FEGDhx4wPr1689sbiXwcDEck3My044ePWKo4dRwRjQUILPtgZRt34rDeTCxWJSs1rk8PmUOKSkeCYWCDSR5OiXQpLYggLCCS8TCv0CmmBWELtDNThPeKZBdzzdtuPrqqyU1NVXPPPNMsrKyqs26hkJtil12dnaN7HvEiBEN1kPatGnD9OnTOe+88yqdnzRpkoiIpzk5wMnZGWkrhxxz+HG3XHRqqsPplPKyMlxZ7dkVCODMaEtZeRlpOe3419S5dOt8ANFYrDHy/5i4wocgKH9Xg0MFvkiewVolqNKexu+p5TFIq+/7fve733Wcm5PzStzbJyK43e4mHbjbbrutmgyvmmdQX+jatSu1ia4tW7asbS4O0Mntcn5wxx9GaUlJiQQiiivFQKNhHAaEy8pwuj1kt8njqTfepXvXA+nToyvzvlzZCK2HYxGsf8oKPNxunE5U3+Kv6uBdBI8qHlEOB76sLiBQA04GfPV840/dIPDEV1/dd5lhXP0TLAmrzveIyKlnnXV3z549uSknp/Qf27dnDh06lGHDhu2RLG+M4ygOmzZt4swzz+SCCy6o8f7PPvtsS3MRwPI22Zn61LT3JRwoQw0noIg4UP0Wp8uNwzAQEbp3PZDB/Xqxs2xXwzs8B6dGcNvs3BST2+V0ogAynI/N6SwTYYCCC8FTnQEkwNEwqYNDwbgZCoAPROSBL6CLMXv2rctmz85eC5suX7Yss3fv5lmMi0QiqGo1ziMiZGdns2LFCjp37kynTp3w+/01EoqtDJY0FwEEI6FAzgF5OQw6vi/ZuZ2qsDTFYRj4n5pKSXmAwcc0cqBCHC0ODrFlf1TdLK6CqWUKA5IxvhwkDCfsoSY3AHhCLQKIZ+x4gNgy0KOgpP9RR5kh1QNVVZrafEx28lRF7M6dO+vFXbZt2zYzLiKbRQfof2QvBg/sh5HZlrJdAcp2BSgPBO0jRFnAUvaGDuhNWKVR+XhacQiwQkJsq9RRk9fFVgvjKCgHUTjY/j0TCNOApItnraacWAUgNgI9kr4n8Hu4HejxCVwhIufbkT9ah07RoD5PmTIFwzBqVCDrS2hjxozh0ksvzW1WP4DGPTGqlO/4GTEMMGMJRBticGiXA4hEYxAO1J17V7sCmJpkq70vw6shsrwWV6fadPGFQkSg+6dW9a7dQtuK7glgSAXxuA3IFbgnaQhmPvroo2kvvviiTJkyhfnz51ebsa+++mqD+nzRRRdVUxAbsu6hqvztb3/ToqKi9LfeessNuJqFAFJcTsx4UqXhsIY8o03i7x+3FfH1uk10ymvbKOTbLP4uxEaFWb3CVtw5ZP9f0yw37OttU6mkI9QK7SALONh+7geFTp9bhHBI8jsdkGkTQeDyyy+XRy6++MCJQ4aQ4jJwuxy4nQYOw2DqM4/w6KOPNsi/EJ/p4XCYYDCIiDBz5sz6IF9FhKysLFHVZ4YPH74DiDQLAfxnwTI8bhcA6QceCmrCrh1JyFGcDgebC7ZbMe+N0XohB0BNtkuUFdUNapYqrBTlWnawIPnRKm8z+sHO+rzTsPP3HfCdAcUKrRwWAcTZglj0WNmpNV+15OgLYMLYU/nsoYP4+w0D6NPzIFYu/YqbLDEhDZ3NW7duZf369agq55xzTr0IZ+TIkfTs2fMqEflns4qAXcEQD7000+pQeBehcMTqY0paJXZkGILDYbDw63UYTkcjGQGFMrJ6oUXjZEKEOEHOZbJcTsy+1wW018revtKvbGKqr3SzxYgA6tiNFxFg1nhy+x4coaA0g+8Lc1mxqSsOw8CMmYrAIYcc8pWIMGHCBD744IN4mjGzZ8+u9UM6d+5Mz5496yP7TWDh+PHj5c0337z5m2++eS75YnNYAUuBYcUlZRTtLKNtNjhTMyAWhkAJVCm57zAMPl60ktRUD4FG+Nu1jjUEYxQlVe51A22A4hDsTIEihdxwPXUAJ7QywWXP9gKgvQluhSyjMmEkOqmzOBqTawpLiKalf+WcumQkaZ7VRCMRwsEyycnKCq9bt+4e4G2v1wswbs2aNfcfcsghnH322XsU26CqFBQUGHl5eZMsCca/apSDTQxnAEsNw+Bfb7yDw+nAiIYs5ljDfguC4HQ5oQEeOX2LTsDRtgqwraHjIrDhBNgKfA+kOmFIPblNOhADchXuAGKm1auOSRbJarGqh6PT6YPJuTj4dvgDrPv7zJNp3+pHwsEQS77bqNlpLkrLylxVfBEP9OvXL7t169bFzzzzTKMJIO4YysvLU9216wWgNRDYGwQAdrFkj8dj6WmGUaupVx4MIohCDXK8ts45SMewuJdq40usaoUdbzRABDgU3hZrrwBxWs/GrdJLgamAQ+dyACnI1PlDNslZW5Z/tvxC98at82MSLg+nOwkhEvnHy+8QicYEeDP5JSUlJSXFxcVnXH311Yfcd999DepTfJFpxIgRiAgbFi+Oh8gJtWnCzQBvJ3ynBdvrObkaKPs18aDRAIRrfcVHLc9nWRYoOTbCU0LWgpJD4Zn+VoiBiIGDCA+tWt/5xElPnb/11uzhOfD6tNUb1sy654XZcx+c8v5MPPpM4Q0l5yb67k36tnyuwcsaYN2bb7652lbidzvjwUpIFZFvZ8yY8U9AFi1bJpgmpw4e7Hn8iSfa7y0C2BFXmMLRmGUFZOVZXKBKR9I8KbYzr/khDVphKYJxKGggAXSsgWhjapmBAfueoKTQ86ftbd4cNvZv342KPtj3b/4FC4C/AOfbxygC/BGYjJerKymY+dyNn6fwsR1g8eLFh4kFNdr+yev9IsLAgQMBnjFN8xawah8RCjH12Wfd2dnZf9pbBHCl9U1JXj61TfHUrEZX4tpTiMJRgEcrMPiuzbu7NcDqSDYHDCzF0p0w5WBtaSDd3fGKDwdc1/rO464bt+kZbmRrjY35yQMW4+VBNNH0kYnr3sS5/r17917bt29fzjzzzER0kmmaiAiHdu/OgL59WfzBB0QikUqv+L/HHoNWrcjOztY/33jjnap6dnNbAYmPq8S2DAcYTUdvWuGTq7PAnzmdozEpM4azNsmMe99G5nr791H1fGerJCL4RKCvEzpbcSd8Y99jOohFx7cfNf/JS9Yu5C4b+V5yUcZWoiA/d+NjCV4mIVxGPjvwVzJJ7yGfUvxMXLly5aH2uRduvfXW30+bNo1Vq1bN9Hg8Zxd8842069TJKoAdDlf65uVLl743b/bsUwcff7zx1xtvVBE5CpjV7ARAJbepQGlBHaK+gSqA4BZLoIeBGnOAzHcRCeJVAy9wElbd3jgU1TyhdwuH2Q+8HYMrndaagClgKBTbDao4gtnzTlr93YZ/sslm688AF+InM2l2tyKfAEIaPo7HyybCDALgrwzEzTx8pPR6rJesYlXyN1z+97///fKMjAyXx+OJANF2HTo4CNSaFX76I5Mn6+Djj+emcePkhWnTzli6ePH/NbcIALghMcBij7DhqHGkXbYTyOPxXFw/9sJVGveKhqkWSWK+TT8JsdJGfk1UmdKYDomle84Pw4VRCKj1uyPQmQo38I8pMe75eGqSVePnanxJyAfwUYyfVOAa+3enj679aMW9H99bFLwn+Ln6NWKapq66flWNxFlWVhZpqNiipIQ+3bufoKr/anYCcDqdyypZ+6oEgoGqwbuEI1Fuu/J8cjLTFOhUrw4ZpCS5X6uy/KEYzEfoJdVV/Y72gMQX0x0NHIc0gc3HQ2SQlXi5zrAcLO74esMxML8//LsBQ/U1+TyOFx3yxJCH7njjjpM9Lo+ISIZhGPVhjY7vvv66Tg722cKF4HKBKrfecIOKyEnNTgAulyvJTWmha9eW7xEUl9NRKcwpHImi2mCTrDboIVW2hEl65veSNCkUFoiFyH71fGc/S5dMNBKxiSgSg28bOVSfIUxC+fCREY+s59GKHIZ6Qu+1dRealq0FBectWLBAAXr26SM9DjnksCVLlvTdGzoAYhgEy3bgycgmvU0eGijhgHatq/mw60fsu9ccpGK5tyZiidp/L7bPXwakaP11ALcJHye1G8WS/+4YBBs1QD4U+Bo45U/+PzXK9e5yuSq6XD3aWIEZp40cKSUbNyrl5fLa5Mn06dMnrVk5gL0Vm+XtKy4EEVLSMkGEDZsLKsKi7aybmy85m2CwYWOoDSeUDvbfZQthmgF3S8NCvdVIcqfO5oznT2POfxww5Xj4jn0Dg6KRSJyd0uGgg2q8qbSs7IzNP/0ksViMjPR0Jk+e3LwcQERmqypqmrTueDCoJpb+K0W0CIgKu4JNU91E6yYE077+qgGt1FoXkPrQ0nJwhaBrhUqxsN/duLIBTz+YyL6DBWaSuR0Oh2vMZDZEPuzQu3eJqmYempe3CXikua2ADBGxAkOo0AUioSrmSkome6sWssI2+0vi9nz8w7IWWG7eWmGXpVekAz/Cyr5geCD2M5hL+IWAmiaFRUU1LiCZqiERWSYiAaDL3jADUVW6dcy1RlmsSOBoMgGoWg6iRkYFST3PKbDQ0tYHUF0/UIEsl4XcOtcRBCKTuMYNWg6aB/IK9Iv9UghARKo5gqrg46SsrKz2e8MVXAnHoJDexqbS5HAMgWBZk7J7Tfo/mfdErb46arLt6/MuAzmojPSVU7i4OwT7gsyDfr+oqlyqWrHbWS1QUlJSvldcwTWlMZmmSVp2a3YW7UiSylEUSE9NaeIPoFwAFdJFCRh7mAp/LLo5j9e+DZAxEPgDHFP6S0G8y+UCtxsxDFrl5OAwjB9i9UwwbRYCSE1NTVFV0jzuauxZq85XO7Pz+Rkf4XanEA7Xf1JJ7d66dUQZpk7mohyCtQCkdbUT3s1YCItag7YB9wg4KvhLmvnDkmoR2/L/jfo+21wi4OGYaeqNvzuLmGnaYeL2QDprZlE/7yhtsC9Aa+7RQkyOM0awNp4cqyYxo3osQPJvtxN+U/fbytdD/zN/aciPm9zxgwZyuuYiAAUkGAoTLN2BiAFlRVbwlMOdUFhcTme1Ldb2WBE6h4XG+RRW0gOcGAYcYfdXbeSLwncmPG/fuxsZNHj3PNXLoc2K6b9wYigSupwbGNug527nZrxMx8uBe4sAKsynnUVWSFgSbYgITofBh4u+xu1qvBTanQEvlf9ok6R6isKiGBzeiJjCuuD4ZhvIfN7DyTtRjT6vj+gk7iJGvrUEXQdBtsPL53qvrsbHefjYvNcJoE3nQzFj8awgC11tsjO57OzB/PDTNis82jSJRmON4TMOcXNCXaZbTQShMMMJJw5M8utT+e+KJmJEGvBF/ya/0rJz04Gf05hIevq49C4dHuwgOkEnTr94+pXG3UYxXsprQH4PrEDQITEz1mGvKoGVNP9YLCGI4/hwuxw899qHiQCRcCRK6a5Ag6phYWn4DkyOISnAIXFtFjlqkpcsEW1q+MgDI3tXlIOOV1o+A3im0uRQbuGeKtE8Xt6ASkEoG/BhpeH6MPEyGS95+GqJAtpTeIiNm9kssk3ye3ftfT3wb5SX8PIZJrOZwL3cxFCUTvh5FqB/Xv8ruZNcHDyBn6K9SgAJuW6HhyngcDj3SN5rZQO+ZtYRpZc4yNDqzy5OQj6KpS9QOd4PDCbhY2MVNjwNHyOqEMQBeNmAcjF+PsdysZ6FFR3cfJDKSyu2rTDwsxYvxUC7Nultvp7749z/e+ubt7hv6H3xYNO3T+t2WtclY5fcszeVwKpmScULDQc7Nm+o17NL4IAaiUoxRHfLHQ6KZ2mQTlShVy3WY827bFRFvsWGR9Rw3xZ8dMXP53h5Dx8BlEnNrvr7+R5hjv0NrVCuL7qtqMexHY+VNFcaqvoR+UTxcf7EoRPz97YVUAnh5TsqZ25Z6wG1Y3ARdPsSvozC+Fq8iy8ma/k1EolB3wSq04hRS9yfNOVChDKKfD7GT64d5CE1yOamLBjQm3y+sAniIfJR8vnD+Nnjh8pd0gc/zqlfTxXqSH5tdgIQh5NYknPHNGO07nCQlRHkMFizcUul+7+EEQrLgWMEMudXDuOOY62Iiiz002tBRq5URnQ8O2JHLZ/q+XRPRaKfnfg5iXyOAYIog2v4rqvx8h7eSvpG48BHCD8D8NolboQr8PM0afyH/yP7uSXP6cjDR6qIPLbPCKDs581ktM2rpIkbTjfZGWm4nE4Wrfo+ce30aPQ0gdelIk1suLPCfKvNDGxXTfGciaHKwBruj5kwt5bmfmoSVuAlHcGNn1uQJI+cl1S8BPDzND5Ow5fIB2gKOAkvgo8X8LIVH4KXdVf2uVLI54p94QhKhP6nt26PiGHrAla9gFgsyvUXDSMQDNOv18EJVt5F9US1F2xs5LqB3+7GE5ii06tk95aSJkJ2LSKiqkNnrcIcAy48sWZTsKGzshyYZn/gNXjJJp8XUVrjs4paNDn4OBl4CC9ulP72uW54KUCYXdejzWYFHNyhPSJimYGGEzSGQ6Ns27KJtq1y2BUKgcbo0eVAAqEwrbMyMIp3uqtYbS7g8M/BcVwVbV8FEUUx6KIx+gIfJC5mcCbQVuIpRy5q3WHTgMIoXNKPKra0lwwUL5L0XqsYXVHco4iSDfyIn8cT8t0K8boLL0OB2cBDwN0Im5uV1fqI70S1KencbncdbzYC2Fq0w1oRVAVPBlq+nSlzP+LIzq1p1+aYRKZQLFEfUCv7kSvs80tdcC8VSRyIEFOTXRikq5WVcYr5Jh8aF6Dm2xgoN2Hlo/5HlFOD82kLdsx9FehnvW5HFXOvLVao9yuAQRTFQRQoRVmAUGqXoC0CnHgZh9IJpTtesvDxNF6eQ/Hhr+Id9HIYVuyBAEvwsU/jCZptLSAQClcIanEQDEdZvbmYEjMlYRq63W6m/OdzAqEwRTvLksmgIMlec8bssiwJ2Mk6YGVivV8ZKS477l7JQ+hjhyGEENAwTir0it33WSgGvkH4FlhVMr4kHViG8D1CayAHP53x0wc/vfHRFZgBPAisw0suEKiG/HwUK5l0FfD1HiE/n3FNgahm4QDJAaEgEA3iSXFxxx9GgghqmoghqEKq221XXDLi4rnIztm7LE4ADhgO/DfR4qWY5vREHJGqcChwhU5nKvCICh5bh1ibrAQohBywsR7sNEZS8GeWL+sTVT1fRKYnIWAW8Cx+W977GW4j/jzgRdTOcfAyFzgN2IKvCU1AaRrcNRcHGNOtY57l7bM9gPEUIVEzyTsIwXAET4qb1tnpcc3RNGGjWCHcaiPy5K9qswbssvCi/E2Fb9XgAtFEINKcKq7gsEKjQpAqId9C+NkIHrxMJZ8rbcLZBrwOvIcQxcst+DgDHw58VTyNzQVeO9MI4E+cz1+rW0PNzgFEhB8LiiqigtQEhxuJhSElA8JWZdBIOMzFw04gEAqT17YV5s/FCEwOw/1uuFEgw9L36Bi1qm58DqBvISqsUOhvl4lVxMrSTSDf0hVMtf6PU44a0wAADOxJREFUn3I2qcD18YqtJ1js3Y/gs7dq86JNMuO9OFBS8e+GcL38AZiAz/ae3sIgfVD/DVwo98veNwMPaJNTMdMjAUhrXaurWFUZecoATNMkBl96rLy7Fyo8v2Q54KoEgQ1HxeRf8ZTqeLl4iXMEQTD5UiN8KyDFy+gOuAVGD6SGlbOmYcmLbUSk2cUeXE3UsgehG16OrOJFrIrVc/FxAF4EL7dKpqwTkUzJl6v3jR+g0lqAQLicJKldjWNErcgh0wFb+kFU4Lvk5VyF3E+pZEerUPtSrQg7RXAA6wrnkgrc1h9ea0YzrJ9tBu6yZ36sidotx8cylP/aJibkEyJ5BTSfyfiIb2t/JcpoRXfh5SGEW+pyPze7J9CMRSzEh8vt11X+lnhmcHFJGbtgmwkLbYTPxpbX9hMnpVvr2xb2f2IpymqtzUOovI6DHRRzZHgbT/SHvze7/PUlqZy+Jk528NMOr+3UEYL4WJbk2ppuE8Ig4EH8dMfaMfRW/Gys61uanQBKCjYj8WqhalZUDgXEcLD42/VEojEem/IuLpcz8aUGbLft7PipzCgk0seN64iqEJUaOI/d/Eo5n1K5nED/2v3/vzaovnI5nmKdoGWMYxTwHj5a4eVRfLyOb/fBLM1OAK7UNKLhoB2IZev0CfvOwdpNW4nFYjgEypTCATbCTYvdB5NYhgGc+kVyAoda8Xw1sIAdmKxkfwMf99j6Raatb/TAYCxw76Aeg/6CnzTyeRz4x742AxOQ2ToPrSNGPVEvwDA40TTzAeZDZwP+A/TQCnkPMESS6wka/KhKTLWyG1FMJhvDKWV/BCUdtXZCE6QNPl57/MvHp8/fNH+aPaAd8FV4TfeZK7hCyzdxuOrOVkn1uGmdlU7fguDOhTBArLp58Uze5AQfF3AmtoUg5bxDGisQjrb3CUSEsLIXAjL2FfjZBTyLl+s0omNV9XC5XT5iIifjJYqvYTjdK9vGWYtCUWKRcC1EAqaVMpYr8K5ABxvzPyu8lMQFDIE+iXZ/S7kq/1TTrk5v7Rs03TiXH9jfQXno5d++/FdLg+YW8nkJu0DnL44A4gpf8eYNSKisxpKx9se8FN/JS+FHE07TuPPHeqrs2zwrGijJ3HsT4d9qEkL5gihj+F8AofCSIy+ZLSJiHGCkImTga7jes3cIQBwI0LZL90T5uNQUN0n1+uJOI6ddSvI7gcEDYEnMEgfrDNh16ZVMuOyaymvqci7l4uCPAscS5UQZYVXr+kWCFw/5XNpErT2Bl3mQKA/bqHLre4cAnCnWHLZdww7D4PE33sPpMDBVCYYjyRtHLVc49RirkDMu+DkTplx/Mb5VnVmFn8+q0ddZlMl5LDdGNCiGf19o8UHgVbw82ARtTQBOAejVvtdCfAxvHAHk4yOfmXjrXTO/8X7BlIxEQfUtQ4sItg9y5KGdMU0zTsWLIzDk2KSghmPAPOxe5n9+KFvxVY///xUqcTEaUBl9N0QQA/j6uq+vNk1zTuMkSYU78SWEQpQZ+PlwT74rNTVVO7RvzUWnHR93BliewMxcKN2G4XDwwLzpDOvQhz7du7Jm4xZ6z/n46xNUj64WljWeS1Bi3NOMbtx9AfHFoyYA0zQLDcNot2ciwM+l+LgZYSNeFC+X4G1qEWFxggm5r+PY6CAtxY0gvDx7Hk+53RdUQ76X36HsqIz8+Zn7iTkn5DeByPJiNhb5NesAPtbZixkLgbHkN5VHTatSLa/O+RhPiguny8VmkUiVGTKSGC7uSQ5qXDQK3K79hgsIfcnn/AZwjYer/P4C355NUqfdkA+pISJWWY6fI8hnIjALP5820htklYhRZYO7gKtWnMorfMp5pwwkGI4kfAVJbP8iYDJBKuLJ+eIWYCZEOmCtE/z6wccK8rmMpP0V6pjpU/BxUdLvl/FZNY/2nAD8NdfUxcsg8ilE6IFyCV5W4KvfDluVIFwOqZmwcyuSYmA4LKI9uEP76hWtLLb/AlBi+Ym/NICnQB8FvRKMf+5nFv3h9UD+DnxJSnp+EwWb7NYM9PEpftqhBBC6AB3twMbdTPgqhWAMB5QUgOEg3eXh6TffQ0Qo2F6FlsZzMcrLdrybsOVQB+gLIK+CXAuOt2BA4X6Ffj9nkV9rsgp4ObkS8r1kIPRtqtcb9fzIAPA8ynm28vJinaJNhEAwnCAGQwwrLkuVVzM/AXFgqtIxtyLML3RuaBjCYwl1IepciCttEX89+Wt6z/kdyELo+2UT59b9UnSBTnWoTq/ZiBe8DEK5CB9L9i4BWNxgJX7uxctHwH/JR/FyYhJbOiX+ZyQa5dQB1qbQhsNBSeFPliQIlFVgT8HjdlG0s8yOCMZEWWR/1TpWn5rJc08fyf0fLGHFsC/gmOftJw8mn6f2G+RbBH2pHcxRVel7Fz/xfX4PQTkFfxPkFO6RJ9DHEPy8gHAqMA8vx9lX1sRr0LicTuZ9ZW1yoKaJM8WDqsmM7C+4qei8Srs0/LClEIfDIGVGynsIp+HmFe5eOJVpvkugJAbGRXDsU/ZglaL0wZ8U+frrVwQVH0uRiiLUSVCSxAmm4cff1K937sGH/9f2JBaTz834eZ58lgNHqipOO9RLVUnNbGU5AtOzeOfdJXhS3PHVPwxDCF4TRLbLQGLi5a4VCrumoOEfIethkDH2bFhUbdOFX+aMdgC/QdmF8AJWfkFOPcLCT8FLb3yVts9bYre5EpLkfjwFLZ9DgG74G7913p7HA/hpRT7r8PIwPrLx8qg8IDbRWmG7ajggFkVRHA4rUbRjbmvmZixma7diPE95UId+ESyb1xVCr8Gx38PCiRC8CU6M4OXf+DjmVzKjY8B7NpK6JbHzOVh7FK/Cz4QanvwUrVjqTngKrXE9osq9t5DPQIQVifI0+4wALCLoRj4R8jkaMEzsDaPsAD1JyYRdxYm9/qKeGMHLggzddjzlgRCPx94lFnr8jyAvQb/vYeEEcE7Ce2w7YAE+OjdgBrpQ2iEU1icmrllZe+UxOrMScoUsfElRSz6ieHkT7L4KP9Rg++cA3yRi/5tEBHiTskkra58K5FCRVJFVp+3px0U+EZQRsQGxQ9Z/UnCa3RErGFSE7Fg6ZZlBUtJcXLJtCAK0ykq3zcZYAI5dAgvvwBF7lbuOPQblM6TyTty78ZTFgHeAMfALthYsS6ojXlYB1wMz8KGChBQFL2vw0ZX8JP+Ml09QzsHfdMiPc4D7azFNFDgQiODjbnuAb0bwxNGKcritqMzBzyybCFbHesZSnfMrPLYhwrgEWpmZzB+0mq7rc3FJ5eVrd9qNzwWdb9/K1cMGk7F9O7ABfz02dsznLWA7wiZ8jVsT30dE8CPQCS9DUd4ARuoOvfH292/X+96574JEZpFVfHKUbYI3eXSz7IadrrQR3BqlE0IaVkxeCJ+dj5/PowijgFyUE4AhrlmuAZGzI+fesXkkgrI6awcHl+XwwAFvcvyMXmwpLOZ3ZwyC9Na4gsXc88xbRA+68TPOes4gs+hKrMIQB9jf9yjCw/iS4vy8ZAPHAq/gox2/ZogrdF6+xcdhtnjItJXHTsBIfM2X0+DcjRw7ogbNcztwpR2eHEM5AR834KUz8APCBZEhkb84J7pY/4dtFLp2MiDSn+ScTDNeNNL2GEZvimA8mPeymVW0EFiDErMVIAOftRN3Jflp+c4v+NUjP1lX8HEYXhaggM8eLC/rsfYoajYCkEZSbW+U9ggG8B5KCTADP5fhZYkUSh5l5LXrlMXBgVx+Ez0JgqXMT/+G0vcCDO53OKkeD2ZaNs+lvc62B0rR0bHbtJ1+AzjxMy1pZjyFtd9uJjAK+BTffpPoUZNIU1tHUGAw/hr9A/vYD1DZVhW8HIdyDfkoyunaVt+lLRRHykihE0TDoCZhiWCq0io7g03fLufLo8ro9+khvNd9GeHW0ZsQXsbHX2wl9HK7ysZMhEvw8R/2d7C8gr9JKIp7xQvd9J24C2UGWLlrKeoiKjFu2zycmGny3oIVnH1aX/xZr3PnllGoKve2mUrqI6ndAuMCG7Ayf0pQyvGTQQs0KzRHUOgw/CyPk9ag8p5cuv0UAhKh+KfvibYx+XDV19y5ZRTRcIiH8mbieMZJcHRwNMpbKCUoHVqQ/2slAB+D8CKe+z0XuF9wU2IGOCCYzbK0DSw8ooRdrYJsWlWEAu+3W4G37CLMo00Q0hA+x4/gb+aKWi3QrBwAfKiIFOKEHms74ED4MHsF3QMHkvdjNtt3lmkwFObbnVujTy59d6drvnOjpmm0Vp9EC/zKCMAGx2ZHzAyHYmXbC2JXLTgilrOmNHZc58xYaSDMP16cPsN4zXHk+sHbMsO7wl1wM67Jc+pboJmsgPrBAlXNKy8uIJN0XA7LMxiOmfGNnQpLS8tIeO/2cb28FmiBFmiBFmiBFmiBFmiBFmiBFmiB/wH4f+jryq6sRdUDAAAAAElFTkSuQmCC" alt="DREME Logo"/>
-        <h1>DREME</h1>
-        <h2>Discriminative Regular Expression Motif Elicitation</h2>
-      </div>
-      <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>
-      <p>
-        If you use DREME in your research please cite the following paper:<br />
-        <span class="citation">
-          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
-          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
-        </span>
-      </p>
-    </div>
-    <!-- navigation -->
-    <div class="pad2">
-      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
-      &nbsp;&nbsp;|&nbsp;&nbsp;
-      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
-      &nbsp;&nbsp;|&nbsp;&nbsp;
-      <a class="jump" href="#info_sec">Program information</a>
-    </div>
-    <!-- alert the user when their browser is not up to the task -->
-    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
-    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
-    <script>
-      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
-    </script>
-    <!-- description -->
-    <div id="description_section" style="display:none">
-      <div id="description" class="header">
-        <h2>Description</h2>
-      </div>
-      <div id="description_text" class="box">
-      </div>
-    </div>
-    <script>
-      if (data.description) {
-        $("description_text").innerHTML = "";
-        $("description_text").appendChild(make_description(data.description));
-        $("description_section").style.display = "block";
-      }
-    </script>
-    <!-- motifs -->
-    <div id="motifs_sec" class="header">
-      <h2>Discovered Motifs</h2>
-      <span><a href="#inputs_sec">Next</a>&nbsp;<a href="#">Top</a></span>
-    </div>
-    <div id="motifs" class="box">
-      <p>No motifs were discovered!</p>
-    </div>
-    <script>make_motifs();</script>
-    <!-- inputs and settings -->
-    <div id="inputs_sec" class="header">
-      <h2>Inputs &amp; Settings</h2>
-      <span><a href="#motifs_sec">Previous</a>&nbsp;<a href="#info_sec">Next</a>&nbsp;<a href="#">Top</a></span>
-    </div>
-    <div class="box">
-      <h4>Sequences</h4>
-      <table id="seq_info" class="inputs">
-        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
-          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
-          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
-        </tr>
-        <tr>
-          <td id="ins_seq_source"></td>
-          <td id="ins_seq_alphabet"></td>
-          <td id="ins_seq_count"></td>
-        </tr>
-      </table>
-      <script>
-      {
-        var db = data.sequence_db;
-        $("ins_seq_source").innerHTML = db.file;
-        $("ins_seq_alphabet").innerHTML = dreme_alphabet.get_alphabet_name();
-        $("ins_seq_count").innerHTML = db.count;
-      }
-      </script>
-      <h4>Control Sequences</h4>
-      <table id="seq_info" class="inputs">
-        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
-          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
-        </tr>
-        <tr>
-          <td id="ins_cseq_source"></td>
-          <td id="ins_cseq_count"></td>
-        </tr>
-      </table>
-      <script>
-      {
-        var db = data.control_db;
-        if (db.from == "shuffled") {
-          $("ins_cseq_source").innerHTML = "Shuffled Sequences";
-        } else {
-          $("ins_cseq_source").innerHTML = db.file;
-        }
-        $("ins_cseq_count").innerHTML = db.count;
-      }
-      </script>
-      <h4>Background</h4>
-      <span id="alpha_bg"></span>
-      <script>
-      {
-        $("alpha_bg").appendChild(make_alpha_bg(dreme_alphabet, data.control_db.freqs));
-      }
-      </script>
-      <h4>Other Settings</h4>
-      <table id="tbl_settings" class="inputs hide_advanced">
-        <tr>
-          <th>Strand Handling</th>
-          <td id="opt_strand">
-            <span class="strand_none">This alphabet only has one strand</span>
-            <span class="strand_given">Only the given strand is processed</span>
-            <span class="strand_both">Both the given and reverse complement strands are processed</span>
-          </td>
-        </tr>
-        <tr><th># REs to Generalize</th><td id="opt_ngen"></td></tr>
-        <tr><th>Shuffle Seed</th><td id="opt_seed"></td></tr>
-        <tr><th>E-value Threshold</th><td id="opt_stop_evalue"></td></tr>
-        <tr><th>Max Motif Count</th><td id="opt_stop_count"></td></tr>
-        <tr><th>Max Run Time</th><td id="opt_stop_time"></td></tr>
-      </table>
-      <script>
-      {
-        $("opt_strand").className = (dreme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
-        $("opt_ngen").innerHTML = data.options.ngen;
-        $("opt_seed").innerHTML = data.options.seed;
-        $("opt_stop_evalue").innerHTML = data.options.stop.evalue;
-        $("opt_stop_count").innerHTML = (typeof data.options.stop.count == "number" ? data.options.stop.count : "No maximum motif count.");
-        $("opt_stop_time").innerHTML = (typeof data.options.stop.time == "number" ? data.options.stop.time + " seconds." : "No maximum running time.");
-      }
-      </script>
-    </div>
-    <!-- list information on this program -->
-    <div id="info_sec" class="bar" style="position:relative">
-      <div style="position: absolute; right: 0;"><a href="#inputs_sec">Previous</a> <a href="#">Top</a></div>
-      <div class="subsection">
-        <h5 id="version">DREME version</h5>
-        <span id="ins_version"></span> 
-        (Release date: <span id="ins_release"></span>)<br>
-      </div>
-      <script>
-        $("ins_version").innerHTML = data["version"];
-        $("ins_release").innerHTML = data["release"];
-      </script>
-      <div class="subsection">
-        <h5 id="reference">Reference</h5>
-        <span class="citation">
-          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
-          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
-        </span>
-      </div>
-      <div class="subsection">
-        <h5 id="command">Command line</h5>
-        <textarea id="cmd" rows="3" style="width:100%;" readonly="readonly">
-        </textarea>
-        <script>$("cmd").value = data["cmd"].join(" ");</script>
-      </div>
-    </div>
-    
-  </body>
-</html>
--- a/test-data/dreme2.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-# DREME 4.12.0
-#     command: dreme -oc dreme_out_adv -rna -norc -p dreme_test_sites.fa -e 0.00001 -mink 4 -maxk 10
-#   positives: 1000 from dreme_test_sites.fa (Thu Apr 19 19:09:45 CEST 2018)
-#   negatives: 1000 from shuffled positives
-#        host: ThinkPad-T450s
-#        when: Tue Apr 24 18:44:36 CEST 2018
-
-MEME version 4.12.0
-
-ALPHABET "RNA" RNA-LIKE
-A "Adenine" CC0000
-C "Cytosine" 0000CC
-G "Guanine" FFB300
-U "Uracil" 008000
-N "Any base" = ACGU
-X = ACGU
-. = ACGU
-V "Not U" = ACG
-H "Not G" = ACU
-D "Not C" = AGU
-B "Not A" = CGU
-M "Amino" = AC
-R "Purine" = AG
-W "Weak" = AU
-S "Strong" = CG
-Y "Pyrimidine" = CU
-K "Keto" = GU
-T = U
-END ALPHABET
-
-Background letter frequencies (from dataset):
-A 0.221 C 0.245 G 0.221 U 0.312
-
-
-MOTIF UUYUCY DREME-1
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST      UUYUCY        387        210   2.6e-018   3.3e-013
-#           UUUUCC        147         75   1.8e-007   2.2e-002
-#           UUUUCU        155         94   2.2e-005   2.8e+000
-#           UUCUCU         94         51   1.3e-004   1.7e+001
-#           UUCUCC         75         42   1.1e-003   1.4e+002
-
-letter-probability matrix: alength= 4 w= 6 nsites= 459 E= 3.3e-013
-0.000000 0.000000 0.000000 1.000000
-0.000000 0.000000 0.000000 1.000000
-0.000000 0.294118 0.000000 0.705882
-0.000000 0.000000 0.000000 1.000000
-0.000000 1.000000 0.000000 0.000000
-0.000000 0.474946 0.000000 0.525054
-
-
-MOTIF YAGG DREME-2
-
-#             Word        Pos        Neg    P-value    E-value
-# BEST        YAGG        600        416   1.1e-016   1.4e-011
-#             CAGG        441        304   1.5e-010   1.8e-005
-#             UAGG        232        165   1.1e-004   1.3e+001
-
-letter-probability matrix: alength= 4 w= 4 nsites= 793 E= 1.4e-011
-0.000000 0.692308 0.000000 0.307692
-1.000000 0.000000 0.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-0.000000 0.000000 1.000000 0.000000
-
-
-# Stopping reason: E-value threshold exceeded
-#    Running time: 18.17 seconds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_fimo_input_1.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,99 @@
+<dreme version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  <model>
+    <command_line>dreme -oc dreme_out -norc -p input.fa</command_line>
+    <positives name="input" count="1000" file="input.fa" last_mod_date="Wed May 02 16:37:00 CEST 2018" />
+    <negatives name="shuffled positive sequences" count="1000" from="shuffled"/>
+    <alphabet name="DNA" like="dna">
+      <letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+      <letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+      <letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+      <letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+      <letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+      <letter id="V" symbol="V" equals="ACG" name="Not T"/>
+      <letter id="H" symbol="H" equals="ACT" name="Not G"/>
+      <letter id="D" symbol="D" equals="AGT" name="Not C"/>
+      <letter id="B" symbol="B" equals="CGT" name="Not A"/>
+      <letter id="M" symbol="M" equals="AC" name="Amino"/>
+      <letter id="R" symbol="R" equals="AG" name="Purine"/>
+      <letter id="W" symbol="W" equals="AT" name="Weak"/>
+      <letter id="S" symbol="S" equals="CG" name="Strong"/>
+      <letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+      <letter id="K" symbol="K" equals="GT" name="Keto"/>
+    </alphabet>
+    <strands>given</strands>
+    <background A="0.294" C="0.209" G="0.164" T="0.333" from="dataset"/>
+    <stop evalue="0.05"/>
+    <ngen>100</ngen>
+    <add_pv_thresh>0.01</add_pv_thresh>
+    <seed>1</seed>
+    <host>ThinkPad-T450s</host>
+    <when>Wed May 02 16:45:34 CEST 2018</when>
+  </model>
+  <motifs>
+    <motif id="m01" alt="DREME-1" seq="ACTAAYH" length="7" nsites="405" p="371" n="75" pvalue="9.7e-061" evalue="4.9e-056" unerased_evalue="4.9e-056">
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.600000" G="0.000000" T="0.400000"/>
+      <pos A="0.471605" C="0.244444" G="0.000000" T="0.283951"/>
+      <match seq="ACTAACA" p="108" n="10" pvalue="2.6e-023" evalue="1.3e-018"/>
+      <match seq="ACTAACC" p="62" n="7" pvalue="9.5e-013" evalue="4.8e-008"/>
+      <match seq="ACTAATA" p="77" n="18" pvalue="1.5e-010" evalue="7.4e-006"/>
+      <match seq="ACTAACT" p="62" n="16" pvalue="4.4e-008" evalue="2.2e-003"/>
+      <match seq="ACTAATC" p="35" n="8" pvalue="1.7e-005" evalue="8.8e-001"/>
+      <match seq="ACTAATT" p="48" n="20" pvalue="3.7e-004" evalue="1.9e+001"/>
+    </motif>
+    <motif id="m02" alt="DREME-2" seq="YTAACA" length="6" nsites="197" p="170" n="59" pvalue="1.8e-015" evalue="9.0e-011" unerased_evalue="6.8e-031">
+      <pos A="0.000000" C="0.365482" G="0.000000" T="0.634518"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <match seq="TTAACA" p="118" n="38" pvalue="8.6e-012" evalue="4.3e-007"/>
+      <match seq="CTAACA" p="63" n="21" pvalue="1.6e-006" evalue="7.8e-002"/>
+    </motif>
+    <motif id="m03" alt="DREME-3" seq="TCTGT" length="5" nsites="220" p="208" n="101" pvalue="1.9e-011" evalue="9.2e-007" unerased_evalue="4.4e-007">
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <match seq="TCTGT" p="208" n="101" pvalue="1.9e-011" evalue="9.2e-007"/>
+    </motif>
+    <motif id="m04" alt="DREME-4" seq="SCCAGG" length="6" nsites="58" p="58" n="14" pvalue="5.0e-008" evalue="2.4e-003" unerased_evalue="1.5e-003">
+      <pos A="0.000000" C="0.620690" G="0.379310" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <match seq="CCCAGG" p="36" n="9" pvalue="2.7e-005" evalue="1.3e+000"/>
+      <match seq="GCCAGG" p="22" n="5" pvalue="7.1e-004" evalue="3.4e+001"/>
+    </motif>
+    <motif id="m05" alt="DREME-5" seq="CCAGCAY" length="7" nsites="27" p="27" n="1" pvalue="9.2e-008" evalue="4.4e-003" unerased_evalue="2.3e-003">
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.518519" G="0.000000" T="0.481481"/>
+      <match seq="CCAGCAC" p="14" n="0" pvalue="5.8e-005" evalue="2.8e+000"/>
+      <match seq="CCAGCAT" p="13" n="1" pvalue="8.9e-004" evalue="4.3e+001"/>
+    </motif>
+    <motif id="m06" alt="DREME-6" seq="GMATGT" length="6" nsites="60" p="59" n="18" pvalue="9.9e-007" evalue="4.8e-002" unerased_evalue="4.8e-002">
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <pos A="0.533333" C="0.466667" G="0.000000" T="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" T="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" T="1.000000"/>
+      <match seq="GCATGT" p="28" n="8" pvalue="5.4e-004" evalue="2.6e+001"/>
+      <match seq="GAATGT" p="32" n="11" pvalue="8.6e-004" evalue="4.1e+001"/>
+    </motif>
+  </motifs>
+  <run_time cpu="30.86" real="30.97" stop="evalue"/>
+</dreme>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test1.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,6198 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>DREME</title>
+    <script>
+      // @JSON_VAR data
+      var data = {
+        "program": "dreme",
+        "version": "4.12.0",
+        "release": "Tue Jun 27 16:22:50 2017 -0700",
+        "cmd": [
+          "dreme", "-o", "./dreme_test1_out", "-p", "dreme_test_sites.fa",
+          "-norc", "-rna", "-s", "1"
+        ],
+        "options": {
+          "revcomp": false,
+          "ngen": 100,
+          "add_pv_thresh": 0.01,
+          "seed": 1,
+          "stop": {
+            "evalue": "0.05"
+          }
+        },
+        "alphabet": {
+          "name": "RNA",
+          "like": "rna",
+          "ncore": 4,
+          "symbols": [
+            {
+              "symbol": "A",
+              "name": "Adenine",
+              "colour": "CC0000"
+            }, {
+              "symbol": "C",
+              "name": "Cytosine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "G",
+              "name": "Guanine",
+              "colour": "FFB300"
+            }, {
+              "symbol": "U",
+              "aliases": "T",
+              "name": "Uracil",
+              "colour": "008000"
+            }, {
+              "symbol": "N",
+              "aliases": "X.",
+              "name": "Any base",
+              "equals": "ACGU"
+            }, {
+              "symbol": "V",
+              "name": "Not U",
+              "equals": "ACG"
+            }, {
+              "symbol": "H",
+              "name": "Not G",
+              "equals": "ACU"
+            }, {
+              "symbol": "D",
+              "name": "Not C",
+              "equals": "AGU"
+            }, {
+              "symbol": "B",
+              "name": "Not A",
+              "equals": "CGU"
+            }, {
+              "symbol": "M",
+              "name": "Amino",
+              "equals": "AC"
+            }, {
+              "symbol": "R",
+              "name": "Purine",
+              "equals": "AG"
+            }, {
+              "symbol": "W",
+              "name": "Weak",
+              "equals": "AU"
+            }, {
+              "symbol": "S",
+              "name": "Strong",
+              "equals": "CG"
+            }, {
+              "symbol": "Y",
+              "name": "Pyrimidine",
+              "equals": "CU"
+            }, {
+              "symbol": "K",
+              "name": "Keto",
+              "equals": "GU"
+            }
+          ]
+        },
+        "background": {
+          "freqs": [0.221, 0.245, 0.221, 0.312]
+        },
+        "sequence_db": {
+          "name": "dreme test sites",
+          "file": "dreme_test_sites.fa",
+          "lmod": "Thu Apr 26 15:09:03 CEST 2018",
+          "count": 1000
+        },
+        "control_db": {
+          "name": "shuffled positive sequences",
+          "from": "shuffled",
+          "count": 1000,
+          "freqs": [0.221, 0.245, 0.221, 0.312]
+        },
+        "motifs": [
+          {
+            "db": 0,
+            "id": "UUYUCY",
+            "alt": "DREME-1",
+            "len": 6,
+            "nsites": 459,
+            "evalue": "1.2e-013",
+            "p": 387,
+            "n": 210,
+            "pvalue": "2.6e-018",
+            "unerased_evalue": "1.2e-013",
+            "pwm": [
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 0.294118, 0.000000, 0.705882], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 1.000000, 0.000000, 0.000000], 
+              [0.000000, 0.474946, 0.000000, 0.525054]
+            ],
+            "matches": [
+              {
+                "seq": "UUUUCC",
+                "p": 147,
+                "n": 75,
+                "pvalue": "1.8e-007",
+                "evalue": "8.1e-003"
+              }, {
+                "seq": "UUUUCU",
+                "p": 155,
+                "n": 94,
+                "pvalue": "2.2e-005",
+                "evalue": "1.0e+000"
+              }, {
+                "seq": "UUCUCU",
+                "p": 94,
+                "n": 51,
+                "pvalue": "1.3e-004",
+                "evalue": "6.1e+000"
+              }, {
+                "seq": "UUCUCC",
+                "p": 75,
+                "n": 42,
+                "pvalue": "1.1e-003",
+                "evalue": "5.0e+001"
+              }
+            ]
+          }, {
+            "db": 0,
+            "id": "YAGG",
+            "alt": "DREME-2",
+            "len": 4,
+            "nsites": 793,
+            "evalue": "5.1e-012",
+            "p": 600,
+            "n": 416,
+            "pvalue": "1.1e-016",
+            "unerased_evalue": "2.4e-012",
+            "pwm": [
+              [0.000000, 0.692308, 0.000000, 0.307692], 
+              [1.000000, 0.000000, 0.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000]
+            ],
+            "matches": [
+              {
+                "seq": "CAGG",
+                "p": 441,
+                "n": 304,
+                "pvalue": "1.5e-010",
+                "evalue": "6.6e-006"
+              }, {
+                "seq": "UAGG",
+                "p": 232,
+                "n": 165,
+                "pvalue": "1.1e-004",
+                "evalue": "4.7e+000"
+              }
+            ]
+          }, {
+            "db": 0,
+            "id": "GAAGAW",
+            "alt": "DREME-3",
+            "len": 6,
+            "nsites": 89,
+            "evalue": "3.4e-005",
+            "p": 81,
+            "n": 22,
+            "pvalue": "8.2e-010",
+            "unerased_evalue": "3.5e-004",
+            "pwm": [
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [1.000000, 0.000000, 0.000000, 0.000000], 
+              [1.000000, 0.000000, 0.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [1.000000, 0.000000, 0.000000, 0.000000], 
+              [0.494382, 0.000000, 0.000000, 0.505618]
+            ],
+            "matches": [
+              {
+                "seq": "GAAGAU",
+                "p": 45,
+                "n": 7,
+                "pvalue": "2.4e-008",
+                "evalue": "9.9e-004"
+              }, {
+                "seq": "GAAGAA",
+                "p": 40,
+                "n": 16,
+                "pvalue": "7.9e-004",
+                "evalue": "3.3e+001"
+              }
+            ]
+          }, {
+            "db": 0,
+            "id": "SMUGGA",
+            "alt": "DREME-4",
+            "len": 6,
+            "nsites": 119,
+            "evalue": "3.7e-003",
+            "p": 110,
+            "n": 47,
+            "pvalue": "9.1e-008",
+            "unerased_evalue": "2.6e-005",
+            "pwm": [
+              [0.000000, 0.529412, 0.470588, 0.000000], 
+              [0.428571, 0.571429, 0.000000, 0.000000], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [1.000000, 0.000000, 0.000000, 0.000000]
+            ],
+            "matches": [
+              {
+                "seq": "GAUGGA",
+                "p": 22,
+                "n": 6,
+                "pvalue": "1.7e-003",
+                "evalue": "7.1e+001"
+              }, {
+                "seq": "GCUGGA",
+                "p": 33,
+                "n": 14,
+                "pvalue": "3.6e-003",
+                "evalue": "1.5e+002"
+              }, {
+                "seq": "CCUGGA",
+                "p": 32,
+                "n": 15,
+                "pvalue": "8.6e-003",
+                "evalue": "3.5e+002"
+              }, {
+                "seq": "CAUGGA",
+                "p": 29,
+                "n": 13,
+                "pvalue": "9.1e-003",
+                "evalue": "3.7e+002"
+              }
+            ]
+          }
+        ],
+        "runtime": {
+          "host": "ThinkPad-T450s",
+          "when": "Thu May 03 13:22:29 CEST 2018",
+          "cpu": 13.95,
+          "real": 13.95,
+          "stop": "evalue"
+        }
+      };
+    </script>
+    <script>
+var site_url = "http://meme-suite.org";
+</script>
+    <script>
+
+/*
+ * $
+ *
+ * Shorthand function for getElementById
+ */
+function $(el) {
+  return document.getElementById(el);
+}
+
+
+/*
+ * See http://stackoverflow.com/a/5450113/66387
+ * Does string multiplication like the perl x operator.
+ */
+function string_mult(pattern, count) {
+    if (count < 1) return '';
+    var result = '';
+    while (count > 1) {
+        if (count & 1) result += pattern;
+        count >>= 1, pattern += pattern;
+    }
+    return result + pattern;
+}
+
+/*
+ * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
+ * Slightly modified with information from
+ * https://developer.mozilla.org/en/DOM/window.location
+ */
+function parse_params() {
+  "use strict";
+  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
+  search = window.location.search;
+  queryStart = search.indexOf("?") + 1;
+  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
+  query      = search.slice(queryStart, queryEnd - 1);
+
+  if (query === search || query === "") return {};
+
+  params  = {};
+  nvPairs = query.replace(/\+/g, " ").split("&");
+
+  for (i = 0; i < nvPairs.length; i++) {
+    nv = nvPairs[i].split("=");
+    n  = decodeURIComponent(nv[0]);
+    v  = decodeURIComponent(nv[1]);
+    // allow a name to be used multiple times
+    // storing each value in the array
+    if (!(n in params)) {
+      params[n] = [];
+    }
+    params[n].push(nv.length === 2 ? v : null);
+  }
+  return params;
+}
+
+/*
+ * coords
+ *
+ * Calculates the x and y offset of an element.
+ * From http://www.quirksmode.org/js/findpos.html
+ * with alterations to take into account scrolling regions
+ */
+function coords(elem) {
+  var myX = myY = 0;
+  if (elem.getBoundingClientRect) {
+    var rect;
+    rect = elem.getBoundingClientRect();
+    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
+        window.pageXOffset : document.body.scrollLeft);
+    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
+        window.pageYOffset : document.body.scrollTop);
+  } else {
+    // this fall back doesn't properly handle absolutely positioned elements
+    // inside a scrollable box
+    var node;
+    if (elem.offsetParent) {
+      // subtract all scrolling
+      node = elem;
+      do {
+        myX -= node.scrollLeft ? node.scrollLeft : 0;
+        myY -= node.scrollTop ? node.scrollTop : 0;
+      } while (node = node.parentNode);
+      // this will include the page scrolling (which is unwanted) so add it back on
+      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
+      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
+      // sum up offsets
+      node = elem;
+      do {
+        myX += node.offsetLeft;
+        myY += node.offsetTop;
+      } while (node = node.offsetParent);
+    }
+  }
+  return [myX, myY];
+}
+
+/*
+ * position_popup
+ *
+ * Positions a popup relative to an anchor element.
+ *
+ * The avaliable positions are:
+ * 0 - Centered below the anchor.
+ */
+function position_popup(anchor, popup, position) {
+  "use strict";
+  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
+  var a_xy, spacer, margin, scrollbar, page_w;
+  // define constants
+  spacer = 5;
+  margin = 15;
+  scrollbar = 15;
+  // define the positions and widths
+  a_xy = coords(anchor);
+  a_x = a_xy[0];
+  a_y = a_xy[1];
+  a_w = anchor.offsetWidth;
+  a_h = anchor.offsetHeight;
+  p_w = popup.offsetWidth;
+  p_h = popup.offsetHeight;
+  page_w = null;
+  if (window.innerWidth) {
+    page_w = window.innerWidth;
+  } else if (document.body) {
+    page_w = document.body.clientWidth;
+  }
+  // check the position type is defined
+  if (typeof position !== "number") {
+    position = 0;
+  }
+  // calculate the popup position
+  switch (position) {
+    case 1:
+      p_x = a_x + a_w + spacer;
+      p_y = a_y + (a_h / 2) - (p_h / 2);
+      break;
+    case 0:
+    default:
+      p_x = a_x + (a_w / 2) - (p_w / 2);
+      p_y = a_y + a_h + spacer;
+      break;
+  }
+  // constrain the popup position
+  if (p_x < margin) {
+    p_x = margin;
+  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
+    p_x = page_w - margin - scrollbar - p_w;
+  }
+  if (p_y < margin) {
+    p_y = margin;
+  }
+  // position the popup
+  popup.style.left = p_x + "px";
+  popup.style.top = p_y + "px";
+}
+
+function lookup_help_popup(popup_id) {
+  var _body, pop, info;
+  pop = document.getElementById(popup_id);
+  if (pop == null) {
+    _body = document.getElementsByTagName("body")[0];
+    pop = document.createElement("div");
+    pop.className = "pop_content";
+    pop.id = popup_id;
+    pop.style.backgroundColor = "#FFC";
+    pop.style.borderColor = "black";
+    info = document.createElement("p");
+    info.style.fontWeight = "bold";
+    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
+    pop.appendChild(info);
+    // this might cause problems with the menu, but as this only happens
+    // when something is already wrong I don't think that's too much of a problem
+    _body.insertBefore(pop, _body.firstChild);
+  }
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
+    if (!/\bauto_buttons\b/.test(pop.className)) {
+      pop.className += " auto_buttons";
+      var back_btn_sec = document.createElement("div");
+      back_btn_sec.className = "nested_only pop_back_sec";
+      var back_btn = document.createElement("span");
+      back_btn.className = "pop_back";
+      back_btn.appendChild(document.createTextNode("<< back"));
+      back_btn.addEventListener("click", function(e) {
+        help_return();
+      }, false);
+      back_btn_sec.appendChild(back_btn);
+      pop.insertBefore(back_btn_sec, pop.firstChild);
+      var close_btn_sec = document.createElement("div");
+      close_btn_sec.className = "pop_close_sec";
+      var close_btn = document.createElement("span");
+      close_btn.className = "pop_close";
+      close_btn.appendChild(document.createTextNode("close"));
+      close_btn.addEventListener("click", function(e) {
+        help_popup();
+      }, false);
+      close_btn_sec.appendChild(close_btn);
+      pop.appendChild(close_btn_sec);
+    }
+  }
+  return pop;
+}
+
+/*
+ * help_popup
+ *
+ * Moves around help pop-ups so they appear
+ * below an activator.
+ */
+function help_popup(activator, popup_id) {
+  "use strict";
+  var pop;
+  // set default values
+  if (typeof help_popup.popup === "undefined") {
+    help_popup.popup = [];
+  }
+  if (typeof help_popup.activator === "undefined") {
+    help_popup.activator = null;
+  }
+  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (typeof(activator) == "undefined") { // no activator so hide
+    if (last_pop != null) {
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+    }
+    return;
+  }
+  pop = lookup_help_popup(popup_id);
+  if (pop == last_pop) {
+    if (activator == help_popup.activator) {
+      //hide popup (as we've already shown it for the current help button)
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+      return; // toggling complete!
+    }
+  } else if (last_pop != null) {
+    //activating different popup so hide current one
+    last_pop.style.display = 'none';
+  }
+  help_popup.popup = [pop];
+  help_popup.activator = activator;
+  toggle_class(pop, "nested", false);
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = 'block';
+  position_popup(activator, pop);
+}
+
+/*
+ * help_refine
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_refine(popup_id) {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not refine a help popup when one is not shown!");
+  }
+  var pop = lookup_help_popup(popup_id);
+  var last_pop = help_popup.popup[help_popup.popup.length - 1];
+  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
+  help_popup.popup.push(pop);
+  toggle_class(pop, "nested", true);
+  last_pop.style.display = "none";
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = "block";
+  position_popup(help_popup.activator, pop);
+}
+
+/*
+ * help_return
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_return() {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not return to a earlier help popup when one is not shown!");
+  }
+  var last_pop = help_popup.popup.pop();
+  last_pop.style.display = "none";
+  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (pop != null) {
+    toggle_class(pop, "nested", help_popup.popup.length > 1);
+    pop.style.display = "block";
+    position_popup(help_popup.activator, pop);
+  } else {
+    help_popup.activator = null;
+  }
+}
+
+/*
+ * update_scroll_pad
+ *
+ * Creates padding at the bottom of the page to allow
+ * scrolling of anything into view.
+ */
+function update_scroll_pad() {
+  var page, pad;
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  pad = $("scrollpad");
+  if (pad === null) {
+    pad = document.createElement("div");
+    pad.id = 'scrollpad';
+    document.getElementsByTagName('body')[0].appendChild(pad);
+  }
+  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
+}
+
+function substitute_classes(node, remove, add) {
+  "use strict";
+  var list, all, i, cls, classes;
+  list = node.className.split(/\s+/);
+  all = {};
+  for (i = 0; i < list.length; i++) {
+    if (list[i].length > 0) all[list[i]] = true;
+  }
+  for (i = 0; i < remove.length; i++) {
+    if (all.hasOwnProperty(remove[i])) {
+      delete all[remove[i]];
+    }
+  }
+  for (i = 0; i < add.length; i++) {
+    all[add[i]] = true;
+  }
+  classes = "";
+  for (cls in all) {
+    classes += cls + " ";
+  }
+  node.className = classes;
+}
+
+/*
+ * toggle_class
+ *
+ * Adds or removes a class from the node. If the parameter 'enabled' is not 
+ * passed then the existence of the class will be toggled, otherwise it will be
+ * included if enabled is true.
+ */
+function toggle_class(node, cls, enabled) {
+  var classes = node.className;
+  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
+  var found = false;
+  for (var i = 0; i < list.length; i++) {
+    if (list[i] == cls) {
+      list.splice(i, 1);
+      i--;
+      found = true;
+    }
+  }
+  if (typeof enabled == "undefined") {
+    if (!found) list.push(cls);
+  } else {
+    if (enabled) list.push(cls);
+  }
+  node.className = list.join(" ");
+}
+
+/*
+ * find_child
+ *
+ * Searches child nodes in depth first order and returns the first it finds
+ * with the className specified.
+ * TODO replace with querySelector
+ */
+function find_child(node, className) {
+  var pattern;
+  if (node == null || typeof node !== "object") {
+    return null;
+  }
+  if (typeof className === "string") {
+    pattern = new RegExp("\\b" + className + "\\b");
+  } else {
+    pattern = className;
+  }
+  if (node.nodeType == Node.ELEMENT_NODE && 
+      pattern.test(node.className)) {
+    return node;
+  } else {
+    var result = null;
+    for (var i = 0; i < node.childNodes.length; i++) {
+      result = find_child(node.childNodes[i], pattern);
+      if (result != null) break;
+    }
+    return result;
+  }
+}
+
+/*
+ * find_parent
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the className specified.
+ */
+function find_parent(node, className) {
+  var pattern;
+  pattern = new RegExp("\\b" + className + "\\b");
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && 
+        pattern.test(node.className)) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * find_parent_tag
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the tag name specified. HTML tags should be specified in upper case.
+ */
+function find_parent_tag(node, tag_name) {
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * __toggle_help
+ *
+ * Uses the 'topic' property of the this object to
+ * toggle display of a help topic.
+ *
+ * This function is not intended to be called directly.
+ */
+function __toggle_help(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+
+  help_popup(this, this.getAttribute("data-topic"));
+}
+
+function setup_help_button(button) {
+  "use strict";
+  var topic;
+  if (button.hasAttribute("data-topic")) {
+    topic = button.getAttribute("data-topic");
+    if (document.getElementById(topic) != null) {
+      button.tabIndex = "0"; // make keyboard selectable
+      button.addEventListener("click", function() {
+        help_popup(button, topic);
+      }, false);
+      button.addEventListener("keydown", function(e) {
+        // toggle only on Enter or Spacebar, let other keys do their thing
+        if (e.keyCode !== 13 && e.keyCode !== 32) return;
+        // stop a submit or something like that
+        e.preventDefault();
+        help_popup(button, topic);
+      }, false);
+    } else {
+      button.style.visibility = "hidden";
+    }
+  }
+  button.className += " active";
+}
+
+/*
+ * help_button
+ *
+ * Makes a help button for the passed topic.
+ */
+function help_button(topic) {
+  var btn = document.createElement("div");
+  btn.className = "help";
+  btn.setAttribute("data-topic", topic);
+  setup_help_button(btn);
+  return btn;
+}
+
+/*
+ * prepare_download
+ *
+ * Sets the attributes of a link to setup a file download using the given content.
+ * If no link is provided then create one and click it.
+ */
+function prepare_download(content, mimetype, filename, link) {
+  "use strict";
+  // if no link is provided then create one and click it
+  var click_link = false;
+  if (!link) {
+    link = document.createElement("a");
+    click_link = true;
+  }
+  try {
+    // Use a BLOB to convert the text into a data URL.
+    // We could do this manually with a base 64 conversion.
+    // This will only be supported on modern browsers,
+    // hence the try block.
+    var blob = new Blob([content], {type: mimetype});
+    var reader = new FileReader();
+    reader.onloadend = function() {
+      // If we're lucky the browser will also support the download
+      // attribute which will let us suggest a file name to save the link.
+      // Otherwise it is likely that the filename will be unintelligible. 
+      link.setAttribute("download", filename);
+      link.href = reader.result;
+      if (click_link) {
+        // must add the link to click it
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      }
+    }
+    reader.readAsDataURL(blob);
+  } catch (error) {
+    if (console && console.log) console.log(error);
+    // probably an old browser
+    link.href = "";
+    link.visible = false;
+  }
+}
+
+/*
+ * add_cell
+ *
+ * Add a cell to the table row.
+ */
+function add_cell(row, node, cls, click_action) {
+  var cell = row.insertCell(row.cells.length);
+  if (node) cell.appendChild(node);
+  if (cls && cls !== "") cell.className = cls;
+  if (click_action) cell.addEventListener("click", click_action, false);
+}
+
+/*
+ * add_header_cell
+ *
+ * Add a header cell to the table row.
+ */
+function add_header_cell(row, node, help_topic, cls, colspan) {
+  var th = document.createElement("th");
+  if (node) th.appendChild(node);
+  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
+  if (cls && cls !== "") th.className = cls;
+  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
+  row.appendChild(th);
+}
+
+/*
+ * add_text_cell
+ *
+ * Add a text cell to the table row.
+ */
+function add_text_cell(row, text, cls, action) {
+  var node = null;
+  if (typeof(text) != 'undefined') node = document.createTextNode(text);
+  add_cell(row, node, cls, action);
+}
+
+/*
+ * add_text_header_cell
+ *
+ * Add a text header cell to the table row.
+ */
+function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
+  var node = null;
+  if (typeof(text) != 'undefined') {
+    var nbsp = (help_topic ? "\u00A0" : "");
+    var str = "" + text;
+    var parts = str.split(/\n/);
+    if (parts.length === 1) {
+      if (action) {
+        node = document.createElement("span");
+        node.appendChild(document.createTextNode(str + nbsp));
+      } else {
+        node = document.createTextNode(str + nbsp);
+      }
+    } else {
+      node = document.createElement("span");
+      for (var i = 0; i < parts.length; i++) {
+        if (i !== 0) {
+          node.appendChild(document.createElement("br"));
+        }
+        node.appendChild(document.createTextNode(parts[i]));
+      }
+    }
+    if (action) {
+      node.addEventListener("click", action, false);
+      node.style.cursor = "pointer";
+    }
+  }
+  add_header_cell(row, node, help_topic, cls, colspan);
+}
+
+function setup_help() {
+  "use strict";
+  var help_buttons, i;
+  help_buttons = document.querySelectorAll(".help:not(.active)");
+  for (i = 0; i < help_buttons.length; i++) {
+    setup_help_button(help_buttons[i]);
+  }
+}
+
+function setup_scrollpad() {
+  "use strict";
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
+    window.addEventListener("resize", update_scroll_pad, false);
+    update_scroll_pad();
+  }
+}
+
+// anon function to avoid polluting global scope
+(function() {
+  "use strict";
+  window.addEventListener("load", function load(evt) {
+    window.removeEventListener("load", load, false);
+    setup_help();
+    setup_scrollpad();
+  }, false);
+})();
+
+/*
+ *  make_link
+ *
+ *  Creates a text node and if a URL is specified it surrounds it with a link.
+ *  If the URL doesn't begin with "http://" it automatically adds it, as
+ *  relative links don't make much sense in this context.
+ */
+function make_link(text, url) {
+  var textNode = null;
+  var link = null;
+  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
+  if (typeof url === "string") {
+    if (url.indexOf("//") == -1) {
+      url = "http://" + url;
+    }
+    link = document.createElement('a');
+    link.href = url;
+    if (textNode) link.appendChild(textNode);
+    return link;
+  }
+  return textNode;
+}
+</script>
+    <script>
+function motif_logo_template(inputs) {
+  function _input(name) {
+    if (typeof inputs[name] === "undefined") {
+      throw new Error("Missing template variable: " + name);
+    }
+    return inputs[name];
+  }
+  return (
+"%!PS-Adobe-3.0 EPSF-3.0\n" +
+"%%Title: Sequence Logo : " + _input("TITLE") + "\n" +
+"%%Creator: " + _input("CREATOR") + "\n" +
+"%%CreationDate: " + _input("CREATIONDATE") + "\n" +
+"%%BoundingBox:   0  0  " + _input("BOUNDINGWIDTH") + " " + _input("BOUNDINGHEIGHT") + " \n" +
+"%%Pages: 0\n" +
+"%%DocumentFonts: \n" +
+"%%EndComments\n" +
+"\n" +
+"% ---- CONSTANTS ----\n" +
+"\/cmfactor 72 2.54 div def % defines points -> cm conversion\n" +
+"\/cm {cmfactor mul} bind def % defines centimeters\n" +
+"\n" +
+"% ---- VARIABLES ----\n" +
+"\n" +
+"% NA = Nucleic Acid, AA = Amino Acid\n" +
+"\/logoType (" + _input("LOGOTYPE") + ") def \n" +
+"\n" +
+"\/logoTitle (" + _input("TITLE") + ") def\n" +
+"\n" +
+"% Dimensions in cm\n" +
+"\/logoWidth " + _input("LOGOWIDTH") + " cm def\n" +
+"\/logoHeight " + _input("LOGOLINEHEIGHT") + " cm def\n" +
+"\/totalHeight " + _input("LOGOHEIGHT") + " cm def\n" +
+"\n" +
+"\/yaxis " + _input("YAXIS") + " def\n" +
+"\/yaxisLabel (" + _input("YAXISLABEL") + ") def\n" +
+"\/yaxisBits  " + _input("BARBITS") + " def % bits\n" +
+"\/yaxisTicBits " + _input("TICBITS") + " def\n" +
+"\n" +
+"\/xaxis " + _input("NUMBERING") + " def\n" +
+"\/xaxisLabel (" + _input("XAXISLABEL") + ") def\n" +
+"\/showEnds (" + _input("SHOWENDS") + ") def \n" +
+"\n" +
+"\/showFineprint true def\n" +
+"\/fineprint (" + _input("FINEPRINT") + ") def\n" +
+"\n" +
+"\/charsPerLine " + _input("CHARSPERLINE") + " def\n" +
+"\n" +
+"\/showingBox " + _input("SHOWINGBOX") + " def    \n" +
+"\/shrinking false def   % true falses\n" +
+"\/shrink  1.0 def\n" +
+"\/outline " + _input("OUTLINE") + " def\n" +
+"\n" +
+"\/IbeamFraction  " + _input("ERRORBARFRACTION") + " def\n" +
+"\/IbeamGray      0.50 def\n" +
+"\/IbeamLineWidth 0.5 def\n" +
+"\n" +
+"\/fontsize       " + _input("FONTSIZE") + " def\n" +
+"\/titleFontsize  " + _input("TITLEFONTSIZE") + " def\n" +
+"\/smallFontsize  " + _input("SMALLFONTSIZE") + " def\n" +
+"\n" +
+"\/topMargin      " + _input("TOPMARGIN") + " cm def\n" +
+"\/bottomMargin   " + _input("BOTTOMMARGIN") + " cm def\n" +
+"\n" +
+"\/defaultColor [0 0 0] def \n" +
+"\n" +
+_input("COLORDICT") + "\n" +
+"\n" +
+"\/colorDict fullColourDict def\n" +
+"\n" +
+"% ---- DERIVED PARAMETERS ----\n" +
+"\n" +
+"\/leftMargin\n" +
+"  fontsize 3.5 mul\n" +
+"\n" +
+"def \n" +
+"\n" +
+"\/rightMargin \n" +
+"  %Add extra room if showing ends\n" +
+"  showEnds (false) eq { fontsize}{fontsize 1.5 mul} ifelse\n" +
+"def\n" +
+"\n" +
+"\/yaxisHeight \n" +
+"  logoHeight \n" +
+"  bottomMargin sub  \n" +
+"  topMargin sub\n" +
+"def\n" +
+"\n" +
+"\/ticWidth fontsize 2 div def\n" +
+"\n" +
+"\/pointsPerBit yaxisHeight yaxisBits div  def\n" +
+"\n" +
+"\/stackMargin 1 def\n" +
+"\n" +
+"% Do not add space aroung characters if characters are boxed\n" +
+"\/charRightMargin \n" +
+"  showingBox { 0.0 } {stackMargin} ifelse\n" +
+"def\n" +
+"\n" +
+"\/charTopMargin \n" +
+"  showingBox { 0.0 } {stackMargin} ifelse\n" +
+"def\n" +
+"\n" +
+"\/charWidth\n" +
+"  logoWidth\n" +
+"  leftMargin sub\n" +
+"  rightMargin sub\n" +
+"  charsPerLine div\n" +
+"  charRightMargin sub\n" +
+"def\n" +
+"\n" +
+"\/charWidth4 charWidth 4 div def\n" +
+"\/charWidth2 charWidth 2 div def\n" +
+"\n" +
+"\/stackWidth \n" +
+"  charWidth charRightMargin add\n" +
+"def\n" +
+" \n" +
+"\/numberFontsize \n" +
+"  fontsize charWidth lt {fontsize}{charWidth} ifelse\n" +
+"def\n" +
+"\n" +
+"% movements to place 5'\/N and 3'\/C symbols\n" +
+"\/leftEndDeltaX  fontsize neg         def\n" +
+"\/leftEndDeltaY  fontsize 1.5 mul neg def\n" +
+"\/rightEndDeltaX fontsize 0.25 mul     def\n" +
+"\/rightEndDeltaY leftEndDeltaY        def\n" +
+"\n" +
+"% Outline width is proporional to charWidth, \n" +
+"% but no less that 1 point\n" +
+"\/outlinewidth \n" +
+"  charWidth 32 div dup 1 gt  {}{pop 1} ifelse\n" +
+"def\n" +
+"\n" +
+"\n" +
+"% ---- PROCEDURES ----\n" +
+"\n" +
+"\/StartLogo { \n" +
+"  % Save state\n" +
+"  save \n" +
+"  gsave \n" +
+"\n" +
+"  % Print Logo Title, top center \n" +
+"  gsave \n" +
+"    SetStringFont\n" +
+"\n" +
+"    logoWidth 2 div\n" +
+"    logoTitle\n" +
+"    stringwidth pop 2 div sub\n" +
+"    totalHeight\n" +
+"    titleFontsize sub\n" +
+"    moveto\n" +
+"\n" +
+"    logoTitle\n" +
+"    show\n" +
+"  grestore\n" +
+"\n" +
+"  % Print X-axis label, bottom center\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"\n" +
+"    logoWidth 2 div\n" +
+"    xaxisLabel\n" +
+"    stringwidth pop 2 div sub\n" +
+"    0\n" +
+"    titleFontsize 3 div\n" +
+"    add\n" +
+"    moveto\n" +
+"\n" +
+"    xaxisLabel\n" +
+"    show\n" +
+"  grestore\n" +
+"\n" +
+"  % Show Fine Print\n" +
+"  showFineprint {\n" +
+"    gsave\n" +
+"      SetSmallFont\n" +
+"      logoWidth\n" +
+"        fineprint stringwidth pop sub\n" +
+"        smallFontsize sub\n" +
+"          smallFontsize 3 div\n" +
+"      moveto\n" +
+"    \n" +
+"      fineprint show\n" +
+"    grestore\n" +
+"  } if\n" +
+"\n" +
+"  % Move to lower left corner of last line, first stack\n" +
+"  leftMargin bottomMargin translate\n" +
+"\n" +
+"  % Move above first line ready for StartLine \n" +
+"  0 totalHeight translate\n" +
+"\n" +
+"  SetLogoFont\n" +
+"} bind def\n" +
+"\n" +
+"\/EndLogo { \n" +
+"  grestore \n" +
+"  showpage \n" +
+"  restore \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/StartLine { \n" +
+"  % move down to the bottom of the line:\n" +
+"  0 logoHeight neg translate\n" +
+"  \n" +
+"  gsave \n" +
+"    yaxis { MakeYaxis } if\n" +
+"    xaxis { showEnds (true) eq {ShowLeftEnd} if } if\n" +
+"} bind def\n" +
+"\n" +
+"\/EndLine{ \n" +
+"    xaxis { showEnds (true) eq {ShowRightEnd} if } if\n" +
+"  grestore \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/MakeYaxis {\n" +
+"  gsave    \n" +
+"    stackMargin neg 0 translate\n" +
+"    ShowYaxisBar\n" +
+"    ShowYaxisLabel\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowYaxisBar { \n" +
+"  gsave  \n" +
+"    SetStringFont\n" +
+"\n" +
+"    \/str 10 string def % string to hold number  \n" +
+"    \/smallgap stackMargin 2 div def\n" +
+"\n" +
+"    % Draw first tic and bar\n" +
+"    gsave    \n" +
+"      ticWidth neg 0 moveto \n" +
+"      ticWidth 0 rlineto \n" +
+"      0 yaxisHeight rlineto\n" +
+"      stroke\n" +
+"    grestore\n" +
+"\n" +
+"   \n" +
+"    % Draw the tics\n" +
+"    % initial increment limit proc for\n" +
+"    0 yaxisTicBits yaxisBits abs %cvi\n" +
+"    {\/loopnumber exch def\n" +
+"\n" +
+"      % convert the number coming from the loop to a string\n" +
+"      % and find its width\n" +
+"      loopnumber 10 str cvrs\n" +
+"      \/stringnumber exch def % string representing the number\n" +
+"\n" +
+"      stringnumber stringwidth pop\n" +
+"      \/numberwidth exch def % width of number to show\n" +
+"\n" +
+"      \/halfnumberheight\n" +
+"         stringnumber CharBoxHeight 2 div\n" +
+"      def\n" +
+"\n" +
+"      numberwidth % move back width of number\n" +
+"      neg loopnumber pointsPerBit mul % shift on y axis\n" +
+"      halfnumberheight sub % down half the digit\n" +
+"\n" +
+"      moveto % move back the width of the string\n" +
+"\n" +
+"      ticWidth neg smallgap sub % Move back a bit more  \n" +
+"      0 rmoveto % move back the width of the tic  \n" +
+"\n" +
+"      stringnumber show\n" +
+"      smallgap 0 rmoveto % Make a small gap  \n" +
+"\n" +
+"      % now show the tic mark\n" +
+"      0 halfnumberheight rmoveto % shift up again\n" +
+"      ticWidth 0 rlineto\n" +
+"      stroke\n" +
+"    } for\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\/ShowYaxisLabel {\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"\n" +
+"    % How far we move left depends on the size of\n" +
+"    % the tic labels.\n" +
+"    \/str 10 string def % string to hold number  \n" +
+"    yaxisBits yaxisTicBits div cvi yaxisTicBits mul \n" +
+"    str cvs stringwidth pop\n" +
+"    ticWidth 1.5 mul  add neg  \n" +
+"\n" +
+"\n" +
+"    yaxisHeight\n" +
+"    yaxisLabel stringwidth pop\n" +
+"    sub 2 div\n" +
+"\n" +
+"    translate\n" +
+"    90 rotate\n" +
+"    0 0 moveto\n" +
+"    yaxisLabel show\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/StartStack {  % <stackNumber> startstack\n" +
+"  xaxis {MakeNumber}{pop} ifelse\n" +
+"  gsave\n" +
+"} bind def\n" +
+"\n" +
+"\/EndStack {\n" +
+"  grestore\n" +
+"  stackWidth 0 translate\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% Draw a character whose height is proportional to symbol bits\n" +
+"\/MakeSymbol{ % charbits character MakeSymbol\n" +
+"  gsave\n" +
+"    \/char exch def\n" +
+"    \/bits exch def\n" +
+"\n" +
+"    \/bitsHeight \n" +
+"       bits pointsPerBit mul \n" +
+"    def\n" +
+"\n" +
+"    \/charHeight \n" +
+"       bitsHeight charTopMargin sub\n" +
+"       dup \n" +
+"       0.0 gt {}{pop 0.0} ifelse % if neg replace with zero \n" +
+"    def \n" +
+" \n" +
+"    charHeight 0.0 gt {\n" +
+"      char SetColor\n" +
+"      charWidth charHeight char ShowChar\n" +
+"\n" +
+"      showingBox { % Unfilled box\n" +
+"        0 0 charWidth charHeight false ShowBox\n" +
+"      } if\n" +
+"\n" +
+"\n" +
+"    } if\n" +
+"\n" +
+"  grestore\n" +
+"\n" +
+"  0 bitsHeight translate \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowChar { % <width> <height> <char> ShowChar\n" +
+"  gsave\n" +
+"    \/tc exch def    % The character\n" +
+"    \/ysize exch def % the y size of the character\n" +
+"    \/xsize exch def % the x size of the character\n" +
+"\n" +
+"    \/xmulfactor 1 def \n" +
+"    \/ymulfactor 1 def\n" +
+"    \/limmulfactor 0.01 def\n" +
+"    \/drawable true def\n" +
+"\n" +
+"  \n" +
+"    % if ysize is negative, make everything upside down!\n" +
+"    ysize 0 lt {\n" +
+"      % put ysize normal in this orientation\n" +
+"      \/ysize ysize abs def\n" +
+"      xsize ysize translate\n" +
+"      180 rotate\n" +
+"    } if\n" +
+"\n" +
+"    shrinking {\n" +
+"      xsize 1 shrink sub 2 div mul\n" +
+"        ysize 1 shrink sub 2 div mul translate \n" +
+"\n" +
+"      shrink shrink scale\n" +
+"    } if\n" +
+"\n" +
+"    % Calculate the font scaling factors\n" +
+"    % Loop twice to catch small correction due to first scaling\n" +
+"    2 {\n" +
+"      gsave\n" +
+"        xmulfactor ymulfactor scale\n" +
+"      \n" +
+"        ysize % desired size of character in points\n" +
+"        tc CharBoxHeight \n" +
+"        dup 0.0 ne {\n" +
+"          div % factor by which to scale up the character\n" +
+"          \/ymulfactor exch def\n" +
+"        } % end if\n" +
+"        {pop pop}\n" +
+"        ifelse\n" +
+"\n" +
+"        xsize % desired size of character in points\n" +
+"        tc CharBoxWidth  \n" +
+"        dup 0.0 ne {\n" +
+"          div % factor by which to scale up the character\n" +
+"          \/xmulfactor exch def\n" +
+"        } % end if\n" +
+"        {pop pop}\n" +
+"        ifelse\n" +
+"      grestore\n" +
+"      % if the multiplication factors get too small we need to avoid a crash\n" +
+"      xmulfactor limmulfactor lt {\n" +
+"        \/xmulfactor 1 def\n" +
+"        \/drawable false def\n" +
+"      } if\n" +
+"      ymulfactor limmulfactor lt {\n" +
+"        \/ymulfactor 1 def\n" +
+"        \/drawable false def\n" +
+"      } if\n" +
+"    } repeat\n" +
+"\n" +
+"    % Adjust horizontal position if the symbol is an I\n" +
+"    tc (I) eq {\n" +
+"      charWidth 2 div % half of requested character width\n" +
+"      tc CharBoxWidth 2 div % half of the actual character\n" +
+"      sub 0 translate\n" +
+"      % Avoid x scaling for I \n" +
+"      \/xmulfactor 1 def \n" +
+"    } if\n" +
+"\n" +
+"\n" +
+"    % ---- Finally, draw the character\n" +
+"    drawable { \n" +
+"      newpath\n" +
+"      xmulfactor ymulfactor scale\n" +
+"\n" +
+"      % Move lower left corner of character to start point\n" +
+"      tc CharBox pop pop % llx lly : Lower left corner\n" +
+"      exch neg exch neg\n" +
+"      moveto\n" +
+"\n" +
+"      outline {  % outline characters:\n" +
+"        outlinewidth setlinewidth\n" +
+"        tc true charpath\n" +
+"        gsave 1 setgray fill grestore\n" +
+"        clip stroke\n" +
+"      } { % regular characters\n" +
+"        tc show\n" +
+"      } ifelse\n" +
+"    } if\n" +
+"\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowBox { % x1 y1 x2 y2 filled ShowBox\n" +
+"  gsave\n" +
+"    \/filled exch def \n" +
+"    \/y2 exch def\n" +
+"    \/x2 exch def\n" +
+"    \/y1 exch def\n" +
+"    \/x1 exch def\n" +
+"    newpath\n" +
+"    x1 y1 moveto\n" +
+"    x2 y1 lineto\n" +
+"    x2 y2 lineto\n" +
+"    x1 y2 lineto\n" +
+"    closepath\n" +
+"\n" +
+"    clip\n" +
+"    \n" +
+"    filled {\n" +
+"      fill\n" +
+"    }{ \n" +
+"      0 setgray stroke   \n" +
+"    } ifelse\n" +
+"\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/MakeNumber { % number MakeNumber\n" +
+"  gsave\n" +
+"    SetNumberFont\n" +
+"    stackWidth 0 translate\n" +
+"    90 rotate % rotate so the number fits\n" +
+"    dup stringwidth pop % find the length of the number\n" +
+"    neg % prepare for move\n" +
+"    stackMargin sub % Move back a bit\n" +
+"    charWidth (0) CharBoxHeight % height of numbers\n" +
+"    sub 2 div %\n" +
+"    moveto % move back to provide space\n" +
+"    show\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/Ibeam{ % heightInBits Ibeam\n" +
+"  gsave\n" +
+"    % Make an Ibeam of twice the given height in bits\n" +
+"    \/height exch  pointsPerBit mul def \n" +
+"    \/heightDRAW height IbeamFraction mul def\n" +
+"\n" +
+"    IbeamLineWidth setlinewidth\n" +
+"    IbeamGray setgray \n" +
+"\n" +
+"    charWidth2 height neg translate\n" +
+"    ShowIbar\n" +
+"    newpath\n" +
+"      0 0 moveto\n" +
+"      0 heightDRAW rlineto\n" +
+"    stroke\n" +
+"    newpath\n" +
+"      0 height moveto\n" +
+"      0 height rmoveto\n" +
+"      currentpoint translate\n" +
+"    ShowIbar\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    0 heightDRAW neg rlineto\n" +
+"    currentpoint translate\n" +
+"    stroke\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowIbar { % make a horizontal bar\n" +
+"  gsave\n" +
+"    newpath\n" +
+"      charWidth4 neg 0 moveto\n" +
+"      charWidth4 0 lineto\n" +
+"    stroke\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowLeftEnd {\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"    leftEndDeltaX leftEndDeltaY moveto\n" +
+"    logoType (NA) eq {(5) show ShowPrime} if\n" +
+"    logoType (AA) eq {(N) show} if\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowRightEnd { \n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"    rightEndDeltaX rightEndDeltaY moveto\n" +
+"    logoType (NA) eq {(3) show ShowPrime} if\n" +
+"    logoType (AA) eq {(C) show} if\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowPrime {\n" +
+"  gsave\n" +
+"    SetPrimeFont\n" +
+"    (\\242) show \n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+" \n" +
+"\/SetColor{ % <char> SetColor\n" +
+"  dup colorDict exch known {\n" +
+"    colorDict exch get aload pop setrgbcolor\n" +
+"  } {\n" +
+"    pop\n" +
+"    defaultColor aload pop setrgbcolor\n" +
+"  } ifelse \n" +
+"} bind def\n" +
+"\n" +
+"% define fonts\n" +
+"\/SetTitleFont {\/Times-Bold findfont titleFontsize scalefont setfont} bind def\n" +
+"\/SetLogoFont  {\/Helvetica-Bold findfont charWidth  scalefont setfont} bind def\n" +
+"\/SetStringFont{\/Helvetica-Bold findfont fontsize scalefont setfont} bind def\n" +
+"\/SetPrimeFont {\/Symbol findfont fontsize scalefont setfont} bind def\n" +
+"\/SetSmallFont {\/Helvetica findfont smallFontsize scalefont setfont} bind def\n" +
+"\n" +
+"\/SetNumberFont {\n" +
+"    \/Helvetica-Bold findfont \n" +
+"    numberFontsize\n" +
+"    scalefont\n" +
+"    setfont\n" +
+"} bind def\n" +
+"\n" +
+"%Take a single character and return the bounding box\n" +
+"\/CharBox { % <char> CharBox <lx> <ly> <ux> <uy>\n" +
+"  gsave\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    % take the character off the stack and use it here:\n" +
+"    true charpath \n" +
+"    flattenpath \n" +
+"    pathbbox % compute bounding box of 1 pt. char => lx ly ux uy\n" +
+"    % the path is here, but toss it away ...\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% The height of a characters bounding box\n" +
+"\/CharBoxHeight { % <char> CharBoxHeight <num>\n" +
+"  CharBox\n" +
+"  exch pop sub neg exch pop\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% The width of a characters bounding box\n" +
+"\/CharBoxWidth { % <char> CharBoxHeight <num>\n" +
+"  CharBox\n" +
+"  pop exch pop sub neg \n" +
+"} bind def\n" +
+"\n" +
+"% Set the colour scheme to be faded to indicate trimming\n" +
+"\/MuteColour {\n" +
+"  \/colorDict mutedColourDict def\n" +
+"} def\n" +
+"\n" +
+"% Restore the colour scheme to the normal colours\n" +
+"\/RestoreColour {\n" +
+"  \/colorDict fullColourDict def\n" +
+"} def\n" +
+"\n" +
+"% Draw the background for a trimmed section\n" +
+"% takes the number of columns as a parameter\n" +
+"\/DrawTrimBg { % <num> DrawTrimBox\n" +
+"  \/col exch def\n" +
+"  \n" +
+"  \/boxwidth \n" +
+"    col stackWidth mul \n" +
+"  def\n" +
+" \n" +
+"  gsave\n" +
+"    0.97 setgray\n" +
+"\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    boxwidth 0 rlineto\n" +
+"    0 yaxisHeight rlineto\n" +
+"    0 yaxisHeight lineto\n" +
+"    closepath\n" +
+"    \n" +
+"    fill\n" +
+"  grestore\n" +
+"} def\n" +
+"\n" +
+"\/DrawTrimEdge {\n" +
+"  gsave\n" +
+"    0.2 setgray\n" +
+"    [2] 0 setdash\n" +
+"\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    0 yaxisHeight lineto\n" +
+"    \n" +
+"    stroke\n" +
+"\n" +
+"} def\n" +
+"\n" +
+"\n" +
+"% Deprecated names\n" +
+"\/startstack {StartStack} bind  def\n" +
+"\/endstack {EndStack}     bind def\n" +
+"\/makenumber {MakeNumber} bind def\n" +
+"\/numchar { MakeSymbol }  bind def\n" +
+"\n" +
+"%%EndProlog\n" +
+"\n" +
+"%%Page: 1 1\n" +
+"StartLogo\n" +
+"\n" +
+_input("DATA") + "\n" +
+"\n" +
+"EndLogo\n" +
+"\n" +
+"%%EOF\n"
+  );
+}</script>
+    <script>
+//======================================================================
+// start Alphabet object
+//======================================================================
+var Alphabet = function(alphabet, background) {
+  "use strict";
+  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
+  generate_background = (background == null);
+  if (generate_background) {
+    background = [];
+    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
+  } else if (alphabet.ncore != background.length) {
+    throw new Error("The background length does not match the alphabet length.");
+  }
+  this.name = alphabet.name;
+  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
+  this.ncore = alphabet.ncore;
+  this.symbols = alphabet.symbols;
+  this.background = background;
+  this.genbg = generate_background;
+  this.encode = {};
+  this.encode2core = {};
+  this.complement = {};
+  // check if all symbols are same case
+  var seen_uc = false;
+  var seen_lc = false;
+  var check_case = function (syms) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        if (sym >= 'a' && sym <= 'z') seen_lc = true;
+        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
+      }
+    }
+  };
+  for (i = 0; i < this.symbols.length; i++) {
+    check_case(this.symbols[i].symbol);
+    check_case(this.symbols[i].aliases);
+  }
+  // now map symbols to indexes
+  var update_array = function(array, syms, index) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        array[sym] = index;
+        // when only a single case is used, then encode as case insensitive
+        if (seen_uc != seen_lc) {
+          if (sym >= 'a' && sym <= 'z') {
+            array[sym.toUpperCase()] = index;
+          } else if (sym >= 'A' && sym <= 'Z') {
+            array[sym.toLowerCase()] = index;
+          }
+        }
+      }
+    }
+  }
+  // map core symbols to index
+  for (i = 0; i < this.ncore; i++) {
+    update_array(this.encode2core, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode2core, this.symbols[i].aliases, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+  }
+  // map ambigous symbols to index
+  ambigs = {};
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+    ambigs[this.symbols[i].equals] = i;
+  }
+  // determine complements
+  for (i = 0; i < this.ncore; i++) {
+    complement = this.symbols[i].complement;
+    if (typeof complement === "string") {
+      this.complement[i] = this.encode2core[complement];
+    }
+  }
+  next_symbol:
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    complement = "";
+    for (j = 0; j < this.symbols[i].equals.length; j++) {
+      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
+      if (typeof comp_e_sym !== "number") continue next_symbol;
+      complement += this.symbols[comp_e_sym].symbol;
+    }
+    complement = complement.split("").sort().join("");
+    if (typeof ambigs[complement] === "number") {
+      this.complement[i] = ambigs[complement];
+    }
+  }
+  // determine case insensitivity
+  this.case_insensitive = true;
+  if (seen_uc == seen_lc) {
+    // when there is a mixture of cases it probably won't
+    // be case insensitive but we still need to check
+    loop:
+    for (i = 0; i < this.symbols.length; i++) {
+      sym = this.symbols[i].symbol;
+      if (sym >= 'A' && sym <= 'Z') {
+        if (this.encode[sym.toLowerCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      } else if (sym >= 'a' && sym <= 'z') {
+        if (this.encode[sym.toUpperCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      }
+      aliases = this.symbols[i].aliases;
+      if (aliases != null) {
+        for (j = 0; j < aliases.length; j++) {
+          sym = aliases.charAt(j);
+          if (sym >= 'A' && sym <= 'Z') {
+            if (this.encode[sym.toLowerCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          } else if (sym >= 'a' && sym <= 'z') {
+            if (this.encode[sym.toUpperCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          }
+        }
+      }
+    }
+  }
+  // normalise aliases to remove the prime symbol and eliminate
+  // the alternate cases when the alphabet is case insensitive
+  var seen, out;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym = this.symbols[i].symbol;
+    aliases = this.symbols[i].aliases;
+    if (typeof aliases != "string") aliases = "";
+    seen = {};
+    out = [];
+    if (this.case_insensitive) {
+      sym = sym.toUpperCase();
+      aliases = aliases.toUpperCase();
+    }
+    seen[sym] = true;
+    for (j = 0; j < aliases.length; j++) {
+      if (!seen[aliases.charAt(j)]) {
+        seen[aliases.charAt(j)] = true;
+        out.push(aliases.charAt(j));
+      }
+    }
+    this.symbols[i].aliases = out.sort().join("");
+  }
+};
+// return the name of the alphabet
+Alphabet.prototype.get_alphabet_name = function() {
+  return this.name;
+};
+// return if the alphabet can be complemented
+Alphabet.prototype.has_complement = function() {
+  return (typeof this.symbols[0].complement === "string");
+};
+// return true if an uppercase letter has the same meaning as the lowercase form
+Alphabet.prototype.is_case_insensitive = function() {
+  return this.case_insensitive;
+};
+// return the information content of an alphabet letter
+Alphabet.prototype.get_ic = function() {
+  return Math.log(this.ncore) / Math.LN2;
+};
+// return the count of the core alphabet symbols
+Alphabet.prototype.get_size_core = function() {
+  return this.ncore;
+};
+// return the count of all alphabet symbols
+Alphabet.prototype.get_size_full = function() {
+  return this.symbols.length;
+};
+// return the symbol for the given alphabet index
+Alphabet.prototype.get_symbol = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  return this.symbols[alph_index].symbol;
+};
+// return the aliases for the given alphabet index
+Alphabet.prototype.get_aliases = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  var sym_obj = this.symbols[alph_index];
+  return (sym_obj.aliases != null ? sym_obj.aliases : "");
+};
+// return the name for the given alphabet index
+Alphabet.prototype.get_name = function(alph_index) {
+  "use strict";
+  var sym;
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  sym = this.symbols[alph_index];
+  return (typeof sym.name === "string" ? sym.name : sym.symbol);
+};
+// return the alphabet it is like or null
+Alphabet.prototype.get_like = function() {
+  "use strict";
+  return this.like;
+};
+// return the index of the complement for the given alphabet index
+Alphabet.prototype.get_complement = function(alph_index) {
+  var comp_e_sym = this.complement[alph_index];
+  if (typeof comp_e_sym === "number") {
+    return comp_e_sym;
+  } else {
+    return -1;
+  }
+};
+// return a string containing the core symbols
+Alphabet.prototype.get_symbols = function() {
+  "use strict";
+  var i, core_symbols;
+  core_symbols = "";
+  for (i = 0; i < this.ncore; i++) {
+    core_symbols += this.symbols[i].symbol;
+  }
+  return core_symbols;
+};
+// return if the background was not a uniform generated background
+Alphabet.prototype.has_bg = function() {
+  "use strict";
+  return !this.genbg;
+};
+// get the background frequency for the index
+Alphabet.prototype.get_bg_freq = function(alph_index) {
+  "use strict";
+  var freq, i, symbols;
+  if (alph_index >= 0) {
+    if (alph_index < this.ncore) {
+      return this.background[alph_index];
+    } else if (alph_index < this.symbols.length) {
+      freq = 0;
+      symbols = this.symbols[alph_index].equals;
+      for (i = 0; i < symbols.length; i++) {
+        freq += this.background[this.encode2core[symbols.charAt(i)]];
+      }
+      return freq;
+    } 
+  }
+  throw new Error("The alphabet index is out of range.");
+};
+// get the colour of the index
+Alphabet.prototype.get_colour = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return "black";
+  }
+  return "#" + this.symbols[alph_index].colour;
+};
+// get the rgb componets of the colour at the index
+Alphabet.prototype.get_rgb = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return {"red": 0, "green": 0, "blue": 0};
+  }
+  var colour = this.symbols[alph_index].colour;
+  var red = parseInt(colour.substr(0, 2), 16) / 255;
+  var green = parseInt(colour.substr(2, 2), 16) / 255;
+  var blue = parseInt(colour.substr(4, 2), 16) / 255;
+  return {"red": red, "green": green, "blue": blue};
+};
+// convert a symbol into the index
+Alphabet.prototype.get_index = function(letter) {
+  "use strict";
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    return -1;
+  }
+  return alph_index;
+};
+// convert a symbol into the list of core indexes that it equals
+Alphabet.prototype.get_indexes = function(letter) {
+  "use strict";
+  var alph_index, comprise_str, i, comprise_list;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    throw new Error("Unknown letter");
+  }
+  comprise_str = this.symbols[alph_index].equals;
+  comprise_list = [];
+  if (typeof comprise_str == "string") {
+    for (i = 0; i < comprise_str.length; i++) {
+      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
+    }
+  } else {
+    comprise_list.push(alph_index);
+  }
+  return comprise_list;
+};
+// check if a symbol is the primary way of representing the symbol in the alphabet
+Alphabet.prototype.is_prime_symbol = function(letter) {
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (alph_index == null) return false;
+  if (this.is_case_insensitive()) {
+    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
+  } else {
+    return (this.symbols[alph_index].symbol == letter);
+  }
+};
+// compare 2 alphabets
+Alphabet.prototype.equals = function(other) {
+  "use strict";
+  var i, sym1, sym2;
+  // first check that it's actually an alphabet object
+  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
+    return false;
+  }
+  // second shortcircuit if it's the same object
+  if (this === other) return true;
+  // compare
+  if (this.name !== other.name) return false;
+  if (this.ncore !== other.ncore) return false;
+  if (this.symbols.length !== other.symbols.length) return false;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym1 = this.symbols[i];
+    sym2 = other.symbols[i];
+    if (sym1.symbol !== sym2.symbol) return false;
+    if (sym1.aliases !== sym2.aliases) return false;
+    if (sym1.name !== sym2.name) return false;
+    if (typeof sym1.colour !== typeof sym2.colour || 
+        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
+         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
+      return false;
+    }
+    if (sym1.complement !== sym2.complement) return false;
+    if (sym1.equals !== sym2.equals) return false;
+  }
+  return true;
+};
+Alphabet.prototype.check_core_subset = function(super_alph) {
+  var complement_same = true;
+  var seen_set = {};
+  var sub_i, sub_symbol, super_i, super_symbol;
+  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
+    sub_symbol = this.symbols[sub_i];
+    super_i = super_alph.encode[sub_symbol.symbol]; 
+    if (super_i == null) return 0;
+    super_symbol = super_alph.symbols[super_i];
+    if (seen_set[super_i]) return 0;
+    seen_set[super_i] = true;
+    // check complement
+    if (sub_symbol.complement != null && super_symbol.complement != null) {
+      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
+        complement_same = false;
+      }
+    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
+      complement_same = false;
+    }
+  }
+  return (complement_same ? 1 : -1);
+};
+// convert a sequence to its reverse complement
+Alphabet.prototype.invcomp_seq = function(seq) {
+  "use strict";
+  var syms, i, e_sym, comp_e_sym;
+  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
+  syms = seq.split("");
+  for (i = 0; i < syms.length; i++) {
+    e_sym = this.encode[syms[i]];
+    if (typeof e_sym === "undefined") {
+      e_sym = this.ncore; // wildcard
+    }
+    comp_e_sym = this.complement[e_sym];
+    if (typeof comp_e_sym === "undefined") {
+      comp_e_sym = e_sym; // not complementable
+    }
+    syms[i] = this.symbols[comp_e_sym].symbol;
+  }
+  return syms.reverse().join("");
+};
+// convert the alphabet to the text version
+Alphabet.prototype.as_text = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  function symbol_as_text(sym) {
+    var out;
+    out = sym.symbol;
+    if (typeof sym.name === "string" && sym.name != sym.symbol) {
+      out += " " + name_as_text(sym.name);
+    }
+    if (typeof sym.colour === "string") {
+      out += " " + sym.colour;
+    }
+    return out;
+  }
+  var out, i, j, c, sym;
+  out = "";
+  // output core symbols with 2 way complements
+  for (i = 0; i < this.ncore; i++) {
+    c = this.complement[i];
+    if (typeof c === "number" && i < c && this.complement[c] === i) {
+      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
+    }
+  }
+  // output core symbols with no complement
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.complement[i] === "undefined") {
+      out += symbol_as_text(this.symbols[i]) + "\n";
+    }
+  }
+  // output ambiguous symbols that have comprising characters
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    if (this.symbols[i].equals.length == 0) break;
+    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
+      }
+    }
+  }
+  // output aliases of core symbols
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
+      }
+    }
+  }
+  // output gap symbols
+  i = this.symbols.length - 1;
+  if (this.symbols[i].equals.length == 0) {
+    out += symbol_as_text(this.symbols[i]) + " =\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " =\n";
+      }
+    }
+  }
+  return out;
+};
+// output the alphabet as it appears in minimal MEME format
+Alphabet.prototype.as_meme = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  if (this.equals(AlphStd.DNA)) {
+    return "ALPHABET= ACGT\n";
+  } else if (this.equals(AlphStd.PROTEIN)) {
+    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
+  } else {
+    return "ALPHABET" + 
+      (this.name != null ? " " + name_as_text(this.name) : "") + 
+      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
+      this.as_text() + "END ALPHABET\n";
+  }
+};
+
+// Returns a table showing all the letters in the alphabet
+Alphabet.prototype.as_table = function() {
+  "use strict";
+  var i, j, row, th, td, aliases, equals, sym;
+  var table = document.createElement("table");
+  // create the core symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  if (this.has_complement()) {
+    th.appendChild(document.createTextNode("Complement"));
+  }
+  row.appendChild(th);
+  // list the core symbols
+  for (i = 0; i < this.ncore; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].complement != null) {
+      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
+      td.appendChild(document.createTextNode(this.symbols[i].complement));
+    }
+    row.appendChild(td);
+  }
+  // create the ambiguous symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Matches"));
+  row.appendChild(th);
+  // list the ambiguous symbols
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    equals = this.symbols[i].equals.split('');
+    for (j = 0; j < equals.length; j++) {
+      if (j != 0) td.appendChild(document.createTextNode(' '));
+      sym = document.createElement("span");
+      sym.style.color = this.get_colour(this.get_index(equals[j]));
+      sym.appendChild(document.createTextNode(equals[j]));
+      td.appendChild(sym);
+    }
+    row.appendChild(td);
+  }
+  return table;
+};
+
+// returns a dictionary of the colours for EPS
+Alphabet.prototype._as_eps_dict = function() {
+  "use strict";
+  var i, sym, rgb;
+  var out = "/fullColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = this.get_rgb(i);
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  out += "/mutedColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = Alphabet.lighten_colour(this.get_rgb(i));
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  return out;
+};
+
+// return the alphabet name or a list of primary symbols
+Alphabet.prototype.toString = function() {
+  "use strict";
+  if (this.name != null) {
+    return this.name;
+  } else {
+    return this.get_symbols();
+  }
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Helper functions
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+// Convert a colour specified in RGB colourspace values into LAB colourspace
+Alphabet.rgb2lab = function(rgb) {
+  "use strict";
+  var xyzHelper, labHelper;
+  // XYZ helper
+  xyzHelper = function(value) {
+    if (value > 0.0445) {
+      value = (value + 0.055) / 1.055;
+      value = Math.pow(value, 2.4);
+    } else {
+      value /= 12.92;
+    }
+    value *= 100;
+    return value;
+  };
+  // lab helper
+  labHelper = function(value) {
+    if (value > 0.008856) {
+      value = Math.pow(value, 1.0 / 3.0);
+    } else {
+      value = (7.787 * value) + (16.0 / 116.0);
+    }
+    return value;
+  };
+  // convert into XYZ colourspace
+  var c1, c2, c3;
+  if (typeof rgb == "number") {
+    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
+    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
+    c3 = xyzHelper((rgb & 0xFF) / 255.0);
+  } else {
+    c1 = xyzHelper(rgb.red);
+    c2 = xyzHelper(rgb.green);
+    c3 = xyzHelper(rgb.blue);
+  }
+  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
+  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
+  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
+  // convert into Lab colourspace
+  c1 = labHelper(x / 95.047);
+  c2 = labHelper(y / 100.0);
+  c3 = labHelper(z / 108.883);
+  var l = (116.0 * c2) - 16;
+  var a = 500.0 * (c1 - c2);
+  var b = 200.0 * (c2 - c3);
+  return {"l": l, "a": a, "b": b};
+};
+
+// Convert a colour specified in HSV colourspace into RGB colourspace
+Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
+  // achromatic (grey)
+  var r = value;
+  var g = value;
+  var b = value;
+  if (sat != 0) {
+    var h = hue / 60.0;
+    var i = Math.floor(h);
+    var f = h - i;
+    var p = value * (1.0 - sat);
+    var q = value * (1.0 - (sat * f));
+    var t = value * (1.0 - (sat * (1.0 - f)));
+    if (i == 0) {
+      r = value;
+      g = t;
+      b = p;
+    } else if (i == 1) {
+      r = q;
+      g = value;
+      b = p;
+    } else if (i == 2) {
+      r = p;
+      g = value;
+      b = t;
+    } else if (i == 3) {
+      r = p;
+      g = q;
+      b = value;
+    } else if (i == 4) {
+      r = t;
+      g = p;
+      b = value;
+    } else {
+      r = value;
+      g = p;
+      b = q;
+    }
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+// Calculate a distance score between two colours in LAB colourspace
+Alphabet.lab_dist = function(lab1, lab2) {
+  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
+  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
+  var dc = c1 - c2;
+  var dl = lab1.l - lab2.l;
+  var da = lab1.a - lab2.a;
+  var db = lab1.b - lab2.b;
+  // we don't want NaN due to rounding errors so fudge things a bit...
+  var dh = 0;
+  var dh_squared = (da * da) + (db * db) - (dc * dc);
+  if (dh_squared > 0) {
+    dh = Math.sqrt(dh_squared);
+  }
+  var first = dl;
+  var second = dc / (1.0 + (0.045 * c1));
+  var third = dh / (1.0 + (0.015 * c1));
+  return Math.sqrt((first * first) + (second * second) + (third * third));
+};
+
+// convert an RGB value into a HSL value
+Alphabet.rgb2hsl = function(rgb) {
+  "use strict";
+  var min, max, delta, h, s, l, r, g, b;
+  if (typeof rgb == "number") {
+    r = ((rgb >> 16) & 0xFF) / 255.0;
+    g = ((rgb >> 8) & 0xFF) / 255.0;
+    b = (rgb & 0xFF) / 255.0;
+  } else {
+    r = rgb.red;
+    g = rgb.green;
+    b = rgb.blue;
+  }
+  min = Math.min(r, g, b);
+  max = Math.max(r, g, b);
+  delta = max - min;
+  l = min + (delta / 2);
+  if (max == min) {
+    h = 0; // achromatic (grayscale)
+    s = 0;
+  } else {
+    if (l > 0.5) {
+      s = delta / (2 - max - min);
+    } else {
+      s = delta / (max + min);
+    }
+    if (max == r) {
+      h = (g - b) / delta;
+      if (g < b) h += 6;
+    } else if (max == g) {
+      h = ((b - r) / delta) + 2;
+    } else {
+      h = ((r - g) / delta) + 4;
+    }
+    h /= 6;
+  }
+  return {"h": h, "s": s, "l": l};
+};
+
+// convert a HSL value into an RGB value
+Alphabet.hsl2rgb = function(hsl, output_object) {
+  "use strict";
+  function _hue(p, q, t) {
+    "use strict";
+    if (t < 0) t += 1;
+    else if (t > 1) t -= 1;
+    if (t < (1.0 / 6.0)) {
+      return p + ((q - p) * 6.0 * t);
+    } else if (t < 0.5) {
+      return q;
+    } else if (t < (2.0 / 3.0)) {
+      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+    } else {
+      return p;
+    }
+  }
+  var r, g, b, p, q;
+  if (hsl.s == 0) {
+    // achromatic (grayscale)
+    r = hsl.l;
+    g = hsl.l;
+    b = hsl.l;
+  } else {
+    if (hsl.l < 0.5) {
+      q = hsl.l * (1 + hsl.s);
+    } else {
+      q = hsl.l + hsl.s - (hsl.l * hsl.s);
+    }
+    p = (2 * hsl.l) - q;
+    r = _hue(p, q, hsl.h + (1.0 / 3.0));
+    g = _hue(p, q, hsl.h);
+    b = _hue(p, q, hsl.h - (1.0 / 3.0));
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+Alphabet.lighten_colour = function(rgb) {
+  "use strict";
+  var hsl = Alphabet.rgb2hsl(rgb);
+  hsl.l += (1.0 - hsl.l) * 2 / 3;
+  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
+};
+
+//======================================================================
+// end Alphabet object
+//======================================================================
+
+//======================================================================
+// start StandardAlphabet object
+//======================================================================
+
+// an extension of the alphabet object to support some additional fields 
+// only present in standard alphabets.
+var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
+  Alphabet.apply(this, [alphabet_data]);
+  this.enum_code = enum_code;
+  this.enum_name = enum_name;
+};
+StandardAlphabet.prototype = Alphabet.prototype;
+StandardAlphabet.prototype.constructor = StandardAlphabet;
+
+// A unique code for this standard alphabet.
+// This code will be a power of 2 to enable creation of bitsets for
+// a selection of standard alphabets.
+StandardAlphabet.prototype.get_code = function() {
+  return this.enum_code;
+};
+
+// A unique name for this standard alphabet.
+// this name will be all upper case and the same as the property that
+// refers to this alphabet in the AlphStd collection.
+StandardAlphabet.prototype.get_enum = function() {
+  return this.enum_name;
+};
+
+//======================================================================
+// end StandardAlphabet object
+//======================================================================
+
+// A collection of standard alphabets.
+var AlphStd = {
+  RNA: new StandardAlphabet(1, "RNA", {
+    "name": "RNA",
+    "like": "RNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
+      {"symbol": "U", "name": "Uracil", "colour": "008000",
+        "aliases": "T"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
+      {"symbol": "V", "name": "Not U", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACU"},
+      {"symbol": "D", "name": "Not C", "equals": "AGU"},
+      {"symbol": "B", "name": "Not A", "equals": "CGU"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
+      {"symbol": "K", "name": "Keto", "equals": "GU"}
+    ]
+  }), 
+  DNA: new StandardAlphabet(2, "DNA", {
+    "name": "DNA",
+    "like": "DNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
+      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
+        "aliases": "U"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
+      {"symbol": "V", "name": "Not T", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACT"},
+      {"symbol": "D", "name": "Not C", "equals": "AGT"},
+      {"symbol": "B", "name": "Not A", "equals": "CGT"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
+      {"symbol": "K", "name": "Keto", "equals": "GT"}
+    ]
+  }), 
+  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
+    "name": "Protein",
+    "like": "PROTEIN",
+    "ncore": 20,
+    "symbols": [
+      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
+      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
+      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
+      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
+      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
+      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
+      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
+      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
+      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
+      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
+      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
+      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
+      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
+      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
+      {"symbol": "S", "name": "Serine", "colour": "008000"},
+      {"symbol": "T", "name": "Threonine", "colour": "008000"},
+      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
+      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
+      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
+      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
+      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
+      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
+      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
+    ]
+  })
+};
+
+//======================================================================
+// start Symbol object
+//======================================================================
+var Symbol = function(alph_index, scale, alphabet) {
+  "use strict";
+  //variable prototype
+  this.symbol = alphabet.get_symbol(alph_index);
+  this.scale = scale;
+  this.colour = alphabet.get_colour(alph_index);
+};
+
+Symbol.prototype.get_symbol = function() {
+  "use strict";
+  return this.symbol;
+};
+
+Symbol.prototype.get_scale = function() {
+  "use strict";
+  return this.scale;
+};
+
+Symbol.prototype.get_colour = function() {
+  "use strict";
+  return this.colour;
+};
+
+Symbol.prototype.toString = function() {
+  "use strict";
+  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
+};
+
+function compare_symbol(sym1, sym2) {
+  "use strict";
+  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
+//======================================================================
+var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
+  "use strict";
+  var row, col, data, row_sum, delta, evalue_re;
+  if (typeof name !== "string") {
+    name = "";
+  }
+  this.name = name;
+  //construct
+  if (matrix instanceof Pspm) {
+    // copy constructor
+    this.alph_length = matrix.alph_length;
+    this.motif_length = matrix.motif_length;
+    this.name = matrix.name;
+    this.alt = matrix.alt;
+    this.nsites = matrix.nsites;
+    this.evalue = matrix.evalue;
+    this.ltrim = matrix.ltrim;
+    this.rtrim = matrix.rtrim;
+    this.pspm = [];
+    for (row = 0; row < matrix.motif_length; row++) {
+      this.pspm[row] = [];
+      for (col = 0; col < matrix.alph_length; col++) {
+        this.pspm[row][col] = matrix.pspm[row][col];
+      }
+    }
+    if (matrix.pssm != null) {
+      this.pssm = [];
+      for (row = 0; row < matrix.motif_length; row++) {
+        this.pspm[row] = [];
+        for (col = 0; col < matrix.alph_length; col++) {
+          this.pssm[row][col] = matrix.pssm[row][col];
+        }
+      }
+    }
+  } else {
+    // check parameters
+    if (ltrim == null) {
+      ltrim = 0;
+    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
+      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
+    }
+    if (rtrim == null) {
+      rtrim = 0;
+    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
+      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
+    }
+    if (nsites != null) {
+      if (typeof nsites !== "number" || nsites < 0) {
+        throw new Error("nsites must be a positive number, got: " + nsites);
+      } else if (nsites == 0) {
+        nsites = null;
+      }
+    }
+    if (evalue != null) {
+      if (typeof evalue === "number") {
+        if (evalue < 0) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else if (typeof evalue === "string") {
+        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+        if (!evalue_re.test(evalue)) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else {
+        throw new Error("evalue must be a non-negative number, got: " + evalue);
+      }
+    }
+    // set properties
+    this.name = name;
+    this.alt = alt;
+    this.nsites = nsites;
+    this.evalue = evalue;
+    this.ltrim = ltrim;
+    this.rtrim = rtrim;
+    if (typeof matrix === "string") {
+      // string constructor
+      data = parse_pspm_string(matrix);
+      this.alph_length = data["alph_length"];
+      this.motif_length = data["motif_length"];
+      this.pspm = data["pspm"];
+      if (this.evalue == null) {
+        if (data["evalue"] != null) {
+          this.evalue = data["evalue"];
+        } else {
+          this.evalue = 0;
+        }
+      }
+      if (this.nsites == null) {
+        if (typeof data["nsites"] === "number") {
+          this.nsites = data["nsites"];
+        } else {
+          this.nsites = 20;
+        }
+      }
+    } else {
+      // assume pspm is a nested array
+      this.motif_length = matrix.length;
+      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
+      if (this.nsites == null) {
+        this.nsites = 20;
+      }
+      if (this.evalue == null) {
+        this.evalue = 0;
+      }
+      this.pspm = [];
+      // copy pspm and check
+      for (row = 0; row < this.motif_length; row++) {
+        if (this.alph_length != matrix[row].length) {
+          throw new Error("COLUMN_MISMATCH");
+        }
+        this.pspm[row] = [];
+        row_sum = 0;
+        for (col = 0; col < this.alph_length; col++) {
+          this.pspm[row][col] = matrix[row][col];
+          row_sum += this.pspm[row][col];
+        }
+        delta = 0.1;
+        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
+            (row_sum < 1 && (1 - row_sum) > delta)) {
+          throw new Error("INVALID_SUM");
+        }
+      }
+      // copy pssm
+      if (pssm != null) {
+        this.pssm = [];
+        for (row = 0; row < this.motif_length; row++) {
+          this.pssm[row] = [];
+          for (col = 0; col < this.alph_length; col++) {
+            this.pssm[row][col] = pssm[row][col];
+          }
+        }
+      }
+    }
+  }
+};
+
+Pspm.prototype.copy = function() {
+  "use strict";
+  return new Pspm(this);
+};
+
+Pspm.prototype.reverse = function() {
+  "use strict";
+  var x, y, temp, temp_trim;
+  //reverse
+  x = 0;
+  y = this.motif_length-1;
+  while (x < y) {
+    temp = this.pspm[x];
+    this.pspm[x] = this.pspm[y];
+    this.pspm[y] = temp;
+    x++;
+    y--;
+  }
+  // reverse pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //reverse
+    x = 0;
+    y = this.motif_length-1;
+    while (x < y) {
+      temp = this.pssm[x];
+      this.pspm[x] = this.pssm[y];
+      this.pssm[y] = temp;
+      x++;
+      y--;
+    }
+  }
+  //swap triming
+  temp_trim = this.ltrim;
+  this.ltrim = this.rtrim;
+  this.rtrim = temp_trim;
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.reverse_complement = function(alphabet) {
+  "use strict";
+  var x, y, temp, i, row, c, temp_trim;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  if (!alphabet.has_complement()) {
+    throw new Error("The specified alphabet can not be complemented.");
+  }
+  // reverse motif
+  this.reverse();
+  //complement
+  for (x = 0; x < this.motif_length; x++) {
+    row = this.pspm[x];
+    for (i = 0; i < row.length; i++) {
+      c = alphabet.get_complement(i);
+      if (c < i) continue;
+      temp = row[i];
+      row[i] = row[c];
+      row[c] = temp;
+    }
+  }
+  // complement pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //complement
+    for (x = 0; x < this.motif_length; x++) {
+      row = this.pssm[x];
+      for (i = 0; i < row.length; i++) {
+        c = alphabet.get_complement(i);
+        if (c < i) continue;
+        temp = row[i];
+        row[i] = row[c];
+        row[c] = temp;
+      }
+    }
+  }
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.get_stack = function(position, alphabet, ssc) {
+  "use strict";
+  var row, stack_ic, alphabet_ic, stack, i, sym;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  row = this.pspm[position];
+  stack_ic = this.get_stack_ic(position, alphabet);
+  if (ssc) stack_ic -= this.get_error(alphabet);
+  alphabet_ic = alphabet.get_ic();
+  stack = [];
+  for (i = 0; i < this.alph_length; i++) {
+    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;
+};
+
+Pspm.prototype.get_stack_ic = function(position, alphabet) {
+  "use strict";
+  var row, H, i;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size fo the pspm.");
+  }
+  row = this.pspm[position];
+  H = 0;
+  for (i = 0; i < this.alph_length; i++) {
+    if (row[i] === 0) {
+      continue;
+    }
+    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
+  }
+  return alphabet.get_ic() - H;
+};
+
+Pspm.prototype.get_error = function(alphabet) {
+  "use strict";
+  if (this.nsites === 0) {
+    return 0;
+  }
+  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
+};
+
+Pspm.prototype.get_motif_length = function() {
+  "use strict";
+  return this.motif_length;
+};
+
+Pspm.prototype.get_alph_length = function() {
+  "use strict";
+  return this.alph_length;
+};
+
+Pspm.prototype.get_left_trim = function() {
+  "use strict";
+  return this.ltrim;
+};
+
+Pspm.prototype.get_right_trim = function() {
+  "use strict";
+  return this.rtrim;
+};
+
+Pspm.prototype.as_best_match = function(alphabet) {
+  "use strict";
+  var match, odds, best_odds, best_index;
+  var i, j;
+  match = "";
+  for (i = 0; i < this.motif_length; i++) {
+    best_index = 0;
+    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
+    for (j = 1; j < this.alph_length; j++) {
+      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
+      if (odds > best_odds) {
+        best_odds = odds;
+        best_index = j;
+      }
+    }
+    match += alphabet.get_symbol(best_index);
+  }
+  return match;
+};
+
+Pspm.prototype.as_count_matrix = function() {
+  "use strict";
+  var count, count_text, text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      count = Math.round(this.nsites * this.pspm[i][j]);
+      count_text = "" + count;
+      // pad up to length of 4
+      if (count_text.length < 4) {
+        text += (new Array(5 - count_text.length)).join(" ") + count_text;
+      } else {
+        text += count_text;
+      }
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_probability_matrix = function() {
+  "use strict";
+  var text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      text += this.pspm[i][j].toFixed(6);
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
+  "use strict";
+  var me, score, out, row, col, score_text;
+  me = this;
+  if (typeof this.pssm === "undefined") {
+    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
+      throw new Error("The alphabet is required to generate the pssm.");
+    }
+    if (typeof pseudo === "undefined") {
+      pseudo = 0.01;
+    } else if (typeof pseudo !== "number" || pseudo < 0) {
+      throw new Error("Expected positive number for pseudocount");
+    }
+    score = function(row, col) {
+      "use strict";
+      var p, bg, p2;
+      p = me.pspm[row][col];
+      bg = alphabet.get_bg_freq(col);
+      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
+      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
+    };
+  } else {
+    score = function(row, col) {
+      "use strict";
+      return me.pssm[row][col];
+    };
+  }
+  out = "";
+  for (row = 0; row < this.motif_length; row++) {
+    for (col = 0; col < this.alph_length; col++) {
+      if (col !== 0) {
+        out += " ";
+      }
+      score_text = "" + score(row, col);
+      // pad out to 6 characters
+      if (score_text.length < 6) {
+        out += (new Array(7 - score_text.length)).join(" ") + score_text;
+      } else {
+        out += score_text;
+      }
+    }
+    out += "\n";
+  }
+  return out;
+}
+
+Pspm.prototype.as_pspm = function() {
+  "use strict";
+  return "letter-probability matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + " nsites= " + this.nsites + 
+      " E= " + (typeof this.evalue === "number" ? 
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_probability_matrix();
+};
+
+Pspm.prototype.as_pssm = function(alphabet, pseudo) {
+  "use strict";
+  return "log-odds matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + 
+      " E= " + (typeof this.evalue == "number" ?
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_score_matrix(alphabet, pseudo);
+};
+
+Pspm.prototype.as_meme = function(options) {
+  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
+  var out, alen, i;
+  // get the options
+  if (typeof options !== "object" || options === null) {
+    options = {};
+  }
+  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
+  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
+  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
+  if (!with_pspm && !with_pssm) with_pspm = true;
+  if (with_header) {
+    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
+      version = options["version"];
+    } else if (typeof options["version"] === "number") {
+      version = options["version"].toFixed(0);
+    } else {
+      version = "4";
+    }
+    if (typeof options["strands"] === "number" && options["strands"] === 1) {
+      strands = 1;
+    } else {
+      strands = 2;
+    }
+    if (typeof options["bg_source"] === "string") {
+      bg_source = options["bg_source"];
+    } else {
+      bg_source = "unknown source";
+    }
+    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
+        && options["alphabet"] instanceof Alphabet) {
+      alphabet = options["alphabet"];
+    } else {
+      throw new Error("The alphabet is required to generate the header.");
+    }
+  }
+  // now create the output
+  out = "";
+  if (with_header) {
+    out = "MEME version " + version + "\n\n";
+    out += alphabet.as_meme() + "\n";
+    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
+      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
+    }
+    out += "Background letter frequencies (from " + bg_source + "):\n";
+    alen = alphabet.get_size_core();
+    for (i = 0; i < alen; i++) {
+      if (i !== 0) {
+        if (i % 9 === 0) { // maximum of nine entries per line
+          out += "\n";
+        } else {
+          out += " ";
+        }
+      }
+      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
+    }
+  }
+  out += "\n\n";
+  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
+  if (with_pssm) {
+    out += "\n\n";
+    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
+  }
+  if (with_pspm) {
+    out += "\n\n";
+    out += this.as_pspm();
+  }
+  return out;
+}
+
+Pspm.prototype.toString = function() {
+  "use strict";
+  var str, i, row;
+  str = "";
+  for (i = 0; i < this.pspm.length; i++) {
+    row = this.pspm[i];
+    str += row.join("\t") + "\n";
+  }
+  return str;
+};
+
+function parse_pspm_properties(str) {
+  "use strict";
+  var parts, i, eqpos, before, after, properties, prop, num, num_re;
+  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+  parts = trim(str).split(/\s+/);
+  // split up words containing =
+  for (i = 0; i < parts.length;) {
+    eqpos = parts[i].indexOf("=");
+    if (eqpos != -1) {
+      before = parts[i].substr(0, eqpos);
+      after = parts[i].substr(eqpos+1);
+      if (before.length > 0 && after.length > 0) {
+        parts.splice(i, 1, before, "=", after);
+        i += 3;
+      } else if (before.length > 0) {
+        parts.splice(i, 1, before, "=");
+        i += 2;
+      } else if (after.length > 0) {
+        parts.splice(i, 1, "=", after);
+        i += 2;
+      } else {
+        parts.splice(i, 1, "=");
+        i++;
+      }
+    } else {
+      i++;
+    }
+  }
+  properties = {};
+  for (i = 0; i < parts.length; i += 3) {
+    if (parts.length - i < 3) {
+      throw new Error("Expected PSPM property was incomplete. "+
+          "Remaing parts are: " + parts.slice(i).join(" "));
+    }
+    if (parts[i+1] !== "=") {
+      throw new Error("Expected '=' in PSPM property between key and " +
+          "value but got " + parts[i+1]); 
+    }
+    prop = parts[i].toLowerCase();
+    num = parts[i+2];
+    if (!num_re.test(num)) {
+      throw new Error("Expected numeric value for PSPM property '" + 
+          prop + "' but got '" + num + "'");
+    }
+    properties[prop] = num;
+  }
+  return properties;
+}
+
+function parse_pspm_string(pspm_string) {
+  "use strict";
+  var header_re, lines, first_line, line_num, col_num, alph_length, 
+      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
+      j, prob;
+  header_re = /^letter-probability\s+matrix:(.*)$/i;
+  lines = pspm_string.split(/\n/);
+  first_line = true;
+  line_num = 0;
+  col_num = 0;
+  alph_length;
+  motif_length;
+  nsites;
+  evalue;
+  pspm = [];
+  for (i = 0; i < lines.length; i++) {
+    line = trim(lines[i]);
+    if (line.length === 0) { 
+      continue;
+    }
+    // check the first line for a header though allow matrices without it
+    if (first_line) {
+      first_line = false;
+      match = header_re.exec(line);
+      if (match !== null) {
+        props = parse_pspm_properties(match[1]);
+        if (props.hasOwnProperty("alength")) {
+          alph_length = parseFloat(props["alength"]);
+          if (alph_length != 4 && alph_length != 20) {
+            throw new Error("PSPM property alength should be 4 or 20" +
+                " but got " + alph_length);
+          }
+        }
+        if (props.hasOwnProperty("w")) {
+          motif_length = parseFloat(props["w"]);
+          if (motif_length % 1 !== 0 || motif_length < 1) {
+            throw new Error("PSPM property w should be an integer larger " +
+                "than zero but got " + motif_length);
+          }
+        }
+        if (props.hasOwnProperty("nsites")) {
+          nsites = parseFloat(props["nsites"]);
+          if (nsites <= 0) {
+            throw new Error("PSPM property nsites should be larger than " +
+                "zero but got " + nsites);
+          }
+        }
+        if (props.hasOwnProperty("e")) {
+          evalue = props["e"];
+          if (evalue < 0) {
+            throw new Error("PSPM property evalue should be " +
+                "non-negative but got " + evalue);
+          }
+        }
+        continue;
+      }
+    }
+    pspm[line_num] = [];
+    col_num = 0;
+    parts = line.split(/\s+/);
+    for (j = 0; j < parts.length; j++) {
+      prob = parseFloat(parts[j]);
+      if (prob != parts[j] || prob < 0 || prob > 1) {
+        throw new Error("Expected probability but got '" + parts[j] + "'"); 
+      }
+      pspm[line_num][col_num] = prob;
+      col_num++;
+    }
+    line_num++;
+  }
+  if (typeof motif_length === "number") {
+    if (pspm.length != motif_length) {
+      throw new Error("Expected PSPM to have a motif length of " + 
+          motif_length + " but it was actually " + pspm.length);
+    }
+  } else {
+    motif_length = pspm.length;
+  }
+  if (typeof alph_length !== "number") {
+    alph_length = pspm[0].length;
+    if (alph_length != 4 && alph_length != 20) {
+      throw new Error("Expected length of first row in the PSPM to be " +
+          "either 4 or 20 but got " + alph_length);
+    }
+  }
+  for (i = 0; i < pspm.length; i++) {
+    if (pspm[i].length != alph_length) {
+      throw new Error("Expected PSPM row " + i + " to have a length of " + 
+          alph_length + " but the length was " + pspm[i].length);
+    }
+  }
+  return {"pspm": pspm, "motif_length": motif_length, 
+    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
+}
+//======================================================================
+// end Pspm object
+//======================================================================
+
+//======================================================================
+// start Logo object
+//======================================================================
+
+var Logo = function(alphabet, options) {
+  "use strict";
+  this.alphabet = alphabet;
+  this.fine_text = "";
+  this.x_axis = 1;
+  this.y_axis = true;
+  this.xlate_nsyms = 1;
+  this.xlate_start = null;
+  this.xlate_end = null;
+  this.pspm_list = [];
+  this.pspm_column = [];
+  this.rows = 0;
+  this.columns = 0;
+  if (typeof options === "string") {
+    // the old method signature had fine_text here so we support that
+    this.fine_text = options;
+  } else if (typeof options === "object" && options != null) {
+    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
+    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
+    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
+    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
+    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
+    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
+    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
+  }
+};
+
+Logo.prototype.add_pspm = function(pspm, column) {
+  "use strict";
+  var col;
+  if (typeof column === "undefined") {
+    column = 0;
+  } else if (column < 0) {
+    throw new Error("Column index out of bounds.");
+  }
+  this.pspm_list[this.rows] = pspm;
+  this.pspm_column[this.rows] = column;
+  this.rows++;
+  col = column + pspm.get_motif_length();
+  if (col > this.columns) {
+    this.columns = col;
+  }
+};
+
+Logo.prototype.get_columns = function() {
+  "use strict";
+  return this.columns;
+};
+
+Logo.prototype.get_xlate_nsyms = function() {
+  "use strict";
+  return this.xlate_nsyms;
+};
+
+Logo.prototype.get_xlate_start = function() {
+  "use strict";
+  return (this.xlate_start != null ? this.xlate_start : 0);
+};
+
+Logo.prototype.get_xlate_end = function() {
+  "use strict";
+  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
+};
+
+Logo.prototype.get_xlate_columns = function() {
+  "use strict";
+  return this.get_xlate_end() - this.get_xlate_start();
+};
+
+Logo.prototype.get_rows = function() {
+  "use strict";
+  return this.rows;
+};
+
+Logo.prototype.get_pspm = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_list[row_index];
+};
+
+Logo.prototype.get_offset = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_column[row_index];
+};
+
+Logo.prototype._as_eps_data = function(ssc, errbars) {
+  var i, j, pos, stack_pos, pspm, stack, sym, out;
+  out = "";
+  for (i = 0; i < this.rows; i++) {
+    out += "\nStartLine\n";
+    // Indent
+    for (j = 0; j < this.pspm_column[i]; j++) {
+      out += "() startstack\nendstack\n\n";
+    }
+    pspm = this.pspm_list[i];
+    if (pspm.get_left_trim() > 0) {
+      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
+    }
+    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
+      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
+        out += "DrawTrimEdge\nRestoreColour\n";
+      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
+        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
+      }
+      out += "(" + (pos + 1) + ") startstack\n";
+      stack = pspm.get_stack(pos, this.alphabet, ssc);
+      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
+        sym = stack[stack_pos];
+        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
+      }
+      if (errbars) {
+        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
+      }
+      out += "endstack\n\n";
+    }
+    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
+      out += "RestoreColour\n";
+    }
+    out += "EndLine\n";
+  }
+  return out;
+};
+
+Logo.prototype.as_eps = function(options) {
+  "use strict";
+  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
+  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
+  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
+
+  var LOGOHEIGHT = 7.5; // default height of line in cm
+  var cm2pts, height, width, now, ssc, errbars;
+  if (typeof options === "undefined") {
+    options = {};
+  }
+  cm2pts = 72 / 2.54;
+  if (typeof options.logo_height == "number") {
+    height = options.logo_height;
+  } else {
+    height = LOGOHEIGHT * this.rows;
+  }
+  if (typeof options.logo_width == "number") {
+    width = options.logo_width;
+  } else {
+    width = this.columns + 2;
+  }
+  now = new Date();
+  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
+  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
+  var values = {
+    "LOGOHEIGHT": height,
+    "LOGOWIDTH": width,
+    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
+    "BOUNDINGWIDTH": Math.round(width * cm2pts),
+    "LOGOLINEHEIGHT": (height / this.rows),
+    "CHARSPERLINE": this.columns,
+    "BARBITS": this.alphabet.get_ic(),
+    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
+    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
+    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
+    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
+    "TITLE": (typeof options.title == "string" ? options.title : ""),
+    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
+    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
+    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
+    "SSC": ssc,
+    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
+    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
+    "ERRBAR": errbars,
+    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
+    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
+    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
+    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
+    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
+    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
+    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
+    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
+    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
+    "COLORDICT": this.alphabet._as_eps_dict(),
+    "DATA": this._as_eps_data(ssc, errbars)
+  };
+  // now this requires that the script containing the template has been imported!
+  return motif_logo_template(values);
+};
+
+//======================================================================
+// end Logo object
+//======================================================================
+
+// calculate the exact size (in pixels) of an object drawn on the
+// canvas assuming that the background of the canvas is transparent.
+function canvas_bounds(ctx, cwidth, cheight) {
+  "use strict";
+  var data, r, c, top_line, bottom_line, left_line, right_line, 
+      txt_width, txt_height;
+
+  // extract the image data
+  data = ctx.getImageData(0, 0, cwidth, cheight).data;
+
+  // set initial values
+  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
+  txt_width = 0; txt_height = 0;
+
+  // Find the top-most line with a non-transparent 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;
+    }
+  }
+  
+  // Only bother looking if we found at least one set pixel... 
+  if (top_line != -1) {
+
+    //find the last line with a non-transparent pixel
+    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;
+      }
+    }
+    // calculate height
+    txt_height = bottom_line - top_line + 1;
+
+    // Find the left-most line with a non-transparent pixel
+    for (c = 0; c < cwidth; c++) {
+      for (r = top_line; r <= bottom_line; 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-transparent pixel
+    for (c = cwidth-1; c >= left_line; c--) {
+      for(r = top_line; r <= bottom_line; 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};
+}
+
+//======================================================================
+// 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).
+var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
+  "use strict";
+  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
+      i, sym, size, tenpercent, avg_width, scale, 
+      target_width, target_height;
+  //variable prototypes
+  this.alphabet = alphabet;
+  this.scale = logo_scale;
+  this.sym_cache = {};
+  this.stack_num_cache = [];
+  this.scale_num_cache = [];
+  // size of canvas
+  default_size = 60; // size of measuring canvas
+  safety_pad = 20; // pixels to pad around so we don't miss the edges
+  // create a canvas to do our measuring
+  canvas = document.createElement("canvas");
+  if (!canvas.getContext) throw new Error("No canvas support");
+  canvas.width = default_size + 2 * safety_pad;
+  canvas.height = default_size + 2 * safety_pad;
+  middle = Math.round(canvas.width / 2);
+  baseline = Math.round(canvas.height - safety_pad);
+  ctx = canvas.getContext('2d');
+  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
+  ctx.font = font;
+  ctx.textAlign = "center";
+  ctx.translate(middle, baseline);
+  // list of widths
+  widths = [];
+  sizes = [];
+  //now measure each letter in the alphabet
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    // reset the canvas
+    ctx.clearRect(0, 0, canvas.width, canvas.height);
+    ctx.fillStyle = alphabet.get_colour(i);
+    // draw the test text
+    ctx.fillText(alphabet.get_symbol(i), 0, 0);
+    //measure
+    size = canvas_bounds(ctx, canvas.width, canvas.height);
+    if (size.width === 0) throw new Error("Invisible symbol!");
+    widths.push(size.width);
+    sizes[i] = size;
+  }
+  //sort the widths
+  widths.sort(function(a,b) {return a - b;});
+  //drop 10% of the items off each end
+  tenpercent = Math.floor(widths.length / 10);
+  for (i = 0; i < tenpercent; ++i) {
+    widths.pop();
+    widths.shift();
+  }
+  //calculate average width
+  avg_width = 0;
+  for (i = 0; i < widths.length; ++i) {
+    avg_width += widths[i];
+  }
+  avg_width /= widths.length;
+  // calculate the target width
+  target_width = width * this.scale * 2;
+  // calculate scales
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    sym = alphabet.get_symbol(i);
+    size = sizes[i];
+    // calculate scale
+    scale = target_width / Math.max(avg_width, size.width);
+    // estimate scaled height
+    target_height = size.height * scale;
+    // create an appropriately sized canvas
+    canvas = document.createElement("canvas");
+    canvas.width = target_width;
+    canvas.height = target_height + safety_pad * 2;
+    // calculate the middle
+    middle = Math.round(canvas.width / 2);
+    // calculate the baseline
+    baseline = Math.round(canvas.height - safety_pad);
+    // get the context and prepare to draw the rasterized text
+    ctx = canvas.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 text
+    ctx.fillText(sym, 0, 0);
+    ctx.restore();
+    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
+  }
+};
+
+RasterizedAlphabet.prototype.get_alphabet = function() {
+  return this.alphabet;
+};
+
+RasterizedAlphabet.prototype.get_scale = function() {
+  return this.scale;
+};
+
+RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
+  "use strict";
+  var entry, image, size;
+  entry = this.sym_cache[letter];
+  image = entry.image;
+  size = entry.size;
+  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
+};
+
+RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
+  var image, image_ctx, text_length;
+  if (index >= this.stack_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.save();
+    image_ctx.font = font;
+    text_length = image_ctx.measureText("" + (index + 1)).width;
+    image_ctx.restore();
+    // resize the canvas to fit
+    image.width = Math.ceil(stack_width);
+    image.height = Math.ceil(text_length);
+    // draw the text
+    image_ctx = image.getContext('2d');
+    image_ctx.translate(Math.round(stack_width / 2), 0);
+    image_ctx.font = font;
+    image_ctx.textBaseline = "middle";
+    image_ctx.textAlign = "right";
+    image_ctx.rotate(-(Math.PI / 2));
+    image_ctx.fillText("" + (index + 1), 0, 0);
+    this.stack_num_cache[index] = image;
+  } else {
+    image = this.stack_num_cache[index];
+  }
+  ctx.drawImage(image, 0, 0);
+}
+
+RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
+  var image, image_ctx, text_size, m_length;
+  if (num >= this.scale_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.font = font;
+    text_size = image_ctx.measureText("" + num);
+    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
+    } else {
+      // measure width of 'm' to approximate height, we double it later anyway
+      m_length = image_ctx.measureText("m").width;
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(2 * m_length);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.textBaseline = "middle";
+      image_ctx.fillText("" + num, image.width, m_length);
+    }
+    this.scale_num_cache[num] = image;
+  } else {
+    image = this.scale_num_cache[num];
+  }
+  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
+}
+
+//======================================================================
+// end RasterizedAlphabet
+//======================================================================
+
+//======================================================================
+// start LogoMetrics object
+//======================================================================
+
+var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
+  "use strict";
+  var i, row_height;
+  //variable prototypes
+  this.pad_top = (has_names ? 5 : 0);
+  this.pad_left = (y_axis ? 10 : 0);
+  this.pad_right = (has_finetext ? 15 : 0);
+  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_axis = y_axis;
+  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_axis = x_axis;
+  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;
+  //calculate the width of the y axis numbers
+  ctx.font = this.y_num_font;
+  for (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)
+  if (x_axis == 1) {
+    ctx.font = this.x_num_font;
+    for (i = 1; i <= logo_columns; i++) {
+      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
+    }
+  } else if (x_axis == 0) {
+    this.x_num_height = 4;
+    this.x_num_width = 4;
+  } else {
+    this.x_num_height = 0;
+    this.x_num_width = 0;
+  }
+  
+  //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) {
+    row_height = this.stack_height + this.pad_middle;
+    if (has_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_axis ? this.y_num_height/2 : 0);
+
+  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
+  if (has_names) {
+    this.summed_height += fine_txt_total + this.name_height;
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + this.name_spacer);
+  } else {
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + fine_txt_total);
+  }
+
+  //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;
+  if (this.y_axis) {
+    //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;
+
+};
+
+//======================================================================
+// end LogoMetrics object
+//======================================================================
+
+//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
+function image_ok(img) {
+  "use strict";
+  // 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) {
+  "use strict";
+  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, raster) {
+  "use strict";
+  var tic_height, i;
+  tic_height = metrics.stack_height / alphabet_ic;
+  ctx.save();
+  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.rotate(-(Math.PI / 2));
+  ctx.textAlign = "center";
+  ctx.fillText("bits", 0, 0);
+  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);
+  for (i = 0; i <= alphabet_ic; i++) {
+    //draw the number
+    ctx.save();
+    ctx.translate(-1, 0);
+    raster.draw_scale_num(ctx, metrics.y_num_font, i);
+    ctx.restore();
+    //draw the tic
+    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
+    //prepare for next tic
+    ctx.translate(0, -tic_height);
+  }
+  ctx.restore();
+
+  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
+
+  ctx.restore();
+}
+
+function draw_stack_num(ctx, metrics, row_index, raster) {
+  "use strict";
+  ctx.save();
+  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
+  if (metrics.x_axis == 1) {
+    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
+  } else if (metrics.x_axis == 0) {
+    // draw dots instead of the numbers (good for small logos)
+    ctx.beginPath();
+    var radius = Math.round(metrics.x_num_height / 2);
+    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
+    ctx.fill();
+  }
+  ctx.restore();
+}
+
+function draw_stack(ctx, metrics, symbols, raster) {
+  "use strict";
+  var preferred_pad, sym_min, i, sym, sym_height, pad;
+  preferred_pad = 0;
+  sym_min = 5;
+
+  ctx.save();//1
+  ctx.translate(0, metrics.stack_height);
+  for (i = 0; i < symbols.length; i++) {
+    sym = symbols[i];
+    sym_height = metrics.stack_height * sym.get_scale();
+    
+    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
+    //translate past the padding
+    ctx.translate(0, -(pad/2));
+  }
+  ctx.restore();//1
+}
+
+function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
+  "use strict";
+  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
+  dx = x2 - x1;
+  dy = y2 - y1;
+  tlen = Math.pow(dx*dx + dy*dy, 0.5);
+  theta = Math.atan2(dy,dx);
+  mulx = Math.cos(theta);
+  muly = Math.sin(theta);
+  lx = [];
+  ly = [];
+  for (i = 0; i < pattern; ++i) {
+    lx.push(pattern[i] * mulx);
+    ly.push(pattern[i] * muly);
+  }
+  i = start;
+  x = x1;
+  y = y1;
+  len = 0;
+  ctx.beginPath();
+  while (len + pattern[i] < tlen) {
+    ctx.moveTo(x, y);
+    x += lx[i];
+    y += ly[i];
+    ctx.lineTo(x, y);
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+    x += lx[i];
+    y += ly[i];
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+  }
+  if (len < tlen) {
+    ctx.moveTo(x, y);
+    x += mulx * (tlen - len);
+    y += muly * (tlen - len);
+    ctx.lineTo(x, y);
+  }
+  ctx.stroke();
+}
+
+function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
+  "use strict";
+  var left_size = left_end - left_start;
+  var right_size = right_end - right_start;
+  var line_x;
+
+  ctx.save();//s8
+  ctx.fillStyle = "rgb(240, 240, 240)";
+  if (left_size > 0) {
+    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
+  }
+  if (right_size > 0) {
+    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
+  }
+  ctx.fillStyle = "rgb(51, 51, 51)";
+  if (left_size > 0 && left_divider) {
+    line_x = (left_end * metrics.stack_width) - 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  if (right_size > 0 && right_divider) {
+    line_x = (right_start * metrics.stack_width) + 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  ctx.restore();//s8
+}
+
+function size_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var draw_name, draw_finetext, metrics;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  if (canvas.width !== 0 && canvas.height !== 0) {
+    return;
+  }
+  metrics = new LogoMetrics(canvas.getContext('2d'), 
+      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
+    } else if (canvas.height === 0) {
+      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
+    }
+  }
+}
+
+function draw_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
+      offset, col_index, motif_position, ssc;
+  ssc = false;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  ctx = canvas.getContext('2d');
+  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
+  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      scale = 1;
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      scale = canvas.height / metrics.summed_height;
+      canvas.width = metrics.summed_width * scale;
+    } else if (canvas.height === 0) {
+      scale = canvas.width / metrics.summed_width;
+      canvas.height = metrics.summed_height * scale;
+    } else {
+      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
+    }
+  }
+  // cache the raster based on the assumption that we will be drawing a lot
+  // of logos the same size and alphabet
+  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
+    draw_logo_on_canvas.raster_cache = [];
+  }
+  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
+    raster = draw_logo_on_canvas.raster_cache[i];
+    if (raster.get_alphabet().equals(logo.alphabet) &&
+        Math.abs(raster.get_scale() - scale) < 0.1) break;
+    raster = null;
+  }
+  if (raster == null) {
+    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
+    draw_logo_on_canvas.raster_cache.push(raster);
+  }
+  ctx = canvas.getContext('2d');
+  ctx.save();//s1
+  ctx.scale(scale, scale);
+  ctx.save();//s2
+  ctx.save();//s7
+  //create margin
+  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
+  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
+    pspm = logo.get_pspm(pspm_i);
+    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
+      ctx.font = metrics.name_font;
+      ctx.textAlign = "center";
+      ctx.fillText(pspm.name, 0, 0);
+      ctx.restore();//s4
+      ctx.translate(0, Math.round(metrics.name_height + 
+          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
+    }
+    //draw scale
+    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
+    ctx.save();//s5
+    //translate across past the scale
+    if (logo.y_axis) {
+      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
+        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
+    }
+    //draw the trimming background
+    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
+      var left_start = offset * logo.get_xlate_nsyms();
+      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
+      var left_divider = true;
+      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
+        // no overlap
+        left_start = 0;
+        left_end = 0;
+        left_divider = false;
+      } else {
+        if (left_start < logo.get_xlate_start()) {
+          left_start = logo.get_xlate_start();
+        }
+        if (left_end > logo.get_xlate_end()) {
+          left_end = logo.get_xlate_end();
+          left_divider = false;
+        }
+        left_start -= logo.get_xlate_start();
+        left_end -= logo.get_xlate_start();
+        if (left_end < left_start) {
+          left_start = 0;
+          left_end = 0;
+          left_divider = false;
+        }
+      }
+      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
+      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
+      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
+      var right_divider = true;
+      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
+        // no overlap
+        right_start = 0;
+        right_end = 0;
+        right_divider = false;
+      } else {
+        if (right_start < logo.get_xlate_start()) {
+          right_start = logo.get_xlate_start();
+          right_divider = false;
+        }
+        if (right_end > logo.get_xlate_end()) {
+          right_end = logo.get_xlate_end();
+        }
+        right_start -= logo.get_xlate_start();
+        right_end -= logo.get_xlate_start();
+        if (right_end < right_start) {
+          right_start = 0;
+          right_end = 0;
+          right_divider = false;
+        }
+      }
+      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
+    }
+    //draw letters
+    var xlate_col;
+    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
+      ctx.translate(metrics.stack_pad_left,0);
+      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
+      if (xlate_col % logo.get_xlate_nsyms() == 0) {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          motif_position = col_index - offset;
+          draw_stack_num(ctx, metrics, motif_position, raster);
+          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
+        }
+      } else {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          ctx.save();// s5.1
+          ctx.translate(0, Math.round(metrics.stack_height));
+          // TODO draw a dot or dash or something to indicate continuity of the motif
+          ctx.restore(); //s5.1
+        }
+      }
+      ctx.translate(Math.round(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
+  if (logo.fine_text.length > 0) {
+    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) {
+  "use strict";
+  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) {
+  "use strict";
+  var logo = new Logo(alphabet, fine_text);
+  logo.add_pspm(pspm);
+  return logo;
+}
+
+function logo_2(alphabet, fine_text, target, query, query_offset) {
+  "use strict";
+  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) {
+  "use strict";
+  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, null, 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) {
+  "use strict";
+  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, null, scale);
+  //replace the element with the canvas
+  element.parentNode.replaceChild(canvas, element);
+}
+
+/*
+ * Fast string trimming implementation found at
+ * http://blog.stevenlevithan.com/archives/faster-trim-javascript
+ *
+ * Note that regex is good at removing leading space but
+ * bad at removing trailing space as it has to first go through
+ * the whole string.
+ */
+function trim (str) {
+  "use strict";
+  var ws, i;
+  str = str.replace(/^\s\s*/, '');
+  ws = /\s/; i = str.length;
+  while (ws.test(str.charAt(--i)));
+  return str.slice(0, i + 1);
+}
+</script>
+    <script>
+var current_motif = 0;
+var dreme_alphabet = new Alphabet(data.alphabet, data.control_db.freqs);
+
+/*
+ * Create a pspm for the given motif data
+ */
+function motif_pspm(m) {
+  return new Pspm(m.pwm, m.id, 0, 0, m.nsites, m.evalue);
+}
+
+/*
+ * Create a count matrix from the given motif data
+ */
+function motif_count_matrix(motif) {
+  return motif_pspm(motif).as_count_matrix();
+}
+
+/*
+ * Create a probablity matrix from the given motif data
+ */
+function motif_prob_matrix(motif) {
+  return motif_pspm(motif).as_probability_matrix();
+}
+
+/*
+ * Create a minimal meme format motif from the given motif data
+ */
+function motif_minimal_meme(motif) {
+  return motif_pspm(motif).as_meme({
+    "with_header": true, 
+    "with_pspm": true,
+    "with_pssm": false,
+    "version": data["version"],
+    "alphabet": dreme_alphabet,
+    "strands": (data.options.revcomp ? 2 : 1)
+  });
+}
+
+/*
+ * Fill in a template variable
+ */
+function set_tvar(template, tvar, value) {
+  var node;
+  node = find_child(template, tvar);
+  if (node === null) {
+    throw new Error("Template does not contain variable " + tvar);
+  }
+  node.innerHTML = "";
+  if (typeof value !== "object") {
+    node.appendChild(document.createTextNode(value));
+  } else {
+    node.appendChild(value);
+  }
+}
+
+/*
+ * Make a canvas with the motif logo drawn on it. 
+ */
+function make_logo(motif, height, rc) {
+  var pspm = new Pspm(motif["pwm"]);
+  if (rc) pspm = pspm.copy().reverse_complement(dreme_alphabet);
+  var logo = new Logo(dreme_alphabet);
+  logo.add_pspm(pspm, 0);
+  var canvas = document.createElement('canvas');
+  canvas.height = height;
+  canvas.width = 0;
+  draw_logo_on_canvas(logo, canvas, false);
+  return canvas;
+}
+
+/*
+ * Create a button designed to contain a single symbol
+ */
+function make_sym_btn(symbol, title, action) {
+  var box, sbox;
+  box = document.createElement("div");
+  box.tabIndex = 0;
+  box.className = "sym_btn";
+  sbox = document.createElement("span");
+  if (typeof symbol == "string") {
+    sbox.appendChild(document.createTextNode(symbol));
+  } else {
+    sbox.appendChild(symbol);
+  }
+  box.appendChild(sbox);
+  box.title = title;
+  box.addEventListener('click', action, false);
+  box.addEventListener('keydown', action, false);
+  return box;
+}
+
+/*
+ * Create a pair of text spans with different classes.
+ * This is useful when using CSS to only display one of them.
+ */
+function text_pair(txt1, cls1, txt2, cls2) {
+  var container, part1, part2;
+  container = document.createElement("span");
+  part1 = document.createElement("span");
+  part1.appendChild(document.createTextNode(txt1));
+  part1.className = cls1;
+  container.appendChild(part1);
+  part2 = document.createElement("span");
+  part2.appendChild(document.createTextNode(txt2));
+  part2.className = cls2;
+  container.appendChild(part2);
+  return container;
+}
+
+/*
+ * Make a colourised sequence.
+ */
+function make_seq(seq) {
+  var i, j, letter, lbox, sbox;
+  sbox = document.createElement("span");
+  for (i = 0; i < seq.length; i = j) {
+    letter = seq.charAt(i);
+    for (j = i+1; j < seq.length; j++) {
+      if (seq.charAt(j) !== letter) {
+        break;
+      }
+    }
+    lbox = document.createElement("span");
+    lbox.style.color = dreme_alphabet.get_colour(dreme_alphabet.get_index(letter));
+    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
+    sbox.appendChild(lbox);
+  }
+  return sbox;
+}
+
+/*
+ * Create a description element taking into account the newlines in the source text.
+ */
+function make_description(text) {
+  var i, j, lines, p;
+  var container = document.createElement("div");
+  var paragraphs = text.split(/\n\n+/);
+  for (i = 0; i < paragraphs.length; i++) {
+    lines = paragraphs[i].split(/\n/);
+    p = document.createElement("p");
+    p.appendChild(document.createTextNode(lines[0]));
+    for (j = 1; j < lines.length; j++) {
+      p.appendChild(document.createElement("br"));
+      p.appendChild(document.createTextNode(lines[j]));
+    }
+    container.appendChild(p);
+  }
+  return container;
+}
+
+/*
+ * Make the table header for the discovered motifs.
+ */
+function make_motif_header() {
+  var row = document.createElement("tr");
+  add_text_header_cell(row, "", "", "motif_ordinal");
+  add_text_header_cell(row, "Motif", "pop_motifs_word", "motif_word");
+  add_text_header_cell(row, "Logo", "pop_motifs_logo", "motif_logo");
+  if (data.options.revcomp) {
+    add_text_header_cell(row, "RC Logo", "pop_motifs_rc_logo", "motif_logo");
+  }
+  add_text_header_cell(row, "E-value", "pop_motifs_evalue", "motif_evalue");
+  add_text_header_cell(row, "Unerased E-value", "pop_motifs_uevalue", "motif_evalue");
+  add_text_header_cell(row, "More", "pop_more", "motif_more");
+  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
+  row.className = "more";
+  return row;
+}
+
+/*
+ * Make a compact motif summary row for the discovered motifs.
+ */
+function make_motif_row(tbody, ordinal, motif) {
+  var row = document.createElement("tr");
+  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
+  add_text_cell(row, motif["id"], "motif_word");
+  add_cell(row, make_logo(motif, 50, false), "motif_logo");
+  if (data.options.revcomp) {
+    add_cell(row, make_logo(motif, 50, true), "motif_logo");
+  }
+  add_text_cell(row, motif["evalue"], "motif_evalue");
+  add_text_cell(row, motif["unerased_evalue"], "motif_evalue");
+  add_cell(row, make_sym_btn(text_pair("\u21A7", "less", "\u21A5", "more"), "Show more information.", function(e) { toggle_class(tbody, "collapsed"); }, "\u21A5", ""), "motif_more");
+  add_cell(row, make_sym_btn("\u21E2", "Submit the motif to another MEME Suite program or download it.", function(e) { action_show_outpop(e, ordinal); }), "motif_submit");
+  return row;
+}
+
+/*
+ * Make a sortable table of enriched matching rows.
+ */
+function make_motif_words(motif) {
+  var row, i, match;
+  var table = document.createElement("table");
+  var thead = document.createElement("thead");
+  row = document.createElement("tr");
+  add_text_header_cell(row, "Word", "pop_match_word", "match_word", function(e) {sort_table(this, compare_words);});
+  add_text_header_cell(row, "Positives", "pop_match_pos", "match_count", function(e) {sort_table(this, compare_counts);});
+  add_text_header_cell(row, "Negatives", "pop_match_neg", "match_count", function(e) {sort_table(this, compare_counts);});
+  add_text_header_cell(row, "P-value", "pop_match_pval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
+  add_text_header_cell(row, "E-value", "pop_match_eval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
+  thead.appendChild(row);
+  table.appendChild(thead);
+  var tbody = document.createElement("tbody");
+  for (i = 0; i < motif.matches.length; i++) {
+    match = motif.matches[i];
+    row = document.createElement("tr");
+    add_cell(row, make_seq(match.seq), "match_word");
+    add_text_cell(row, match.p + " / " + data.sequence_db.count, "match_count");
+    add_text_cell(row, match.n + " / " + data.control_db.count, "match_count");
+    add_text_cell(row, match.pvalue, "match_evalue");
+    add_text_cell(row, match.evalue, "match_evalue");
+    tbody.appendChild(row);
+  }
+  table.appendChild(tbody);
+  return table;
+}
+
+/*
+ * Make an expanded view of a discovered motif.
+ */
+function make_motif_exp(tbody, ordinal, motif) {
+  "use strict";
+  var box, pspm, logo_box;
+  box = $("tmpl_motif_expanded").cloneNode(true);
+  toggle_class(box, "template", false);
+  box.id = "";
+  find_child(box, "tvar_logo").appendChild(make_logo(motif, 150, false));
+  if (data.options.revcomp) {
+    find_child(box, "tvar_rclogo").appendChild(make_logo(motif, 150, true));
+  }
+  set_tvar(box, "tvar_p", motif["p"]);
+  set_tvar(box, "tvar_p_total", data.sequence_db.count);
+  set_tvar(box, "tvar_n", motif["n"]);
+  set_tvar(box, "tvar_n_total", data.control_db.count);
+  set_tvar(box, "tvar_pvalue", motif["pvalue"]);
+  set_tvar(box, "tvar_evalue", motif["evalue"]);
+  set_tvar(box, "tvar_uevalue", motif["unerased_evalue"]);
+  set_tvar(box, "tvar_words", make_motif_words(motif));
+  var cell = document.createElement("td");
+  cell.colSpan = 8;
+  cell.appendChild(box);
+  var row = document.createElement("tr");
+  row.className = "more";
+  row.appendChild(cell);
+  return row;
+}
+
+/*
+ * Convert a string containing a scientific number into the log of that number
+ * without having an intermediate representation of the number.
+ * This is intended to avoid underflow problems with the tiny evalues that
+ * MEME and DREME can create.
+ */
+function sci2log(scinum) {
+  "use strict";
+  var ev_re, match, sig, exp;
+  ev_re = /^(.*)e(.*)$/;
+  if (match = ev_re.exec(scinum)) {
+    sig = parseFloat(match[1]);
+    exp = parseInt(match[2]);
+    return Math.log(sig) + (exp * Math.log(10));
+  }
+  return 0;
+}
+
+/*
+ * Create a table of discovered motifs. A fresh table body is used for each
+ * motif to make hiding/showing rows with css easier.
+ */
+function make_motifs() {
+  "use strict";
+  var i, row, tbody, motif, ordinal;
+  // make the motifs table
+  var container = $("motifs");
+  container.innerHTML = ""; // clear content
+  var table = document.createElement("table");
+  // add a header that is always shown
+  var thead = document.createElement("thead");
+  thead.appendChild(make_motif_header());
+  table.appendChild(thead);
+  for (i = 0; i < data.motifs.length; i++) {
+    ordinal = i + 1;
+    motif = data.motifs[i];
+    tbody = document.createElement("tbody");
+    tbody.className = "collapsed";
+    tbody.appendChild(make_motif_row(tbody, ordinal, motif));
+    tbody.appendChild(make_motif_exp(tbody, ordinal, motif));
+    // create a following header for every row except the last one
+    if ((i + 1) < data.motifs.length) tbody.appendChild(make_motif_header());
+    table.appendChild(tbody);
+  }
+  container.appendChild(table);
+}
+
+/*
+ * Create a table showing all the alphabet symbols, their names and frequencies.
+ */
+function make_alpha_bg(alph, freqs) {
+  function colour_symbol(index) {
+    var span = document.createElement("span");
+    span.appendChild(document.createTextNode(alph.get_symbol(index)));
+    span.style.color = alph.get_colour(index);
+    span.className = "alpha_symbol";
+    return span;
+  }
+  var table, thead, tbody, row, th, span, i;
+  // create table
+  table = document.createElement("table");
+  table.className = "inputs";
+  // create header
+  thead = document.createElement("thead");
+  table.appendChild(thead);
+  row = thead.insertRow(thead.rows.length);
+  if (alph.has_complement()) {
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+  } else {
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+  }
+  // add alphabet entries
+  tbody = document.createElement("tbody");
+  table.appendChild(tbody);
+  if (alph.has_complement()) {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      var c = alph.get_complement(i);
+      if (i > c) continue;
+      row = tbody.insertRow(tbody.rows.length);
+      add_text_cell(row, alph.get_name(i));
+      add_text_cell(row, "" + freqs[i].toFixed(3));
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, "~");
+      add_cell(row, colour_symbol(c)); 
+      add_text_cell(row, "" + freqs[c].toFixed(3));
+      add_text_cell(row, alph.get_name(c));
+    }
+  } else {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      row = tbody.insertRow(tbody.rows.length);
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, alph.get_name(i));
+      add_text_cell(row, "" + freqs[i].toFixed(3));
+    }
+  }
+  return table;
+}
+
+/*
+ * Updates the format download text in the popup.
+ * This is called when either the format or current motif changes.
+ */
+function update_outpop_format(index) {
+  var motif = data.motifs[index];
+  var fn = [motif_count_matrix, motif_prob_matrix, motif_minimal_meme];
+  var suffix = ["_counts.txt", "_freqs.txt", ".meme"];
+  var format = parseInt($("text_format").value);
+  var text = fn[format](motif);
+  prepare_download(text, "text/plain", motif.id + suffix[format], $("outpop_text_dl"));
+  $("outpop_text").value = text;
+}
+
+/*
+ * Updates the motif logos and format download text in the popup.
+ * This is called whenever the current motif changes.
+ */
+function update_outpop_motif(index) {
+  "use strict";
+  var motifs, motif, pspm, logo, canvas, num;
+  motifs = data["motifs"];
+  if (index < 0 || index >= motifs.length) {return;}
+  current_motif = index;
+  motif = motifs[index];
+  pspm = new Pspm(motif["pwm"]);
+  logo = new Logo(dreme_alphabet, "");
+  logo.add_pspm(pspm, 0);
+  canvas = $("outpop_logo");
+  canvas.width = canvas.width; // clear canvas
+  draw_logo_on_canvas(logo, canvas, false);
+  canvas = $("outpop_logo_rc");
+  canvas.width = canvas.width; // clear rc canvas
+  if (data.options.revcomp) {
+    pspm.reverse_complement(dreme_alphabet);
+    logo = new Logo(dreme_alphabet, "");
+    logo.add_pspm(pspm, 0);
+    draw_logo_on_canvas(logo, canvas, false);
+  }
+  num = $("outpop_num");
+  num.innerHTML = "";
+  num.appendChild(document.createTextNode("" + (index + 1)));
+  update_outpop_format(index);
+}
+
+
+/*
+ * Initialise and display the download popup.
+ */
+function action_show_outpop(e, ordinal) {
+  "use strict";
+  function init() {
+    "use strict";
+    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
+    var tab1, tab2, tab3;
+    var pnl1, pnl2, pnl3;
+    var format_list;
+    var tbl_submit, inputs, i, default_prog;
+    close_btn = $("outpop_close");
+    close_btn.addEventListener("click", action_hide_outpop, false);
+    close_btn.addEventListener("keydown", action_hide_outpop, false);
+    next_btn = $("outpop_next");
+    next_btn.addEventListener("click", action_outpop_next, false);
+    next_btn.addEventListener("keydown", action_outpop_next, false);
+    prev_btn = $("outpop_prev");
+    prev_btn.addEventListener("click", action_outpop_prev, false);
+    prev_btn.addEventListener("keydown", action_outpop_prev, false);
+    cancel_btn = $("outpop_cancel");
+    cancel_btn.addEventListener("click", action_hide_outpop, false);
+    do_btn = $("outpop_do");
+    do_btn.addEventListener("click", action_outpop_submit, false);
+    tab1 = $("outpop_tab_1");
+    tab1.tabIndex = 0;
+    tab1.addEventListener("click", action_outpop_tab, false);
+    tab1.addEventListener("keydown", action_outpop_tab, false);
+    tab2 = $("outpop_tab_2");
+    tab2.tabIndex = 0;
+    tab2.addEventListener("click", action_outpop_tab, false);
+    tab2.addEventListener("keydown", action_outpop_tab, false);
+    tab3 = $("outpop_tab_3");
+    tab3.tabIndex = 0;
+    tab3.addEventListener("click", action_outpop_tab, false);
+    tab3.addEventListener("keydown", action_outpop_tab, false);
+    pnl1 = $("outpop_pnl_1");
+    pnl2 = $("outpop_pnl_2");
+    pnl3 = $("outpop_pnl_3");
+    toggle_class(tab1, "activeTab", true);
+    toggle_class(tab2, "activeTab", false);
+    toggle_class(tab3, "activeTab", false);
+    pnl1.style.display = "block";
+    pnl2.style.display = "none";
+    pnl3.style.display = "none";
+    format_list = $("text_format");
+    format_list.addEventListener("change", action_outpop_format, false);
+    // setup program selection
+    tbl_submit = $("programs");
+    // when not dna, hide the inputs for programs that require dna motifs
+    toggle_class(tbl_submit, "alphabet_dna", dreme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
+    // add a click listener for the radio buttons
+    inputs = tbl_submit.querySelectorAll("input[type='radio']");
+    for (i = 0; i < inputs.length; i++) {
+      inputs[i].addEventListener("click", action_outpop_program, false);
+    }
+    // ensure that a default program option is selected for DNA and Protein
+    default_prog = document.getElementById(dreme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo");
+    default_prog.checked = true;
+    action_outpop_program.call(default_prog);
+    // disable reverse-complement when not DNA
+    $("logo_rc_option").disabled = !dreme_alphabet.has_complement(); 
+    // set errorbars on when ssc is on
+    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
+  }
+  // store the focused element
+  action_hide_outpop.last_active = document.activeElement;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // hide the help popup
+  help_popup();
+  // on first load initilize the popup
+  if (!action_show_outpop.ready) {
+    init();
+    action_show_outpop.ready = true;
+  }
+  update_outpop_motif(ordinal - 1);
+  // display the download popup
+  $("grey_out_page").style.display = "block";
+  $("download").style.display = "block";
+  $("outpop_close").focus();
+}
+
+/*
+ * Hide the download popup.
+ */
+function action_hide_outpop(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  $("download").style.display = "none";
+  $("grey_out_page").style.display = "none";
+  if (typeof action_hide_outpop.last_active !== "undefined") {
+    action_hide_outpop.last_active.focus();
+  }
+}
+
+/*
+ * Show the next motif in the download popup.
+ */
+function action_outpop_next(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif + 1);
+}
+
+/*
+ * Show the previous motif in the download popup.
+ */
+function action_outpop_prev(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif - 1);
+}
+
+/*
+ * Highlight the selected row in the program list.
+ */
+function action_outpop_program() {
+  "use strict";
+  var table, tr, rows, i;
+  tr = find_parent_tag(this, "TR");
+  table = find_parent_tag(tr, "TABLE");
+  rows = table.querySelectorAll("tr");
+  for (i = 0; i < rows.length; i++) {
+    toggle_class(rows[i], "selected", rows[i] === tr);
+  }
+}
+
+/*
+ * Enable error bars when small sample correction is enabled.
+ */
+function action_outpop_ssc() {
+  "use strict";
+  $("logo_err").value = $("logo_ssc").value;
+}
+
+/*
+ * Submit the motif to the selected program.
+ */
+function action_outpop_submit(e) {
+  "use strict";
+  var form, input, program, motifs;
+  // find out which program is selected
+  var radios, i;
+  radios = document.getElementsByName("program");
+  program = "fimo"; // default to fimo, since it works with all alphabet types
+  for (i = 0; i < radios.length; i++) {
+    if (radios[i].checked) program = radios[i].value;
+  }
+
+  motifs = motif_minimal_meme(data.motifs[current_motif]);
+  form = document.createElement("form");
+  form.setAttribute("method", "post");
+  form.setAttribute("action", site_url + "/tools/" + program);
+  
+  input = document.createElement("input");
+  input.setAttribute("type", "hidden");
+  input.setAttribute("name", "motifs_embed");
+  input.setAttribute("value", motifs);
+  form.appendChild(input);
+
+  document.body.appendChild(form);
+  form.submit();
+  document.body.removeChild(form);
+}
+
+/*
+ * Download the format text.
+ * Wire the link containing the data URI text to a download button so it looks
+ * the same as the server submit stuff.
+ */
+function action_outpop_download_motif(e) {
+  $("outpop_text_dl").click();
+}
+
+/*
+ * Download the motif logo.
+ * The EPS format can be calculated locally in Javascript
+ */
+function action_outpop_download_logo(e) {
+  "use strict";
+  var pspm, logo, eps;
+  var logo_rc, logo_ssc, logo_width, logo_height;
+  var motif = data.motifs[current_motif];
+  if ($("logo_format").value == "0") { // EPS
+    logo_rc = ($("logo_rc").value == "1");
+    logo_ssc = ($("logo_ssc").value == "1");
+    logo_width = parseFloat($("logo_width").value);
+    if (isNaN(logo_width) || !isFinite(logo_width) || logo_width <= 0) logo_width = null;
+    logo_height = parseFloat($("logo_height").value);
+    if (isNaN(logo_height) || !isFinite(logo_height) || logo_height <= 0) logo_height = null;
+    // create a PSPM from the motif
+    pspm = motif_pspm(motif);
+    if (logo_rc) pspm.reverse_complement(dreme_alphabet);
+    logo = new Logo(dreme_alphabet);
+    logo.add_pspm(pspm, 0);
+    eps = logo.as_eps({"ssc": logo_ssc, "logo_width": logo_width, "logo_height": logo_height});
+    prepare_download(eps, "application/postscript", motif.id + ".eps");
+  } else {
+    $("logo_motifs").value = motif_minimal_meme(motif);
+    $("logo_form").submit();
+  }
+}
+
+/*
+ * Change the selected tab in the download popup.
+ */
+function action_outpop_tab(e) {
+  "use strict";
+  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  tab1 = $("outpop_tab_1");
+  tab2 = $("outpop_tab_2");
+  tab3 = $("outpop_tab_3");
+  pnl1 = $("outpop_pnl_1");
+  pnl2 = $("outpop_pnl_2");
+  pnl3 = $("outpop_pnl_3");
+  do_btn = $("outpop_do");
+
+  toggle_class(tab1, "activeTab", (this === tab1));
+  toggle_class(tab2, "activeTab", (this === tab2));
+  toggle_class(tab3, "activeTab", (this === tab3));
+  pnl1.style.display = ((this === tab1) ? "block" : "none");
+  pnl2.style.display = ((this === tab2) ? "block" : "none");
+  pnl3.style.display = ((this === tab3) ? "block" : "none");
+  do_btn.value = ((this === tab1) ? "Submit" : "Download");
+  do_btn.removeEventListener("click", action_outpop_submit, false);
+  do_btn.removeEventListener("click", action_outpop_download_logo, false);
+  do_btn.removeEventListener("click", action_outpop_download_motif, false);
+  if (this === tab1) {
+    do_btn.addEventListener("click", action_outpop_submit, false);
+  } else if (this === tab2) {
+    do_btn.addEventListener("click", action_outpop_download_motif, false);
+  } else {
+    do_btn.addEventListener("click", action_outpop_download_logo, false);
+  }
+}
+
+/*
+ * Update the text in the download format popup.
+ */
+function action_outpop_format() {
+  update_outpop_format(current_motif);
+}
+
+/*
+ * Find all text nodes in the given container.
+ */
+function text_nodes(container) {
+  var textNodes = [];
+  var stack = [container];
+  // depth first search to maintain ordering when flattened 
+  while (stack.length > 0) {
+    var node = stack.pop();
+    if (node.nodeType == Node.TEXT_NODE) {
+      textNodes.push(node);
+    } else {
+      for (var i = node.childNodes.length-1; i >= 0; i--) {
+        stack.push(node.childNodes[i]);
+      }
+    }
+  }
+  return textNodes;
+}
+
+/*
+ * Get the text out of a specific text node.
+ */
+function node_text(node) {
+  if (node === undefined) {
+    return '';
+  } else if (node.textContent) {
+    return node.textContent;
+  } else if (node.innerText) {
+    return node.innerText;
+  } else {
+    return '';
+  }
+}
+
+/*
+ * Get the text contained within the element.
+ */
+function elem_text(elem, separator) {
+  if (separator === undefined) separator = '';
+  return text_nodes(elem).map(node_text).join(separator);
+}
+
+/*
+ * Sort all rows in the first table body based on the column of the given element and the comparison function.
+ * The sort is not very fast and is intended for small tables only.
+ */
+function sort_table(colEle, compare_function) {
+  //find the parent of colEle that is either a td or th
+  var i, j;
+  var cell = colEle;
+  while (true) {
+    if (cell == null) return;
+    if (cell.nodeType == Node.ELEMENT_NODE && 
+        (cell.tagName.toLowerCase() == "td" || cell.tagName.toLowerCase() == "th")) {
+      break;
+    }
+    cell = cell.parentNode;
+  }
+  //find the parent of cell that is a tr
+  var row = cell;
+  while (true) {
+    if (row == null) return;
+    if (row.nodeType == Node.ELEMENT_NODE && row.tagName.toLowerCase() == "tr") {
+      break;
+    }
+    row = row.parentNode;
+  }
+  //find the parent of row that is a table
+  var table = row;
+  while (true) {
+    if (table == null) return;
+    if (table.nodeType == Node.ELEMENT_NODE && table.tagName.toLowerCase() == "table") {
+      break;
+    }
+    table = table.parentNode;
+  }
+  var column_index = cell.cellIndex;
+  // do a bubble sort, because the tables are so small it doesn't matter
+  var change;
+  var trs = table.tBodies[0].getElementsByTagName('tr');
+  var already_sorted = true;
+  var reverse = false;
+  while (true) {
+    do {
+      change = false;
+      for (i = 0; i < trs.length -1; i++) {
+        var v1 = elem_text(trs[i].cells[column_index]);
+        var v2 = elem_text(trs[i+1].cells[column_index]);
+        if (reverse) {
+          var tmp = v1;
+          v1 = v2;
+          v2 = tmp;
+        }
+        if (compare_function(v1, v2) > 0) {
+          exchange(trs[i], trs[i+1], table);
+          change = true;
+          already_sorted = false;
+          trs = table.tBodies[0].getElementsByTagName('tr');
+        }
+      }
+    } while (change);
+    if (reverse) break;// we've sorted twice so exit
+    if (!already_sorted) break;// sort did something so exit
+    // when it's sorted one way already then sort the opposite way
+    reverse = true;
+  }
+  // put arrows on the headers
+  var headers = table.tHead.getElementsByTagName('tr');
+  for (i = 0; i < headers.length; i++) {
+    for (j = 0; j < headers[i].cells.length; j++) {
+      var cell = headers[i].cells[j];
+      var arrows = cell.getElementsByClassName("sort_arrow");
+      var arrow;
+      if (arrows.length == 0) {
+        arrow = document.createElement("span");
+        arrow.className = "sort_arrow";
+        cell.insertBefore(arrow, cell.firstChild);
+      } else {
+        arrow = arrows[0];
+      }
+      arrow.innerHTML = "";
+      if (j == column_index) {
+        arrow.appendChild(document.createTextNode(reverse ? "\u25B2" : "\u25BC"));
+      }
+    }
+  }
+}
+
+/*
+ * Swap two rows in a table.
+ */
+function exchange(oRowI, oRowJ, oTable) {
+  var i = oRowI.rowIndex;
+  var j = oRowJ.rowIndex;
+   if (i == j+1) {
+    oTable.tBodies[0].insertBefore(oRowI, oRowJ);
+  } if (j == i+1) {
+    oTable.tBodies[0].insertBefore(oRowJ, oRowI);
+  } else {
+    var tmpNode = oTable.tBodies[0].replaceChild(oRowI, oRowJ);
+    if(typeof(oRowI) != "undefined") {
+      oTable.tBodies[0].insertBefore(tmpNode, oRowI);
+    } else {
+      oTable.appendChild(tmpNode);
+    }
+  }
+}
+
+/*
+ * Compare two E-values which may be very small.
+ */
+function compare_evalues(v1, v2) {
+  var e1 = sci2log(v1);
+  var e2 = sci2log(v2);
+  if (e1 < e2) return -1;
+  else if (e1 > e2) return 1;
+  return 0;
+}
+
+/*
+ * Compare two counts.
+ */
+function compare_counts(v1, v2) {
+  var re = /(\d+)\s*\/\s*\d+/;
+  var m1 = re.exec(v1);
+  var m2 = re.exec(v2);
+  if (m1 == null && m2 == null) return 0;
+  if (m1 == null) return -1;
+  if (m2 == null) return 1;
+  return parseInt(m2[1]) - parseInt(m1[1]);
+}
+
+/*
+ * Compare two sequence words.
+ */
+function compare_words(v1, v2) {
+  return v1.localeCompare(v2);
+}
+
+
+</script>
+    <style>
+/* 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;
+  cursor: pointer;
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
+}
+
+div.help:hover {
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
+}
+
+p.spaced { line-height: 1.8em;}
+
+span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
+
+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; overflow: hidden;}
+
+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;}
+
+.explain h5 {font-size:1em; margin-left: 1em;}
+
+div.doc {margin-left: 2em; margin-bottom: 3em;}
+
+th.trainingset {
+  border-bottom: thin dashed black; 
+  font-weight:normal; 
+  padding:0px 10px;
+}
+div.pop_content {
+  position:absolute;
+  z-index:50;
+  width:300px;
+  padding: 5px;
+  background: #E4ECEC;
+  font-size: 12px;
+  font-family: Arial;
+  border-style: double;
+  border-width: 3px;
+  border-color: #AA2244;
+  display:none;
+}
+
+div.pop_content > *:first-child {
+  margin-top: 0px;
+}
+
+div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
+div.pop_content h5, div.pop_content h6, div.pop_content p {
+  margin: 0px;
+}
+
+div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
+div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
+  margin-top: 5px;
+}
+
+div.pop_content p + p {
+  margin-top: 5px;
+}
+
+div.pop_content > *:last-child {
+  margin-bottom: 0px;
+}
+
+div.pop_content div.pop_close {
+  /* old definition */
+  float:right;
+  bottom: 0;
+}
+
+div.pop_content span.pop_close, div.pop_content span.pop_back {
+  display: inline-block;
+  border: 2px outset #661429;
+  background-color: #CCC;
+  padding-left: 1px;
+  padding-right: 1px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  cursor: pointer;
+  color: #AA2244; /*#661429;*/
+  font-weight: bold;
+}
+
+div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
+  border-style: inset;
+}
+
+div.pop_content span.pop_close {
+  float:right;
+  /*border: 2px outset #AA002B;*/
+  /*color: #AA2244;*/
+}
+
+div.pop_content:not(.nested) .nested_only {
+  display: none;
+}
+
+div.pop_back_sec {
+  margin-bottom: 5px;
+}
+
+div.pop_close_sec {
+  margin-top: 5px;
+}
+
+table.hide_advanced tr.advanced {
+  display: none;
+}
+span.show_more {
+  display: none;
+}
+table.hide_advanced span.show_more {
+  display: inline;
+}
+table.hide_advanced span.show_less {
+  display: none;
+}
+
+
+/*****************************************************************************
+ * Program logo styling
+ ****************************************************************************/
+div.prog_logo {
+  border-bottom: 0.25em solid #0f5f60;
+  height: 4.5em;
+  width: 24em;
+  display:inline-block;
+}
+div.prog_logo img {
+  float:left;
+  width: 4em;
+  border-style: none;
+  margin-right: 0.2em;
+}
+div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
+  margin:0;
+  padding:0;
+  font-family: Arial, Helvetica,  sans-serif;
+  font-size: 3.2em;
+  line-height: 1em;
+  vertical-align: top;
+  display: block;
+  color: #026666;
+  letter-spacing: -0.06em;
+  text-shadow: 0.04em 0.06em 0.05em #666;
+}
+div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
+  display: block;
+  margin:0;
+  padding:0;
+  font-family: Helvetica, sans-serif;
+  font-size: 0.9em;
+  line-height: 1em;
+  letter-spacing: -0.06em;
+  color: black;
+}
+
+div.big.prog_logo {
+  font-size: 18px;
+}
+
+</style>
+    <style>
+/* dreme output specific css */
+div.header {
+  position: relative;
+  overflow: hidden;
+  margin-top: 15px;
+  margin-bottom: 5px;
+  margin-right: 3px;
+  margin-left: 3px;
+}
+div.header > h2 {
+  font-size: 1.5em;
+  font-style: normal;
+  margin: 0;
+  font-variant: small-caps; 
+  font-family: Georgia, "Times New Roman", Times, serif;
+}
+div.header > span {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+}
+
+div.template {
+  position: absolute;
+  z-index: 1;
+  left: 0;
+  top: 0;
+  visibility: hidden;
+}
+
+div.sym_btn {
+  display:inline-block;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 20px;
+  line-height:20px; 
+  text-align: center;
+  width: 20px;
+  height: 20px;
+  color: blue;
+}
+div.sym_btn:hover {
+  color: white;
+  background-color: blue;
+}
+
+div.sym_btn.positioned {
+  position: absolute;
+  top: 0px;
+}
+
+div.box + div.box {
+  margin-top: 5px;
+}
+
+th.motif_ordinal {
+
+}
+td.motif_ordinal {
+  text-align: right;
+  padding-right: 10px;
+  font-weight: bold;
+  font-size: large;
+}
+th.motif_word {
+  padding-right: 10px;
+}
+td.motif_word {
+  font-size:15px; 
+  font-family: 'Courier New', Courier, monospace;
+  padding-right: 10px;
+}
+th.motif_logo {
+  padding-right: 10px;
+}
+td.motif_logo {
+  padding-right: 10px;
+}
+th.motif_evalue {
+  text-align:right;
+  padding-right: 10px;
+}
+td.motif_evalue {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+th.motif_more {
+  padding: 0 5px;
+}
+td.motif_more {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_submit {
+  padding: 0 5px;
+}
+td.motif_submit {
+  text-align: center;
+  padding: 0 5px;
+}
+th.match_word {
+  padding-right: 10px;
+}
+td.match_word {
+  padding-right: 10px;
+  font-weight: bold;
+  font-size: large; 
+  font-family: 'Courier New', Courier, monospace;
+}
+th.match_evalue, th.match_count {
+  text-align: right;
+  padding-right: 10px;
+}
+td.match_evalue, td.match_count {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+
+div.tabArea {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+.norc div.tabArea {
+  display: none;
+}
+
+span.tab, span.tab:visited {
+  cursor: pointer;
+  color: #888;
+  background-color: #ddd;
+  border: 2px solid #ccc;
+  padding: 2px 1em;
+  text-decoration: none;
+}
+span.tab.middle {
+  border-left-width: 0px;
+}
+div.tabArea.base span.tab {
+  border-top-width: 0px;
+}
+div.tabArea.top span.tab {
+  border-bottom-width: 0px;
+}
+
+span.tab:hover {
+  background-color: #bbb;
+  border-color: #bbb;
+  color: #666;
+}
+span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
+  background-color: white;
+  color: black;
+  cursor: default;
+}
+div.tabMain {
+  border: 2px solid #ccc;
+  background-color: white;
+  padding: 10px;
+}
+div.tabMain.base {
+  margin-top: 5px;
+  display: inline-block;
+  max-width: 98%;
+}
+
+div.tabMain.top {
+  margin-bottom: 5px;
+}
+
+div.grey_background {
+  position:fixed; 
+  z-index: 8;
+  background-color: #000;
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+  opacity: 0.5;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+}
+
+div.popup_wrapper {
+  position:fixed; 
+  z-index:9;
+  width:100%; 
+  height:0; 
+  top:50%; 
+  left:0;
+}
+
+div.popup {
+  width: 600px; 
+  z-index:9;
+  margin-left: auto;
+  margin-right: auto;
+  padding: 5px;
+  background-color: #FFF;
+  border-style: double;
+  border-width: 5px;
+  border-color: #00666a;
+  position:relative; 
+}
+div.close {
+  cursor: pointer;
+  border: 1px solid black; 
+  width:15px; 
+  height:15px; 
+  line-height:15px; /* this causes vertical centering */
+  text-align:center; 
+  background-color:#FFF; 
+  color:#000; 
+  font-size:15px;
+  font-family:monospace;
+}
+
+div.close:hover {
+  color:#FFF;
+  background-color:#000; 
+}
+
+div.navnum {
+  width:100%; 
+  height:20px; 
+  line-height:20px; 
+  text-align:center; 
+  font-size:medium;
+}
+
+div.navarrow {
+  font-size: 30px;
+  text-decoration:none;
+  cursor: pointer;
+  -moz-user-select: none;  
+  -webkit-user-select: none;  
+  -ms-user-select: none;
+}
+
+div.navarrow > span.inactive {
+  display: inline;
+}
+div.navarrow > span.active {
+  display: none;
+}
+
+div.navarrow:hover > span.active {
+  display: inline;
+}
+div.navarrow:hover > span.inactive {
+  display: none;
+}
+
+table.programs {
+  width: 100%;
+}
+
+table.programs tr {
+  background-color: #EFE;
+}
+
+table.programs tr.selected {
+  background-color: #262;
+  color: #FFF;
+}
+
+table.programs tr.dna_only {
+  display: none;
+}
+
+table.programs.alphabet_dna tr.dna_only {
+  display: table-row;
+}
+
+table.inputs {
+  margin-top: 20px;
+  border-collapse:collapse;
+}
+table.inputs * td, table.inputs * th {
+  padding-left: 15px;
+  padding-right: 15px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* program settings */
+span.strand_none, span.strand_given, span.strand_both {
+  display: none;
+}
+td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
+  display: inline;
+}
+
+/* show the expanded motif only when the collapsed one is hidden */
+tbody *.less, tbody.collapsed *.more {
+  display: none;
+}
+
+tbody.collapsed *.less {
+  display: inline;
+}
+
+</style>
+  </head>
+  <body data-scrollpad="true">
+    <!--  -->
+    <div id="grey_out_page" class="grey_background" style="display:none;">
+    </div>
+
+    <!-- Help popups -->
+    <div class="pop_content" id="pop_">
+      <p>Help poup.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_motifs_word">
+      <p>
+        The name of the motif uses the IUPAC codes for nucleotides which has 
+        a different letter to represent each of the 15 possible combinations.
+      </p>
+      <p>
+        The name is itself a representation of the motif though the position
+        weight matrix is not directly equalivant as it is generated from the
+        sites found that matched the letters given in the name.
+      </p>
+      <p>
+        <a id="doc_alphabets_url" href="#">
+        Read more about the MEME suite's use of the IUPAC alphabets.
+        </a>
+        <script>$("doc_alphabets_url").href = site_url + "/doc/alphabets.html";</script>
+      </p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_logo">
+      <p>The logo of the motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_rc_logo">
+      <p>The logo of the reverse complement motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_evalue">
+      <p>The E-value is the enrichment p-value times the number of candidate 
+        motifs tested.</p>
+      <p>The enrichment p-value is calculated using Fisher's Exact Test for 
+        enrichment of the motif in the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_uevalue">
+      <p>The E-value of the motif calculated without erasing the sites of 
+        previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_more">
+      <p>Show more information on the motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_submit_dl">
+      <p>Submit your motif to another MEME Suite program or download your motif.</p>
+      <h5>Supported Programs</h5>
+      <dl>
+        <dt>Tomtom</dt>
+        <dd>Tomtom is a tool for searching for similar known motifs. 
+          </dd>
+        <dt>MAST</dt>
+        <dd>MAST is a tool for searching biological sequence databases for 
+          sequences that contain one or more of a group of known motifs.
+          </dd>
+        <dt>FIMO</dt>
+        <dd>FIMO is a tool for searching biological sequence databases for 
+          sequences that contain one or more known motifs.
+          </dd>
+        <dt>GOMO</dt>
+        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
+          terms) for DNA binding motifs.
+          </dd>
+        <dt>SpaMo</dt>
+        <dd>SpaMo is a tool for inferring possible transcription factor
+          complexes by finding motifs with enriched spacings.
+          </dd>
+      </dl>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_positives">
+      <p># positive sequences matching the motif / # positive sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_negatives">
+      <p># negative sequences matching the motif / # negative sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_pvalue">
+      <p>The p-value of Fisher's Exact Test for enrichment of the motif in 
+        the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_evalue">
+      <p>The E-value is the motif p-value times the number of candidate motifs 
+        tested.</p>
+      <p>Note that the p-value was calculated with counts made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_uevalue">
+      <p>The E-value of the motif calculated without erasing the sites of 
+        previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_word">
+      <p>All words matching the motif whose uncorrected p-value is less than
+      <span id="help_add_pv_thresh"></span>.</p>
+      <script>$("help_add_pv_thresh").innerHTML = data.options.add_pv_thresh;</script>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_pos">
+      <p># positive sequences with matches to the word / # positive sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_neg">
+      <p># negative sequences with matches to the word / # negative sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_pval">
+      <p>The p-value of Fisher's Exact Test for enrichment of the word in 
+        the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_eval">
+      <p>The word p-value times the number of candidates tested.</p>
+      <p>Note that the p-value was calculated with counts made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_source">
+      <p>The sequence file used by DREME to find the motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_alph">
+      <p>The alphabet of the sequences.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_count">
+      <p>The count of the sequences.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_name">
+      <p>The name of the alphabet symbol.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_control">
+      <p>The frequency of the alphabet symbol in the control dataset.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <!-- templates -->
+
+    <div class="template box expanded_motif" id="tmpl_motif_expanded">
+      <div>
+        <span class="tvar_logo"></span>
+        <span class="tvar_rclogo"></span>
+      </div>
+      <h4>Details</h4>
+      <table class="details">
+        <thead>
+          <tr>
+            <th class="match_count">Positives <div class="help" data-topic="pop_motif_positives"></div></th>
+            <th class="match_count">Negatives <div class="help" data-topic="pop_motif_negatives"></div></th>
+            <th class="match_evalue">P-value <div class="help" data-topic="pop_motif_pvalue"></div></th>
+            <th class="match_evalue">E-value <div class="help" data-topic="pop_motif_evalue"></div></th>
+            <th class="match_evalue">Unerased E-value <div class="help" data-topic="pop_motif_uevalue"></div></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td class="match_count">
+              <span class="tvar_p"></span> / <span class="tvar_p_total"></span>
+            </td>
+            <td class="match_count">
+              <span class="tvar_n"></span> / <span class="tvar_n_total"></span>
+            </td>
+            <td class="tvar_pvalue match_evalue"></td>
+            <td class="tvar_evalue match_evalue"></td>
+            <td class="tvar_uevalue match_evalue"></td>
+          </tr>
+        </tbody>
+      </table>
+      <h4>Enriched Matching Words</h4>
+      <div class="tvar_words"></div>
+    </div>
+
+
+    <div class="popup_wrapper">
+      <div class="popup" style="display:none; top: -150px;" id="download">
+        <div>
+          <div style="float:right; ">
+            <div id="outpop_close" class="close" tabindex="0">x</div>
+          </div>
+          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
+          <div style="clear:both"></div>
+        </div>
+          <div style="height:100px">
+            <div style="float:right; width: 30px;">
+              <div id="outpop_prev" class="navarrow" tabindex="0">
+                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
+              </div>
+              <div id="outpop_num" class="navnum"></div>
+              <div id="outpop_next" class="navarrow" tabindex="0">
+                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
+              </div>
+            </div>
+            <div id="logo_box" style="height: 100px; margin-right: 40px;">
+              <canvas id="outpop_logo" height="100" width="250"></canvas>
+              <canvas id="outpop_logo_rc" height="100" width="250"></canvas>
+            </div>
+          </div>
+          <div>
+            <!-- tabs start -->
+            <div class="tabArea top">
+              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
+                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
+                id="outpop_tab_3" class="tab middle">Download Logo</span>
+            </div>
+            <div class="tabMain top">
+              <!-- Submit to another program -->
+              <div id="outpop_pnl_1">
+                <h4 class="compact">Submit to program</h4>
+                <table id="programs" class="programs">
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
+                    <td><label for="submit_tomtom">Tomtom</label></td>
+                    <td><label for="submit_tomtom">Find similar motifs in
+                        published libraries or a library you supply.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
+                    <td><label for="submit_fimo">FIMO</label></td>
+                    <td><label for="submit_fimo">Find motif occurrences in
+                        sequence data.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
+                    <td><label for="submit_mast">MAST</label></td>
+                    <td><label for="submit_mast">Rank sequences by affinity to
+                        groups of motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
+                    <td><label for="submit_gomo">GOMo</label></td>
+                    <td><label for="submit_gomo">Identify possible roles (Gene
+                        Ontology terms) for motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
+                    <td><label for="submit_spamo">SpaMo</label></td>
+                    <td><label for="submit_spamo">Find other motifs that are
+                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
+                  </tr>
+                </table>
+              </div>
+              <!-- download text format  -->
+              <div id="outpop_pnl_2">
+                <div>
+                  <label for="text_format">Format:</label>
+                  <select id="text_format">
+                    <option value="0">Count Matrix</option>
+                    <option value="1">Probability Matrix</option>
+                    <option value="2">Minimal MEME</option>
+                  </select>
+                </div>
+                <textarea id="outpop_text" name="content"
+                  style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
+                  rows="8" readonly="readonly" wrap="off"></textarea>
+                <a id="outpop_text_dl" download="meme.txt" href=""></a>
+              </div>
+              <!-- download logo format -->
+              <div id="outpop_pnl_3">
+                <form id="logo_form" method="post" action="">
+                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
+                  <input type="hidden" name="program" value="DREME"/>
+                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
+                  <table>
+                    <tr>
+                      <td><label for="logo_format">Format:</label></td>
+                      <td>
+                        <select id="logo_format" name="png">
+                          <option value="1">PNG (for web)</option>
+                          <option value="0">EPS (for publication)</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_rc">Orientation:</label></td>
+                      <td>
+                        <select id="logo_rc" name="rc1">
+                          <option value="0">Normal</option>
+                          <option value="1" id="logo_rc_option">Reverse Complement</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
+                      <td>
+                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
+                        <select id="logo_ssc" name="ssc">
+                          <option value="0">Off</option>
+                          <option value="1">On</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_width">Width:</label></td>
+                      <td>
+                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_height">Height:</label></td>
+                      <td>
+                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
+                      </td>
+                    </tr>
+                  </table>
+                </form>
+              </div>
+              <!-- Buttons -->
+              <div>
+                <div style="float:left;">
+                  <input type="button" id="outpop_do" value="Submit" />
+                </div>
+                <div style="float:right;">
+                  <input id="outpop_cancel" type="button" value="Cancel" />
+                </div>
+                <div style="clear:both;"></div>
+              </div>
+            </div>
+        </div>
+      </div>
+    </div>
+
+
+
+    <!-- Page starts here -->
+    <div id="top" class="pad1">
+      <div class="prog_logo big">
+        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAAAd0SU1FB9wLGwYBMoyhiwgAACAASURBVHja7Z13fFRV9sC/503JpIeaKFVREBQVEEFFQVcUuyDouuraFoVV17IrayPjDP4U3XXXhrpiXxuKKF1dV8WCiEgXRUAQlJIYAilMf+f3x3szmVSSkICyOR/eh8wr9717z7mn3XPOhRZogRbYLQiQJiJGy1D8D0LHjh1/XrZsmQK9gU3Ap0mE0QL7KTx411136Z///GdV1ZhpmvrYY4+pqsZUVceNG6dAz5Zh2j/hnpKSEtM0TVVVrfq/qmosFtMxY8Yo8CPQHejucDjyfm0dbZFp1WGaxmJ3ppSWSiQUIhQKIWJxehGhpKSE1LQ0uvfowQHZ2exYt65D8dq1qzUaXR2LxTYCP7UM4a8MVFWA9mY0+nLhmjV63LHH6vMvvKATJkzQfn366CtPPKEDjjtOV61apeeedZZqMKgaCKju2KFmYaFqJKJaWqqqqoACR/9a+u5sQT+IiD77zDPbKCnR00aOZPHSpcydO5fLf/972rdvTzgcZsEnnzDmqquYPmsW/PxzxbMOB4NPOokRZ5+tB3XrJsAUYKmqOkQkVuVVKUBGDRbGz/vSvPlfBHcVDpB7XP/+Gz9/5x1mzJ/P1i1buPbaa1m/fj1du3alW5curPvqqxobCoVCpKSkIO3a1Wc89bCuBy51OZwu1RgiBqGYGf1uw09/Bd5t4QDNT+wKfPXoxIl9jzm6gkt/OmsWn3/4oRIMyrfLlzPuzjvp27cvHTt2ZNGXX+K/7baaW8zJITM1lflz5wL8ZtWqVWm9evXaVcv7Q2cN6hM68tAuR2MIhirFpUEef+MdBFK1RQQ0v6g/MC9PLxk5Uq+/7joIBECSJmwwKKqKR4RTTjyR0885h2effZaNa9Ywa9YstKQkoQzGwSwuJhwIwK5ddO3a9b+9evWqjQPoSf16qUOQles2gYLL5WDaBwu5dtSw8L/eeKdFB2huaJWTo0NOOMF8wOs1qiG/QhfghtGj+dMNN4DblhJlZVBaWg35AIYI7NgBbjcbNmwwjz766I+WLl16OfCDfUs3YB3AAdke6d7tYNR2Jv6wuZA2rbIwxbFPxfD/jBn4t7vv5uUnnzRsTNelEEIoBKWl1qH1YM7hMAXffWcsWbBgMLAB+AgoAtYC5SJCp86dUTPG89M/ACASi1mDH4u2+AH2Bvzhpps+p3Xrmi+mp2Oa5h613y4nh1WLFuHxeHTq1KmDVbWVqjJjxozU4cOH88rsj1FXKteMOh3D4eQ/ny/hjnwfn32zyWUYxtAWK6D54YW1X355WbcePSr32elk1EUX8cYbb1gzvvG+BEzA2b49msQ1RARVZe7cuTzzjwl079qB6R8s4PhThjF58mQADjroIDZs2CAtBLAXFMEaTwaDe4R8ALKzEbcbVUVVE4hP/t/lctGnTx9+c8op3HvffQm9YubMmZx77rlic2Rzbw7I/5oreNzJgwapqqI7dqA7d1pHSUnyVG5Uw0MGD6agoCCB7IQ+kcQFIpEIkydPZszYsQmuoaqEw2H95JNPdOHChTHgervJT4DTWzhA08OjwGWT7r8/u3xXhckei8W47c47obwcMjMtsy9OEHUojdhI/M2oUXwwb16dIqKqJVFaWkJmZlal60OGDJk7b968M1SVsWPH8uSTTxYC7WmBvQIbV6xcGQK0aM0a3bRsmW5fu1b1559NLSzUakdBgXXYawC7A0CXLVtW7fzMmTOrnTNNU03T1OXLl5u1ia4WaA4lQbXVmDFjcoFcIHfJ0qUXqKqaBQXVCMC0kZ+MtNogEAjoli1bar0ef/bee++tiXDMFszsQ+jbt+/r1111leqOHZWJIBBQ7913azgc1qaAeABCVUKqQgBvAO8BL7RgZu9xhd6nnnpqNLpzp8559VXVkhL9ZOZM/X79+j1Bdm1sP2KaZix+rqioSBctWqSqejPw2KhRo+IPxjp06KC0rOg2p82AkE8O4zkbiAJ6ySWXVJLRjUW2qmqrVq30+eefr3RrFWYQf4+pqjpq1Khq7zYMY4/0g5agxppgPCnARcC1GPRFSUF5gAn0VNVz69vMkiVLWLNmDRdeeGGt93Tu3JmNGzfu1slkGAZbt24lNze30jWHw4Fpmo3GYwv7SIY7GYKD8UA/INteQFaKEL7iqBNPPPHYhjTXp08f+vTpU+O1rVu38sc//pE5c+ZgmiaGUbtLJu5HqMNdfYXT6VwdjUY/b+EAdXm9DMNlmmYrAA/I6SKe6ao/JM38v2Pw52oPrgV9Seu06RugTzT62ZogNzeXbdu2ISIYhpFmmmagxRNYC7Gbptlnw5Il29Z/9dW2H1ev3jpddQPwQ79+/f5k32NNsSpStdeSXonZ99JLL+0RAkWEG2+8samUU7Zt2xb3KKppmptbREAd43Vwly5fdDniCLS42DoRDILb3fnRiRPzLzzrrIdVlX9MeoKCw36GSMUIpaWlJVh0UVHRHiPt4YcfbhqKruxyFiDUIsfrhpWAfjprlpplZVZUb1UHTyBgRfnGD1Xt0KlTvR0++xIcDodecMEFCvxDVXv/79nrM2lnzuAanUWdnV8InzocDu104IGqO3aY+vPPWqOrt7BQdds2jcRijTLzmsg5VO93RCyCNa+88kotKCgosTnC6f8rIkD/PGcsQ044AYAZL9XOgkdfdlnxibEYuzZvjkpOjrN1q1Yc1Llz4p4Lzz+fcePH21qBidMwGDhwIA8++CAn2O1XZcWjR4/mmmuuoX///k2ruIjw9ttvc/755+9enjudAGIYBu3atctUVXr16vXOqlWrOovIpv169pszeX/yP/9Z+0xOPqLRymy+yvHp7Nl61tChetbQoTpt6tRaF2x+qSLh6quvTvw9adIkE3hrw4YNjv3WDNSZDEZ5/6Hl9zhvGjsWzKZbOykH0tu2Tdjie9H9XCmYpCHPjR49mqeffjqZi5iq+jQwVkTM/c4MVCUfcM564y6u+8ufmxRRV1xxxb6xWUUSR0Ofa2clqdgSzOTVV181otHoNTNnzjxjv9MBzBl0EeUUNeD9e2Dkfc/z53xPnUGeN4wezcFHHlmvwX1j1iwAJk6cuNf7tmLFit16CavCww8/jMPhSHZ+sWDBAi688EL97W9/O0tVPSIS2m9EgDmda8XgSRRFKvqjigooQh85h+Xx819BaxO2nQ/ODGAjrA5A9WyeTA4kg1y2UCnO75cOJ510Eh9//HGN10aOHKmLFi2a98MPP5y834gAEYaikIx8+7wAhpr8oabnpgMvA5/Av4C+1Y5bWMRoIJUXBg0apL8G5KsqH3/8cY0iUFWZOnWqnHfeeUNUtcPeJoBUwFPHkdoYbqQ+BBiitYVMWYs57iqnYskv0trEoGlzjXGMX7du3R3RaNMlcDz55JN1c7VGKrFVg1DjiE++duutt6phGAtV1dhbBHBW6+zM0iM6tSkccFTPwv6HH1o44KiehUd0ap34PahPr0Kga4MJ4CjOUWgjUgvxKIiDc8yZpMVPReEkrZ/uk2hz69atr7344ot2i3sOY8aMqRXJt99+e40yf9q0aU2iRHbs2FEGDhx4wPr1689sbiXwcDEck3My044ePWKo4dRwRjQUILPtgZRt34rDeTCxWJSs1rk8PmUOKSkeCYWCDSR5OiXQpLYggLCCS8TCv0CmmBWELtDNThPeKZBdzzdtuPrqqyU1NVXPPPNMsrKyqs26hkJtil12dnaN7HvEiBEN1kPatGnD9OnTOe+88yqdnzRpkoiIpzk5wMnZGWkrhxxz+HG3XHRqqsPplPKyMlxZ7dkVCODMaEtZeRlpOe3419S5dOt8ANFYrDHy/5i4wocgKH9Xg0MFvkiewVolqNKexu+p5TFIq+/7fve733Wcm5PzStzbJyK43e4mHbjbbrutmgyvmmdQX+jatSu1ia4tW7asbS4O0Mntcn5wxx9GaUlJiQQiiivFQKNhHAaEy8pwuj1kt8njqTfepXvXA+nToyvzvlzZCK2HYxGsf8oKPNxunE5U3+Kv6uBdBI8qHlEOB76sLiBQA04GfPV840/dIPDEV1/dd5lhXP0TLAmrzveIyKlnnXV3z549uSknp/Qf27dnDh06lGHDhu2RLG+M4ygOmzZt4swzz+SCCy6o8f7PPvtsS3MRwPI22Zn61LT3JRwoQw0noIg4UP0Wp8uNwzAQEbp3PZDB/Xqxs2xXwzs8B6dGcNvs3BST2+V0ogAynI/N6SwTYYCCC8FTnQEkwNEwqYNDwbgZCoAPROSBL6CLMXv2rctmz85eC5suX7Yss3fv5lmMi0QiqGo1ziMiZGdns2LFCjp37kynTp3w+/01EoqtDJY0FwEEI6FAzgF5OQw6vi/ZuZ2qsDTFYRj4n5pKSXmAwcc0cqBCHC0ODrFlf1TdLK6CqWUKA5IxvhwkDCfsoSY3AHhCLQKIZ+x4gNgy0KOgpP9RR5kh1QNVVZrafEx28lRF7M6dO+vFXbZt2zYzLiKbRQfof2QvBg/sh5HZlrJdAcp2BSgPBO0jRFnAUvaGDuhNWKVR+XhacQiwQkJsq9RRk9fFVgvjKCgHUTjY/j0TCNOApItnraacWAUgNgI9kr4n8Hu4HejxCVwhIufbkT9ah07RoD5PmTIFwzBqVCDrS2hjxozh0ksvzW1WP4DGPTGqlO/4GTEMMGMJRBticGiXA4hEYxAO1J17V7sCmJpkq70vw6shsrwWV6fadPGFQkSg+6dW9a7dQtuK7glgSAXxuA3IFbgnaQhmPvroo2kvvviiTJkyhfnz51ebsa+++mqD+nzRRRdVUxAbsu6hqvztb3/ToqKi9LfeessNuJqFAFJcTsx4UqXhsIY8o03i7x+3FfH1uk10ymvbKOTbLP4uxEaFWb3CVtw5ZP9f0yw37OttU6mkI9QK7SALONh+7geFTp9bhHBI8jsdkGkTQeDyyy+XRy6++MCJQ4aQ4jJwuxy4nQYOw2DqM4/w6KOPNsi/EJ/p4XCYYDCIiDBz5sz6IF9FhKysLFHVZ4YPH74DiDQLAfxnwTI8bhcA6QceCmrCrh1JyFGcDgebC7ZbMe+N0XohB0BNtkuUFdUNapYqrBTlWnawIPnRKm8z+sHO+rzTsPP3HfCdAcUKrRwWAcTZglj0WNmpNV+15OgLYMLYU/nsoYP4+w0D6NPzIFYu/YqbLDEhDZ3NW7duZf369agq55xzTr0IZ+TIkfTs2fMqEflns4qAXcEQD7000+pQeBehcMTqY0paJXZkGILDYbDw63UYTkcjGQGFMrJ6oUXjZEKEOEHOZbJcTsy+1wW018revtKvbGKqr3SzxYgA6tiNFxFg1nhy+x4coaA0g+8Lc1mxqSsOw8CMmYrAIYcc8pWIMGHCBD744IN4mjGzZ8+u9UM6d+5Mz5496yP7TWDh+PHj5c0337z5m2++eS75YnNYAUuBYcUlZRTtLKNtNjhTMyAWhkAJVCm57zAMPl60ktRUD4FG+Nu1jjUEYxQlVe51A22A4hDsTIEihdxwPXUAJ7QywWXP9gKgvQluhSyjMmEkOqmzOBqTawpLiKalf+WcumQkaZ7VRCMRwsEyycnKCq9bt+4e4G2v1wswbs2aNfcfcsghnH322XsU26CqFBQUGHl5eZMsCca/apSDTQxnAEsNw+Bfb7yDw+nAiIYs5ljDfguC4HQ5oQEeOX2LTsDRtgqwraHjIrDhBNgKfA+kOmFIPblNOhADchXuAGKm1auOSRbJarGqh6PT6YPJuTj4dvgDrPv7zJNp3+pHwsEQS77bqNlpLkrLylxVfBEP9OvXL7t169bFzzzzTKMJIO4YysvLU9216wWgNRDYGwQAdrFkj8dj6WmGUaupVx4MIohCDXK8ts45SMewuJdq40usaoUdbzRABDgU3hZrrwBxWs/GrdJLgamAQ+dyACnI1PlDNslZW5Z/tvxC98at82MSLg+nOwkhEvnHy+8QicYEeDP5JSUlJSXFxcVnXH311Yfcd999DepTfJFpxIgRiAgbFi+Oh8gJtWnCzQBvJ3ynBdvrObkaKPs18aDRAIRrfcVHLc9nWRYoOTbCU0LWgpJD4Zn+VoiBiIGDCA+tWt/5xElPnb/11uzhOfD6tNUb1sy654XZcx+c8v5MPPpM4Q0l5yb67k36tnyuwcsaYN2bb7652lbidzvjwUpIFZFvZ8yY8U9AFi1bJpgmpw4e7Hn8iSfa7y0C2BFXmMLRmGUFZOVZXKBKR9I8KbYzr/khDVphKYJxKGggAXSsgWhjapmBAfueoKTQ86ftbd4cNvZv342KPtj3b/4FC4C/AOfbxygC/BGYjJerKymY+dyNn6fwsR1g8eLFh4kFNdr+yev9IsLAgQMBnjFN8xawah8RCjH12Wfd2dnZf9pbBHCl9U1JXj61TfHUrEZX4tpTiMJRgEcrMPiuzbu7NcDqSDYHDCzF0p0w5WBtaSDd3fGKDwdc1/rO464bt+kZbmRrjY35yQMW4+VBNNH0kYnr3sS5/r17917bt29fzjzzzER0kmmaiAiHdu/OgL59WfzBB0QikUqv+L/HHoNWrcjOztY/33jjnap6dnNbAYmPq8S2DAcYTUdvWuGTq7PAnzmdozEpM4azNsmMe99G5nr791H1fGerJCL4RKCvEzpbcSd8Y99jOohFx7cfNf/JS9Yu5C4b+V5yUcZWoiA/d+NjCV4mIVxGPjvwVzJJ7yGfUvxMXLly5aH2uRduvfXW30+bNo1Vq1bN9Hg8Zxd8842069TJKoAdDlf65uVLl743b/bsUwcff7zx1xtvVBE5CpjV7ARAJbepQGlBHaK+gSqA4BZLoIeBGnOAzHcRCeJVAy9wElbd3jgU1TyhdwuH2Q+8HYMrndaagClgKBTbDao4gtnzTlr93YZ/sslm688AF+InM2l2tyKfAEIaPo7HyybCDALgrwzEzTx8pPR6rJesYlXyN1z+97///fKMjAyXx+OJANF2HTo4CNSaFX76I5Mn6+Djj+emcePkhWnTzli6ePH/NbcIALghMcBij7DhqHGkXbYTyOPxXFw/9sJVGveKhqkWSWK+TT8JsdJGfk1UmdKYDomle84Pw4VRCKj1uyPQmQo38I8pMe75eGqSVePnanxJyAfwUYyfVOAa+3enj679aMW9H99bFLwn+Ln6NWKapq66flWNxFlWVhZpqNiipIQ+3bufoKr/anYCcDqdyypZ+6oEgoGqwbuEI1Fuu/J8cjLTFOhUrw4ZpCS5X6uy/KEYzEfoJdVV/Y72gMQX0x0NHIc0gc3HQ2SQlXi5zrAcLO74esMxML8//LsBQ/U1+TyOFx3yxJCH7njjjpM9Lo+ISIZhGPVhjY7vvv66Tg722cKF4HKBKrfecIOKyEnNTgAulyvJTWmha9eW7xEUl9NRKcwpHImi2mCTrDboIVW2hEl65veSNCkUFoiFyH71fGc/S5dMNBKxiSgSg28bOVSfIUxC+fCREY+s59GKHIZ6Qu+1dRealq0FBectWLBAAXr26SM9DjnksCVLlvTdGzoAYhgEy3bgycgmvU0eGijhgHatq/mw60fsu9ccpGK5tyZiidp/L7bPXwakaP11ALcJHye1G8WS/+4YBBs1QD4U+Bo45U/+PzXK9e5yuSq6XD3aWIEZp40cKSUbNyrl5fLa5Mn06dMnrVk5gL0Vm+XtKy4EEVLSMkGEDZsLKsKi7aybmy85m2CwYWOoDSeUDvbfZQthmgF3S8NCvdVIcqfO5oznT2POfxww5Xj4jn0Dg6KRSJyd0uGgg2q8qbSs7IzNP/0ksViMjPR0Jk+e3LwcQERmqypqmrTueDCoJpb+K0W0CIgKu4JNU91E6yYE077+qgGt1FoXkPrQ0nJwhaBrhUqxsN/duLIBTz+YyL6DBWaSuR0Oh2vMZDZEPuzQu3eJqmYempe3CXikua2ADBGxAkOo0AUioSrmSkome6sWssI2+0vi9nz8w7IWWG7eWmGXpVekAz/Cyr5geCD2M5hL+IWAmiaFRUU1LiCZqiERWSYiAaDL3jADUVW6dcy1RlmsSOBoMgGoWg6iRkYFST3PKbDQ0tYHUF0/UIEsl4XcOtcRBCKTuMYNWg6aB/IK9Iv9UghARKo5gqrg46SsrKz2e8MVXAnHoJDexqbS5HAMgWBZk7J7Tfo/mfdErb46arLt6/MuAzmojPSVU7i4OwT7gsyDfr+oqlyqWrHbWS1QUlJSvldcwTWlMZmmSVp2a3YW7UiSylEUSE9NaeIPoFwAFdJFCRh7mAp/LLo5j9e+DZAxEPgDHFP6S0G8y+UCtxsxDFrl5OAwjB9i9UwwbRYCSE1NTVFV0jzuauxZq85XO7Pz+Rkf4XanEA7Xf1JJ7d66dUQZpk7mohyCtQCkdbUT3s1YCItag7YB9wg4KvhLmvnDkmoR2/L/jfo+21wi4OGYaeqNvzuLmGnaYeL2QDprZlE/7yhtsC9Aa+7RQkyOM0awNp4cqyYxo3osQPJvtxN+U/fbytdD/zN/aciPm9zxgwZyuuYiAAUkGAoTLN2BiAFlRVbwlMOdUFhcTme1Ldb2WBE6h4XG+RRW0gOcGAYcYfdXbeSLwncmPG/fuxsZNHj3PNXLoc2K6b9wYigSupwbGNug527nZrxMx8uBe4sAKsynnUVWSFgSbYgITofBh4u+xu1qvBTanQEvlf9ok6R6isKiGBzeiJjCuuD4ZhvIfN7DyTtRjT6vj+gk7iJGvrUEXQdBtsPL53qvrsbHefjYvNcJoE3nQzFj8awgC11tsjO57OzB/PDTNis82jSJRmON4TMOcXNCXaZbTQShMMMJJw5M8utT+e+KJmJEGvBF/ya/0rJz04Gf05hIevq49C4dHuwgOkEnTr94+pXG3UYxXsprQH4PrEDQITEz1mGvKoGVNP9YLCGI4/hwuxw899qHiQCRcCRK6a5Ag6phYWn4DkyOISnAIXFtFjlqkpcsEW1q+MgDI3tXlIOOV1o+A3im0uRQbuGeKtE8Xt6ASkEoG/BhpeH6MPEyGS95+GqJAtpTeIiNm9kssk3ye3ftfT3wb5SX8PIZJrOZwL3cxFCUTvh5FqB/Xv8ruZNcHDyBn6K9SgAJuW6HhyngcDj3SN5rZQO+ZtYRpZc4yNDqzy5OQj6KpS9QOd4PDCbhY2MVNjwNHyOqEMQBeNmAcjF+PsdysZ6FFR3cfJDKSyu2rTDwsxYvxUC7Nultvp7749z/e+ubt7hv6H3xYNO3T+t2WtclY5fcszeVwKpmScULDQc7Nm+o17NL4IAaiUoxRHfLHQ6KZ2mQTlShVy3WY827bFRFvsWGR9Rw3xZ8dMXP53h5Dx8BlEnNrvr7+R5hjv0NrVCuL7qtqMexHY+VNFcaqvoR+UTxcf7EoRPz97YVUAnh5TsqZ25Z6wG1Y3ARdPsSvozC+Fq8iy8ma/k1EolB3wSq04hRS9yfNOVChDKKfD7GT64d5CE1yOamLBjQm3y+sAniIfJR8vnD+Nnjh8pd0gc/zqlfTxXqSH5tdgIQh5NYknPHNGO07nCQlRHkMFizcUul+7+EEQrLgWMEMudXDuOOY62Iiiz002tBRq5URnQ8O2JHLZ/q+XRPRaKfnfg5iXyOAYIog2v4rqvx8h7eSvpG48BHCD8D8NolboQr8PM0afyH/yP7uSXP6cjDR6qIPLbPCKDs581ktM2rpIkbTjfZGWm4nE4Wrfo+ce30aPQ0gdelIk1suLPCfKvNDGxXTfGciaHKwBruj5kwt5bmfmoSVuAlHcGNn1uQJI+cl1S8BPDzND5Ow5fIB2gKOAkvgo8X8LIVH4KXdVf2uVLI54p94QhKhP6nt26PiGHrAla9gFgsyvUXDSMQDNOv18EJVt5F9US1F2xs5LqB3+7GE5ii06tk95aSJkJ2LSKiqkNnrcIcAy48sWZTsKGzshyYZn/gNXjJJp8XUVrjs4paNDn4OBl4CC9ulP72uW54KUCYXdejzWYFHNyhPSJimYGGEzSGQ6Ns27KJtq1y2BUKgcbo0eVAAqEwrbMyMIp3uqtYbS7g8M/BcVwVbV8FEUUx6KIx+gIfJC5mcCbQVuIpRy5q3WHTgMIoXNKPKra0lwwUL5L0XqsYXVHco4iSDfyIn8cT8t0K8boLL0OB2cBDwN0Im5uV1fqI70S1KencbncdbzYC2Fq0w1oRVAVPBlq+nSlzP+LIzq1p1+aYRKZQLFEfUCv7kSvs80tdcC8VSRyIEFOTXRikq5WVcYr5Jh8aF6Dm2xgoN2Hlo/5HlFOD82kLdsx9FehnvW5HFXOvLVao9yuAQRTFQRQoRVmAUGqXoC0CnHgZh9IJpTtesvDxNF6eQ/Hhr+Id9HIYVuyBAEvwsU/jCZptLSAQClcIanEQDEdZvbmYEjMlYRq63W6m/OdzAqEwRTvLksmgIMlec8bssiwJ2Mk6YGVivV8ZKS477l7JQ+hjhyGEENAwTir0it33WSgGvkH4FlhVMr4kHViG8D1CayAHP53x0wc/vfHRFZgBPAisw0suEKiG/HwUK5l0FfD1HiE/n3FNgahm4QDJAaEgEA3iSXFxxx9GgghqmoghqEKq221XXDLi4rnIztm7LE4ADhgO/DfR4qWY5vREHJGqcChwhU5nKvCICh5bh1ibrAQohBywsR7sNEZS8GeWL+sTVT1fRKYnIWAW8Cx+W977GW4j/jzgRdTOcfAyFzgN2IKvCU1AaRrcNRcHGNOtY57l7bM9gPEUIVEzyTsIwXAET4qb1tnpcc3RNGGjWCHcaiPy5K9qswbssvCi/E2Fb9XgAtFEINKcKq7gsEKjQpAqId9C+NkIHrxMJZ8rbcLZBrwOvIcQxcst+DgDHw58VTyNzQVeO9MI4E+cz1+rW0PNzgFEhB8LiiqigtQEhxuJhSElA8JWZdBIOMzFw04gEAqT17YV5s/FCEwOw/1uuFEgw9L36Bi1qm58DqBvISqsUOhvl4lVxMrSTSDf0hVMtf6PU44a0wAADOxJREFUn3I2qcD18YqtJ1js3Y/gs7dq86JNMuO9OFBS8e+GcL38AZiAz/ae3sIgfVD/DVwo98veNwMPaJNTMdMjAUhrXaurWFUZecoATNMkBl96rLy7Fyo8v2Q54KoEgQ1HxeRf8ZTqeLl4iXMEQTD5UiN8KyDFy+gOuAVGD6SGlbOmYcmLbUSk2cUeXE3UsgehG16OrOJFrIrVc/FxAF4EL7dKpqwTkUzJl6v3jR+g0lqAQLicJKldjWNErcgh0wFb+kFU4Lvk5VyF3E+pZEerUPtSrQg7RXAA6wrnkgrc1h9ea0YzrJ9tBu6yZ36sidotx8cylP/aJibkEyJ5BTSfyfiIb2t/JcpoRXfh5SGEW+pyPze7J9CMRSzEh8vt11X+lnhmcHFJGbtgmwkLbYTPxpbX9hMnpVvr2xb2f2IpymqtzUOovI6DHRRzZHgbT/SHvze7/PUlqZy+Jk528NMOr+3UEYL4WJbk2ppuE8Ig4EH8dMfaMfRW/Gys61uanQBKCjYj8WqhalZUDgXEcLD42/VEojEem/IuLpcz8aUGbLft7PipzCgk0seN64iqEJUaOI/d/Eo5n1K5nED/2v3/vzaovnI5nmKdoGWMYxTwHj5a4eVRfLyOb/fBLM1OAK7UNKLhoB2IZev0CfvOwdpNW4nFYjgEypTCATbCTYvdB5NYhgGc+kVyAoda8Xw1sIAdmKxkfwMf99j6Raatb/TAYCxw76Aeg/6CnzTyeRz4x742AxOQ2ToPrSNGPVEvwDA40TTzAeZDZwP+A/TQCnkPMESS6wka/KhKTLWyG1FMJhvDKWV/BCUdtXZCE6QNPl57/MvHp8/fNH+aPaAd8FV4TfeZK7hCyzdxuOrOVkn1uGmdlU7fguDOhTBArLp58Uze5AQfF3AmtoUg5bxDGisQjrb3CUSEsLIXAjL2FfjZBTyLl+s0omNV9XC5XT5iIifjJYqvYTjdK9vGWYtCUWKRcC1EAqaVMpYr8K5ABxvzPyu8lMQFDIE+iXZ/S7kq/1TTrk5v7Rs03TiXH9jfQXno5d++/FdLg+YW8nkJu0DnL44A4gpf8eYNSKisxpKx9se8FN/JS+FHE07TuPPHeqrs2zwrGijJ3HsT4d9qEkL5gihj+F8AofCSIy+ZLSJiHGCkImTga7jes3cIQBwI0LZL90T5uNQUN0n1+uJOI6ddSvI7gcEDYEnMEgfrDNh16ZVMuOyaymvqci7l4uCPAscS5UQZYVXr+kWCFw/5XNpErT2Bl3mQKA/bqHLre4cAnCnWHLZdww7D4PE33sPpMDBVCYYjyRtHLVc49RirkDMu+DkTplx/Mb5VnVmFn8+q0ddZlMl5LDdGNCiGf19o8UHgVbw82ARtTQBOAejVvtdCfAxvHAHk4yOfmXjrXTO/8X7BlIxEQfUtQ4sItg9y5KGdMU0zTsWLIzDk2KSghmPAPOxe5n9+KFvxVY///xUqcTEaUBl9N0QQA/j6uq+vNk1zTuMkSYU78SWEQpQZ+PlwT74rNTVVO7RvzUWnHR93BliewMxcKN2G4XDwwLzpDOvQhz7du7Jm4xZ6z/n46xNUj64WljWeS1Bi3NOMbtx9AfHFoyYA0zQLDcNot2ciwM+l+LgZYSNeFC+X4G1qEWFxggm5r+PY6CAtxY0gvDx7Hk+53RdUQ76X36HsqIz8+Zn7iTkn5DeByPJiNhb5NesAPtbZixkLgbHkN5VHTatSLa/O+RhPiguny8VmkUiVGTKSGC7uSQ5qXDQK3K79hgsIfcnn/AZwjYer/P4C355NUqfdkA+pISJWWY6fI8hnIjALP5820htklYhRZYO7gKtWnMorfMp5pwwkGI4kfAVJbP8iYDJBKuLJ+eIWYCZEOmCtE/z6wccK8rmMpP0V6pjpU/BxUdLvl/FZNY/2nAD8NdfUxcsg8ilE6IFyCV5W4KvfDluVIFwOqZmwcyuSYmA4LKI9uEP76hWtLLb/AlBi+Ym/NICnQB8FvRKMf+5nFv3h9UD+DnxJSnp+EwWb7NYM9PEpftqhBBC6AB3twMbdTPgqhWAMB5QUgOEg3eXh6TffQ0Qo2F6FlsZzMcrLdrybsOVQB+gLIK+CXAuOt2BA4X6Ffj9nkV9rsgp4ObkS8r1kIPRtqtcb9fzIAPA8ynm28vJinaJNhEAwnCAGQwwrLkuVVzM/AXFgqtIxtyLML3RuaBjCYwl1IepciCttEX89+Wt6z/kdyELo+2UT59b9UnSBTnWoTq/ZiBe8DEK5CB9L9i4BWNxgJX7uxctHwH/JR/FyYhJbOiX+ZyQa5dQB1qbQhsNBSeFPliQIlFVgT8HjdlG0s8yOCMZEWWR/1TpWn5rJc08fyf0fLGHFsC/gmOftJw8mn6f2G+RbBH2pHcxRVel7Fz/xfX4PQTkFfxPkFO6RJ9DHEPy8gHAqMA8vx9lX1sRr0LicTuZ9ZW1yoKaJM8WDqsmM7C+4qei8Srs0/LClEIfDIGVGynsIp+HmFe5eOJVpvkugJAbGRXDsU/ZglaL0wZ8U+frrVwQVH0uRiiLUSVCSxAmm4cff1K937sGH/9f2JBaTz834eZ58lgNHqipOO9RLVUnNbGU5AtOzeOfdJXhS3PHVPwxDCF4TRLbLQGLi5a4VCrumoOEfIethkDH2bFhUbdOFX+aMdgC/QdmF8AJWfkFOPcLCT8FLb3yVts9bYre5EpLkfjwFLZ9DgG74G7913p7HA/hpRT7r8PIwPrLx8qg8IDbRWmG7ajggFkVRHA4rUbRjbmvmZixma7diPE95UId+ESyb1xVCr8Gx38PCiRC8CU6M4OXf+DjmVzKjY8B7NpK6JbHzOVh7FK/Cz4QanvwUrVjqTngKrXE9osq9t5DPQIQVifI0+4wALCLoRj4R8jkaMEzsDaPsAD1JyYRdxYm9/qKeGMHLggzddjzlgRCPx94lFnr8jyAvQb/vYeEEcE7Ce2w7YAE+OjdgBrpQ2iEU1icmrllZe+UxOrMScoUsfElRSz6ieHkT7L4KP9Rg++cA3yRi/5tEBHiTskkra58K5FCRVJFVp+3px0U+EZQRsQGxQ9Z/UnCa3RErGFSE7Fg6ZZlBUtJcXLJtCAK0ykq3zcZYAI5dAgvvwBF7lbuOPQblM6TyTty78ZTFgHeAMfALthYsS6ojXlYB1wMz8KGChBQFL2vw0ZX8JP+Ml09QzsHfdMiPc4D7azFNFDgQiODjbnuAb0bwxNGKcritqMzBzyybCFbHesZSnfMrPLYhwrgEWpmZzB+0mq7rc3FJ5eVrd9qNzwWdb9/K1cMGk7F9O7ABfz02dsznLWA7wiZ8jVsT30dE8CPQCS9DUd4ARuoOvfH292/X+96574JEZpFVfHKUbYI3eXSz7IadrrQR3BqlE0IaVkxeCJ+dj5/PowijgFyUE4AhrlmuAZGzI+fesXkkgrI6awcHl+XwwAFvcvyMXmwpLOZ3ZwyC9Na4gsXc88xbRA+68TPOes4gs+hKrMIQB9jf9yjCw/iS4vy8ZAPHAq/gox2/ZogrdF6+xcdhtnjItJXHTsBIfM2X0+DcjRw7ogbNcztwpR2eHEM5AR834KUz8APCBZEhkb84J7pY/4dtFLp2MiDSn+ScTDNeNNL2GEZvimA8mPeymVW0EFiDErMVIAOftRN3Jflp+c4v+NUjP1lX8HEYXhaggM8eLC/rsfYoajYCkEZSbW+U9ggG8B5KCTADP5fhZYkUSh5l5LXrlMXBgVx+Ez0JgqXMT/+G0vcCDO53OKkeD2ZaNs+lvc62B0rR0bHbtJ1+AzjxMy1pZjyFtd9uJjAK+BTffpPoUZNIU1tHUGAw/hr9A/vYD1DZVhW8HIdyDfkoyunaVt+lLRRHykihE0TDoCZhiWCq0io7g03fLufLo8ro9+khvNd9GeHW0ZsQXsbHX2wl9HK7ysZMhEvw8R/2d7C8gr9JKIp7xQvd9J24C2UGWLlrKeoiKjFu2zycmGny3oIVnH1aX/xZr3PnllGoKve2mUrqI6ndAuMCG7Ayf0pQyvGTQQs0KzRHUOgw/CyPk9ag8p5cuv0UAhKh+KfvibYx+XDV19y5ZRTRcIiH8mbieMZJcHRwNMpbKCUoHVqQ/2slAB+D8CKe+z0XuF9wU2IGOCCYzbK0DSw8ooRdrYJsWlWEAu+3W4G37CLMo00Q0hA+x4/gb+aKWi3QrBwAfKiIFOKEHms74ED4MHsF3QMHkvdjNtt3lmkwFObbnVujTy59d6drvnOjpmm0Vp9EC/zKCMAGx2ZHzAyHYmXbC2JXLTgilrOmNHZc58xYaSDMP16cPsN4zXHk+sHbMsO7wl1wM67Jc+pboJmsgPrBAlXNKy8uIJN0XA7LMxiOmfGNnQpLS8tIeO/2cb28FmiBFmiBFmiBFmiBFmiBFmiBFmiB/wH4f+jryq6sRdUDAAAAAElFTkSuQmCC" alt="DREME Logo"/>
+        <h1>DREME</h1>
+        <h2>Discriminative Regular Expression Motif Elicitation</h2>
+      </div>
+      <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>
+      <p>
+        If you use DREME in your research please cite the following paper:<br />
+        <span class="citation">
+          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
+          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
+        </span>
+      </p>
+    </div>
+    <!-- navigation -->
+    <div class="pad2">
+      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#info_sec">Program information</a>
+    </div>
+    <!-- alert the user when their browser is not up to the task -->
+    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
+    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
+    <script>
+      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
+    </script>
+    <!-- description -->
+    <div id="description_section" style="display:none">
+      <div id="description" class="header">
+        <h2>Description</h2>
+      </div>
+      <div id="description_text" class="box">
+      </div>
+    </div>
+    <script>
+      if (data.description) {
+        $("description_text").innerHTML = "";
+        $("description_text").appendChild(make_description(data.description));
+        $("description_section").style.display = "block";
+      }
+    </script>
+    <!-- motifs -->
+    <div id="motifs_sec" class="header">
+      <h2>Discovered Motifs</h2>
+      <span><a href="#inputs_sec">Next</a>&nbsp;<a href="#">Top</a></span>
+    </div>
+    <div id="motifs" class="box">
+      <p>No motifs were discovered!</p>
+    </div>
+    <script>make_motifs();</script>
+    <!-- inputs and settings -->
+    <div id="inputs_sec" class="header">
+      <h2>Inputs &amp; Settings</h2>
+      <span><a href="#motifs_sec">Previous</a>&nbsp;<a href="#info_sec">Next</a>&nbsp;<a href="#">Top</a></span>
+    </div>
+    <div class="box">
+      <h4>Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_seq_source"></td>
+          <td id="ins_seq_alphabet"></td>
+          <td id="ins_seq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.sequence_db;
+        $("ins_seq_source").innerHTML = db.file;
+        $("ins_seq_alphabet").innerHTML = dreme_alphabet.get_alphabet_name();
+        $("ins_seq_count").innerHTML = db.count;
+      }
+      </script>
+      <h4>Control Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_cseq_source"></td>
+          <td id="ins_cseq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.control_db;
+        if (db.from == "shuffled") {
+          $("ins_cseq_source").innerHTML = "Shuffled Sequences";
+        } else {
+          $("ins_cseq_source").innerHTML = db.file;
+        }
+        $("ins_cseq_count").innerHTML = db.count;
+      }
+      </script>
+      <h4>Background</h4>
+      <span id="alpha_bg"></span>
+      <script>
+      {
+        $("alpha_bg").appendChild(make_alpha_bg(dreme_alphabet, data.control_db.freqs));
+      }
+      </script>
+      <h4>Other Settings</h4>
+      <table id="tbl_settings" class="inputs hide_advanced">
+        <tr>
+          <th>Strand Handling</th>
+          <td id="opt_strand">
+            <span class="strand_none">This alphabet only has one strand</span>
+            <span class="strand_given">Only the given strand is processed</span>
+            <span class="strand_both">Both the given and reverse complement strands are processed</span>
+          </td>
+        </tr>
+        <tr><th># REs to Generalize</th><td id="opt_ngen"></td></tr>
+        <tr><th>Shuffle Seed</th><td id="opt_seed"></td></tr>
+        <tr><th>E-value Threshold</th><td id="opt_stop_evalue"></td></tr>
+        <tr><th>Max Motif Count</th><td id="opt_stop_count"></td></tr>
+        <tr><th>Max Run Time</th><td id="opt_stop_time"></td></tr>
+      </table>
+      <script>
+      {
+        $("opt_strand").className = (dreme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
+        $("opt_ngen").innerHTML = data.options.ngen;
+        $("opt_seed").innerHTML = data.options.seed;
+        $("opt_stop_evalue").innerHTML = data.options.stop.evalue;
+        $("opt_stop_count").innerHTML = (typeof data.options.stop.count == "number" ? data.options.stop.count : "No maximum motif count.");
+        $("opt_stop_time").innerHTML = (typeof data.options.stop.time == "number" ? data.options.stop.time + " seconds." : "No maximum running time.");
+      }
+      </script>
+    </div>
+    <!-- list information on this program -->
+    <div id="info_sec" class="bar" style="position:relative">
+      <div style="position: absolute; right: 0;"><a href="#inputs_sec">Previous</a> <a href="#">Top</a></div>
+      <div class="subsection">
+        <h5 id="version">DREME version</h5>
+        <span id="ins_version"></span> 
+        (Release date: <span id="ins_release"></span>)<br>
+      </div>
+      <script>
+        $("ins_version").innerHTML = data["version"];
+        $("ins_release").innerHTML = data["release"];
+      </script>
+      <div class="subsection">
+        <h5 id="reference">Reference</h5>
+        <span class="citation">
+          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
+          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
+        </span>
+      </div>
+      <div class="subsection">
+        <h5 id="command">Command line</h5>
+        <textarea id="cmd" rows="3" style="width:100%;" readonly="readonly">
+        </textarea>
+        <script>$("cmd").value = data["cmd"].join(" ");</script>
+      </div>
+    </div>
+    
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test1.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,102 @@
+# DREME 4.12.0
+#     command: dreme -o ./dreme_test1_out -p dreme_test_sites.fa -norc -rna -s 1
+#   positives: 1000 from dreme_test_sites.fa (Thu Apr 26 15:09:03 CEST 2018)
+#   negatives: 1000 from shuffled positives
+#        host: ThinkPad-T450s
+#        when: Thu May 03 13:22:29 CEST 2018
+
+MEME version 4.12.0
+
+ALPHABET "RNA" RNA-LIKE
+A "Adenine" CC0000
+C "Cytosine" 0000CC
+G "Guanine" FFB300
+U "Uracil" 008000
+N "Any base" = ACGU
+X = ACGU
+. = ACGU
+V "Not U" = ACG
+H "Not G" = ACU
+D "Not C" = AGU
+B "Not A" = CGU
+M "Amino" = AC
+R "Purine" = AG
+W "Weak" = AU
+S "Strong" = CG
+Y "Pyrimidine" = CU
+K "Keto" = GU
+T = U
+END ALPHABET
+
+Background letter frequencies (from dataset):
+A 0.221 C 0.245 G 0.221 U 0.312
+
+
+MOTIF UUYUCY DREME-1
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST      UUYUCY        387        210   2.6e-018   1.2e-013
+#           UUUUCC        147         75   1.8e-007   8.1e-003
+#           UUUUCU        155         94   2.2e-005   1.0e+000
+#           UUCUCU         94         51   1.3e-004   6.1e+000
+#           UUCUCC         75         42   1.1e-003   5.0e+001
+
+letter-probability matrix: alength= 4 w= 6 nsites= 459 E= 1.2e-013
+0.000000 0.000000 0.000000 1.000000
+0.000000 0.000000 0.000000 1.000000
+0.000000 0.294118 0.000000 0.705882
+0.000000 0.000000 0.000000 1.000000
+0.000000 1.000000 0.000000 0.000000
+0.000000 0.474946 0.000000 0.525054
+
+
+MOTIF YAGG DREME-2
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST        YAGG        600        416   1.1e-016   5.1e-012
+#             CAGG        441        304   1.5e-010   6.6e-006
+#             UAGG        232        165   1.1e-004   4.7e+000
+
+letter-probability matrix: alength= 4 w= 4 nsites= 793 E= 5.1e-012
+0.000000 0.692308 0.000000 0.307692
+1.000000 0.000000 0.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+
+
+MOTIF GAAGAW DREME-3
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST      GAAGAW         81         22   8.2e-010   3.4e-005
+#           GAAGAU         45          7   2.4e-008   9.9e-004
+#           GAAGAA         40         16   7.9e-004   3.3e+001
+
+letter-probability matrix: alength= 4 w= 6 nsites= 89 E= 3.4e-005
+0.000000 0.000000 1.000000 0.000000
+1.000000 0.000000 0.000000 0.000000
+1.000000 0.000000 0.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+1.000000 0.000000 0.000000 0.000000
+0.494382 0.000000 0.000000 0.505618
+
+
+MOTIF SMUGGA DREME-4
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST      SMUGGA        110         47   9.1e-008   3.7e-003
+#           GAUGGA         22          6   1.7e-003   7.1e+001
+#           GCUGGA         33         14   3.6e-003   1.5e+002
+#           CCUGGA         32         15   8.6e-003   3.5e+002
+#           CAUGGA         29         13   9.1e-003   3.7e+002
+
+letter-probability matrix: alength= 4 w= 6 nsites= 119 E= 3.7e-003
+0.000000 0.529412 0.470588 0.000000
+0.428571 0.571429 0.000000 0.000000
+0.000000 0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+1.000000 0.000000 0.000000 0.000000
+
+
+# Stopping reason: E-value threshold exceeded
+#    Running time: 13.95 seconds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test1.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,77 @@
+<dreme version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  <model>
+    <command_line>dreme -o ./dreme_test1_out -p dreme_test_sites.fa -norc -rna -s 1</command_line>
+    <positives name="dreme test sites" count="1000" file="dreme_test_sites.fa" last_mod_date="Thu Apr 26 15:09:03 CEST 2018" />
+    <negatives name="shuffled positive sequences" count="1000" from="shuffled"/>
+    <alphabet name="RNA" like="rna">
+      <letter id="A" symbol="A" name="Adenine" colour="CC0000"/>
+      <letter id="C" symbol="C" name="Cytosine" colour="0000CC"/>
+      <letter id="G" symbol="G" name="Guanine" colour="FFB300"/>
+      <letter id="U" symbol="U" aliases="T" name="Uracil" colour="008000"/>
+      <letter id="N" symbol="N" aliases="X." equals="ACGU" name="Any base"/>
+      <letter id="V" symbol="V" equals="ACG" name="Not U"/>
+      <letter id="H" symbol="H" equals="ACU" name="Not G"/>
+      <letter id="D" symbol="D" equals="AGU" name="Not C"/>
+      <letter id="B" symbol="B" equals="CGU" name="Not A"/>
+      <letter id="M" symbol="M" equals="AC" name="Amino"/>
+      <letter id="R" symbol="R" equals="AG" name="Purine"/>
+      <letter id="W" symbol="W" equals="AU" name="Weak"/>
+      <letter id="S" symbol="S" equals="CG" name="Strong"/>
+      <letter id="Y" symbol="Y" equals="CU" name="Pyrimidine"/>
+      <letter id="K" symbol="K" equals="GU" name="Keto"/>
+    </alphabet>
+    <strands>none</strands>
+    <background A="0.221" C="0.245" G="0.221" U="0.312" from="dataset"/>
+    <stop evalue="0.05"/>
+    <ngen>100</ngen>
+    <add_pv_thresh>0.01</add_pv_thresh>
+    <seed>1</seed>
+    <host>ThinkPad-T450s</host>
+    <when>Thu May 03 13:22:29 CEST 2018</when>
+  </model>
+  <motifs>
+    <motif id="m01" alt="DREME-1" seq="UUYUCY" length="6" nsites="459" p="387" n="210" pvalue="2.6e-018" evalue="1.2e-013" unerased_evalue="1.2e-013">
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="0.294118" G="0.000000" U="0.705882"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.474946" G="0.000000" U="0.525054"/>
+      <match seq="UUUUCC" p="147" n="75" pvalue="1.8e-007" evalue="8.1e-003"/>
+      <match seq="UUUUCU" p="155" n="94" pvalue="2.2e-005" evalue="1.0e+000"/>
+      <match seq="UUCUCU" p="94" n="51" pvalue="1.3e-004" evalue="6.1e+000"/>
+      <match seq="UUCUCC" p="75" n="42" pvalue="1.1e-003" evalue="5.0e+001"/>
+    </motif>
+    <motif id="m02" alt="DREME-2" seq="YAGG" length="4" nsites="793" p="600" n="416" pvalue="1.1e-016" evalue="5.1e-012" unerased_evalue="2.4e-012">
+      <pos A="0.000000" C="0.692308" G="0.000000" U="0.307692"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <match seq="CAGG" p="441" n="304" pvalue="1.5e-010" evalue="6.6e-006"/>
+      <match seq="UAGG" p="232" n="165" pvalue="1.1e-004" evalue="4.7e+000"/>
+    </motif>
+    <motif id="m03" alt="DREME-3" seq="GAAGAW" length="6" nsites="89" p="81" n="22" pvalue="8.2e-010" evalue="3.4e-005" unerased_evalue="3.5e-004">
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.494382" C="0.000000" G="0.000000" U="0.505618"/>
+      <match seq="GAAGAU" p="45" n="7" pvalue="2.4e-008" evalue="9.9e-004"/>
+      <match seq="GAAGAA" p="40" n="16" pvalue="7.9e-004" evalue="3.3e+001"/>
+    </motif>
+    <motif id="m04" alt="DREME-4" seq="SMUGGA" length="6" nsites="119" p="110" n="47" pvalue="9.1e-008" evalue="3.7e-003" unerased_evalue="2.6e-005">
+      <pos A="0.000000" C="0.529412" G="0.470588" U="0.000000"/>
+      <pos A="0.428571" C="0.571429" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <match seq="GAUGGA" p="22" n="6" pvalue="1.7e-003" evalue="7.1e+001"/>
+      <match seq="GCUGGA" p="33" n="14" pvalue="3.6e-003" evalue="1.5e+002"/>
+      <match seq="CCUGGA" p="32" n="15" pvalue="8.6e-003" evalue="3.5e+002"/>
+      <match seq="CAUGGA" p="29" n="13" pvalue="9.1e-003" evalue="3.7e+002"/>
+    </motif>
+  </motifs>
+  <run_time cpu="13.95" real="13.95" stop="evalue"/>
+</dreme>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test2.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,6119 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>DREME</title>
+    <script>
+      // @JSON_VAR data
+      var data = {
+        "program": "dreme",
+        "version": "4.12.0",
+        "release": "Tue Jun 27 16:22:50 2017 -0700",
+        "cmd": [
+          "dreme", "-o", "./dreme_test2_out", "-p", "dreme_test_sites.fa",
+          "-norc", "-rna", "-s", "1", "-e", "1e-05", "-g", "100", "-mink",
+          "4", "-maxk", "10"
+        ],
+        "options": {
+          "revcomp": false,
+          "ngen": 100,
+          "add_pv_thresh": 0.01,
+          "seed": 1,
+          "stop": {
+            "evalue": "1e-05"
+          }
+        },
+        "alphabet": {
+          "name": "RNA",
+          "like": "rna",
+          "ncore": 4,
+          "symbols": [
+            {
+              "symbol": "A",
+              "name": "Adenine",
+              "colour": "CC0000"
+            }, {
+              "symbol": "C",
+              "name": "Cytosine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "G",
+              "name": "Guanine",
+              "colour": "FFB300"
+            }, {
+              "symbol": "U",
+              "aliases": "T",
+              "name": "Uracil",
+              "colour": "008000"
+            }, {
+              "symbol": "N",
+              "aliases": "X.",
+              "name": "Any base",
+              "equals": "ACGU"
+            }, {
+              "symbol": "V",
+              "name": "Not U",
+              "equals": "ACG"
+            }, {
+              "symbol": "H",
+              "name": "Not G",
+              "equals": "ACU"
+            }, {
+              "symbol": "D",
+              "name": "Not C",
+              "equals": "AGU"
+            }, {
+              "symbol": "B",
+              "name": "Not A",
+              "equals": "CGU"
+            }, {
+              "symbol": "M",
+              "name": "Amino",
+              "equals": "AC"
+            }, {
+              "symbol": "R",
+              "name": "Purine",
+              "equals": "AG"
+            }, {
+              "symbol": "W",
+              "name": "Weak",
+              "equals": "AU"
+            }, {
+              "symbol": "S",
+              "name": "Strong",
+              "equals": "CG"
+            }, {
+              "symbol": "Y",
+              "name": "Pyrimidine",
+              "equals": "CU"
+            }, {
+              "symbol": "K",
+              "name": "Keto",
+              "equals": "GU"
+            }
+          ]
+        },
+        "background": {
+          "freqs": [0.221, 0.245, 0.221, 0.312]
+        },
+        "sequence_db": {
+          "name": "dreme test sites",
+          "file": "dreme_test_sites.fa",
+          "lmod": "Thu Apr 26 15:09:03 CEST 2018",
+          "count": 1000
+        },
+        "control_db": {
+          "name": "shuffled positive sequences",
+          "from": "shuffled",
+          "count": 1000,
+          "freqs": [0.221, 0.245, 0.221, 0.312]
+        },
+        "motifs": [
+          {
+            "db": 0,
+            "id": "UUYUCY",
+            "alt": "DREME-1",
+            "len": 6,
+            "nsites": 459,
+            "evalue": "3.3e-013",
+            "p": 387,
+            "n": 210,
+            "pvalue": "2.6e-018",
+            "unerased_evalue": "3.3e-013",
+            "pwm": [
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 0.294118, 0.000000, 0.705882], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.000000, 1.000000, 0.000000, 0.000000], 
+              [0.000000, 0.474946, 0.000000, 0.525054]
+            ],
+            "matches": [
+              {
+                "seq": "UUUUCC",
+                "p": 147,
+                "n": 75,
+                "pvalue": "1.8e-007",
+                "evalue": "2.2e-002"
+              }, {
+                "seq": "UUUUCU",
+                "p": 155,
+                "n": 94,
+                "pvalue": "2.2e-005",
+                "evalue": "2.8e+000"
+              }, {
+                "seq": "UUCUCU",
+                "p": 94,
+                "n": 51,
+                "pvalue": "1.3e-004",
+                "evalue": "1.7e+001"
+              }, {
+                "seq": "UUCUCC",
+                "p": 75,
+                "n": 42,
+                "pvalue": "1.1e-003",
+                "evalue": "1.4e+002"
+              }
+            ]
+          }, {
+            "db": 0,
+            "id": "YAGG",
+            "alt": "DREME-2",
+            "len": 4,
+            "nsites": 793,
+            "evalue": "1.4e-011",
+            "p": 600,
+            "n": 416,
+            "pvalue": "1.1e-016",
+            "unerased_evalue": "6.3e-012",
+            "pwm": [
+              [0.000000, 0.692308, 0.000000, 0.307692], 
+              [1.000000, 0.000000, 0.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000], 
+              [0.000000, 0.000000, 1.000000, 0.000000]
+            ],
+            "matches": [
+              {
+                "seq": "CAGG",
+                "p": 441,
+                "n": 304,
+                "pvalue": "1.5e-010",
+                "evalue": "1.8e-005"
+              }, {
+                "seq": "UAGG",
+                "p": 232,
+                "n": 165,
+                "pvalue": "1.1e-004",
+                "evalue": "1.3e+001"
+              }
+            ]
+          }
+        ],
+        "runtime": {
+          "host": "ThinkPad-T450s",
+          "when": "Thu May 03 13:22:11 CEST 2018",
+          "cpu": 15.97,
+          "real": 15.97,
+          "stop": "evalue"
+        }
+      };
+    </script>
+    <script>
+var site_url = "http://meme-suite.org";
+</script>
+    <script>
+
+/*
+ * $
+ *
+ * Shorthand function for getElementById
+ */
+function $(el) {
+  return document.getElementById(el);
+}
+
+
+/*
+ * See http://stackoverflow.com/a/5450113/66387
+ * Does string multiplication like the perl x operator.
+ */
+function string_mult(pattern, count) {
+    if (count < 1) return '';
+    var result = '';
+    while (count > 1) {
+        if (count & 1) result += pattern;
+        count >>= 1, pattern += pattern;
+    }
+    return result + pattern;
+}
+
+/*
+ * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
+ * Slightly modified with information from
+ * https://developer.mozilla.org/en/DOM/window.location
+ */
+function parse_params() {
+  "use strict";
+  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
+  search = window.location.search;
+  queryStart = search.indexOf("?") + 1;
+  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
+  query      = search.slice(queryStart, queryEnd - 1);
+
+  if (query === search || query === "") return {};
+
+  params  = {};
+  nvPairs = query.replace(/\+/g, " ").split("&");
+
+  for (i = 0; i < nvPairs.length; i++) {
+    nv = nvPairs[i].split("=");
+    n  = decodeURIComponent(nv[0]);
+    v  = decodeURIComponent(nv[1]);
+    // allow a name to be used multiple times
+    // storing each value in the array
+    if (!(n in params)) {
+      params[n] = [];
+    }
+    params[n].push(nv.length === 2 ? v : null);
+  }
+  return params;
+}
+
+/*
+ * coords
+ *
+ * Calculates the x and y offset of an element.
+ * From http://www.quirksmode.org/js/findpos.html
+ * with alterations to take into account scrolling regions
+ */
+function coords(elem) {
+  var myX = myY = 0;
+  if (elem.getBoundingClientRect) {
+    var rect;
+    rect = elem.getBoundingClientRect();
+    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
+        window.pageXOffset : document.body.scrollLeft);
+    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
+        window.pageYOffset : document.body.scrollTop);
+  } else {
+    // this fall back doesn't properly handle absolutely positioned elements
+    // inside a scrollable box
+    var node;
+    if (elem.offsetParent) {
+      // subtract all scrolling
+      node = elem;
+      do {
+        myX -= node.scrollLeft ? node.scrollLeft : 0;
+        myY -= node.scrollTop ? node.scrollTop : 0;
+      } while (node = node.parentNode);
+      // this will include the page scrolling (which is unwanted) so add it back on
+      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
+      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
+      // sum up offsets
+      node = elem;
+      do {
+        myX += node.offsetLeft;
+        myY += node.offsetTop;
+      } while (node = node.offsetParent);
+    }
+  }
+  return [myX, myY];
+}
+
+/*
+ * position_popup
+ *
+ * Positions a popup relative to an anchor element.
+ *
+ * The avaliable positions are:
+ * 0 - Centered below the anchor.
+ */
+function position_popup(anchor, popup, position) {
+  "use strict";
+  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
+  var a_xy, spacer, margin, scrollbar, page_w;
+  // define constants
+  spacer = 5;
+  margin = 15;
+  scrollbar = 15;
+  // define the positions and widths
+  a_xy = coords(anchor);
+  a_x = a_xy[0];
+  a_y = a_xy[1];
+  a_w = anchor.offsetWidth;
+  a_h = anchor.offsetHeight;
+  p_w = popup.offsetWidth;
+  p_h = popup.offsetHeight;
+  page_w = null;
+  if (window.innerWidth) {
+    page_w = window.innerWidth;
+  } else if (document.body) {
+    page_w = document.body.clientWidth;
+  }
+  // check the position type is defined
+  if (typeof position !== "number") {
+    position = 0;
+  }
+  // calculate the popup position
+  switch (position) {
+    case 1:
+      p_x = a_x + a_w + spacer;
+      p_y = a_y + (a_h / 2) - (p_h / 2);
+      break;
+    case 0:
+    default:
+      p_x = a_x + (a_w / 2) - (p_w / 2);
+      p_y = a_y + a_h + spacer;
+      break;
+  }
+  // constrain the popup position
+  if (p_x < margin) {
+    p_x = margin;
+  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
+    p_x = page_w - margin - scrollbar - p_w;
+  }
+  if (p_y < margin) {
+    p_y = margin;
+  }
+  // position the popup
+  popup.style.left = p_x + "px";
+  popup.style.top = p_y + "px";
+}
+
+function lookup_help_popup(popup_id) {
+  var _body, pop, info;
+  pop = document.getElementById(popup_id);
+  if (pop == null) {
+    _body = document.getElementsByTagName("body")[0];
+    pop = document.createElement("div");
+    pop.className = "pop_content";
+    pop.id = popup_id;
+    pop.style.backgroundColor = "#FFC";
+    pop.style.borderColor = "black";
+    info = document.createElement("p");
+    info.style.fontWeight = "bold";
+    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
+    pop.appendChild(info);
+    // this might cause problems with the menu, but as this only happens
+    // when something is already wrong I don't think that's too much of a problem
+    _body.insertBefore(pop, _body.firstChild);
+  }
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
+    if (!/\bauto_buttons\b/.test(pop.className)) {
+      pop.className += " auto_buttons";
+      var back_btn_sec = document.createElement("div");
+      back_btn_sec.className = "nested_only pop_back_sec";
+      var back_btn = document.createElement("span");
+      back_btn.className = "pop_back";
+      back_btn.appendChild(document.createTextNode("<< back"));
+      back_btn.addEventListener("click", function(e) {
+        help_return();
+      }, false);
+      back_btn_sec.appendChild(back_btn);
+      pop.insertBefore(back_btn_sec, pop.firstChild);
+      var close_btn_sec = document.createElement("div");
+      close_btn_sec.className = "pop_close_sec";
+      var close_btn = document.createElement("span");
+      close_btn.className = "pop_close";
+      close_btn.appendChild(document.createTextNode("close"));
+      close_btn.addEventListener("click", function(e) {
+        help_popup();
+      }, false);
+      close_btn_sec.appendChild(close_btn);
+      pop.appendChild(close_btn_sec);
+    }
+  }
+  return pop;
+}
+
+/*
+ * help_popup
+ *
+ * Moves around help pop-ups so they appear
+ * below an activator.
+ */
+function help_popup(activator, popup_id) {
+  "use strict";
+  var pop;
+  // set default values
+  if (typeof help_popup.popup === "undefined") {
+    help_popup.popup = [];
+  }
+  if (typeof help_popup.activator === "undefined") {
+    help_popup.activator = null;
+  }
+  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (typeof(activator) == "undefined") { // no activator so hide
+    if (last_pop != null) {
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+    }
+    return;
+  }
+  pop = lookup_help_popup(popup_id);
+  if (pop == last_pop) {
+    if (activator == help_popup.activator) {
+      //hide popup (as we've already shown it for the current help button)
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+      return; // toggling complete!
+    }
+  } else if (last_pop != null) {
+    //activating different popup so hide current one
+    last_pop.style.display = 'none';
+  }
+  help_popup.popup = [pop];
+  help_popup.activator = activator;
+  toggle_class(pop, "nested", false);
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = 'block';
+  position_popup(activator, pop);
+}
+
+/*
+ * help_refine
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_refine(popup_id) {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not refine a help popup when one is not shown!");
+  }
+  var pop = lookup_help_popup(popup_id);
+  var last_pop = help_popup.popup[help_popup.popup.length - 1];
+  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
+  help_popup.popup.push(pop);
+  toggle_class(pop, "nested", true);
+  last_pop.style.display = "none";
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = "block";
+  position_popup(help_popup.activator, pop);
+}
+
+/*
+ * help_return
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_return() {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not return to a earlier help popup when one is not shown!");
+  }
+  var last_pop = help_popup.popup.pop();
+  last_pop.style.display = "none";
+  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (pop != null) {
+    toggle_class(pop, "nested", help_popup.popup.length > 1);
+    pop.style.display = "block";
+    position_popup(help_popup.activator, pop);
+  } else {
+    help_popup.activator = null;
+  }
+}
+
+/*
+ * update_scroll_pad
+ *
+ * Creates padding at the bottom of the page to allow
+ * scrolling of anything into view.
+ */
+function update_scroll_pad() {
+  var page, pad;
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  pad = $("scrollpad");
+  if (pad === null) {
+    pad = document.createElement("div");
+    pad.id = 'scrollpad';
+    document.getElementsByTagName('body')[0].appendChild(pad);
+  }
+  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
+}
+
+function substitute_classes(node, remove, add) {
+  "use strict";
+  var list, all, i, cls, classes;
+  list = node.className.split(/\s+/);
+  all = {};
+  for (i = 0; i < list.length; i++) {
+    if (list[i].length > 0) all[list[i]] = true;
+  }
+  for (i = 0; i < remove.length; i++) {
+    if (all.hasOwnProperty(remove[i])) {
+      delete all[remove[i]];
+    }
+  }
+  for (i = 0; i < add.length; i++) {
+    all[add[i]] = true;
+  }
+  classes = "";
+  for (cls in all) {
+    classes += cls + " ";
+  }
+  node.className = classes;
+}
+
+/*
+ * toggle_class
+ *
+ * Adds or removes a class from the node. If the parameter 'enabled' is not 
+ * passed then the existence of the class will be toggled, otherwise it will be
+ * included if enabled is true.
+ */
+function toggle_class(node, cls, enabled) {
+  var classes = node.className;
+  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
+  var found = false;
+  for (var i = 0; i < list.length; i++) {
+    if (list[i] == cls) {
+      list.splice(i, 1);
+      i--;
+      found = true;
+    }
+  }
+  if (typeof enabled == "undefined") {
+    if (!found) list.push(cls);
+  } else {
+    if (enabled) list.push(cls);
+  }
+  node.className = list.join(" ");
+}
+
+/*
+ * find_child
+ *
+ * Searches child nodes in depth first order and returns the first it finds
+ * with the className specified.
+ * TODO replace with querySelector
+ */
+function find_child(node, className) {
+  var pattern;
+  if (node == null || typeof node !== "object") {
+    return null;
+  }
+  if (typeof className === "string") {
+    pattern = new RegExp("\\b" + className + "\\b");
+  } else {
+    pattern = className;
+  }
+  if (node.nodeType == Node.ELEMENT_NODE && 
+      pattern.test(node.className)) {
+    return node;
+  } else {
+    var result = null;
+    for (var i = 0; i < node.childNodes.length; i++) {
+      result = find_child(node.childNodes[i], pattern);
+      if (result != null) break;
+    }
+    return result;
+  }
+}
+
+/*
+ * find_parent
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the className specified.
+ */
+function find_parent(node, className) {
+  var pattern;
+  pattern = new RegExp("\\b" + className + "\\b");
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && 
+        pattern.test(node.className)) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * find_parent_tag
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the tag name specified. HTML tags should be specified in upper case.
+ */
+function find_parent_tag(node, tag_name) {
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * __toggle_help
+ *
+ * Uses the 'topic' property of the this object to
+ * toggle display of a help topic.
+ *
+ * This function is not intended to be called directly.
+ */
+function __toggle_help(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+
+  help_popup(this, this.getAttribute("data-topic"));
+}
+
+function setup_help_button(button) {
+  "use strict";
+  var topic;
+  if (button.hasAttribute("data-topic")) {
+    topic = button.getAttribute("data-topic");
+    if (document.getElementById(topic) != null) {
+      button.tabIndex = "0"; // make keyboard selectable
+      button.addEventListener("click", function() {
+        help_popup(button, topic);
+      }, false);
+      button.addEventListener("keydown", function(e) {
+        // toggle only on Enter or Spacebar, let other keys do their thing
+        if (e.keyCode !== 13 && e.keyCode !== 32) return;
+        // stop a submit or something like that
+        e.preventDefault();
+        help_popup(button, topic);
+      }, false);
+    } else {
+      button.style.visibility = "hidden";
+    }
+  }
+  button.className += " active";
+}
+
+/*
+ * help_button
+ *
+ * Makes a help button for the passed topic.
+ */
+function help_button(topic) {
+  var btn = document.createElement("div");
+  btn.className = "help";
+  btn.setAttribute("data-topic", topic);
+  setup_help_button(btn);
+  return btn;
+}
+
+/*
+ * prepare_download
+ *
+ * Sets the attributes of a link to setup a file download using the given content.
+ * If no link is provided then create one and click it.
+ */
+function prepare_download(content, mimetype, filename, link) {
+  "use strict";
+  // if no link is provided then create one and click it
+  var click_link = false;
+  if (!link) {
+    link = document.createElement("a");
+    click_link = true;
+  }
+  try {
+    // Use a BLOB to convert the text into a data URL.
+    // We could do this manually with a base 64 conversion.
+    // This will only be supported on modern browsers,
+    // hence the try block.
+    var blob = new Blob([content], {type: mimetype});
+    var reader = new FileReader();
+    reader.onloadend = function() {
+      // If we're lucky the browser will also support the download
+      // attribute which will let us suggest a file name to save the link.
+      // Otherwise it is likely that the filename will be unintelligible. 
+      link.setAttribute("download", filename);
+      link.href = reader.result;
+      if (click_link) {
+        // must add the link to click it
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      }
+    }
+    reader.readAsDataURL(blob);
+  } catch (error) {
+    if (console && console.log) console.log(error);
+    // probably an old browser
+    link.href = "";
+    link.visible = false;
+  }
+}
+
+/*
+ * add_cell
+ *
+ * Add a cell to the table row.
+ */
+function add_cell(row, node, cls, click_action) {
+  var cell = row.insertCell(row.cells.length);
+  if (node) cell.appendChild(node);
+  if (cls && cls !== "") cell.className = cls;
+  if (click_action) cell.addEventListener("click", click_action, false);
+}
+
+/*
+ * add_header_cell
+ *
+ * Add a header cell to the table row.
+ */
+function add_header_cell(row, node, help_topic, cls, colspan) {
+  var th = document.createElement("th");
+  if (node) th.appendChild(node);
+  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
+  if (cls && cls !== "") th.className = cls;
+  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
+  row.appendChild(th);
+}
+
+/*
+ * add_text_cell
+ *
+ * Add a text cell to the table row.
+ */
+function add_text_cell(row, text, cls, action) {
+  var node = null;
+  if (typeof(text) != 'undefined') node = document.createTextNode(text);
+  add_cell(row, node, cls, action);
+}
+
+/*
+ * add_text_header_cell
+ *
+ * Add a text header cell to the table row.
+ */
+function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
+  var node = null;
+  if (typeof(text) != 'undefined') {
+    var nbsp = (help_topic ? "\u00A0" : "");
+    var str = "" + text;
+    var parts = str.split(/\n/);
+    if (parts.length === 1) {
+      if (action) {
+        node = document.createElement("span");
+        node.appendChild(document.createTextNode(str + nbsp));
+      } else {
+        node = document.createTextNode(str + nbsp);
+      }
+    } else {
+      node = document.createElement("span");
+      for (var i = 0; i < parts.length; i++) {
+        if (i !== 0) {
+          node.appendChild(document.createElement("br"));
+        }
+        node.appendChild(document.createTextNode(parts[i]));
+      }
+    }
+    if (action) {
+      node.addEventListener("click", action, false);
+      node.style.cursor = "pointer";
+    }
+  }
+  add_header_cell(row, node, help_topic, cls, colspan);
+}
+
+function setup_help() {
+  "use strict";
+  var help_buttons, i;
+  help_buttons = document.querySelectorAll(".help:not(.active)");
+  for (i = 0; i < help_buttons.length; i++) {
+    setup_help_button(help_buttons[i]);
+  }
+}
+
+function setup_scrollpad() {
+  "use strict";
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
+    window.addEventListener("resize", update_scroll_pad, false);
+    update_scroll_pad();
+  }
+}
+
+// anon function to avoid polluting global scope
+(function() {
+  "use strict";
+  window.addEventListener("load", function load(evt) {
+    window.removeEventListener("load", load, false);
+    setup_help();
+    setup_scrollpad();
+  }, false);
+})();
+
+/*
+ *  make_link
+ *
+ *  Creates a text node and if a URL is specified it surrounds it with a link.
+ *  If the URL doesn't begin with "http://" it automatically adds it, as
+ *  relative links don't make much sense in this context.
+ */
+function make_link(text, url) {
+  var textNode = null;
+  var link = null;
+  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
+  if (typeof url === "string") {
+    if (url.indexOf("//") == -1) {
+      url = "http://" + url;
+    }
+    link = document.createElement('a');
+    link.href = url;
+    if (textNode) link.appendChild(textNode);
+    return link;
+  }
+  return textNode;
+}
+</script>
+    <script>
+function motif_logo_template(inputs) {
+  function _input(name) {
+    if (typeof inputs[name] === "undefined") {
+      throw new Error("Missing template variable: " + name);
+    }
+    return inputs[name];
+  }
+  return (
+"%!PS-Adobe-3.0 EPSF-3.0\n" +
+"%%Title: Sequence Logo : " + _input("TITLE") + "\n" +
+"%%Creator: " + _input("CREATOR") + "\n" +
+"%%CreationDate: " + _input("CREATIONDATE") + "\n" +
+"%%BoundingBox:   0  0  " + _input("BOUNDINGWIDTH") + " " + _input("BOUNDINGHEIGHT") + " \n" +
+"%%Pages: 0\n" +
+"%%DocumentFonts: \n" +
+"%%EndComments\n" +
+"\n" +
+"% ---- CONSTANTS ----\n" +
+"\/cmfactor 72 2.54 div def % defines points -> cm conversion\n" +
+"\/cm {cmfactor mul} bind def % defines centimeters\n" +
+"\n" +
+"% ---- VARIABLES ----\n" +
+"\n" +
+"% NA = Nucleic Acid, AA = Amino Acid\n" +
+"\/logoType (" + _input("LOGOTYPE") + ") def \n" +
+"\n" +
+"\/logoTitle (" + _input("TITLE") + ") def\n" +
+"\n" +
+"% Dimensions in cm\n" +
+"\/logoWidth " + _input("LOGOWIDTH") + " cm def\n" +
+"\/logoHeight " + _input("LOGOLINEHEIGHT") + " cm def\n" +
+"\/totalHeight " + _input("LOGOHEIGHT") + " cm def\n" +
+"\n" +
+"\/yaxis " + _input("YAXIS") + " def\n" +
+"\/yaxisLabel (" + _input("YAXISLABEL") + ") def\n" +
+"\/yaxisBits  " + _input("BARBITS") + " def % bits\n" +
+"\/yaxisTicBits " + _input("TICBITS") + " def\n" +
+"\n" +
+"\/xaxis " + _input("NUMBERING") + " def\n" +
+"\/xaxisLabel (" + _input("XAXISLABEL") + ") def\n" +
+"\/showEnds (" + _input("SHOWENDS") + ") def \n" +
+"\n" +
+"\/showFineprint true def\n" +
+"\/fineprint (" + _input("FINEPRINT") + ") def\n" +
+"\n" +
+"\/charsPerLine " + _input("CHARSPERLINE") + " def\n" +
+"\n" +
+"\/showingBox " + _input("SHOWINGBOX") + " def    \n" +
+"\/shrinking false def   % true falses\n" +
+"\/shrink  1.0 def\n" +
+"\/outline " + _input("OUTLINE") + " def\n" +
+"\n" +
+"\/IbeamFraction  " + _input("ERRORBARFRACTION") + " def\n" +
+"\/IbeamGray      0.50 def\n" +
+"\/IbeamLineWidth 0.5 def\n" +
+"\n" +
+"\/fontsize       " + _input("FONTSIZE") + " def\n" +
+"\/titleFontsize  " + _input("TITLEFONTSIZE") + " def\n" +
+"\/smallFontsize  " + _input("SMALLFONTSIZE") + " def\n" +
+"\n" +
+"\/topMargin      " + _input("TOPMARGIN") + " cm def\n" +
+"\/bottomMargin   " + _input("BOTTOMMARGIN") + " cm def\n" +
+"\n" +
+"\/defaultColor [0 0 0] def \n" +
+"\n" +
+_input("COLORDICT") + "\n" +
+"\n" +
+"\/colorDict fullColourDict def\n" +
+"\n" +
+"% ---- DERIVED PARAMETERS ----\n" +
+"\n" +
+"\/leftMargin\n" +
+"  fontsize 3.5 mul\n" +
+"\n" +
+"def \n" +
+"\n" +
+"\/rightMargin \n" +
+"  %Add extra room if showing ends\n" +
+"  showEnds (false) eq { fontsize}{fontsize 1.5 mul} ifelse\n" +
+"def\n" +
+"\n" +
+"\/yaxisHeight \n" +
+"  logoHeight \n" +
+"  bottomMargin sub  \n" +
+"  topMargin sub\n" +
+"def\n" +
+"\n" +
+"\/ticWidth fontsize 2 div def\n" +
+"\n" +
+"\/pointsPerBit yaxisHeight yaxisBits div  def\n" +
+"\n" +
+"\/stackMargin 1 def\n" +
+"\n" +
+"% Do not add space aroung characters if characters are boxed\n" +
+"\/charRightMargin \n" +
+"  showingBox { 0.0 } {stackMargin} ifelse\n" +
+"def\n" +
+"\n" +
+"\/charTopMargin \n" +
+"  showingBox { 0.0 } {stackMargin} ifelse\n" +
+"def\n" +
+"\n" +
+"\/charWidth\n" +
+"  logoWidth\n" +
+"  leftMargin sub\n" +
+"  rightMargin sub\n" +
+"  charsPerLine div\n" +
+"  charRightMargin sub\n" +
+"def\n" +
+"\n" +
+"\/charWidth4 charWidth 4 div def\n" +
+"\/charWidth2 charWidth 2 div def\n" +
+"\n" +
+"\/stackWidth \n" +
+"  charWidth charRightMargin add\n" +
+"def\n" +
+" \n" +
+"\/numberFontsize \n" +
+"  fontsize charWidth lt {fontsize}{charWidth} ifelse\n" +
+"def\n" +
+"\n" +
+"% movements to place 5'\/N and 3'\/C symbols\n" +
+"\/leftEndDeltaX  fontsize neg         def\n" +
+"\/leftEndDeltaY  fontsize 1.5 mul neg def\n" +
+"\/rightEndDeltaX fontsize 0.25 mul     def\n" +
+"\/rightEndDeltaY leftEndDeltaY        def\n" +
+"\n" +
+"% Outline width is proporional to charWidth, \n" +
+"% but no less that 1 point\n" +
+"\/outlinewidth \n" +
+"  charWidth 32 div dup 1 gt  {}{pop 1} ifelse\n" +
+"def\n" +
+"\n" +
+"\n" +
+"% ---- PROCEDURES ----\n" +
+"\n" +
+"\/StartLogo { \n" +
+"  % Save state\n" +
+"  save \n" +
+"  gsave \n" +
+"\n" +
+"  % Print Logo Title, top center \n" +
+"  gsave \n" +
+"    SetStringFont\n" +
+"\n" +
+"    logoWidth 2 div\n" +
+"    logoTitle\n" +
+"    stringwidth pop 2 div sub\n" +
+"    totalHeight\n" +
+"    titleFontsize sub\n" +
+"    moveto\n" +
+"\n" +
+"    logoTitle\n" +
+"    show\n" +
+"  grestore\n" +
+"\n" +
+"  % Print X-axis label, bottom center\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"\n" +
+"    logoWidth 2 div\n" +
+"    xaxisLabel\n" +
+"    stringwidth pop 2 div sub\n" +
+"    0\n" +
+"    titleFontsize 3 div\n" +
+"    add\n" +
+"    moveto\n" +
+"\n" +
+"    xaxisLabel\n" +
+"    show\n" +
+"  grestore\n" +
+"\n" +
+"  % Show Fine Print\n" +
+"  showFineprint {\n" +
+"    gsave\n" +
+"      SetSmallFont\n" +
+"      logoWidth\n" +
+"        fineprint stringwidth pop sub\n" +
+"        smallFontsize sub\n" +
+"          smallFontsize 3 div\n" +
+"      moveto\n" +
+"    \n" +
+"      fineprint show\n" +
+"    grestore\n" +
+"  } if\n" +
+"\n" +
+"  % Move to lower left corner of last line, first stack\n" +
+"  leftMargin bottomMargin translate\n" +
+"\n" +
+"  % Move above first line ready for StartLine \n" +
+"  0 totalHeight translate\n" +
+"\n" +
+"  SetLogoFont\n" +
+"} bind def\n" +
+"\n" +
+"\/EndLogo { \n" +
+"  grestore \n" +
+"  showpage \n" +
+"  restore \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/StartLine { \n" +
+"  % move down to the bottom of the line:\n" +
+"  0 logoHeight neg translate\n" +
+"  \n" +
+"  gsave \n" +
+"    yaxis { MakeYaxis } if\n" +
+"    xaxis { showEnds (true) eq {ShowLeftEnd} if } if\n" +
+"} bind def\n" +
+"\n" +
+"\/EndLine{ \n" +
+"    xaxis { showEnds (true) eq {ShowRightEnd} if } if\n" +
+"  grestore \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/MakeYaxis {\n" +
+"  gsave    \n" +
+"    stackMargin neg 0 translate\n" +
+"    ShowYaxisBar\n" +
+"    ShowYaxisLabel\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowYaxisBar { \n" +
+"  gsave  \n" +
+"    SetStringFont\n" +
+"\n" +
+"    \/str 10 string def % string to hold number  \n" +
+"    \/smallgap stackMargin 2 div def\n" +
+"\n" +
+"    % Draw first tic and bar\n" +
+"    gsave    \n" +
+"      ticWidth neg 0 moveto \n" +
+"      ticWidth 0 rlineto \n" +
+"      0 yaxisHeight rlineto\n" +
+"      stroke\n" +
+"    grestore\n" +
+"\n" +
+"   \n" +
+"    % Draw the tics\n" +
+"    % initial increment limit proc for\n" +
+"    0 yaxisTicBits yaxisBits abs %cvi\n" +
+"    {\/loopnumber exch def\n" +
+"\n" +
+"      % convert the number coming from the loop to a string\n" +
+"      % and find its width\n" +
+"      loopnumber 10 str cvrs\n" +
+"      \/stringnumber exch def % string representing the number\n" +
+"\n" +
+"      stringnumber stringwidth pop\n" +
+"      \/numberwidth exch def % width of number to show\n" +
+"\n" +
+"      \/halfnumberheight\n" +
+"         stringnumber CharBoxHeight 2 div\n" +
+"      def\n" +
+"\n" +
+"      numberwidth % move back width of number\n" +
+"      neg loopnumber pointsPerBit mul % shift on y axis\n" +
+"      halfnumberheight sub % down half the digit\n" +
+"\n" +
+"      moveto % move back the width of the string\n" +
+"\n" +
+"      ticWidth neg smallgap sub % Move back a bit more  \n" +
+"      0 rmoveto % move back the width of the tic  \n" +
+"\n" +
+"      stringnumber show\n" +
+"      smallgap 0 rmoveto % Make a small gap  \n" +
+"\n" +
+"      % now show the tic mark\n" +
+"      0 halfnumberheight rmoveto % shift up again\n" +
+"      ticWidth 0 rlineto\n" +
+"      stroke\n" +
+"    } for\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\/ShowYaxisLabel {\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"\n" +
+"    % How far we move left depends on the size of\n" +
+"    % the tic labels.\n" +
+"    \/str 10 string def % string to hold number  \n" +
+"    yaxisBits yaxisTicBits div cvi yaxisTicBits mul \n" +
+"    str cvs stringwidth pop\n" +
+"    ticWidth 1.5 mul  add neg  \n" +
+"\n" +
+"\n" +
+"    yaxisHeight\n" +
+"    yaxisLabel stringwidth pop\n" +
+"    sub 2 div\n" +
+"\n" +
+"    translate\n" +
+"    90 rotate\n" +
+"    0 0 moveto\n" +
+"    yaxisLabel show\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/StartStack {  % <stackNumber> startstack\n" +
+"  xaxis {MakeNumber}{pop} ifelse\n" +
+"  gsave\n" +
+"} bind def\n" +
+"\n" +
+"\/EndStack {\n" +
+"  grestore\n" +
+"  stackWidth 0 translate\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% Draw a character whose height is proportional to symbol bits\n" +
+"\/MakeSymbol{ % charbits character MakeSymbol\n" +
+"  gsave\n" +
+"    \/char exch def\n" +
+"    \/bits exch def\n" +
+"\n" +
+"    \/bitsHeight \n" +
+"       bits pointsPerBit mul \n" +
+"    def\n" +
+"\n" +
+"    \/charHeight \n" +
+"       bitsHeight charTopMargin sub\n" +
+"       dup \n" +
+"       0.0 gt {}{pop 0.0} ifelse % if neg replace with zero \n" +
+"    def \n" +
+" \n" +
+"    charHeight 0.0 gt {\n" +
+"      char SetColor\n" +
+"      charWidth charHeight char ShowChar\n" +
+"\n" +
+"      showingBox { % Unfilled box\n" +
+"        0 0 charWidth charHeight false ShowBox\n" +
+"      } if\n" +
+"\n" +
+"\n" +
+"    } if\n" +
+"\n" +
+"  grestore\n" +
+"\n" +
+"  0 bitsHeight translate \n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowChar { % <width> <height> <char> ShowChar\n" +
+"  gsave\n" +
+"    \/tc exch def    % The character\n" +
+"    \/ysize exch def % the y size of the character\n" +
+"    \/xsize exch def % the x size of the character\n" +
+"\n" +
+"    \/xmulfactor 1 def \n" +
+"    \/ymulfactor 1 def\n" +
+"    \/limmulfactor 0.01 def\n" +
+"    \/drawable true def\n" +
+"\n" +
+"  \n" +
+"    % if ysize is negative, make everything upside down!\n" +
+"    ysize 0 lt {\n" +
+"      % put ysize normal in this orientation\n" +
+"      \/ysize ysize abs def\n" +
+"      xsize ysize translate\n" +
+"      180 rotate\n" +
+"    } if\n" +
+"\n" +
+"    shrinking {\n" +
+"      xsize 1 shrink sub 2 div mul\n" +
+"        ysize 1 shrink sub 2 div mul translate \n" +
+"\n" +
+"      shrink shrink scale\n" +
+"    } if\n" +
+"\n" +
+"    % Calculate the font scaling factors\n" +
+"    % Loop twice to catch small correction due to first scaling\n" +
+"    2 {\n" +
+"      gsave\n" +
+"        xmulfactor ymulfactor scale\n" +
+"      \n" +
+"        ysize % desired size of character in points\n" +
+"        tc CharBoxHeight \n" +
+"        dup 0.0 ne {\n" +
+"          div % factor by which to scale up the character\n" +
+"          \/ymulfactor exch def\n" +
+"        } % end if\n" +
+"        {pop pop}\n" +
+"        ifelse\n" +
+"\n" +
+"        xsize % desired size of character in points\n" +
+"        tc CharBoxWidth  \n" +
+"        dup 0.0 ne {\n" +
+"          div % factor by which to scale up the character\n" +
+"          \/xmulfactor exch def\n" +
+"        } % end if\n" +
+"        {pop pop}\n" +
+"        ifelse\n" +
+"      grestore\n" +
+"      % if the multiplication factors get too small we need to avoid a crash\n" +
+"      xmulfactor limmulfactor lt {\n" +
+"        \/xmulfactor 1 def\n" +
+"        \/drawable false def\n" +
+"      } if\n" +
+"      ymulfactor limmulfactor lt {\n" +
+"        \/ymulfactor 1 def\n" +
+"        \/drawable false def\n" +
+"      } if\n" +
+"    } repeat\n" +
+"\n" +
+"    % Adjust horizontal position if the symbol is an I\n" +
+"    tc (I) eq {\n" +
+"      charWidth 2 div % half of requested character width\n" +
+"      tc CharBoxWidth 2 div % half of the actual character\n" +
+"      sub 0 translate\n" +
+"      % Avoid x scaling for I \n" +
+"      \/xmulfactor 1 def \n" +
+"    } if\n" +
+"\n" +
+"\n" +
+"    % ---- Finally, draw the character\n" +
+"    drawable { \n" +
+"      newpath\n" +
+"      xmulfactor ymulfactor scale\n" +
+"\n" +
+"      % Move lower left corner of character to start point\n" +
+"      tc CharBox pop pop % llx lly : Lower left corner\n" +
+"      exch neg exch neg\n" +
+"      moveto\n" +
+"\n" +
+"      outline {  % outline characters:\n" +
+"        outlinewidth setlinewidth\n" +
+"        tc true charpath\n" +
+"        gsave 1 setgray fill grestore\n" +
+"        clip stroke\n" +
+"      } { % regular characters\n" +
+"        tc show\n" +
+"      } ifelse\n" +
+"    } if\n" +
+"\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowBox { % x1 y1 x2 y2 filled ShowBox\n" +
+"  gsave\n" +
+"    \/filled exch def \n" +
+"    \/y2 exch def\n" +
+"    \/x2 exch def\n" +
+"    \/y1 exch def\n" +
+"    \/x1 exch def\n" +
+"    newpath\n" +
+"    x1 y1 moveto\n" +
+"    x2 y1 lineto\n" +
+"    x2 y2 lineto\n" +
+"    x1 y2 lineto\n" +
+"    closepath\n" +
+"\n" +
+"    clip\n" +
+"    \n" +
+"    filled {\n" +
+"      fill\n" +
+"    }{ \n" +
+"      0 setgray stroke   \n" +
+"    } ifelse\n" +
+"\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/MakeNumber { % number MakeNumber\n" +
+"  gsave\n" +
+"    SetNumberFont\n" +
+"    stackWidth 0 translate\n" +
+"    90 rotate % rotate so the number fits\n" +
+"    dup stringwidth pop % find the length of the number\n" +
+"    neg % prepare for move\n" +
+"    stackMargin sub % Move back a bit\n" +
+"    charWidth (0) CharBoxHeight % height of numbers\n" +
+"    sub 2 div %\n" +
+"    moveto % move back to provide space\n" +
+"    show\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/Ibeam{ % heightInBits Ibeam\n" +
+"  gsave\n" +
+"    % Make an Ibeam of twice the given height in bits\n" +
+"    \/height exch  pointsPerBit mul def \n" +
+"    \/heightDRAW height IbeamFraction mul def\n" +
+"\n" +
+"    IbeamLineWidth setlinewidth\n" +
+"    IbeamGray setgray \n" +
+"\n" +
+"    charWidth2 height neg translate\n" +
+"    ShowIbar\n" +
+"    newpath\n" +
+"      0 0 moveto\n" +
+"      0 heightDRAW rlineto\n" +
+"    stroke\n" +
+"    newpath\n" +
+"      0 height moveto\n" +
+"      0 height rmoveto\n" +
+"      currentpoint translate\n" +
+"    ShowIbar\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    0 heightDRAW neg rlineto\n" +
+"    currentpoint translate\n" +
+"    stroke\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowIbar { % make a horizontal bar\n" +
+"  gsave\n" +
+"    newpath\n" +
+"      charWidth4 neg 0 moveto\n" +
+"      charWidth4 0 lineto\n" +
+"    stroke\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowLeftEnd {\n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"    leftEndDeltaX leftEndDeltaY moveto\n" +
+"    logoType (NA) eq {(5) show ShowPrime} if\n" +
+"    logoType (AA) eq {(N) show} if\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowRightEnd { \n" +
+"  gsave\n" +
+"    SetStringFont\n" +
+"    rightEndDeltaX rightEndDeltaY moveto\n" +
+"    logoType (NA) eq {(3) show ShowPrime} if\n" +
+"    logoType (AA) eq {(C) show} if\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"\/ShowPrime {\n" +
+"  gsave\n" +
+"    SetPrimeFont\n" +
+"    (\\242) show \n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+" \n" +
+"\/SetColor{ % <char> SetColor\n" +
+"  dup colorDict exch known {\n" +
+"    colorDict exch get aload pop setrgbcolor\n" +
+"  } {\n" +
+"    pop\n" +
+"    defaultColor aload pop setrgbcolor\n" +
+"  } ifelse \n" +
+"} bind def\n" +
+"\n" +
+"% define fonts\n" +
+"\/SetTitleFont {\/Times-Bold findfont titleFontsize scalefont setfont} bind def\n" +
+"\/SetLogoFont  {\/Helvetica-Bold findfont charWidth  scalefont setfont} bind def\n" +
+"\/SetStringFont{\/Helvetica-Bold findfont fontsize scalefont setfont} bind def\n" +
+"\/SetPrimeFont {\/Symbol findfont fontsize scalefont setfont} bind def\n" +
+"\/SetSmallFont {\/Helvetica findfont smallFontsize scalefont setfont} bind def\n" +
+"\n" +
+"\/SetNumberFont {\n" +
+"    \/Helvetica-Bold findfont \n" +
+"    numberFontsize\n" +
+"    scalefont\n" +
+"    setfont\n" +
+"} bind def\n" +
+"\n" +
+"%Take a single character and return the bounding box\n" +
+"\/CharBox { % <char> CharBox <lx> <ly> <ux> <uy>\n" +
+"  gsave\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    % take the character off the stack and use it here:\n" +
+"    true charpath \n" +
+"    flattenpath \n" +
+"    pathbbox % compute bounding box of 1 pt. char => lx ly ux uy\n" +
+"    % the path is here, but toss it away ...\n" +
+"  grestore\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% The height of a characters bounding box\n" +
+"\/CharBoxHeight { % <char> CharBoxHeight <num>\n" +
+"  CharBox\n" +
+"  exch pop sub neg exch pop\n" +
+"} bind def\n" +
+"\n" +
+"\n" +
+"% The width of a characters bounding box\n" +
+"\/CharBoxWidth { % <char> CharBoxHeight <num>\n" +
+"  CharBox\n" +
+"  pop exch pop sub neg \n" +
+"} bind def\n" +
+"\n" +
+"% Set the colour scheme to be faded to indicate trimming\n" +
+"\/MuteColour {\n" +
+"  \/colorDict mutedColourDict def\n" +
+"} def\n" +
+"\n" +
+"% Restore the colour scheme to the normal colours\n" +
+"\/RestoreColour {\n" +
+"  \/colorDict fullColourDict def\n" +
+"} def\n" +
+"\n" +
+"% Draw the background for a trimmed section\n" +
+"% takes the number of columns as a parameter\n" +
+"\/DrawTrimBg { % <num> DrawTrimBox\n" +
+"  \/col exch def\n" +
+"  \n" +
+"  \/boxwidth \n" +
+"    col stackWidth mul \n" +
+"  def\n" +
+" \n" +
+"  gsave\n" +
+"    0.97 setgray\n" +
+"\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    boxwidth 0 rlineto\n" +
+"    0 yaxisHeight rlineto\n" +
+"    0 yaxisHeight lineto\n" +
+"    closepath\n" +
+"    \n" +
+"    fill\n" +
+"  grestore\n" +
+"} def\n" +
+"\n" +
+"\/DrawTrimEdge {\n" +
+"  gsave\n" +
+"    0.2 setgray\n" +
+"    [2] 0 setdash\n" +
+"\n" +
+"    newpath\n" +
+"    0 0 moveto\n" +
+"    0 yaxisHeight lineto\n" +
+"    \n" +
+"    stroke\n" +
+"\n" +
+"} def\n" +
+"\n" +
+"\n" +
+"% Deprecated names\n" +
+"\/startstack {StartStack} bind  def\n" +
+"\/endstack {EndStack}     bind def\n" +
+"\/makenumber {MakeNumber} bind def\n" +
+"\/numchar { MakeSymbol }  bind def\n" +
+"\n" +
+"%%EndProlog\n" +
+"\n" +
+"%%Page: 1 1\n" +
+"StartLogo\n" +
+"\n" +
+_input("DATA") + "\n" +
+"\n" +
+"EndLogo\n" +
+"\n" +
+"%%EOF\n"
+  );
+}</script>
+    <script>
+//======================================================================
+// start Alphabet object
+//======================================================================
+var Alphabet = function(alphabet, background) {
+  "use strict";
+  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
+  generate_background = (background == null);
+  if (generate_background) {
+    background = [];
+    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
+  } else if (alphabet.ncore != background.length) {
+    throw new Error("The background length does not match the alphabet length.");
+  }
+  this.name = alphabet.name;
+  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
+  this.ncore = alphabet.ncore;
+  this.symbols = alphabet.symbols;
+  this.background = background;
+  this.genbg = generate_background;
+  this.encode = {};
+  this.encode2core = {};
+  this.complement = {};
+  // check if all symbols are same case
+  var seen_uc = false;
+  var seen_lc = false;
+  var check_case = function (syms) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        if (sym >= 'a' && sym <= 'z') seen_lc = true;
+        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
+      }
+    }
+  };
+  for (i = 0; i < this.symbols.length; i++) {
+    check_case(this.symbols[i].symbol);
+    check_case(this.symbols[i].aliases);
+  }
+  // now map symbols to indexes
+  var update_array = function(array, syms, index) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        array[sym] = index;
+        // when only a single case is used, then encode as case insensitive
+        if (seen_uc != seen_lc) {
+          if (sym >= 'a' && sym <= 'z') {
+            array[sym.toUpperCase()] = index;
+          } else if (sym >= 'A' && sym <= 'Z') {
+            array[sym.toLowerCase()] = index;
+          }
+        }
+      }
+    }
+  }
+  // map core symbols to index
+  for (i = 0; i < this.ncore; i++) {
+    update_array(this.encode2core, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode2core, this.symbols[i].aliases, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+  }
+  // map ambigous symbols to index
+  ambigs = {};
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+    ambigs[this.symbols[i].equals] = i;
+  }
+  // determine complements
+  for (i = 0; i < this.ncore; i++) {
+    complement = this.symbols[i].complement;
+    if (typeof complement === "string") {
+      this.complement[i] = this.encode2core[complement];
+    }
+  }
+  next_symbol:
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    complement = "";
+    for (j = 0; j < this.symbols[i].equals.length; j++) {
+      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
+      if (typeof comp_e_sym !== "number") continue next_symbol;
+      complement += this.symbols[comp_e_sym].symbol;
+    }
+    complement = complement.split("").sort().join("");
+    if (typeof ambigs[complement] === "number") {
+      this.complement[i] = ambigs[complement];
+    }
+  }
+  // determine case insensitivity
+  this.case_insensitive = true;
+  if (seen_uc == seen_lc) {
+    // when there is a mixture of cases it probably won't
+    // be case insensitive but we still need to check
+    loop:
+    for (i = 0; i < this.symbols.length; i++) {
+      sym = this.symbols[i].symbol;
+      if (sym >= 'A' && sym <= 'Z') {
+        if (this.encode[sym.toLowerCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      } else if (sym >= 'a' && sym <= 'z') {
+        if (this.encode[sym.toUpperCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      }
+      aliases = this.symbols[i].aliases;
+      if (aliases != null) {
+        for (j = 0; j < aliases.length; j++) {
+          sym = aliases.charAt(j);
+          if (sym >= 'A' && sym <= 'Z') {
+            if (this.encode[sym.toLowerCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          } else if (sym >= 'a' && sym <= 'z') {
+            if (this.encode[sym.toUpperCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          }
+        }
+      }
+    }
+  }
+  // normalise aliases to remove the prime symbol and eliminate
+  // the alternate cases when the alphabet is case insensitive
+  var seen, out;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym = this.symbols[i].symbol;
+    aliases = this.symbols[i].aliases;
+    if (typeof aliases != "string") aliases = "";
+    seen = {};
+    out = [];
+    if (this.case_insensitive) {
+      sym = sym.toUpperCase();
+      aliases = aliases.toUpperCase();
+    }
+    seen[sym] = true;
+    for (j = 0; j < aliases.length; j++) {
+      if (!seen[aliases.charAt(j)]) {
+        seen[aliases.charAt(j)] = true;
+        out.push(aliases.charAt(j));
+      }
+    }
+    this.symbols[i].aliases = out.sort().join("");
+  }
+};
+// return the name of the alphabet
+Alphabet.prototype.get_alphabet_name = function() {
+  return this.name;
+};
+// return if the alphabet can be complemented
+Alphabet.prototype.has_complement = function() {
+  return (typeof this.symbols[0].complement === "string");
+};
+// return true if an uppercase letter has the same meaning as the lowercase form
+Alphabet.prototype.is_case_insensitive = function() {
+  return this.case_insensitive;
+};
+// return the information content of an alphabet letter
+Alphabet.prototype.get_ic = function() {
+  return Math.log(this.ncore) / Math.LN2;
+};
+// return the count of the core alphabet symbols
+Alphabet.prototype.get_size_core = function() {
+  return this.ncore;
+};
+// return the count of all alphabet symbols
+Alphabet.prototype.get_size_full = function() {
+  return this.symbols.length;
+};
+// return the symbol for the given alphabet index
+Alphabet.prototype.get_symbol = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  return this.symbols[alph_index].symbol;
+};
+// return the aliases for the given alphabet index
+Alphabet.prototype.get_aliases = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  var sym_obj = this.symbols[alph_index];
+  return (sym_obj.aliases != null ? sym_obj.aliases : "");
+};
+// return the name for the given alphabet index
+Alphabet.prototype.get_name = function(alph_index) {
+  "use strict";
+  var sym;
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  sym = this.symbols[alph_index];
+  return (typeof sym.name === "string" ? sym.name : sym.symbol);
+};
+// return the alphabet it is like or null
+Alphabet.prototype.get_like = function() {
+  "use strict";
+  return this.like;
+};
+// return the index of the complement for the given alphabet index
+Alphabet.prototype.get_complement = function(alph_index) {
+  var comp_e_sym = this.complement[alph_index];
+  if (typeof comp_e_sym === "number") {
+    return comp_e_sym;
+  } else {
+    return -1;
+  }
+};
+// return a string containing the core symbols
+Alphabet.prototype.get_symbols = function() {
+  "use strict";
+  var i, core_symbols;
+  core_symbols = "";
+  for (i = 0; i < this.ncore; i++) {
+    core_symbols += this.symbols[i].symbol;
+  }
+  return core_symbols;
+};
+// return if the background was not a uniform generated background
+Alphabet.prototype.has_bg = function() {
+  "use strict";
+  return !this.genbg;
+};
+// get the background frequency for the index
+Alphabet.prototype.get_bg_freq = function(alph_index) {
+  "use strict";
+  var freq, i, symbols;
+  if (alph_index >= 0) {
+    if (alph_index < this.ncore) {
+      return this.background[alph_index];
+    } else if (alph_index < this.symbols.length) {
+      freq = 0;
+      symbols = this.symbols[alph_index].equals;
+      for (i = 0; i < symbols.length; i++) {
+        freq += this.background[this.encode2core[symbols.charAt(i)]];
+      }
+      return freq;
+    } 
+  }
+  throw new Error("The alphabet index is out of range.");
+};
+// get the colour of the index
+Alphabet.prototype.get_colour = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return "black";
+  }
+  return "#" + this.symbols[alph_index].colour;
+};
+// get the rgb componets of the colour at the index
+Alphabet.prototype.get_rgb = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return {"red": 0, "green": 0, "blue": 0};
+  }
+  var colour = this.symbols[alph_index].colour;
+  var red = parseInt(colour.substr(0, 2), 16) / 255;
+  var green = parseInt(colour.substr(2, 2), 16) / 255;
+  var blue = parseInt(colour.substr(4, 2), 16) / 255;
+  return {"red": red, "green": green, "blue": blue};
+};
+// convert a symbol into the index
+Alphabet.prototype.get_index = function(letter) {
+  "use strict";
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    return -1;
+  }
+  return alph_index;
+};
+// convert a symbol into the list of core indexes that it equals
+Alphabet.prototype.get_indexes = function(letter) {
+  "use strict";
+  var alph_index, comprise_str, i, comprise_list;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    throw new Error("Unknown letter");
+  }
+  comprise_str = this.symbols[alph_index].equals;
+  comprise_list = [];
+  if (typeof comprise_str == "string") {
+    for (i = 0; i < comprise_str.length; i++) {
+      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
+    }
+  } else {
+    comprise_list.push(alph_index);
+  }
+  return comprise_list;
+};
+// check if a symbol is the primary way of representing the symbol in the alphabet
+Alphabet.prototype.is_prime_symbol = function(letter) {
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (alph_index == null) return false;
+  if (this.is_case_insensitive()) {
+    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
+  } else {
+    return (this.symbols[alph_index].symbol == letter);
+  }
+};
+// compare 2 alphabets
+Alphabet.prototype.equals = function(other) {
+  "use strict";
+  var i, sym1, sym2;
+  // first check that it's actually an alphabet object
+  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
+    return false;
+  }
+  // second shortcircuit if it's the same object
+  if (this === other) return true;
+  // compare
+  if (this.name !== other.name) return false;
+  if (this.ncore !== other.ncore) return false;
+  if (this.symbols.length !== other.symbols.length) return false;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym1 = this.symbols[i];
+    sym2 = other.symbols[i];
+    if (sym1.symbol !== sym2.symbol) return false;
+    if (sym1.aliases !== sym2.aliases) return false;
+    if (sym1.name !== sym2.name) return false;
+    if (typeof sym1.colour !== typeof sym2.colour || 
+        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
+         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
+      return false;
+    }
+    if (sym1.complement !== sym2.complement) return false;
+    if (sym1.equals !== sym2.equals) return false;
+  }
+  return true;
+};
+Alphabet.prototype.check_core_subset = function(super_alph) {
+  var complement_same = true;
+  var seen_set = {};
+  var sub_i, sub_symbol, super_i, super_symbol;
+  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
+    sub_symbol = this.symbols[sub_i];
+    super_i = super_alph.encode[sub_symbol.symbol]; 
+    if (super_i == null) return 0;
+    super_symbol = super_alph.symbols[super_i];
+    if (seen_set[super_i]) return 0;
+    seen_set[super_i] = true;
+    // check complement
+    if (sub_symbol.complement != null && super_symbol.complement != null) {
+      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
+        complement_same = false;
+      }
+    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
+      complement_same = false;
+    }
+  }
+  return (complement_same ? 1 : -1);
+};
+// convert a sequence to its reverse complement
+Alphabet.prototype.invcomp_seq = function(seq) {
+  "use strict";
+  var syms, i, e_sym, comp_e_sym;
+  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
+  syms = seq.split("");
+  for (i = 0; i < syms.length; i++) {
+    e_sym = this.encode[syms[i]];
+    if (typeof e_sym === "undefined") {
+      e_sym = this.ncore; // wildcard
+    }
+    comp_e_sym = this.complement[e_sym];
+    if (typeof comp_e_sym === "undefined") {
+      comp_e_sym = e_sym; // not complementable
+    }
+    syms[i] = this.symbols[comp_e_sym].symbol;
+  }
+  return syms.reverse().join("");
+};
+// convert the alphabet to the text version
+Alphabet.prototype.as_text = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  function symbol_as_text(sym) {
+    var out;
+    out = sym.symbol;
+    if (typeof sym.name === "string" && sym.name != sym.symbol) {
+      out += " " + name_as_text(sym.name);
+    }
+    if (typeof sym.colour === "string") {
+      out += " " + sym.colour;
+    }
+    return out;
+  }
+  var out, i, j, c, sym;
+  out = "";
+  // output core symbols with 2 way complements
+  for (i = 0; i < this.ncore; i++) {
+    c = this.complement[i];
+    if (typeof c === "number" && i < c && this.complement[c] === i) {
+      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
+    }
+  }
+  // output core symbols with no complement
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.complement[i] === "undefined") {
+      out += symbol_as_text(this.symbols[i]) + "\n";
+    }
+  }
+  // output ambiguous symbols that have comprising characters
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    if (this.symbols[i].equals.length == 0) break;
+    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
+      }
+    }
+  }
+  // output aliases of core symbols
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
+      }
+    }
+  }
+  // output gap symbols
+  i = this.symbols.length - 1;
+  if (this.symbols[i].equals.length == 0) {
+    out += symbol_as_text(this.symbols[i]) + " =\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " =\n";
+      }
+    }
+  }
+  return out;
+};
+// output the alphabet as it appears in minimal MEME format
+Alphabet.prototype.as_meme = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  if (this.equals(AlphStd.DNA)) {
+    return "ALPHABET= ACGT\n";
+  } else if (this.equals(AlphStd.PROTEIN)) {
+    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
+  } else {
+    return "ALPHABET" + 
+      (this.name != null ? " " + name_as_text(this.name) : "") + 
+      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
+      this.as_text() + "END ALPHABET\n";
+  }
+};
+
+// Returns a table showing all the letters in the alphabet
+Alphabet.prototype.as_table = function() {
+  "use strict";
+  var i, j, row, th, td, aliases, equals, sym;
+  var table = document.createElement("table");
+  // create the core symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  if (this.has_complement()) {
+    th.appendChild(document.createTextNode("Complement"));
+  }
+  row.appendChild(th);
+  // list the core symbols
+  for (i = 0; i < this.ncore; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].complement != null) {
+      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
+      td.appendChild(document.createTextNode(this.symbols[i].complement));
+    }
+    row.appendChild(td);
+  }
+  // create the ambiguous symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Matches"));
+  row.appendChild(th);
+  // list the ambiguous symbols
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    equals = this.symbols[i].equals.split('');
+    for (j = 0; j < equals.length; j++) {
+      if (j != 0) td.appendChild(document.createTextNode(' '));
+      sym = document.createElement("span");
+      sym.style.color = this.get_colour(this.get_index(equals[j]));
+      sym.appendChild(document.createTextNode(equals[j]));
+      td.appendChild(sym);
+    }
+    row.appendChild(td);
+  }
+  return table;
+};
+
+// returns a dictionary of the colours for EPS
+Alphabet.prototype._as_eps_dict = function() {
+  "use strict";
+  var i, sym, rgb;
+  var out = "/fullColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = this.get_rgb(i);
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  out += "/mutedColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = Alphabet.lighten_colour(this.get_rgb(i));
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  return out;
+};
+
+// return the alphabet name or a list of primary symbols
+Alphabet.prototype.toString = function() {
+  "use strict";
+  if (this.name != null) {
+    return this.name;
+  } else {
+    return this.get_symbols();
+  }
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Helper functions
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+// Convert a colour specified in RGB colourspace values into LAB colourspace
+Alphabet.rgb2lab = function(rgb) {
+  "use strict";
+  var xyzHelper, labHelper;
+  // XYZ helper
+  xyzHelper = function(value) {
+    if (value > 0.0445) {
+      value = (value + 0.055) / 1.055;
+      value = Math.pow(value, 2.4);
+    } else {
+      value /= 12.92;
+    }
+    value *= 100;
+    return value;
+  };
+  // lab helper
+  labHelper = function(value) {
+    if (value > 0.008856) {
+      value = Math.pow(value, 1.0 / 3.0);
+    } else {
+      value = (7.787 * value) + (16.0 / 116.0);
+    }
+    return value;
+  };
+  // convert into XYZ colourspace
+  var c1, c2, c3;
+  if (typeof rgb == "number") {
+    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
+    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
+    c3 = xyzHelper((rgb & 0xFF) / 255.0);
+  } else {
+    c1 = xyzHelper(rgb.red);
+    c2 = xyzHelper(rgb.green);
+    c3 = xyzHelper(rgb.blue);
+  }
+  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
+  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
+  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
+  // convert into Lab colourspace
+  c1 = labHelper(x / 95.047);
+  c2 = labHelper(y / 100.0);
+  c3 = labHelper(z / 108.883);
+  var l = (116.0 * c2) - 16;
+  var a = 500.0 * (c1 - c2);
+  var b = 200.0 * (c2 - c3);
+  return {"l": l, "a": a, "b": b};
+};
+
+// Convert a colour specified in HSV colourspace into RGB colourspace
+Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
+  // achromatic (grey)
+  var r = value;
+  var g = value;
+  var b = value;
+  if (sat != 0) {
+    var h = hue / 60.0;
+    var i = Math.floor(h);
+    var f = h - i;
+    var p = value * (1.0 - sat);
+    var q = value * (1.0 - (sat * f));
+    var t = value * (1.0 - (sat * (1.0 - f)));
+    if (i == 0) {
+      r = value;
+      g = t;
+      b = p;
+    } else if (i == 1) {
+      r = q;
+      g = value;
+      b = p;
+    } else if (i == 2) {
+      r = p;
+      g = value;
+      b = t;
+    } else if (i == 3) {
+      r = p;
+      g = q;
+      b = value;
+    } else if (i == 4) {
+      r = t;
+      g = p;
+      b = value;
+    } else {
+      r = value;
+      g = p;
+      b = q;
+    }
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+// Calculate a distance score between two colours in LAB colourspace
+Alphabet.lab_dist = function(lab1, lab2) {
+  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
+  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
+  var dc = c1 - c2;
+  var dl = lab1.l - lab2.l;
+  var da = lab1.a - lab2.a;
+  var db = lab1.b - lab2.b;
+  // we don't want NaN due to rounding errors so fudge things a bit...
+  var dh = 0;
+  var dh_squared = (da * da) + (db * db) - (dc * dc);
+  if (dh_squared > 0) {
+    dh = Math.sqrt(dh_squared);
+  }
+  var first = dl;
+  var second = dc / (1.0 + (0.045 * c1));
+  var third = dh / (1.0 + (0.015 * c1));
+  return Math.sqrt((first * first) + (second * second) + (third * third));
+};
+
+// convert an RGB value into a HSL value
+Alphabet.rgb2hsl = function(rgb) {
+  "use strict";
+  var min, max, delta, h, s, l, r, g, b;
+  if (typeof rgb == "number") {
+    r = ((rgb >> 16) & 0xFF) / 255.0;
+    g = ((rgb >> 8) & 0xFF) / 255.0;
+    b = (rgb & 0xFF) / 255.0;
+  } else {
+    r = rgb.red;
+    g = rgb.green;
+    b = rgb.blue;
+  }
+  min = Math.min(r, g, b);
+  max = Math.max(r, g, b);
+  delta = max - min;
+  l = min + (delta / 2);
+  if (max == min) {
+    h = 0; // achromatic (grayscale)
+    s = 0;
+  } else {
+    if (l > 0.5) {
+      s = delta / (2 - max - min);
+    } else {
+      s = delta / (max + min);
+    }
+    if (max == r) {
+      h = (g - b) / delta;
+      if (g < b) h += 6;
+    } else if (max == g) {
+      h = ((b - r) / delta) + 2;
+    } else {
+      h = ((r - g) / delta) + 4;
+    }
+    h /= 6;
+  }
+  return {"h": h, "s": s, "l": l};
+};
+
+// convert a HSL value into an RGB value
+Alphabet.hsl2rgb = function(hsl, output_object) {
+  "use strict";
+  function _hue(p, q, t) {
+    "use strict";
+    if (t < 0) t += 1;
+    else if (t > 1) t -= 1;
+    if (t < (1.0 / 6.0)) {
+      return p + ((q - p) * 6.0 * t);
+    } else if (t < 0.5) {
+      return q;
+    } else if (t < (2.0 / 3.0)) {
+      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+    } else {
+      return p;
+    }
+  }
+  var r, g, b, p, q;
+  if (hsl.s == 0) {
+    // achromatic (grayscale)
+    r = hsl.l;
+    g = hsl.l;
+    b = hsl.l;
+  } else {
+    if (hsl.l < 0.5) {
+      q = hsl.l * (1 + hsl.s);
+    } else {
+      q = hsl.l + hsl.s - (hsl.l * hsl.s);
+    }
+    p = (2 * hsl.l) - q;
+    r = _hue(p, q, hsl.h + (1.0 / 3.0));
+    g = _hue(p, q, hsl.h);
+    b = _hue(p, q, hsl.h - (1.0 / 3.0));
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+Alphabet.lighten_colour = function(rgb) {
+  "use strict";
+  var hsl = Alphabet.rgb2hsl(rgb);
+  hsl.l += (1.0 - hsl.l) * 2 / 3;
+  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
+};
+
+//======================================================================
+// end Alphabet object
+//======================================================================
+
+//======================================================================
+// start StandardAlphabet object
+//======================================================================
+
+// an extension of the alphabet object to support some additional fields 
+// only present in standard alphabets.
+var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
+  Alphabet.apply(this, [alphabet_data]);
+  this.enum_code = enum_code;
+  this.enum_name = enum_name;
+};
+StandardAlphabet.prototype = Alphabet.prototype;
+StandardAlphabet.prototype.constructor = StandardAlphabet;
+
+// A unique code for this standard alphabet.
+// This code will be a power of 2 to enable creation of bitsets for
+// a selection of standard alphabets.
+StandardAlphabet.prototype.get_code = function() {
+  return this.enum_code;
+};
+
+// A unique name for this standard alphabet.
+// this name will be all upper case and the same as the property that
+// refers to this alphabet in the AlphStd collection.
+StandardAlphabet.prototype.get_enum = function() {
+  return this.enum_name;
+};
+
+//======================================================================
+// end StandardAlphabet object
+//======================================================================
+
+// A collection of standard alphabets.
+var AlphStd = {
+  RNA: new StandardAlphabet(1, "RNA", {
+    "name": "RNA",
+    "like": "RNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
+      {"symbol": "U", "name": "Uracil", "colour": "008000",
+        "aliases": "T"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
+      {"symbol": "V", "name": "Not U", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACU"},
+      {"symbol": "D", "name": "Not C", "equals": "AGU"},
+      {"symbol": "B", "name": "Not A", "equals": "CGU"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
+      {"symbol": "K", "name": "Keto", "equals": "GU"}
+    ]
+  }), 
+  DNA: new StandardAlphabet(2, "DNA", {
+    "name": "DNA",
+    "like": "DNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
+      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
+        "aliases": "U"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
+      {"symbol": "V", "name": "Not T", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACT"},
+      {"symbol": "D", "name": "Not C", "equals": "AGT"},
+      {"symbol": "B", "name": "Not A", "equals": "CGT"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
+      {"symbol": "K", "name": "Keto", "equals": "GT"}
+    ]
+  }), 
+  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
+    "name": "Protein",
+    "like": "PROTEIN",
+    "ncore": 20,
+    "symbols": [
+      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
+      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
+      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
+      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
+      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
+      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
+      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
+      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
+      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
+      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
+      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
+      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
+      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
+      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
+      {"symbol": "S", "name": "Serine", "colour": "008000"},
+      {"symbol": "T", "name": "Threonine", "colour": "008000"},
+      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
+      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
+      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
+      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
+      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
+      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
+      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
+    ]
+  })
+};
+
+//======================================================================
+// start Symbol object
+//======================================================================
+var Symbol = function(alph_index, scale, alphabet) {
+  "use strict";
+  //variable prototype
+  this.symbol = alphabet.get_symbol(alph_index);
+  this.scale = scale;
+  this.colour = alphabet.get_colour(alph_index);
+};
+
+Symbol.prototype.get_symbol = function() {
+  "use strict";
+  return this.symbol;
+};
+
+Symbol.prototype.get_scale = function() {
+  "use strict";
+  return this.scale;
+};
+
+Symbol.prototype.get_colour = function() {
+  "use strict";
+  return this.colour;
+};
+
+Symbol.prototype.toString = function() {
+  "use strict";
+  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
+};
+
+function compare_symbol(sym1, sym2) {
+  "use strict";
+  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
+//======================================================================
+var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
+  "use strict";
+  var row, col, data, row_sum, delta, evalue_re;
+  if (typeof name !== "string") {
+    name = "";
+  }
+  this.name = name;
+  //construct
+  if (matrix instanceof Pspm) {
+    // copy constructor
+    this.alph_length = matrix.alph_length;
+    this.motif_length = matrix.motif_length;
+    this.name = matrix.name;
+    this.alt = matrix.alt;
+    this.nsites = matrix.nsites;
+    this.evalue = matrix.evalue;
+    this.ltrim = matrix.ltrim;
+    this.rtrim = matrix.rtrim;
+    this.pspm = [];
+    for (row = 0; row < matrix.motif_length; row++) {
+      this.pspm[row] = [];
+      for (col = 0; col < matrix.alph_length; col++) {
+        this.pspm[row][col] = matrix.pspm[row][col];
+      }
+    }
+    if (matrix.pssm != null) {
+      this.pssm = [];
+      for (row = 0; row < matrix.motif_length; row++) {
+        this.pspm[row] = [];
+        for (col = 0; col < matrix.alph_length; col++) {
+          this.pssm[row][col] = matrix.pssm[row][col];
+        }
+      }
+    }
+  } else {
+    // check parameters
+    if (ltrim == null) {
+      ltrim = 0;
+    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
+      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
+    }
+    if (rtrim == null) {
+      rtrim = 0;
+    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
+      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
+    }
+    if (nsites != null) {
+      if (typeof nsites !== "number" || nsites < 0) {
+        throw new Error("nsites must be a positive number, got: " + nsites);
+      } else if (nsites == 0) {
+        nsites = null;
+      }
+    }
+    if (evalue != null) {
+      if (typeof evalue === "number") {
+        if (evalue < 0) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else if (typeof evalue === "string") {
+        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+        if (!evalue_re.test(evalue)) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else {
+        throw new Error("evalue must be a non-negative number, got: " + evalue);
+      }
+    }
+    // set properties
+    this.name = name;
+    this.alt = alt;
+    this.nsites = nsites;
+    this.evalue = evalue;
+    this.ltrim = ltrim;
+    this.rtrim = rtrim;
+    if (typeof matrix === "string") {
+      // string constructor
+      data = parse_pspm_string(matrix);
+      this.alph_length = data["alph_length"];
+      this.motif_length = data["motif_length"];
+      this.pspm = data["pspm"];
+      if (this.evalue == null) {
+        if (data["evalue"] != null) {
+          this.evalue = data["evalue"];
+        } else {
+          this.evalue = 0;
+        }
+      }
+      if (this.nsites == null) {
+        if (typeof data["nsites"] === "number") {
+          this.nsites = data["nsites"];
+        } else {
+          this.nsites = 20;
+        }
+      }
+    } else {
+      // assume pspm is a nested array
+      this.motif_length = matrix.length;
+      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
+      if (this.nsites == null) {
+        this.nsites = 20;
+      }
+      if (this.evalue == null) {
+        this.evalue = 0;
+      }
+      this.pspm = [];
+      // copy pspm and check
+      for (row = 0; row < this.motif_length; row++) {
+        if (this.alph_length != matrix[row].length) {
+          throw new Error("COLUMN_MISMATCH");
+        }
+        this.pspm[row] = [];
+        row_sum = 0;
+        for (col = 0; col < this.alph_length; col++) {
+          this.pspm[row][col] = matrix[row][col];
+          row_sum += this.pspm[row][col];
+        }
+        delta = 0.1;
+        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
+            (row_sum < 1 && (1 - row_sum) > delta)) {
+          throw new Error("INVALID_SUM");
+        }
+      }
+      // copy pssm
+      if (pssm != null) {
+        this.pssm = [];
+        for (row = 0; row < this.motif_length; row++) {
+          this.pssm[row] = [];
+          for (col = 0; col < this.alph_length; col++) {
+            this.pssm[row][col] = pssm[row][col];
+          }
+        }
+      }
+    }
+  }
+};
+
+Pspm.prototype.copy = function() {
+  "use strict";
+  return new Pspm(this);
+};
+
+Pspm.prototype.reverse = function() {
+  "use strict";
+  var x, y, temp, temp_trim;
+  //reverse
+  x = 0;
+  y = this.motif_length-1;
+  while (x < y) {
+    temp = this.pspm[x];
+    this.pspm[x] = this.pspm[y];
+    this.pspm[y] = temp;
+    x++;
+    y--;
+  }
+  // reverse pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //reverse
+    x = 0;
+    y = this.motif_length-1;
+    while (x < y) {
+      temp = this.pssm[x];
+      this.pspm[x] = this.pssm[y];
+      this.pssm[y] = temp;
+      x++;
+      y--;
+    }
+  }
+  //swap triming
+  temp_trim = this.ltrim;
+  this.ltrim = this.rtrim;
+  this.rtrim = temp_trim;
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.reverse_complement = function(alphabet) {
+  "use strict";
+  var x, y, temp, i, row, c, temp_trim;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  if (!alphabet.has_complement()) {
+    throw new Error("The specified alphabet can not be complemented.");
+  }
+  // reverse motif
+  this.reverse();
+  //complement
+  for (x = 0; x < this.motif_length; x++) {
+    row = this.pspm[x];
+    for (i = 0; i < row.length; i++) {
+      c = alphabet.get_complement(i);
+      if (c < i) continue;
+      temp = row[i];
+      row[i] = row[c];
+      row[c] = temp;
+    }
+  }
+  // complement pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //complement
+    for (x = 0; x < this.motif_length; x++) {
+      row = this.pssm[x];
+      for (i = 0; i < row.length; i++) {
+        c = alphabet.get_complement(i);
+        if (c < i) continue;
+        temp = row[i];
+        row[i] = row[c];
+        row[c] = temp;
+      }
+    }
+  }
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.get_stack = function(position, alphabet, ssc) {
+  "use strict";
+  var row, stack_ic, alphabet_ic, stack, i, sym;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  row = this.pspm[position];
+  stack_ic = this.get_stack_ic(position, alphabet);
+  if (ssc) stack_ic -= this.get_error(alphabet);
+  alphabet_ic = alphabet.get_ic();
+  stack = [];
+  for (i = 0; i < this.alph_length; i++) {
+    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;
+};
+
+Pspm.prototype.get_stack_ic = function(position, alphabet) {
+  "use strict";
+  var row, H, i;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size fo the pspm.");
+  }
+  row = this.pspm[position];
+  H = 0;
+  for (i = 0; i < this.alph_length; i++) {
+    if (row[i] === 0) {
+      continue;
+    }
+    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
+  }
+  return alphabet.get_ic() - H;
+};
+
+Pspm.prototype.get_error = function(alphabet) {
+  "use strict";
+  if (this.nsites === 0) {
+    return 0;
+  }
+  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
+};
+
+Pspm.prototype.get_motif_length = function() {
+  "use strict";
+  return this.motif_length;
+};
+
+Pspm.prototype.get_alph_length = function() {
+  "use strict";
+  return this.alph_length;
+};
+
+Pspm.prototype.get_left_trim = function() {
+  "use strict";
+  return this.ltrim;
+};
+
+Pspm.prototype.get_right_trim = function() {
+  "use strict";
+  return this.rtrim;
+};
+
+Pspm.prototype.as_best_match = function(alphabet) {
+  "use strict";
+  var match, odds, best_odds, best_index;
+  var i, j;
+  match = "";
+  for (i = 0; i < this.motif_length; i++) {
+    best_index = 0;
+    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
+    for (j = 1; j < this.alph_length; j++) {
+      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
+      if (odds > best_odds) {
+        best_odds = odds;
+        best_index = j;
+      }
+    }
+    match += alphabet.get_symbol(best_index);
+  }
+  return match;
+};
+
+Pspm.prototype.as_count_matrix = function() {
+  "use strict";
+  var count, count_text, text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      count = Math.round(this.nsites * this.pspm[i][j]);
+      count_text = "" + count;
+      // pad up to length of 4
+      if (count_text.length < 4) {
+        text += (new Array(5 - count_text.length)).join(" ") + count_text;
+      } else {
+        text += count_text;
+      }
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_probability_matrix = function() {
+  "use strict";
+  var text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      text += this.pspm[i][j].toFixed(6);
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
+  "use strict";
+  var me, score, out, row, col, score_text;
+  me = this;
+  if (typeof this.pssm === "undefined") {
+    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
+      throw new Error("The alphabet is required to generate the pssm.");
+    }
+    if (typeof pseudo === "undefined") {
+      pseudo = 0.01;
+    } else if (typeof pseudo !== "number" || pseudo < 0) {
+      throw new Error("Expected positive number for pseudocount");
+    }
+    score = function(row, col) {
+      "use strict";
+      var p, bg, p2;
+      p = me.pspm[row][col];
+      bg = alphabet.get_bg_freq(col);
+      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
+      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
+    };
+  } else {
+    score = function(row, col) {
+      "use strict";
+      return me.pssm[row][col];
+    };
+  }
+  out = "";
+  for (row = 0; row < this.motif_length; row++) {
+    for (col = 0; col < this.alph_length; col++) {
+      if (col !== 0) {
+        out += " ";
+      }
+      score_text = "" + score(row, col);
+      // pad out to 6 characters
+      if (score_text.length < 6) {
+        out += (new Array(7 - score_text.length)).join(" ") + score_text;
+      } else {
+        out += score_text;
+      }
+    }
+    out += "\n";
+  }
+  return out;
+}
+
+Pspm.prototype.as_pspm = function() {
+  "use strict";
+  return "letter-probability matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + " nsites= " + this.nsites + 
+      " E= " + (typeof this.evalue === "number" ? 
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_probability_matrix();
+};
+
+Pspm.prototype.as_pssm = function(alphabet, pseudo) {
+  "use strict";
+  return "log-odds matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + 
+      " E= " + (typeof this.evalue == "number" ?
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_score_matrix(alphabet, pseudo);
+};
+
+Pspm.prototype.as_meme = function(options) {
+  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
+  var out, alen, i;
+  // get the options
+  if (typeof options !== "object" || options === null) {
+    options = {};
+  }
+  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
+  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
+  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
+  if (!with_pspm && !with_pssm) with_pspm = true;
+  if (with_header) {
+    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
+      version = options["version"];
+    } else if (typeof options["version"] === "number") {
+      version = options["version"].toFixed(0);
+    } else {
+      version = "4";
+    }
+    if (typeof options["strands"] === "number" && options["strands"] === 1) {
+      strands = 1;
+    } else {
+      strands = 2;
+    }
+    if (typeof options["bg_source"] === "string") {
+      bg_source = options["bg_source"];
+    } else {
+      bg_source = "unknown source";
+    }
+    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
+        && options["alphabet"] instanceof Alphabet) {
+      alphabet = options["alphabet"];
+    } else {
+      throw new Error("The alphabet is required to generate the header.");
+    }
+  }
+  // now create the output
+  out = "";
+  if (with_header) {
+    out = "MEME version " + version + "\n\n";
+    out += alphabet.as_meme() + "\n";
+    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
+      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
+    }
+    out += "Background letter frequencies (from " + bg_source + "):\n";
+    alen = alphabet.get_size_core();
+    for (i = 0; i < alen; i++) {
+      if (i !== 0) {
+        if (i % 9 === 0) { // maximum of nine entries per line
+          out += "\n";
+        } else {
+          out += " ";
+        }
+      }
+      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
+    }
+  }
+  out += "\n\n";
+  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
+  if (with_pssm) {
+    out += "\n\n";
+    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
+  }
+  if (with_pspm) {
+    out += "\n\n";
+    out += this.as_pspm();
+  }
+  return out;
+}
+
+Pspm.prototype.toString = function() {
+  "use strict";
+  var str, i, row;
+  str = "";
+  for (i = 0; i < this.pspm.length; i++) {
+    row = this.pspm[i];
+    str += row.join("\t") + "\n";
+  }
+  return str;
+};
+
+function parse_pspm_properties(str) {
+  "use strict";
+  var parts, i, eqpos, before, after, properties, prop, num, num_re;
+  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+  parts = trim(str).split(/\s+/);
+  // split up words containing =
+  for (i = 0; i < parts.length;) {
+    eqpos = parts[i].indexOf("=");
+    if (eqpos != -1) {
+      before = parts[i].substr(0, eqpos);
+      after = parts[i].substr(eqpos+1);
+      if (before.length > 0 && after.length > 0) {
+        parts.splice(i, 1, before, "=", after);
+        i += 3;
+      } else if (before.length > 0) {
+        parts.splice(i, 1, before, "=");
+        i += 2;
+      } else if (after.length > 0) {
+        parts.splice(i, 1, "=", after);
+        i += 2;
+      } else {
+        parts.splice(i, 1, "=");
+        i++;
+      }
+    } else {
+      i++;
+    }
+  }
+  properties = {};
+  for (i = 0; i < parts.length; i += 3) {
+    if (parts.length - i < 3) {
+      throw new Error("Expected PSPM property was incomplete. "+
+          "Remaing parts are: " + parts.slice(i).join(" "));
+    }
+    if (parts[i+1] !== "=") {
+      throw new Error("Expected '=' in PSPM property between key and " +
+          "value but got " + parts[i+1]); 
+    }
+    prop = parts[i].toLowerCase();
+    num = parts[i+2];
+    if (!num_re.test(num)) {
+      throw new Error("Expected numeric value for PSPM property '" + 
+          prop + "' but got '" + num + "'");
+    }
+    properties[prop] = num;
+  }
+  return properties;
+}
+
+function parse_pspm_string(pspm_string) {
+  "use strict";
+  var header_re, lines, first_line, line_num, col_num, alph_length, 
+      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
+      j, prob;
+  header_re = /^letter-probability\s+matrix:(.*)$/i;
+  lines = pspm_string.split(/\n/);
+  first_line = true;
+  line_num = 0;
+  col_num = 0;
+  alph_length;
+  motif_length;
+  nsites;
+  evalue;
+  pspm = [];
+  for (i = 0; i < lines.length; i++) {
+    line = trim(lines[i]);
+    if (line.length === 0) { 
+      continue;
+    }
+    // check the first line for a header though allow matrices without it
+    if (first_line) {
+      first_line = false;
+      match = header_re.exec(line);
+      if (match !== null) {
+        props = parse_pspm_properties(match[1]);
+        if (props.hasOwnProperty("alength")) {
+          alph_length = parseFloat(props["alength"]);
+          if (alph_length != 4 && alph_length != 20) {
+            throw new Error("PSPM property alength should be 4 or 20" +
+                " but got " + alph_length);
+          }
+        }
+        if (props.hasOwnProperty("w")) {
+          motif_length = parseFloat(props["w"]);
+          if (motif_length % 1 !== 0 || motif_length < 1) {
+            throw new Error("PSPM property w should be an integer larger " +
+                "than zero but got " + motif_length);
+          }
+        }
+        if (props.hasOwnProperty("nsites")) {
+          nsites = parseFloat(props["nsites"]);
+          if (nsites <= 0) {
+            throw new Error("PSPM property nsites should be larger than " +
+                "zero but got " + nsites);
+          }
+        }
+        if (props.hasOwnProperty("e")) {
+          evalue = props["e"];
+          if (evalue < 0) {
+            throw new Error("PSPM property evalue should be " +
+                "non-negative but got " + evalue);
+          }
+        }
+        continue;
+      }
+    }
+    pspm[line_num] = [];
+    col_num = 0;
+    parts = line.split(/\s+/);
+    for (j = 0; j < parts.length; j++) {
+      prob = parseFloat(parts[j]);
+      if (prob != parts[j] || prob < 0 || prob > 1) {
+        throw new Error("Expected probability but got '" + parts[j] + "'"); 
+      }
+      pspm[line_num][col_num] = prob;
+      col_num++;
+    }
+    line_num++;
+  }
+  if (typeof motif_length === "number") {
+    if (pspm.length != motif_length) {
+      throw new Error("Expected PSPM to have a motif length of " + 
+          motif_length + " but it was actually " + pspm.length);
+    }
+  } else {
+    motif_length = pspm.length;
+  }
+  if (typeof alph_length !== "number") {
+    alph_length = pspm[0].length;
+    if (alph_length != 4 && alph_length != 20) {
+      throw new Error("Expected length of first row in the PSPM to be " +
+          "either 4 or 20 but got " + alph_length);
+    }
+  }
+  for (i = 0; i < pspm.length; i++) {
+    if (pspm[i].length != alph_length) {
+      throw new Error("Expected PSPM row " + i + " to have a length of " + 
+          alph_length + " but the length was " + pspm[i].length);
+    }
+  }
+  return {"pspm": pspm, "motif_length": motif_length, 
+    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
+}
+//======================================================================
+// end Pspm object
+//======================================================================
+
+//======================================================================
+// start Logo object
+//======================================================================
+
+var Logo = function(alphabet, options) {
+  "use strict";
+  this.alphabet = alphabet;
+  this.fine_text = "";
+  this.x_axis = 1;
+  this.y_axis = true;
+  this.xlate_nsyms = 1;
+  this.xlate_start = null;
+  this.xlate_end = null;
+  this.pspm_list = [];
+  this.pspm_column = [];
+  this.rows = 0;
+  this.columns = 0;
+  if (typeof options === "string") {
+    // the old method signature had fine_text here so we support that
+    this.fine_text = options;
+  } else if (typeof options === "object" && options != null) {
+    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
+    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
+    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
+    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
+    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
+    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
+    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
+  }
+};
+
+Logo.prototype.add_pspm = function(pspm, column) {
+  "use strict";
+  var col;
+  if (typeof column === "undefined") {
+    column = 0;
+  } else if (column < 0) {
+    throw new Error("Column index out of bounds.");
+  }
+  this.pspm_list[this.rows] = pspm;
+  this.pspm_column[this.rows] = column;
+  this.rows++;
+  col = column + pspm.get_motif_length();
+  if (col > this.columns) {
+    this.columns = col;
+  }
+};
+
+Logo.prototype.get_columns = function() {
+  "use strict";
+  return this.columns;
+};
+
+Logo.prototype.get_xlate_nsyms = function() {
+  "use strict";
+  return this.xlate_nsyms;
+};
+
+Logo.prototype.get_xlate_start = function() {
+  "use strict";
+  return (this.xlate_start != null ? this.xlate_start : 0);
+};
+
+Logo.prototype.get_xlate_end = function() {
+  "use strict";
+  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
+};
+
+Logo.prototype.get_xlate_columns = function() {
+  "use strict";
+  return this.get_xlate_end() - this.get_xlate_start();
+};
+
+Logo.prototype.get_rows = function() {
+  "use strict";
+  return this.rows;
+};
+
+Logo.prototype.get_pspm = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_list[row_index];
+};
+
+Logo.prototype.get_offset = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_column[row_index];
+};
+
+Logo.prototype._as_eps_data = function(ssc, errbars) {
+  var i, j, pos, stack_pos, pspm, stack, sym, out;
+  out = "";
+  for (i = 0; i < this.rows; i++) {
+    out += "\nStartLine\n";
+    // Indent
+    for (j = 0; j < this.pspm_column[i]; j++) {
+      out += "() startstack\nendstack\n\n";
+    }
+    pspm = this.pspm_list[i];
+    if (pspm.get_left_trim() > 0) {
+      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
+    }
+    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
+      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
+        out += "DrawTrimEdge\nRestoreColour\n";
+      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
+        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
+      }
+      out += "(" + (pos + 1) + ") startstack\n";
+      stack = pspm.get_stack(pos, this.alphabet, ssc);
+      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
+        sym = stack[stack_pos];
+        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
+      }
+      if (errbars) {
+        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
+      }
+      out += "endstack\n\n";
+    }
+    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
+      out += "RestoreColour\n";
+    }
+    out += "EndLine\n";
+  }
+  return out;
+};
+
+Logo.prototype.as_eps = function(options) {
+  "use strict";
+  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
+  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
+  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
+
+  var LOGOHEIGHT = 7.5; // default height of line in cm
+  var cm2pts, height, width, now, ssc, errbars;
+  if (typeof options === "undefined") {
+    options = {};
+  }
+  cm2pts = 72 / 2.54;
+  if (typeof options.logo_height == "number") {
+    height = options.logo_height;
+  } else {
+    height = LOGOHEIGHT * this.rows;
+  }
+  if (typeof options.logo_width == "number") {
+    width = options.logo_width;
+  } else {
+    width = this.columns + 2;
+  }
+  now = new Date();
+  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
+  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
+  var values = {
+    "LOGOHEIGHT": height,
+    "LOGOWIDTH": width,
+    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
+    "BOUNDINGWIDTH": Math.round(width * cm2pts),
+    "LOGOLINEHEIGHT": (height / this.rows),
+    "CHARSPERLINE": this.columns,
+    "BARBITS": this.alphabet.get_ic(),
+    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
+    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
+    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
+    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
+    "TITLE": (typeof options.title == "string" ? options.title : ""),
+    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
+    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
+    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
+    "SSC": ssc,
+    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
+    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
+    "ERRBAR": errbars,
+    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
+    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
+    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
+    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
+    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
+    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
+    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
+    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
+    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
+    "COLORDICT": this.alphabet._as_eps_dict(),
+    "DATA": this._as_eps_data(ssc, errbars)
+  };
+  // now this requires that the script containing the template has been imported!
+  return motif_logo_template(values);
+};
+
+//======================================================================
+// end Logo object
+//======================================================================
+
+// calculate the exact size (in pixels) of an object drawn on the
+// canvas assuming that the background of the canvas is transparent.
+function canvas_bounds(ctx, cwidth, cheight) {
+  "use strict";
+  var data, r, c, top_line, bottom_line, left_line, right_line, 
+      txt_width, txt_height;
+
+  // extract the image data
+  data = ctx.getImageData(0, 0, cwidth, cheight).data;
+
+  // set initial values
+  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
+  txt_width = 0; txt_height = 0;
+
+  // Find the top-most line with a non-transparent 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;
+    }
+  }
+  
+  // Only bother looking if we found at least one set pixel... 
+  if (top_line != -1) {
+
+    //find the last line with a non-transparent pixel
+    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;
+      }
+    }
+    // calculate height
+    txt_height = bottom_line - top_line + 1;
+
+    // Find the left-most line with a non-transparent pixel
+    for (c = 0; c < cwidth; c++) {
+      for (r = top_line; r <= bottom_line; 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-transparent pixel
+    for (c = cwidth-1; c >= left_line; c--) {
+      for(r = top_line; r <= bottom_line; 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};
+}
+
+//======================================================================
+// 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).
+var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
+  "use strict";
+  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
+      i, sym, size, tenpercent, avg_width, scale, 
+      target_width, target_height;
+  //variable prototypes
+  this.alphabet = alphabet;
+  this.scale = logo_scale;
+  this.sym_cache = {};
+  this.stack_num_cache = [];
+  this.scale_num_cache = [];
+  // size of canvas
+  default_size = 60; // size of measuring canvas
+  safety_pad = 20; // pixels to pad around so we don't miss the edges
+  // create a canvas to do our measuring
+  canvas = document.createElement("canvas");
+  if (!canvas.getContext) throw new Error("No canvas support");
+  canvas.width = default_size + 2 * safety_pad;
+  canvas.height = default_size + 2 * safety_pad;
+  middle = Math.round(canvas.width / 2);
+  baseline = Math.round(canvas.height - safety_pad);
+  ctx = canvas.getContext('2d');
+  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
+  ctx.font = font;
+  ctx.textAlign = "center";
+  ctx.translate(middle, baseline);
+  // list of widths
+  widths = [];
+  sizes = [];
+  //now measure each letter in the alphabet
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    // reset the canvas
+    ctx.clearRect(0, 0, canvas.width, canvas.height);
+    ctx.fillStyle = alphabet.get_colour(i);
+    // draw the test text
+    ctx.fillText(alphabet.get_symbol(i), 0, 0);
+    //measure
+    size = canvas_bounds(ctx, canvas.width, canvas.height);
+    if (size.width === 0) throw new Error("Invisible symbol!");
+    widths.push(size.width);
+    sizes[i] = size;
+  }
+  //sort the widths
+  widths.sort(function(a,b) {return a - b;});
+  //drop 10% of the items off each end
+  tenpercent = Math.floor(widths.length / 10);
+  for (i = 0; i < tenpercent; ++i) {
+    widths.pop();
+    widths.shift();
+  }
+  //calculate average width
+  avg_width = 0;
+  for (i = 0; i < widths.length; ++i) {
+    avg_width += widths[i];
+  }
+  avg_width /= widths.length;
+  // calculate the target width
+  target_width = width * this.scale * 2;
+  // calculate scales
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    sym = alphabet.get_symbol(i);
+    size = sizes[i];
+    // calculate scale
+    scale = target_width / Math.max(avg_width, size.width);
+    // estimate scaled height
+    target_height = size.height * scale;
+    // create an appropriately sized canvas
+    canvas = document.createElement("canvas");
+    canvas.width = target_width;
+    canvas.height = target_height + safety_pad * 2;
+    // calculate the middle
+    middle = Math.round(canvas.width / 2);
+    // calculate the baseline
+    baseline = Math.round(canvas.height - safety_pad);
+    // get the context and prepare to draw the rasterized text
+    ctx = canvas.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 text
+    ctx.fillText(sym, 0, 0);
+    ctx.restore();
+    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
+  }
+};
+
+RasterizedAlphabet.prototype.get_alphabet = function() {
+  return this.alphabet;
+};
+
+RasterizedAlphabet.prototype.get_scale = function() {
+  return this.scale;
+};
+
+RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
+  "use strict";
+  var entry, image, size;
+  entry = this.sym_cache[letter];
+  image = entry.image;
+  size = entry.size;
+  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
+};
+
+RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
+  var image, image_ctx, text_length;
+  if (index >= this.stack_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.save();
+    image_ctx.font = font;
+    text_length = image_ctx.measureText("" + (index + 1)).width;
+    image_ctx.restore();
+    // resize the canvas to fit
+    image.width = Math.ceil(stack_width);
+    image.height = Math.ceil(text_length);
+    // draw the text
+    image_ctx = image.getContext('2d');
+    image_ctx.translate(Math.round(stack_width / 2), 0);
+    image_ctx.font = font;
+    image_ctx.textBaseline = "middle";
+    image_ctx.textAlign = "right";
+    image_ctx.rotate(-(Math.PI / 2));
+    image_ctx.fillText("" + (index + 1), 0, 0);
+    this.stack_num_cache[index] = image;
+  } else {
+    image = this.stack_num_cache[index];
+  }
+  ctx.drawImage(image, 0, 0);
+}
+
+RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
+  var image, image_ctx, text_size, m_length;
+  if (num >= this.scale_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.font = font;
+    text_size = image_ctx.measureText("" + num);
+    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
+    } else {
+      // measure width of 'm' to approximate height, we double it later anyway
+      m_length = image_ctx.measureText("m").width;
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(2 * m_length);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.textBaseline = "middle";
+      image_ctx.fillText("" + num, image.width, m_length);
+    }
+    this.scale_num_cache[num] = image;
+  } else {
+    image = this.scale_num_cache[num];
+  }
+  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
+}
+
+//======================================================================
+// end RasterizedAlphabet
+//======================================================================
+
+//======================================================================
+// start LogoMetrics object
+//======================================================================
+
+var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
+  "use strict";
+  var i, row_height;
+  //variable prototypes
+  this.pad_top = (has_names ? 5 : 0);
+  this.pad_left = (y_axis ? 10 : 0);
+  this.pad_right = (has_finetext ? 15 : 0);
+  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_axis = y_axis;
+  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_axis = x_axis;
+  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;
+  //calculate the width of the y axis numbers
+  ctx.font = this.y_num_font;
+  for (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)
+  if (x_axis == 1) {
+    ctx.font = this.x_num_font;
+    for (i = 1; i <= logo_columns; i++) {
+      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
+    }
+  } else if (x_axis == 0) {
+    this.x_num_height = 4;
+    this.x_num_width = 4;
+  } else {
+    this.x_num_height = 0;
+    this.x_num_width = 0;
+  }
+  
+  //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) {
+    row_height = this.stack_height + this.pad_middle;
+    if (has_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_axis ? this.y_num_height/2 : 0);
+
+  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
+  if (has_names) {
+    this.summed_height += fine_txt_total + this.name_height;
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + this.name_spacer);
+  } else {
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + fine_txt_total);
+  }
+
+  //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;
+  if (this.y_axis) {
+    //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;
+
+};
+
+//======================================================================
+// end LogoMetrics object
+//======================================================================
+
+//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
+function image_ok(img) {
+  "use strict";
+  // 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) {
+  "use strict";
+  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, raster) {
+  "use strict";
+  var tic_height, i;
+  tic_height = metrics.stack_height / alphabet_ic;
+  ctx.save();
+  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.rotate(-(Math.PI / 2));
+  ctx.textAlign = "center";
+  ctx.fillText("bits", 0, 0);
+  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);
+  for (i = 0; i <= alphabet_ic; i++) {
+    //draw the number
+    ctx.save();
+    ctx.translate(-1, 0);
+    raster.draw_scale_num(ctx, metrics.y_num_font, i);
+    ctx.restore();
+    //draw the tic
+    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
+    //prepare for next tic
+    ctx.translate(0, -tic_height);
+  }
+  ctx.restore();
+
+  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
+
+  ctx.restore();
+}
+
+function draw_stack_num(ctx, metrics, row_index, raster) {
+  "use strict";
+  ctx.save();
+  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
+  if (metrics.x_axis == 1) {
+    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
+  } else if (metrics.x_axis == 0) {
+    // draw dots instead of the numbers (good for small logos)
+    ctx.beginPath();
+    var radius = Math.round(metrics.x_num_height / 2);
+    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
+    ctx.fill();
+  }
+  ctx.restore();
+}
+
+function draw_stack(ctx, metrics, symbols, raster) {
+  "use strict";
+  var preferred_pad, sym_min, i, sym, sym_height, pad;
+  preferred_pad = 0;
+  sym_min = 5;
+
+  ctx.save();//1
+  ctx.translate(0, metrics.stack_height);
+  for (i = 0; i < symbols.length; i++) {
+    sym = symbols[i];
+    sym_height = metrics.stack_height * sym.get_scale();
+    
+    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
+    //translate past the padding
+    ctx.translate(0, -(pad/2));
+  }
+  ctx.restore();//1
+}
+
+function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
+  "use strict";
+  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
+  dx = x2 - x1;
+  dy = y2 - y1;
+  tlen = Math.pow(dx*dx + dy*dy, 0.5);
+  theta = Math.atan2(dy,dx);
+  mulx = Math.cos(theta);
+  muly = Math.sin(theta);
+  lx = [];
+  ly = [];
+  for (i = 0; i < pattern; ++i) {
+    lx.push(pattern[i] * mulx);
+    ly.push(pattern[i] * muly);
+  }
+  i = start;
+  x = x1;
+  y = y1;
+  len = 0;
+  ctx.beginPath();
+  while (len + pattern[i] < tlen) {
+    ctx.moveTo(x, y);
+    x += lx[i];
+    y += ly[i];
+    ctx.lineTo(x, y);
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+    x += lx[i];
+    y += ly[i];
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+  }
+  if (len < tlen) {
+    ctx.moveTo(x, y);
+    x += mulx * (tlen - len);
+    y += muly * (tlen - len);
+    ctx.lineTo(x, y);
+  }
+  ctx.stroke();
+}
+
+function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
+  "use strict";
+  var left_size = left_end - left_start;
+  var right_size = right_end - right_start;
+  var line_x;
+
+  ctx.save();//s8
+  ctx.fillStyle = "rgb(240, 240, 240)";
+  if (left_size > 0) {
+    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
+  }
+  if (right_size > 0) {
+    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
+  }
+  ctx.fillStyle = "rgb(51, 51, 51)";
+  if (left_size > 0 && left_divider) {
+    line_x = (left_end * metrics.stack_width) - 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  if (right_size > 0 && right_divider) {
+    line_x = (right_start * metrics.stack_width) + 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  ctx.restore();//s8
+}
+
+function size_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var draw_name, draw_finetext, metrics;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  if (canvas.width !== 0 && canvas.height !== 0) {
+    return;
+  }
+  metrics = new LogoMetrics(canvas.getContext('2d'), 
+      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
+    } else if (canvas.height === 0) {
+      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
+    }
+  }
+}
+
+function draw_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
+      offset, col_index, motif_position, ssc;
+  ssc = false;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  ctx = canvas.getContext('2d');
+  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
+  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      scale = 1;
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      scale = canvas.height / metrics.summed_height;
+      canvas.width = metrics.summed_width * scale;
+    } else if (canvas.height === 0) {
+      scale = canvas.width / metrics.summed_width;
+      canvas.height = metrics.summed_height * scale;
+    } else {
+      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
+    }
+  }
+  // cache the raster based on the assumption that we will be drawing a lot
+  // of logos the same size and alphabet
+  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
+    draw_logo_on_canvas.raster_cache = [];
+  }
+  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
+    raster = draw_logo_on_canvas.raster_cache[i];
+    if (raster.get_alphabet().equals(logo.alphabet) &&
+        Math.abs(raster.get_scale() - scale) < 0.1) break;
+    raster = null;
+  }
+  if (raster == null) {
+    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
+    draw_logo_on_canvas.raster_cache.push(raster);
+  }
+  ctx = canvas.getContext('2d');
+  ctx.save();//s1
+  ctx.scale(scale, scale);
+  ctx.save();//s2
+  ctx.save();//s7
+  //create margin
+  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
+  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
+    pspm = logo.get_pspm(pspm_i);
+    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
+      ctx.font = metrics.name_font;
+      ctx.textAlign = "center";
+      ctx.fillText(pspm.name, 0, 0);
+      ctx.restore();//s4
+      ctx.translate(0, Math.round(metrics.name_height + 
+          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
+    }
+    //draw scale
+    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
+    ctx.save();//s5
+    //translate across past the scale
+    if (logo.y_axis) {
+      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
+        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
+    }
+    //draw the trimming background
+    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
+      var left_start = offset * logo.get_xlate_nsyms();
+      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
+      var left_divider = true;
+      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
+        // no overlap
+        left_start = 0;
+        left_end = 0;
+        left_divider = false;
+      } else {
+        if (left_start < logo.get_xlate_start()) {
+          left_start = logo.get_xlate_start();
+        }
+        if (left_end > logo.get_xlate_end()) {
+          left_end = logo.get_xlate_end();
+          left_divider = false;
+        }
+        left_start -= logo.get_xlate_start();
+        left_end -= logo.get_xlate_start();
+        if (left_end < left_start) {
+          left_start = 0;
+          left_end = 0;
+          left_divider = false;
+        }
+      }
+      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
+      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
+      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
+      var right_divider = true;
+      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
+        // no overlap
+        right_start = 0;
+        right_end = 0;
+        right_divider = false;
+      } else {
+        if (right_start < logo.get_xlate_start()) {
+          right_start = logo.get_xlate_start();
+          right_divider = false;
+        }
+        if (right_end > logo.get_xlate_end()) {
+          right_end = logo.get_xlate_end();
+        }
+        right_start -= logo.get_xlate_start();
+        right_end -= logo.get_xlate_start();
+        if (right_end < right_start) {
+          right_start = 0;
+          right_end = 0;
+          right_divider = false;
+        }
+      }
+      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
+    }
+    //draw letters
+    var xlate_col;
+    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
+      ctx.translate(metrics.stack_pad_left,0);
+      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
+      if (xlate_col % logo.get_xlate_nsyms() == 0) {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          motif_position = col_index - offset;
+          draw_stack_num(ctx, metrics, motif_position, raster);
+          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
+        }
+      } else {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          ctx.save();// s5.1
+          ctx.translate(0, Math.round(metrics.stack_height));
+          // TODO draw a dot or dash or something to indicate continuity of the motif
+          ctx.restore(); //s5.1
+        }
+      }
+      ctx.translate(Math.round(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
+  if (logo.fine_text.length > 0) {
+    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) {
+  "use strict";
+  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) {
+  "use strict";
+  var logo = new Logo(alphabet, fine_text);
+  logo.add_pspm(pspm);
+  return logo;
+}
+
+function logo_2(alphabet, fine_text, target, query, query_offset) {
+  "use strict";
+  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) {
+  "use strict";
+  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, null, 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) {
+  "use strict";
+  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, null, scale);
+  //replace the element with the canvas
+  element.parentNode.replaceChild(canvas, element);
+}
+
+/*
+ * Fast string trimming implementation found at
+ * http://blog.stevenlevithan.com/archives/faster-trim-javascript
+ *
+ * Note that regex is good at removing leading space but
+ * bad at removing trailing space as it has to first go through
+ * the whole string.
+ */
+function trim (str) {
+  "use strict";
+  var ws, i;
+  str = str.replace(/^\s\s*/, '');
+  ws = /\s/; i = str.length;
+  while (ws.test(str.charAt(--i)));
+  return str.slice(0, i + 1);
+}
+</script>
+    <script>
+var current_motif = 0;
+var dreme_alphabet = new Alphabet(data.alphabet, data.control_db.freqs);
+
+/*
+ * Create a pspm for the given motif data
+ */
+function motif_pspm(m) {
+  return new Pspm(m.pwm, m.id, 0, 0, m.nsites, m.evalue);
+}
+
+/*
+ * Create a count matrix from the given motif data
+ */
+function motif_count_matrix(motif) {
+  return motif_pspm(motif).as_count_matrix();
+}
+
+/*
+ * Create a probablity matrix from the given motif data
+ */
+function motif_prob_matrix(motif) {
+  return motif_pspm(motif).as_probability_matrix();
+}
+
+/*
+ * Create a minimal meme format motif from the given motif data
+ */
+function motif_minimal_meme(motif) {
+  return motif_pspm(motif).as_meme({
+    "with_header": true, 
+    "with_pspm": true,
+    "with_pssm": false,
+    "version": data["version"],
+    "alphabet": dreme_alphabet,
+    "strands": (data.options.revcomp ? 2 : 1)
+  });
+}
+
+/*
+ * Fill in a template variable
+ */
+function set_tvar(template, tvar, value) {
+  var node;
+  node = find_child(template, tvar);
+  if (node === null) {
+    throw new Error("Template does not contain variable " + tvar);
+  }
+  node.innerHTML = "";
+  if (typeof value !== "object") {
+    node.appendChild(document.createTextNode(value));
+  } else {
+    node.appendChild(value);
+  }
+}
+
+/*
+ * Make a canvas with the motif logo drawn on it. 
+ */
+function make_logo(motif, height, rc) {
+  var pspm = new Pspm(motif["pwm"]);
+  if (rc) pspm = pspm.copy().reverse_complement(dreme_alphabet);
+  var logo = new Logo(dreme_alphabet);
+  logo.add_pspm(pspm, 0);
+  var canvas = document.createElement('canvas');
+  canvas.height = height;
+  canvas.width = 0;
+  draw_logo_on_canvas(logo, canvas, false);
+  return canvas;
+}
+
+/*
+ * Create a button designed to contain a single symbol
+ */
+function make_sym_btn(symbol, title, action) {
+  var box, sbox;
+  box = document.createElement("div");
+  box.tabIndex = 0;
+  box.className = "sym_btn";
+  sbox = document.createElement("span");
+  if (typeof symbol == "string") {
+    sbox.appendChild(document.createTextNode(symbol));
+  } else {
+    sbox.appendChild(symbol);
+  }
+  box.appendChild(sbox);
+  box.title = title;
+  box.addEventListener('click', action, false);
+  box.addEventListener('keydown', action, false);
+  return box;
+}
+
+/*
+ * Create a pair of text spans with different classes.
+ * This is useful when using CSS to only display one of them.
+ */
+function text_pair(txt1, cls1, txt2, cls2) {
+  var container, part1, part2;
+  container = document.createElement("span");
+  part1 = document.createElement("span");
+  part1.appendChild(document.createTextNode(txt1));
+  part1.className = cls1;
+  container.appendChild(part1);
+  part2 = document.createElement("span");
+  part2.appendChild(document.createTextNode(txt2));
+  part2.className = cls2;
+  container.appendChild(part2);
+  return container;
+}
+
+/*
+ * Make a colourised sequence.
+ */
+function make_seq(seq) {
+  var i, j, letter, lbox, sbox;
+  sbox = document.createElement("span");
+  for (i = 0; i < seq.length; i = j) {
+    letter = seq.charAt(i);
+    for (j = i+1; j < seq.length; j++) {
+      if (seq.charAt(j) !== letter) {
+        break;
+      }
+    }
+    lbox = document.createElement("span");
+    lbox.style.color = dreme_alphabet.get_colour(dreme_alphabet.get_index(letter));
+    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
+    sbox.appendChild(lbox);
+  }
+  return sbox;
+}
+
+/*
+ * Create a description element taking into account the newlines in the source text.
+ */
+function make_description(text) {
+  var i, j, lines, p;
+  var container = document.createElement("div");
+  var paragraphs = text.split(/\n\n+/);
+  for (i = 0; i < paragraphs.length; i++) {
+    lines = paragraphs[i].split(/\n/);
+    p = document.createElement("p");
+    p.appendChild(document.createTextNode(lines[0]));
+    for (j = 1; j < lines.length; j++) {
+      p.appendChild(document.createElement("br"));
+      p.appendChild(document.createTextNode(lines[j]));
+    }
+    container.appendChild(p);
+  }
+  return container;
+}
+
+/*
+ * Make the table header for the discovered motifs.
+ */
+function make_motif_header() {
+  var row = document.createElement("tr");
+  add_text_header_cell(row, "", "", "motif_ordinal");
+  add_text_header_cell(row, "Motif", "pop_motifs_word", "motif_word");
+  add_text_header_cell(row, "Logo", "pop_motifs_logo", "motif_logo");
+  if (data.options.revcomp) {
+    add_text_header_cell(row, "RC Logo", "pop_motifs_rc_logo", "motif_logo");
+  }
+  add_text_header_cell(row, "E-value", "pop_motifs_evalue", "motif_evalue");
+  add_text_header_cell(row, "Unerased E-value", "pop_motifs_uevalue", "motif_evalue");
+  add_text_header_cell(row, "More", "pop_more", "motif_more");
+  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
+  row.className = "more";
+  return row;
+}
+
+/*
+ * Make a compact motif summary row for the discovered motifs.
+ */
+function make_motif_row(tbody, ordinal, motif) {
+  var row = document.createElement("tr");
+  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
+  add_text_cell(row, motif["id"], "motif_word");
+  add_cell(row, make_logo(motif, 50, false), "motif_logo");
+  if (data.options.revcomp) {
+    add_cell(row, make_logo(motif, 50, true), "motif_logo");
+  }
+  add_text_cell(row, motif["evalue"], "motif_evalue");
+  add_text_cell(row, motif["unerased_evalue"], "motif_evalue");
+  add_cell(row, make_sym_btn(text_pair("\u21A7", "less", "\u21A5", "more"), "Show more information.", function(e) { toggle_class(tbody, "collapsed"); }, "\u21A5", ""), "motif_more");
+  add_cell(row, make_sym_btn("\u21E2", "Submit the motif to another MEME Suite program or download it.", function(e) { action_show_outpop(e, ordinal); }), "motif_submit");
+  return row;
+}
+
+/*
+ * Make a sortable table of enriched matching rows.
+ */
+function make_motif_words(motif) {
+  var row, i, match;
+  var table = document.createElement("table");
+  var thead = document.createElement("thead");
+  row = document.createElement("tr");
+  add_text_header_cell(row, "Word", "pop_match_word", "match_word", function(e) {sort_table(this, compare_words);});
+  add_text_header_cell(row, "Positives", "pop_match_pos", "match_count", function(e) {sort_table(this, compare_counts);});
+  add_text_header_cell(row, "Negatives", "pop_match_neg", "match_count", function(e) {sort_table(this, compare_counts);});
+  add_text_header_cell(row, "P-value", "pop_match_pval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
+  add_text_header_cell(row, "E-value", "pop_match_eval", "match_evalue", function(e) {sort_table(this, compare_evalues);});
+  thead.appendChild(row);
+  table.appendChild(thead);
+  var tbody = document.createElement("tbody");
+  for (i = 0; i < motif.matches.length; i++) {
+    match = motif.matches[i];
+    row = document.createElement("tr");
+    add_cell(row, make_seq(match.seq), "match_word");
+    add_text_cell(row, match.p + " / " + data.sequence_db.count, "match_count");
+    add_text_cell(row, match.n + " / " + data.control_db.count, "match_count");
+    add_text_cell(row, match.pvalue, "match_evalue");
+    add_text_cell(row, match.evalue, "match_evalue");
+    tbody.appendChild(row);
+  }
+  table.appendChild(tbody);
+  return table;
+}
+
+/*
+ * Make an expanded view of a discovered motif.
+ */
+function make_motif_exp(tbody, ordinal, motif) {
+  "use strict";
+  var box, pspm, logo_box;
+  box = $("tmpl_motif_expanded").cloneNode(true);
+  toggle_class(box, "template", false);
+  box.id = "";
+  find_child(box, "tvar_logo").appendChild(make_logo(motif, 150, false));
+  if (data.options.revcomp) {
+    find_child(box, "tvar_rclogo").appendChild(make_logo(motif, 150, true));
+  }
+  set_tvar(box, "tvar_p", motif["p"]);
+  set_tvar(box, "tvar_p_total", data.sequence_db.count);
+  set_tvar(box, "tvar_n", motif["n"]);
+  set_tvar(box, "tvar_n_total", data.control_db.count);
+  set_tvar(box, "tvar_pvalue", motif["pvalue"]);
+  set_tvar(box, "tvar_evalue", motif["evalue"]);
+  set_tvar(box, "tvar_uevalue", motif["unerased_evalue"]);
+  set_tvar(box, "tvar_words", make_motif_words(motif));
+  var cell = document.createElement("td");
+  cell.colSpan = 8;
+  cell.appendChild(box);
+  var row = document.createElement("tr");
+  row.className = "more";
+  row.appendChild(cell);
+  return row;
+}
+
+/*
+ * Convert a string containing a scientific number into the log of that number
+ * without having an intermediate representation of the number.
+ * This is intended to avoid underflow problems with the tiny evalues that
+ * MEME and DREME can create.
+ */
+function sci2log(scinum) {
+  "use strict";
+  var ev_re, match, sig, exp;
+  ev_re = /^(.*)e(.*)$/;
+  if (match = ev_re.exec(scinum)) {
+    sig = parseFloat(match[1]);
+    exp = parseInt(match[2]);
+    return Math.log(sig) + (exp * Math.log(10));
+  }
+  return 0;
+}
+
+/*
+ * Create a table of discovered motifs. A fresh table body is used for each
+ * motif to make hiding/showing rows with css easier.
+ */
+function make_motifs() {
+  "use strict";
+  var i, row, tbody, motif, ordinal;
+  // make the motifs table
+  var container = $("motifs");
+  container.innerHTML = ""; // clear content
+  var table = document.createElement("table");
+  // add a header that is always shown
+  var thead = document.createElement("thead");
+  thead.appendChild(make_motif_header());
+  table.appendChild(thead);
+  for (i = 0; i < data.motifs.length; i++) {
+    ordinal = i + 1;
+    motif = data.motifs[i];
+    tbody = document.createElement("tbody");
+    tbody.className = "collapsed";
+    tbody.appendChild(make_motif_row(tbody, ordinal, motif));
+    tbody.appendChild(make_motif_exp(tbody, ordinal, motif));
+    // create a following header for every row except the last one
+    if ((i + 1) < data.motifs.length) tbody.appendChild(make_motif_header());
+    table.appendChild(tbody);
+  }
+  container.appendChild(table);
+}
+
+/*
+ * Create a table showing all the alphabet symbols, their names and frequencies.
+ */
+function make_alpha_bg(alph, freqs) {
+  function colour_symbol(index) {
+    var span = document.createElement("span");
+    span.appendChild(document.createTextNode(alph.get_symbol(index)));
+    span.style.color = alph.get_colour(index);
+    span.className = "alpha_symbol";
+    return span;
+  }
+  var table, thead, tbody, row, th, span, i;
+  // create table
+  table = document.createElement("table");
+  table.className = "inputs";
+  // create header
+  thead = document.createElement("thead");
+  table.appendChild(thead);
+  row = thead.insertRow(thead.rows.length);
+  if (alph.has_complement()) {
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+  } else {
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    add_text_header_cell(row, "Bg.", "pop_alph_control");
+  }
+  // add alphabet entries
+  tbody = document.createElement("tbody");
+  table.appendChild(tbody);
+  if (alph.has_complement()) {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      var c = alph.get_complement(i);
+      if (i > c) continue;
+      row = tbody.insertRow(tbody.rows.length);
+      add_text_cell(row, alph.get_name(i));
+      add_text_cell(row, "" + freqs[i].toFixed(3));
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, "~");
+      add_cell(row, colour_symbol(c)); 
+      add_text_cell(row, "" + freqs[c].toFixed(3));
+      add_text_cell(row, alph.get_name(c));
+    }
+  } else {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      row = tbody.insertRow(tbody.rows.length);
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, alph.get_name(i));
+      add_text_cell(row, "" + freqs[i].toFixed(3));
+    }
+  }
+  return table;
+}
+
+/*
+ * Updates the format download text in the popup.
+ * This is called when either the format or current motif changes.
+ */
+function update_outpop_format(index) {
+  var motif = data.motifs[index];
+  var fn = [motif_count_matrix, motif_prob_matrix, motif_minimal_meme];
+  var suffix = ["_counts.txt", "_freqs.txt", ".meme"];
+  var format = parseInt($("text_format").value);
+  var text = fn[format](motif);
+  prepare_download(text, "text/plain", motif.id + suffix[format], $("outpop_text_dl"));
+  $("outpop_text").value = text;
+}
+
+/*
+ * Updates the motif logos and format download text in the popup.
+ * This is called whenever the current motif changes.
+ */
+function update_outpop_motif(index) {
+  "use strict";
+  var motifs, motif, pspm, logo, canvas, num;
+  motifs = data["motifs"];
+  if (index < 0 || index >= motifs.length) {return;}
+  current_motif = index;
+  motif = motifs[index];
+  pspm = new Pspm(motif["pwm"]);
+  logo = new Logo(dreme_alphabet, "");
+  logo.add_pspm(pspm, 0);
+  canvas = $("outpop_logo");
+  canvas.width = canvas.width; // clear canvas
+  draw_logo_on_canvas(logo, canvas, false);
+  canvas = $("outpop_logo_rc");
+  canvas.width = canvas.width; // clear rc canvas
+  if (data.options.revcomp) {
+    pspm.reverse_complement(dreme_alphabet);
+    logo = new Logo(dreme_alphabet, "");
+    logo.add_pspm(pspm, 0);
+    draw_logo_on_canvas(logo, canvas, false);
+  }
+  num = $("outpop_num");
+  num.innerHTML = "";
+  num.appendChild(document.createTextNode("" + (index + 1)));
+  update_outpop_format(index);
+}
+
+
+/*
+ * Initialise and display the download popup.
+ */
+function action_show_outpop(e, ordinal) {
+  "use strict";
+  function init() {
+    "use strict";
+    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
+    var tab1, tab2, tab3;
+    var pnl1, pnl2, pnl3;
+    var format_list;
+    var tbl_submit, inputs, i, default_prog;
+    close_btn = $("outpop_close");
+    close_btn.addEventListener("click", action_hide_outpop, false);
+    close_btn.addEventListener("keydown", action_hide_outpop, false);
+    next_btn = $("outpop_next");
+    next_btn.addEventListener("click", action_outpop_next, false);
+    next_btn.addEventListener("keydown", action_outpop_next, false);
+    prev_btn = $("outpop_prev");
+    prev_btn.addEventListener("click", action_outpop_prev, false);
+    prev_btn.addEventListener("keydown", action_outpop_prev, false);
+    cancel_btn = $("outpop_cancel");
+    cancel_btn.addEventListener("click", action_hide_outpop, false);
+    do_btn = $("outpop_do");
+    do_btn.addEventListener("click", action_outpop_submit, false);
+    tab1 = $("outpop_tab_1");
+    tab1.tabIndex = 0;
+    tab1.addEventListener("click", action_outpop_tab, false);
+    tab1.addEventListener("keydown", action_outpop_tab, false);
+    tab2 = $("outpop_tab_2");
+    tab2.tabIndex = 0;
+    tab2.addEventListener("click", action_outpop_tab, false);
+    tab2.addEventListener("keydown", action_outpop_tab, false);
+    tab3 = $("outpop_tab_3");
+    tab3.tabIndex = 0;
+    tab3.addEventListener("click", action_outpop_tab, false);
+    tab3.addEventListener("keydown", action_outpop_tab, false);
+    pnl1 = $("outpop_pnl_1");
+    pnl2 = $("outpop_pnl_2");
+    pnl3 = $("outpop_pnl_3");
+    toggle_class(tab1, "activeTab", true);
+    toggle_class(tab2, "activeTab", false);
+    toggle_class(tab3, "activeTab", false);
+    pnl1.style.display = "block";
+    pnl2.style.display = "none";
+    pnl3.style.display = "none";
+    format_list = $("text_format");
+    format_list.addEventListener("change", action_outpop_format, false);
+    // setup program selection
+    tbl_submit = $("programs");
+    // when not dna, hide the inputs for programs that require dna motifs
+    toggle_class(tbl_submit, "alphabet_dna", dreme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
+    // add a click listener for the radio buttons
+    inputs = tbl_submit.querySelectorAll("input[type='radio']");
+    for (i = 0; i < inputs.length; i++) {
+      inputs[i].addEventListener("click", action_outpop_program, false);
+    }
+    // ensure that a default program option is selected for DNA and Protein
+    default_prog = document.getElementById(dreme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo");
+    default_prog.checked = true;
+    action_outpop_program.call(default_prog);
+    // disable reverse-complement when not DNA
+    $("logo_rc_option").disabled = !dreme_alphabet.has_complement(); 
+    // set errorbars on when ssc is on
+    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
+  }
+  // store the focused element
+  action_hide_outpop.last_active = document.activeElement;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // hide the help popup
+  help_popup();
+  // on first load initilize the popup
+  if (!action_show_outpop.ready) {
+    init();
+    action_show_outpop.ready = true;
+  }
+  update_outpop_motif(ordinal - 1);
+  // display the download popup
+  $("grey_out_page").style.display = "block";
+  $("download").style.display = "block";
+  $("outpop_close").focus();
+}
+
+/*
+ * Hide the download popup.
+ */
+function action_hide_outpop(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  $("download").style.display = "none";
+  $("grey_out_page").style.display = "none";
+  if (typeof action_hide_outpop.last_active !== "undefined") {
+    action_hide_outpop.last_active.focus();
+  }
+}
+
+/*
+ * Show the next motif in the download popup.
+ */
+function action_outpop_next(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif + 1);
+}
+
+/*
+ * Show the previous motif in the download popup.
+ */
+function action_outpop_prev(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif - 1);
+}
+
+/*
+ * Highlight the selected row in the program list.
+ */
+function action_outpop_program() {
+  "use strict";
+  var table, tr, rows, i;
+  tr = find_parent_tag(this, "TR");
+  table = find_parent_tag(tr, "TABLE");
+  rows = table.querySelectorAll("tr");
+  for (i = 0; i < rows.length; i++) {
+    toggle_class(rows[i], "selected", rows[i] === tr);
+  }
+}
+
+/*
+ * Enable error bars when small sample correction is enabled.
+ */
+function action_outpop_ssc() {
+  "use strict";
+  $("logo_err").value = $("logo_ssc").value;
+}
+
+/*
+ * Submit the motif to the selected program.
+ */
+function action_outpop_submit(e) {
+  "use strict";
+  var form, input, program, motifs;
+  // find out which program is selected
+  var radios, i;
+  radios = document.getElementsByName("program");
+  program = "fimo"; // default to fimo, since it works with all alphabet types
+  for (i = 0; i < radios.length; i++) {
+    if (radios[i].checked) program = radios[i].value;
+  }
+
+  motifs = motif_minimal_meme(data.motifs[current_motif]);
+  form = document.createElement("form");
+  form.setAttribute("method", "post");
+  form.setAttribute("action", site_url + "/tools/" + program);
+  
+  input = document.createElement("input");
+  input.setAttribute("type", "hidden");
+  input.setAttribute("name", "motifs_embed");
+  input.setAttribute("value", motifs);
+  form.appendChild(input);
+
+  document.body.appendChild(form);
+  form.submit();
+  document.body.removeChild(form);
+}
+
+/*
+ * Download the format text.
+ * Wire the link containing the data URI text to a download button so it looks
+ * the same as the server submit stuff.
+ */
+function action_outpop_download_motif(e) {
+  $("outpop_text_dl").click();
+}
+
+/*
+ * Download the motif logo.
+ * The EPS format can be calculated locally in Javascript
+ */
+function action_outpop_download_logo(e) {
+  "use strict";
+  var pspm, logo, eps;
+  var logo_rc, logo_ssc, logo_width, logo_height;
+  var motif = data.motifs[current_motif];
+  if ($("logo_format").value == "0") { // EPS
+    logo_rc = ($("logo_rc").value == "1");
+    logo_ssc = ($("logo_ssc").value == "1");
+    logo_width = parseFloat($("logo_width").value);
+    if (isNaN(logo_width) || !isFinite(logo_width) || logo_width <= 0) logo_width = null;
+    logo_height = parseFloat($("logo_height").value);
+    if (isNaN(logo_height) || !isFinite(logo_height) || logo_height <= 0) logo_height = null;
+    // create a PSPM from the motif
+    pspm = motif_pspm(motif);
+    if (logo_rc) pspm.reverse_complement(dreme_alphabet);
+    logo = new Logo(dreme_alphabet);
+    logo.add_pspm(pspm, 0);
+    eps = logo.as_eps({"ssc": logo_ssc, "logo_width": logo_width, "logo_height": logo_height});
+    prepare_download(eps, "application/postscript", motif.id + ".eps");
+  } else {
+    $("logo_motifs").value = motif_minimal_meme(motif);
+    $("logo_form").submit();
+  }
+}
+
+/*
+ * Change the selected tab in the download popup.
+ */
+function action_outpop_tab(e) {
+  "use strict";
+  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  tab1 = $("outpop_tab_1");
+  tab2 = $("outpop_tab_2");
+  tab3 = $("outpop_tab_3");
+  pnl1 = $("outpop_pnl_1");
+  pnl2 = $("outpop_pnl_2");
+  pnl3 = $("outpop_pnl_3");
+  do_btn = $("outpop_do");
+
+  toggle_class(tab1, "activeTab", (this === tab1));
+  toggle_class(tab2, "activeTab", (this === tab2));
+  toggle_class(tab3, "activeTab", (this === tab3));
+  pnl1.style.display = ((this === tab1) ? "block" : "none");
+  pnl2.style.display = ((this === tab2) ? "block" : "none");
+  pnl3.style.display = ((this === tab3) ? "block" : "none");
+  do_btn.value = ((this === tab1) ? "Submit" : "Download");
+  do_btn.removeEventListener("click", action_outpop_submit, false);
+  do_btn.removeEventListener("click", action_outpop_download_logo, false);
+  do_btn.removeEventListener("click", action_outpop_download_motif, false);
+  if (this === tab1) {
+    do_btn.addEventListener("click", action_outpop_submit, false);
+  } else if (this === tab2) {
+    do_btn.addEventListener("click", action_outpop_download_motif, false);
+  } else {
+    do_btn.addEventListener("click", action_outpop_download_logo, false);
+  }
+}
+
+/*
+ * Update the text in the download format popup.
+ */
+function action_outpop_format() {
+  update_outpop_format(current_motif);
+}
+
+/*
+ * Find all text nodes in the given container.
+ */
+function text_nodes(container) {
+  var textNodes = [];
+  var stack = [container];
+  // depth first search to maintain ordering when flattened 
+  while (stack.length > 0) {
+    var node = stack.pop();
+    if (node.nodeType == Node.TEXT_NODE) {
+      textNodes.push(node);
+    } else {
+      for (var i = node.childNodes.length-1; i >= 0; i--) {
+        stack.push(node.childNodes[i]);
+      }
+    }
+  }
+  return textNodes;
+}
+
+/*
+ * Get the text out of a specific text node.
+ */
+function node_text(node) {
+  if (node === undefined) {
+    return '';
+  } else if (node.textContent) {
+    return node.textContent;
+  } else if (node.innerText) {
+    return node.innerText;
+  } else {
+    return '';
+  }
+}
+
+/*
+ * Get the text contained within the element.
+ */
+function elem_text(elem, separator) {
+  if (separator === undefined) separator = '';
+  return text_nodes(elem).map(node_text).join(separator);
+}
+
+/*
+ * Sort all rows in the first table body based on the column of the given element and the comparison function.
+ * The sort is not very fast and is intended for small tables only.
+ */
+function sort_table(colEle, compare_function) {
+  //find the parent of colEle that is either a td or th
+  var i, j;
+  var cell = colEle;
+  while (true) {
+    if (cell == null) return;
+    if (cell.nodeType == Node.ELEMENT_NODE && 
+        (cell.tagName.toLowerCase() == "td" || cell.tagName.toLowerCase() == "th")) {
+      break;
+    }
+    cell = cell.parentNode;
+  }
+  //find the parent of cell that is a tr
+  var row = cell;
+  while (true) {
+    if (row == null) return;
+    if (row.nodeType == Node.ELEMENT_NODE && row.tagName.toLowerCase() == "tr") {
+      break;
+    }
+    row = row.parentNode;
+  }
+  //find the parent of row that is a table
+  var table = row;
+  while (true) {
+    if (table == null) return;
+    if (table.nodeType == Node.ELEMENT_NODE && table.tagName.toLowerCase() == "table") {
+      break;
+    }
+    table = table.parentNode;
+  }
+  var column_index = cell.cellIndex;
+  // do a bubble sort, because the tables are so small it doesn't matter
+  var change;
+  var trs = table.tBodies[0].getElementsByTagName('tr');
+  var already_sorted = true;
+  var reverse = false;
+  while (true) {
+    do {
+      change = false;
+      for (i = 0; i < trs.length -1; i++) {
+        var v1 = elem_text(trs[i].cells[column_index]);
+        var v2 = elem_text(trs[i+1].cells[column_index]);
+        if (reverse) {
+          var tmp = v1;
+          v1 = v2;
+          v2 = tmp;
+        }
+        if (compare_function(v1, v2) > 0) {
+          exchange(trs[i], trs[i+1], table);
+          change = true;
+          already_sorted = false;
+          trs = table.tBodies[0].getElementsByTagName('tr');
+        }
+      }
+    } while (change);
+    if (reverse) break;// we've sorted twice so exit
+    if (!already_sorted) break;// sort did something so exit
+    // when it's sorted one way already then sort the opposite way
+    reverse = true;
+  }
+  // put arrows on the headers
+  var headers = table.tHead.getElementsByTagName('tr');
+  for (i = 0; i < headers.length; i++) {
+    for (j = 0; j < headers[i].cells.length; j++) {
+      var cell = headers[i].cells[j];
+      var arrows = cell.getElementsByClassName("sort_arrow");
+      var arrow;
+      if (arrows.length == 0) {
+        arrow = document.createElement("span");
+        arrow.className = "sort_arrow";
+        cell.insertBefore(arrow, cell.firstChild);
+      } else {
+        arrow = arrows[0];
+      }
+      arrow.innerHTML = "";
+      if (j == column_index) {
+        arrow.appendChild(document.createTextNode(reverse ? "\u25B2" : "\u25BC"));
+      }
+    }
+  }
+}
+
+/*
+ * Swap two rows in a table.
+ */
+function exchange(oRowI, oRowJ, oTable) {
+  var i = oRowI.rowIndex;
+  var j = oRowJ.rowIndex;
+   if (i == j+1) {
+    oTable.tBodies[0].insertBefore(oRowI, oRowJ);
+  } if (j == i+1) {
+    oTable.tBodies[0].insertBefore(oRowJ, oRowI);
+  } else {
+    var tmpNode = oTable.tBodies[0].replaceChild(oRowI, oRowJ);
+    if(typeof(oRowI) != "undefined") {
+      oTable.tBodies[0].insertBefore(tmpNode, oRowI);
+    } else {
+      oTable.appendChild(tmpNode);
+    }
+  }
+}
+
+/*
+ * Compare two E-values which may be very small.
+ */
+function compare_evalues(v1, v2) {
+  var e1 = sci2log(v1);
+  var e2 = sci2log(v2);
+  if (e1 < e2) return -1;
+  else if (e1 > e2) return 1;
+  return 0;
+}
+
+/*
+ * Compare two counts.
+ */
+function compare_counts(v1, v2) {
+  var re = /(\d+)\s*\/\s*\d+/;
+  var m1 = re.exec(v1);
+  var m2 = re.exec(v2);
+  if (m1 == null && m2 == null) return 0;
+  if (m1 == null) return -1;
+  if (m2 == null) return 1;
+  return parseInt(m2[1]) - parseInt(m1[1]);
+}
+
+/*
+ * Compare two sequence words.
+ */
+function compare_words(v1, v2) {
+  return v1.localeCompare(v2);
+}
+
+
+</script>
+    <style>
+/* 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;
+  cursor: pointer;
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
+}
+
+div.help:hover {
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
+}
+
+p.spaced { line-height: 1.8em;}
+
+span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
+
+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; overflow: hidden;}
+
+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;}
+
+.explain h5 {font-size:1em; margin-left: 1em;}
+
+div.doc {margin-left: 2em; margin-bottom: 3em;}
+
+th.trainingset {
+  border-bottom: thin dashed black; 
+  font-weight:normal; 
+  padding:0px 10px;
+}
+div.pop_content {
+  position:absolute;
+  z-index:50;
+  width:300px;
+  padding: 5px;
+  background: #E4ECEC;
+  font-size: 12px;
+  font-family: Arial;
+  border-style: double;
+  border-width: 3px;
+  border-color: #AA2244;
+  display:none;
+}
+
+div.pop_content > *:first-child {
+  margin-top: 0px;
+}
+
+div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
+div.pop_content h5, div.pop_content h6, div.pop_content p {
+  margin: 0px;
+}
+
+div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
+div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
+  margin-top: 5px;
+}
+
+div.pop_content p + p {
+  margin-top: 5px;
+}
+
+div.pop_content > *:last-child {
+  margin-bottom: 0px;
+}
+
+div.pop_content div.pop_close {
+  /* old definition */
+  float:right;
+  bottom: 0;
+}
+
+div.pop_content span.pop_close, div.pop_content span.pop_back {
+  display: inline-block;
+  border: 2px outset #661429;
+  background-color: #CCC;
+  padding-left: 1px;
+  padding-right: 1px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  cursor: pointer;
+  color: #AA2244; /*#661429;*/
+  font-weight: bold;
+}
+
+div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
+  border-style: inset;
+}
+
+div.pop_content span.pop_close {
+  float:right;
+  /*border: 2px outset #AA002B;*/
+  /*color: #AA2244;*/
+}
+
+div.pop_content:not(.nested) .nested_only {
+  display: none;
+}
+
+div.pop_back_sec {
+  margin-bottom: 5px;
+}
+
+div.pop_close_sec {
+  margin-top: 5px;
+}
+
+table.hide_advanced tr.advanced {
+  display: none;
+}
+span.show_more {
+  display: none;
+}
+table.hide_advanced span.show_more {
+  display: inline;
+}
+table.hide_advanced span.show_less {
+  display: none;
+}
+
+
+/*****************************************************************************
+ * Program logo styling
+ ****************************************************************************/
+div.prog_logo {
+  border-bottom: 0.25em solid #0f5f60;
+  height: 4.5em;
+  width: 24em;
+  display:inline-block;
+}
+div.prog_logo img {
+  float:left;
+  width: 4em;
+  border-style: none;
+  margin-right: 0.2em;
+}
+div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
+  margin:0;
+  padding:0;
+  font-family: Arial, Helvetica,  sans-serif;
+  font-size: 3.2em;
+  line-height: 1em;
+  vertical-align: top;
+  display: block;
+  color: #026666;
+  letter-spacing: -0.06em;
+  text-shadow: 0.04em 0.06em 0.05em #666;
+}
+div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
+  display: block;
+  margin:0;
+  padding:0;
+  font-family: Helvetica, sans-serif;
+  font-size: 0.9em;
+  line-height: 1em;
+  letter-spacing: -0.06em;
+  color: black;
+}
+
+div.big.prog_logo {
+  font-size: 18px;
+}
+
+</style>
+    <style>
+/* dreme output specific css */
+div.header {
+  position: relative;
+  overflow: hidden;
+  margin-top: 15px;
+  margin-bottom: 5px;
+  margin-right: 3px;
+  margin-left: 3px;
+}
+div.header > h2 {
+  font-size: 1.5em;
+  font-style: normal;
+  margin: 0;
+  font-variant: small-caps; 
+  font-family: Georgia, "Times New Roman", Times, serif;
+}
+div.header > span {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+}
+
+div.template {
+  position: absolute;
+  z-index: 1;
+  left: 0;
+  top: 0;
+  visibility: hidden;
+}
+
+div.sym_btn {
+  display:inline-block;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 20px;
+  line-height:20px; 
+  text-align: center;
+  width: 20px;
+  height: 20px;
+  color: blue;
+}
+div.sym_btn:hover {
+  color: white;
+  background-color: blue;
+}
+
+div.sym_btn.positioned {
+  position: absolute;
+  top: 0px;
+}
+
+div.box + div.box {
+  margin-top: 5px;
+}
+
+th.motif_ordinal {
+
+}
+td.motif_ordinal {
+  text-align: right;
+  padding-right: 10px;
+  font-weight: bold;
+  font-size: large;
+}
+th.motif_word {
+  padding-right: 10px;
+}
+td.motif_word {
+  font-size:15px; 
+  font-family: 'Courier New', Courier, monospace;
+  padding-right: 10px;
+}
+th.motif_logo {
+  padding-right: 10px;
+}
+td.motif_logo {
+  padding-right: 10px;
+}
+th.motif_evalue {
+  text-align:right;
+  padding-right: 10px;
+}
+td.motif_evalue {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+th.motif_more {
+  padding: 0 5px;
+}
+td.motif_more {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_submit {
+  padding: 0 5px;
+}
+td.motif_submit {
+  text-align: center;
+  padding: 0 5px;
+}
+th.match_word {
+  padding-right: 10px;
+}
+td.match_word {
+  padding-right: 10px;
+  font-weight: bold;
+  font-size: large; 
+  font-family: 'Courier New', Courier, monospace;
+}
+th.match_evalue, th.match_count {
+  text-align: right;
+  padding-right: 10px;
+}
+td.match_evalue, td.match_count {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+
+div.tabArea {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+.norc div.tabArea {
+  display: none;
+}
+
+span.tab, span.tab:visited {
+  cursor: pointer;
+  color: #888;
+  background-color: #ddd;
+  border: 2px solid #ccc;
+  padding: 2px 1em;
+  text-decoration: none;
+}
+span.tab.middle {
+  border-left-width: 0px;
+}
+div.tabArea.base span.tab {
+  border-top-width: 0px;
+}
+div.tabArea.top span.tab {
+  border-bottom-width: 0px;
+}
+
+span.tab:hover {
+  background-color: #bbb;
+  border-color: #bbb;
+  color: #666;
+}
+span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
+  background-color: white;
+  color: black;
+  cursor: default;
+}
+div.tabMain {
+  border: 2px solid #ccc;
+  background-color: white;
+  padding: 10px;
+}
+div.tabMain.base {
+  margin-top: 5px;
+  display: inline-block;
+  max-width: 98%;
+}
+
+div.tabMain.top {
+  margin-bottom: 5px;
+}
+
+div.grey_background {
+  position:fixed; 
+  z-index: 8;
+  background-color: #000;
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+  opacity: 0.5;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+}
+
+div.popup_wrapper {
+  position:fixed; 
+  z-index:9;
+  width:100%; 
+  height:0; 
+  top:50%; 
+  left:0;
+}
+
+div.popup {
+  width: 600px; 
+  z-index:9;
+  margin-left: auto;
+  margin-right: auto;
+  padding: 5px;
+  background-color: #FFF;
+  border-style: double;
+  border-width: 5px;
+  border-color: #00666a;
+  position:relative; 
+}
+div.close {
+  cursor: pointer;
+  border: 1px solid black; 
+  width:15px; 
+  height:15px; 
+  line-height:15px; /* this causes vertical centering */
+  text-align:center; 
+  background-color:#FFF; 
+  color:#000; 
+  font-size:15px;
+  font-family:monospace;
+}
+
+div.close:hover {
+  color:#FFF;
+  background-color:#000; 
+}
+
+div.navnum {
+  width:100%; 
+  height:20px; 
+  line-height:20px; 
+  text-align:center; 
+  font-size:medium;
+}
+
+div.navarrow {
+  font-size: 30px;
+  text-decoration:none;
+  cursor: pointer;
+  -moz-user-select: none;  
+  -webkit-user-select: none;  
+  -ms-user-select: none;
+}
+
+div.navarrow > span.inactive {
+  display: inline;
+}
+div.navarrow > span.active {
+  display: none;
+}
+
+div.navarrow:hover > span.active {
+  display: inline;
+}
+div.navarrow:hover > span.inactive {
+  display: none;
+}
+
+table.programs {
+  width: 100%;
+}
+
+table.programs tr {
+  background-color: #EFE;
+}
+
+table.programs tr.selected {
+  background-color: #262;
+  color: #FFF;
+}
+
+table.programs tr.dna_only {
+  display: none;
+}
+
+table.programs.alphabet_dna tr.dna_only {
+  display: table-row;
+}
+
+table.inputs {
+  margin-top: 20px;
+  border-collapse:collapse;
+}
+table.inputs * td, table.inputs * th {
+  padding-left: 15px;
+  padding-right: 15px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+/* program settings */
+span.strand_none, span.strand_given, span.strand_both {
+  display: none;
+}
+td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
+  display: inline;
+}
+
+/* show the expanded motif only when the collapsed one is hidden */
+tbody *.less, tbody.collapsed *.more {
+  display: none;
+}
+
+tbody.collapsed *.less {
+  display: inline;
+}
+
+</style>
+  </head>
+  <body data-scrollpad="true">
+    <!--  -->
+    <div id="grey_out_page" class="grey_background" style="display:none;">
+    </div>
+
+    <!-- Help popups -->
+    <div class="pop_content" id="pop_">
+      <p>Help poup.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_motifs_word">
+      <p>
+        The name of the motif uses the IUPAC codes for nucleotides which has 
+        a different letter to represent each of the 15 possible combinations.
+      </p>
+      <p>
+        The name is itself a representation of the motif though the position
+        weight matrix is not directly equalivant as it is generated from the
+        sites found that matched the letters given in the name.
+      </p>
+      <p>
+        <a id="doc_alphabets_url" href="#">
+        Read more about the MEME suite's use of the IUPAC alphabets.
+        </a>
+        <script>$("doc_alphabets_url").href = site_url + "/doc/alphabets.html";</script>
+      </p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_logo">
+      <p>The logo of the motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_rc_logo">
+      <p>The logo of the reverse complement motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_evalue">
+      <p>The E-value is the enrichment p-value times the number of candidate 
+        motifs tested.</p>
+      <p>The enrichment p-value is calculated using Fisher's Exact Test for 
+        enrichment of the motif in the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motifs_uevalue">
+      <p>The E-value of the motif calculated without erasing the sites of 
+        previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_more">
+      <p>Show more information on the motif.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_submit_dl">
+      <p>Submit your motif to another MEME Suite program or download your motif.</p>
+      <h5>Supported Programs</h5>
+      <dl>
+        <dt>Tomtom</dt>
+        <dd>Tomtom is a tool for searching for similar known motifs. 
+          </dd>
+        <dt>MAST</dt>
+        <dd>MAST is a tool for searching biological sequence databases for 
+          sequences that contain one or more of a group of known motifs.
+          </dd>
+        <dt>FIMO</dt>
+        <dd>FIMO is a tool for searching biological sequence databases for 
+          sequences that contain one or more known motifs.
+          </dd>
+        <dt>GOMO</dt>
+        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
+          terms) for DNA binding motifs.
+          </dd>
+        <dt>SpaMo</dt>
+        <dd>SpaMo is a tool for inferring possible transcription factor
+          complexes by finding motifs with enriched spacings.
+          </dd>
+      </dl>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_positives">
+      <p># positive sequences matching the motif / # positive sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_negatives">
+      <p># negative sequences matching the motif / # negative sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_pvalue">
+      <p>The p-value of Fisher's Exact Test for enrichment of the motif in 
+        the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_evalue">
+      <p>The E-value is the motif p-value times the number of candidate motifs 
+        tested.</p>
+      <p>Note that the p-value was calculated with counts made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_uevalue">
+      <p>The E-value of the motif calculated without erasing the sites of 
+        previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_word">
+      <p>All words matching the motif whose uncorrected p-value is less than
+      <span id="help_add_pv_thresh"></span>.</p>
+      <script>$("help_add_pv_thresh").innerHTML = data.options.add_pv_thresh;</script>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_pos">
+      <p># positive sequences with matches to the word / # positive sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_neg">
+      <p># negative sequences with matches to the word / # negative sequences.</p>
+      <p>Note these counts are made after erasing sites that match previously
+        found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_pval">
+      <p>The p-value of Fisher's Exact Test for enrichment of the word in 
+        the positive sequences.</p>
+      <p>Note that the counts used in Fisher's Exact Test are made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_match_eval">
+      <p>The word p-value times the number of candidates tested.</p>
+      <p>Note that the p-value was calculated with counts made after 
+        erasing sites that match previously found motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_source">
+      <p>The sequence file used by DREME to find the motifs.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_alph">
+      <p>The alphabet of the sequences.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_count">
+      <p>The count of the sequences.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_name">
+      <p>The name of the alphabet symbol.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_control">
+      <p>The frequency of the alphabet symbol in the control dataset.</p>
+      <div class="pop_close">[<a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <!-- templates -->
+
+    <div class="template box expanded_motif" id="tmpl_motif_expanded">
+      <div>
+        <span class="tvar_logo"></span>
+        <span class="tvar_rclogo"></span>
+      </div>
+      <h4>Details</h4>
+      <table class="details">
+        <thead>
+          <tr>
+            <th class="match_count">Positives <div class="help" data-topic="pop_motif_positives"></div></th>
+            <th class="match_count">Negatives <div class="help" data-topic="pop_motif_negatives"></div></th>
+            <th class="match_evalue">P-value <div class="help" data-topic="pop_motif_pvalue"></div></th>
+            <th class="match_evalue">E-value <div class="help" data-topic="pop_motif_evalue"></div></th>
+            <th class="match_evalue">Unerased E-value <div class="help" data-topic="pop_motif_uevalue"></div></th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td class="match_count">
+              <span class="tvar_p"></span> / <span class="tvar_p_total"></span>
+            </td>
+            <td class="match_count">
+              <span class="tvar_n"></span> / <span class="tvar_n_total"></span>
+            </td>
+            <td class="tvar_pvalue match_evalue"></td>
+            <td class="tvar_evalue match_evalue"></td>
+            <td class="tvar_uevalue match_evalue"></td>
+          </tr>
+        </tbody>
+      </table>
+      <h4>Enriched Matching Words</h4>
+      <div class="tvar_words"></div>
+    </div>
+
+
+    <div class="popup_wrapper">
+      <div class="popup" style="display:none; top: -150px;" id="download">
+        <div>
+          <div style="float:right; ">
+            <div id="outpop_close" class="close" tabindex="0">x</div>
+          </div>
+          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
+          <div style="clear:both"></div>
+        </div>
+          <div style="height:100px">
+            <div style="float:right; width: 30px;">
+              <div id="outpop_prev" class="navarrow" tabindex="0">
+                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
+              </div>
+              <div id="outpop_num" class="navnum"></div>
+              <div id="outpop_next" class="navarrow" tabindex="0">
+                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
+              </div>
+            </div>
+            <div id="logo_box" style="height: 100px; margin-right: 40px;">
+              <canvas id="outpop_logo" height="100" width="250"></canvas>
+              <canvas id="outpop_logo_rc" height="100" width="250"></canvas>
+            </div>
+          </div>
+          <div>
+            <!-- tabs start -->
+            <div class="tabArea top">
+              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
+                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
+                id="outpop_tab_3" class="tab middle">Download Logo</span>
+            </div>
+            <div class="tabMain top">
+              <!-- Submit to another program -->
+              <div id="outpop_pnl_1">
+                <h4 class="compact">Submit to program</h4>
+                <table id="programs" class="programs">
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
+                    <td><label for="submit_tomtom">Tomtom</label></td>
+                    <td><label for="submit_tomtom">Find similar motifs in
+                        published libraries or a library you supply.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
+                    <td><label for="submit_fimo">FIMO</label></td>
+                    <td><label for="submit_fimo">Find motif occurrences in
+                        sequence data.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
+                    <td><label for="submit_mast">MAST</label></td>
+                    <td><label for="submit_mast">Rank sequences by affinity to
+                        groups of motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
+                    <td><label for="submit_gomo">GOMo</label></td>
+                    <td><label for="submit_gomo">Identify possible roles (Gene
+                        Ontology terms) for motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
+                    <td><label for="submit_spamo">SpaMo</label></td>
+                    <td><label for="submit_spamo">Find other motifs that are
+                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
+                  </tr>
+                </table>
+              </div>
+              <!-- download text format  -->
+              <div id="outpop_pnl_2">
+                <div>
+                  <label for="text_format">Format:</label>
+                  <select id="text_format">
+                    <option value="0">Count Matrix</option>
+                    <option value="1">Probability Matrix</option>
+                    <option value="2">Minimal MEME</option>
+                  </select>
+                </div>
+                <textarea id="outpop_text" name="content"
+                  style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
+                  rows="8" readonly="readonly" wrap="off"></textarea>
+                <a id="outpop_text_dl" download="meme.txt" href=""></a>
+              </div>
+              <!-- download logo format -->
+              <div id="outpop_pnl_3">
+                <form id="logo_form" method="post" action="">
+                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
+                  <input type="hidden" name="program" value="DREME"/>
+                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
+                  <table>
+                    <tr>
+                      <td><label for="logo_format">Format:</label></td>
+                      <td>
+                        <select id="logo_format" name="png">
+                          <option value="1">PNG (for web)</option>
+                          <option value="0">EPS (for publication)</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_rc">Orientation:</label></td>
+                      <td>
+                        <select id="logo_rc" name="rc1">
+                          <option value="0">Normal</option>
+                          <option value="1" id="logo_rc_option">Reverse Complement</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
+                      <td>
+                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
+                        <select id="logo_ssc" name="ssc">
+                          <option value="0">Off</option>
+                          <option value="1">On</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_width">Width:</label></td>
+                      <td>
+                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_height">Height:</label></td>
+                      <td>
+                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
+                      </td>
+                    </tr>
+                  </table>
+                </form>
+              </div>
+              <!-- Buttons -->
+              <div>
+                <div style="float:left;">
+                  <input type="button" id="outpop_do" value="Submit" />
+                </div>
+                <div style="float:right;">
+                  <input id="outpop_cancel" type="button" value="Cancel" />
+                </div>
+                <div style="clear:both;"></div>
+              </div>
+            </div>
+        </div>
+      </div>
+    </div>
+
+
+
+    <!-- Page starts here -->
+    <div id="top" class="pad1">
+      <div class="prog_logo big">
+        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAAAd0SU1FB9wLGwYBMoyhiwgAACAASURBVHja7Z13fFRV9sC/503JpIeaKFVREBQVEEFFQVcUuyDouuraFoVV17IrayPjDP4U3XXXhrpiXxuKKF1dV8WCiEgXRUAQlJIYAilMf+f3x3szmVSSkICyOR/eh8wr9717z7mn3XPOhRZogRbYLQiQJiJGy1D8D0LHjh1/XrZsmQK9gU3Ap0mE0QL7KTx411136Z///GdV1ZhpmvrYY4+pqsZUVceNG6dAz5Zh2j/hnpKSEtM0TVVVrfq/qmosFtMxY8Yo8CPQHejucDjyfm0dbZFp1WGaxmJ3ppSWSiQUIhQKIWJxehGhpKSE1LQ0uvfowQHZ2exYt65D8dq1qzUaXR2LxTYCP7UM4a8MVFWA9mY0+nLhmjV63LHH6vMvvKATJkzQfn366CtPPKEDjjtOV61apeeedZZqMKgaCKju2KFmYaFqJKJaWqqqqoACR/9a+u5sQT+IiD77zDPbKCnR00aOZPHSpcydO5fLf/972rdvTzgcZsEnnzDmqquYPmsW/PxzxbMOB4NPOokRZ5+tB3XrJsAUYKmqOkQkVuVVKUBGDRbGz/vSvPlfBHcVDpB7XP/+Gz9/5x1mzJ/P1i1buPbaa1m/fj1du3alW5curPvqqxobCoVCpKSkIO3a1Wc89bCuBy51OZwu1RgiBqGYGf1uw09/Bd5t4QDNT+wKfPXoxIl9jzm6gkt/OmsWn3/4oRIMyrfLlzPuzjvp27cvHTt2ZNGXX+K/7baaW8zJITM1lflz5wL8ZtWqVWm9evXaVcv7Q2cN6hM68tAuR2MIhirFpUEef+MdBFK1RQQ0v6g/MC9PLxk5Uq+/7joIBECSJmwwKKqKR4RTTjyR0885h2effZaNa9Ywa9YstKQkoQzGwSwuJhwIwK5ddO3a9b+9evWqjQPoSf16qUOQles2gYLL5WDaBwu5dtSw8L/eeKdFB2huaJWTo0NOOMF8wOs1qiG/QhfghtGj+dMNN4DblhJlZVBaWg35AIYI7NgBbjcbNmwwjz766I+WLl16OfCDfUs3YB3AAdke6d7tYNR2Jv6wuZA2rbIwxbFPxfD/jBn4t7vv5uUnnzRsTNelEEIoBKWl1qH1YM7hMAXffWcsWbBgMLAB+AgoAtYC5SJCp86dUTPG89M/ACASi1mDH4u2+AH2Bvzhpps+p3Xrmi+mp2Oa5h613y4nh1WLFuHxeHTq1KmDVbWVqjJjxozU4cOH88rsj1FXKteMOh3D4eQ/ny/hjnwfn32zyWUYxtAWK6D54YW1X355WbcePSr32elk1EUX8cYbb1gzvvG+BEzA2b49msQ1RARVZe7cuTzzjwl079qB6R8s4PhThjF58mQADjroIDZs2CAtBLAXFMEaTwaDe4R8ALKzEbcbVUVVE4hP/t/lctGnTx9+c8op3HvffQm9YubMmZx77rlic2Rzbw7I/5oreNzJgwapqqI7dqA7d1pHSUnyVG5Uw0MGD6agoCCB7IQ+kcQFIpEIkydPZszYsQmuoaqEw2H95JNPdOHChTHgervJT4DTWzhA08OjwGWT7r8/u3xXhckei8W47c47obwcMjMtsy9OEHUojdhI/M2oUXwwb16dIqKqJVFaWkJmZlal60OGDJk7b968M1SVsWPH8uSTTxYC7WmBvQIbV6xcGQK0aM0a3bRsmW5fu1b1559NLSzUakdBgXXYawC7A0CXLVtW7fzMmTOrnTNNU03T1OXLl5u1ia4WaA4lQbXVmDFjcoFcIHfJ0qUXqKqaBQXVCMC0kZ+MtNogEAjoli1bar0ef/bee++tiXDMFszsQ+jbt+/r1111leqOHZWJIBBQ7913azgc1qaAeABCVUKqQgBvAO8BL7RgZu9xhd6nnnpqNLpzp8559VXVkhL9ZOZM/X79+j1Bdm1sP2KaZix+rqioSBctWqSqejPw2KhRo+IPxjp06KC0rOg2p82AkE8O4zkbiAJ6ySWXVJLRjUW2qmqrVq30+eefr3RrFWYQf4+pqjpq1Khq7zYMY4/0g5agxppgPCnARcC1GPRFSUF5gAn0VNVz69vMkiVLWLNmDRdeeGGt93Tu3JmNGzfu1slkGAZbt24lNze30jWHw4Fpmo3GYwv7SIY7GYKD8UA/INteQFaKEL7iqBNPPPHYhjTXp08f+vTpU+O1rVu38sc//pE5c+ZgmiaGUbtLJu5HqMNdfYXT6VwdjUY/b+EAdXm9DMNlmmYrAA/I6SKe6ao/JM38v2Pw52oPrgV9Seu06RugTzT62ZogNzeXbdu2ISIYhpFmmmagxRNYC7Gbptlnw5Il29Z/9dW2H1ev3jpddQPwQ79+/f5k32NNsSpStdeSXonZ99JLL+0RAkWEG2+8samUU7Zt2xb3KKppmptbREAd43Vwly5fdDniCLS42DoRDILb3fnRiRPzLzzrrIdVlX9MeoKCw36GSMUIpaWlJVh0UVHRHiPt4YcfbhqKruxyFiDUIsfrhpWAfjprlpplZVZUb1UHTyBgRfnGD1Xt0KlTvR0++xIcDodecMEFCvxDVXv/79nrM2lnzuAanUWdnV8InzocDu104IGqO3aY+vPPWqOrt7BQdds2jcRijTLzmsg5VO93RCyCNa+88kotKCgosTnC6f8rIkD/PGcsQ044AYAZL9XOgkdfdlnxibEYuzZvjkpOjrN1q1Yc1Llz4p4Lzz+fcePH21qBidMwGDhwIA8++CAn2O1XZcWjR4/mmmuuoX///k2ruIjw9ttvc/755+9enjudAGIYBu3atctUVXr16vXOqlWrOovIpv169pszeX/yP/9Z+0xOPqLRymy+yvHp7Nl61tChetbQoTpt6tRaF2x+qSLh6quvTvw9adIkE3hrw4YNjv3WDNSZDEZ5/6Hl9zhvGjsWzKZbOykH0tu2Tdjie9H9XCmYpCHPjR49mqeffjqZi5iq+jQwVkTM/c4MVCUfcM564y6u+8ufmxRRV1xxxb6xWUUSR0Ofa2clqdgSzOTVV181otHoNTNnzjxjv9MBzBl0EeUUNeD9e2Dkfc/z53xPnUGeN4wezcFHHlmvwX1j1iwAJk6cuNf7tmLFit16CavCww8/jMPhSHZ+sWDBAi688EL97W9/O0tVPSIS2m9EgDmda8XgSRRFKvqjigooQh85h+Xx819BaxO2nQ/ODGAjrA5A9WyeTA4kg1y2UCnO75cOJ510Eh9//HGN10aOHKmLFi2a98MPP5y834gAEYaikIx8+7wAhpr8oabnpgMvA5/Av4C+1Y5bWMRoIJUXBg0apL8G5KsqH3/8cY0iUFWZOnWqnHfeeUNUtcPeJoBUwFPHkdoYbqQ+BBiitYVMWYs57iqnYskv0trEoGlzjXGMX7du3R3RaNMlcDz55JN1c7VGKrFVg1DjiE++duutt6phGAtV1dhbBHBW6+zM0iM6tSkccFTPwv6HH1o44KiehUd0ap34PahPr0Kga4MJ4CjOUWgjUgvxKIiDc8yZpMVPReEkrZ/uk2hz69atr7344ot2i3sOY8aMqRXJt99+e40yf9q0aU2iRHbs2FEGDhx4wPr1689sbiXwcDEck3My044ePWKo4dRwRjQUILPtgZRt34rDeTCxWJSs1rk8PmUOKSkeCYWCDSR5OiXQpLYggLCCS8TCv0CmmBWELtDNThPeKZBdzzdtuPrqqyU1NVXPPPNMsrKyqs26hkJtil12dnaN7HvEiBEN1kPatGnD9OnTOe+88yqdnzRpkoiIpzk5wMnZGWkrhxxz+HG3XHRqqsPplPKyMlxZ7dkVCODMaEtZeRlpOe3419S5dOt8ANFYrDHy/5i4wocgKH9Xg0MFvkiewVolqNKexu+p5TFIq+/7fve733Wcm5PzStzbJyK43e4mHbjbbrutmgyvmmdQX+jatSu1ia4tW7asbS4O0Mntcn5wxx9GaUlJiQQiiivFQKNhHAaEy8pwuj1kt8njqTfepXvXA+nToyvzvlzZCK2HYxGsf8oKPNxunE5U3+Kv6uBdBI8qHlEOB76sLiBQA04GfPV840/dIPDEV1/dd5lhXP0TLAmrzveIyKlnnXV3z549uSknp/Qf27dnDh06lGHDhu2RLG+M4ygOmzZt4swzz+SCCy6o8f7PPvtsS3MRwPI22Zn61LT3JRwoQw0noIg4UP0Wp8uNwzAQEbp3PZDB/Xqxs2xXwzs8B6dGcNvs3BST2+V0ogAynI/N6SwTYYCCC8FTnQEkwNEwqYNDwbgZCoAPROSBL6CLMXv2rctmz85eC5suX7Yss3fv5lmMi0QiqGo1ziMiZGdns2LFCjp37kynTp3w+/01EoqtDJY0FwEEI6FAzgF5OQw6vi/ZuZ2qsDTFYRj4n5pKSXmAwcc0cqBCHC0ODrFlf1TdLK6CqWUKA5IxvhwkDCfsoSY3AHhCLQKIZ+x4gNgy0KOgpP9RR5kh1QNVVZrafEx28lRF7M6dO+vFXbZt2zYzLiKbRQfof2QvBg/sh5HZlrJdAcp2BSgPBO0jRFnAUvaGDuhNWKVR+XhacQiwQkJsq9RRk9fFVgvjKCgHUTjY/j0TCNOApItnraacWAUgNgI9kr4n8Hu4HejxCVwhIufbkT9ah07RoD5PmTIFwzBqVCDrS2hjxozh0ksvzW1WP4DGPTGqlO/4GTEMMGMJRBticGiXA4hEYxAO1J17V7sCmJpkq70vw6shsrwWV6fadPGFQkSg+6dW9a7dQtuK7glgSAXxuA3IFbgnaQhmPvroo2kvvviiTJkyhfnz51ebsa+++mqD+nzRRRdVUxAbsu6hqvztb3/ToqKi9LfeessNuJqFAFJcTsx4UqXhsIY8o03i7x+3FfH1uk10ymvbKOTbLP4uxEaFWb3CVtw5ZP9f0yw37OttU6mkI9QK7SALONh+7geFTp9bhHBI8jsdkGkTQeDyyy+XRy6++MCJQ4aQ4jJwuxy4nQYOw2DqM4/w6KOPNsi/EJ/p4XCYYDCIiDBz5sz6IF9FhKysLFHVZ4YPH74DiDQLAfxnwTI8bhcA6QceCmrCrh1JyFGcDgebC7ZbMe+N0XohB0BNtkuUFdUNapYqrBTlWnawIPnRKm8z+sHO+rzTsPP3HfCdAcUKrRwWAcTZglj0WNmpNV+15OgLYMLYU/nsoYP4+w0D6NPzIFYu/YqbLDEhDZ3NW7duZf369agq55xzTr0IZ+TIkfTs2fMqEflns4qAXcEQD7000+pQeBehcMTqY0paJXZkGILDYbDw63UYTkcjGQGFMrJ6oUXjZEKEOEHOZbJcTsy+1wW018revtKvbGKqr3SzxYgA6tiNFxFg1nhy+x4coaA0g+8Lc1mxqSsOw8CMmYrAIYcc8pWIMGHCBD744IN4mjGzZ8+u9UM6d+5Mz5496yP7TWDh+PHj5c0337z5m2++eS75YnNYAUuBYcUlZRTtLKNtNjhTMyAWhkAJVCm57zAMPl60ktRUD4FG+Nu1jjUEYxQlVe51A22A4hDsTIEihdxwPXUAJ7QywWXP9gKgvQluhSyjMmEkOqmzOBqTawpLiKalf+WcumQkaZ7VRCMRwsEyycnKCq9bt+4e4G2v1wswbs2aNfcfcsghnH322XsU26CqFBQUGHl5eZMsCca/apSDTQxnAEsNw+Bfb7yDw+nAiIYs5ljDfguC4HQ5oQEeOX2LTsDRtgqwraHjIrDhBNgKfA+kOmFIPblNOhADchXuAGKm1auOSRbJarGqh6PT6YPJuTj4dvgDrPv7zJNp3+pHwsEQS77bqNlpLkrLylxVfBEP9OvXL7t169bFzzzzTKMJIO4YysvLU9216wWgNRDYGwQAdrFkj8dj6WmGUaupVx4MIohCDXK8ts45SMewuJdq40usaoUdbzRABDgU3hZrrwBxWs/GrdJLgamAQ+dyACnI1PlDNslZW5Z/tvxC98at82MSLg+nOwkhEvnHy+8QicYEeDP5JSUlJSXFxcVnXH311Yfcd999DepTfJFpxIgRiAgbFi+Oh8gJtWnCzQBvJ3ynBdvrObkaKPs18aDRAIRrfcVHLc9nWRYoOTbCU0LWgpJD4Zn+VoiBiIGDCA+tWt/5xElPnb/11uzhOfD6tNUb1sy654XZcx+c8v5MPPpM4Q0l5yb67k36tnyuwcsaYN2bb7652lbidzvjwUpIFZFvZ8yY8U9AFi1bJpgmpw4e7Hn8iSfa7y0C2BFXmMLRmGUFZOVZXKBKR9I8KbYzr/khDVphKYJxKGggAXSsgWhjapmBAfueoKTQ86ftbd4cNvZv342KPtj3b/4FC4C/AOfbxygC/BGYjJerKymY+dyNn6fwsR1g8eLFh4kFNdr+yev9IsLAgQMBnjFN8xawah8RCjH12Wfd2dnZf9pbBHCl9U1JXj61TfHUrEZX4tpTiMJRgEcrMPiuzbu7NcDqSDYHDCzF0p0w5WBtaSDd3fGKDwdc1/rO464bt+kZbmRrjY35yQMW4+VBNNH0kYnr3sS5/r17917bt29fzjzzzER0kmmaiAiHdu/OgL59WfzBB0QikUqv+L/HHoNWrcjOztY/33jjnap6dnNbAYmPq8S2DAcYTUdvWuGTq7PAnzmdozEpM4azNsmMe99G5nr791H1fGerJCL4RKCvEzpbcSd8Y99jOohFx7cfNf/JS9Yu5C4b+V5yUcZWoiA/d+NjCV4mIVxGPjvwVzJJ7yGfUvxMXLly5aH2uRduvfXW30+bNo1Vq1bN9Hg8Zxd8842069TJKoAdDlf65uVLl743b/bsUwcff7zx1xtvVBE5CpjV7ARAJbepQGlBHaK+gSqA4BZLoIeBGnOAzHcRCeJVAy9wElbd3jgU1TyhdwuH2Q+8HYMrndaagClgKBTbDao4gtnzTlr93YZ/sslm688AF+InM2l2tyKfAEIaPo7HyybCDALgrwzEzTx8pPR6rJesYlXyN1z+97///fKMjAyXx+OJANF2HTo4CNSaFX76I5Mn6+Djj+emcePkhWnTzli6ePH/NbcIALghMcBij7DhqHGkXbYTyOPxXFw/9sJVGveKhqkWSWK+TT8JsdJGfk1UmdKYDomle84Pw4VRCKj1uyPQmQo38I8pMe75eGqSVePnanxJyAfwUYyfVOAa+3enj679aMW9H99bFLwn+Ln6NWKapq66flWNxFlWVhZpqNiipIQ+3bufoKr/anYCcDqdyypZ+6oEgoGqwbuEI1Fuu/J8cjLTFOhUrw4ZpCS5X6uy/KEYzEfoJdVV/Y72gMQX0x0NHIc0gc3HQ2SQlXi5zrAcLO74esMxML8//LsBQ/U1+TyOFx3yxJCH7njjjpM9Lo+ISIZhGPVhjY7vvv66Tg722cKF4HKBKrfecIOKyEnNTgAulyvJTWmha9eW7xEUl9NRKcwpHImi2mCTrDboIVW2hEl65veSNCkUFoiFyH71fGc/S5dMNBKxiSgSg28bOVSfIUxC+fCREY+s59GKHIZ6Qu+1dRealq0FBectWLBAAXr26SM9DjnksCVLlvTdGzoAYhgEy3bgycgmvU0eGijhgHatq/mw60fsu9ccpGK5tyZiidp/L7bPXwakaP11ALcJHye1G8WS/+4YBBs1QD4U+Bo45U/+PzXK9e5yuSq6XD3aWIEZp40cKSUbNyrl5fLa5Mn06dMnrVk5gL0Vm+XtKy4EEVLSMkGEDZsLKsKi7aybmy85m2CwYWOoDSeUDvbfZQthmgF3S8NCvdVIcqfO5oznT2POfxww5Xj4jn0Dg6KRSJyd0uGgg2q8qbSs7IzNP/0ksViMjPR0Jk+e3LwcQERmqypqmrTueDCoJpb+K0W0CIgKu4JNU91E6yYE077+qgGt1FoXkPrQ0nJwhaBrhUqxsN/duLIBTz+YyL6DBWaSuR0Oh2vMZDZEPuzQu3eJqmYempe3CXikua2ADBGxAkOo0AUioSrmSkome6sWssI2+0vi9nz8w7IWWG7eWmGXpVekAz/Cyr5geCD2M5hL+IWAmiaFRUU1LiCZqiERWSYiAaDL3jADUVW6dcy1RlmsSOBoMgGoWg6iRkYFST3PKbDQ0tYHUF0/UIEsl4XcOtcRBCKTuMYNWg6aB/IK9Iv9UghARKo5gqrg46SsrKz2e8MVXAnHoJDexqbS5HAMgWBZk7J7Tfo/mfdErb46arLt6/MuAzmojPSVU7i4OwT7gsyDfr+oqlyqWrHbWS1QUlJSvldcwTWlMZmmSVp2a3YW7UiSylEUSE9NaeIPoFwAFdJFCRh7mAp/LLo5j9e+DZAxEPgDHFP6S0G8y+UCtxsxDFrl5OAwjB9i9UwwbRYCSE1NTVFV0jzuauxZq85XO7Pz+Rkf4XanEA7Xf1JJ7d66dUQZpk7mohyCtQCkdbUT3s1YCItag7YB9wg4KvhLmvnDkmoR2/L/jfo+21wi4OGYaeqNvzuLmGnaYeL2QDprZlE/7yhtsC9Aa+7RQkyOM0awNp4cqyYxo3osQPJvtxN+U/fbytdD/zN/aciPm9zxgwZyuuYiAAUkGAoTLN2BiAFlRVbwlMOdUFhcTme1Ldb2WBE6h4XG+RRW0gOcGAYcYfdXbeSLwncmPG/fuxsZNHj3PNXLoc2K6b9wYigSupwbGNug527nZrxMx8uBe4sAKsynnUVWSFgSbYgITofBh4u+xu1qvBTanQEvlf9ok6R6isKiGBzeiJjCuuD4ZhvIfN7DyTtRjT6vj+gk7iJGvrUEXQdBtsPL53qvrsbHefjYvNcJoE3nQzFj8awgC11tsjO57OzB/PDTNis82jSJRmON4TMOcXNCXaZbTQShMMMJJw5M8utT+e+KJmJEGvBF/ya/0rJz04Gf05hIevq49C4dHuwgOkEnTr94+pXG3UYxXsprQH4PrEDQITEz1mGvKoGVNP9YLCGI4/hwuxw899qHiQCRcCRK6a5Ag6phYWn4DkyOISnAIXFtFjlqkpcsEW1q+MgDI3tXlIOOV1o+A3im0uRQbuGeKtE8Xt6ASkEoG/BhpeH6MPEyGS95+GqJAtpTeIiNm9kssk3ye3ftfT3wb5SX8PIZJrOZwL3cxFCUTvh5FqB/Xv8ruZNcHDyBn6K9SgAJuW6HhyngcDj3SN5rZQO+ZtYRpZc4yNDqzy5OQj6KpS9QOd4PDCbhY2MVNjwNHyOqEMQBeNmAcjF+PsdysZ6FFR3cfJDKSyu2rTDwsxYvxUC7Nultvp7749z/e+ubt7hv6H3xYNO3T+t2WtclY5fcszeVwKpmScULDQc7Nm+o17NL4IAaiUoxRHfLHQ6KZ2mQTlShVy3WY827bFRFvsWGR9Rw3xZ8dMXP53h5Dx8BlEnNrvr7+R5hjv0NrVCuL7qtqMexHY+VNFcaqvoR+UTxcf7EoRPz97YVUAnh5TsqZ25Z6wG1Y3ARdPsSvozC+Fq8iy8ma/k1EolB3wSq04hRS9yfNOVChDKKfD7GT64d5CE1yOamLBjQm3y+sAniIfJR8vnD+Nnjh8pd0gc/zqlfTxXqSH5tdgIQh5NYknPHNGO07nCQlRHkMFizcUul+7+EEQrLgWMEMudXDuOOY62Iiiz002tBRq5URnQ8O2JHLZ/q+XRPRaKfnfg5iXyOAYIog2v4rqvx8h7eSvpG48BHCD8D8NolboQr8PM0afyH/yP7uSXP6cjDR6qIPLbPCKDs581ktM2rpIkbTjfZGWm4nE4Wrfo+ce30aPQ0gdelIk1suLPCfKvNDGxXTfGciaHKwBruj5kwt5bmfmoSVuAlHcGNn1uQJI+cl1S8BPDzND5Ow5fIB2gKOAkvgo8X8LIVH4KXdVf2uVLI54p94QhKhP6nt26PiGHrAla9gFgsyvUXDSMQDNOv18EJVt5F9US1F2xs5LqB3+7GE5ii06tk95aSJkJ2LSKiqkNnrcIcAy48sWZTsKGzshyYZn/gNXjJJp8XUVrjs4paNDn4OBl4CC9ulP72uW54KUCYXdejzWYFHNyhPSJimYGGEzSGQ6Ns27KJtq1y2BUKgcbo0eVAAqEwrbMyMIp3uqtYbS7g8M/BcVwVbV8FEUUx6KIx+gIfJC5mcCbQVuIpRy5q3WHTgMIoXNKPKra0lwwUL5L0XqsYXVHco4iSDfyIn8cT8t0K8boLL0OB2cBDwN0Im5uV1fqI70S1KencbncdbzYC2Fq0w1oRVAVPBlq+nSlzP+LIzq1p1+aYRKZQLFEfUCv7kSvs80tdcC8VSRyIEFOTXRikq5WVcYr5Jh8aF6Dm2xgoN2Hlo/5HlFOD82kLdsx9FehnvW5HFXOvLVao9yuAQRTFQRQoRVmAUGqXoC0CnHgZh9IJpTtesvDxNF6eQ/Hhr+Id9HIYVuyBAEvwsU/jCZptLSAQClcIanEQDEdZvbmYEjMlYRq63W6m/OdzAqEwRTvLksmgIMlec8bssiwJ2Mk6YGVivV8ZKS477l7JQ+hjhyGEENAwTir0it33WSgGvkH4FlhVMr4kHViG8D1CayAHP53x0wc/vfHRFZgBPAisw0suEKiG/HwUK5l0FfD1HiE/n3FNgahm4QDJAaEgEA3iSXFxxx9GgghqmoghqEKq221XXDLi4rnIztm7LE4ADhgO/DfR4qWY5vREHJGqcChwhU5nKvCICh5bh1ibrAQohBywsR7sNEZS8GeWL+sTVT1fRKYnIWAW8Cx+W977GW4j/jzgRdTOcfAyFzgN2IKvCU1AaRrcNRcHGNOtY57l7bM9gPEUIVEzyTsIwXAET4qb1tnpcc3RNGGjWCHcaiPy5K9qswbssvCi/E2Fb9XgAtFEINKcKq7gsEKjQpAqId9C+NkIHrxMJZ8rbcLZBrwOvIcQxcst+DgDHw58VTyNzQVeO9MI4E+cz1+rW0PNzgFEhB8LiiqigtQEhxuJhSElA8JWZdBIOMzFw04gEAqT17YV5s/FCEwOw/1uuFEgw9L36Bi1qm58DqBvISqsUOhvl4lVxMrSTSDf0hVMtf6PU44a0wAADOxJREFUn3I2qcD18YqtJ1js3Y/gs7dq86JNMuO9OFBS8e+GcL38AZiAz/ae3sIgfVD/DVwo98veNwMPaJNTMdMjAUhrXaurWFUZecoATNMkBl96rLy7Fyo8v2Q54KoEgQ1HxeRf8ZTqeLl4iXMEQTD5UiN8KyDFy+gOuAVGD6SGlbOmYcmLbUSk2cUeXE3UsgehG16OrOJFrIrVc/FxAF4EL7dKpqwTkUzJl6v3jR+g0lqAQLicJKldjWNErcgh0wFb+kFU4Lvk5VyF3E+pZEerUPtSrQg7RXAA6wrnkgrc1h9ea0YzrJ9tBu6yZ36sidotx8cylP/aJibkEyJ5BTSfyfiIb2t/JcpoRXfh5SGEW+pyPze7J9CMRSzEh8vt11X+lnhmcHFJGbtgmwkLbYTPxpbX9hMnpVvr2xb2f2IpymqtzUOovI6DHRRzZHgbT/SHvze7/PUlqZy+Jk528NMOr+3UEYL4WJbk2ppuE8Ig4EH8dMfaMfRW/Gys61uanQBKCjYj8WqhalZUDgXEcLD42/VEojEem/IuLpcz8aUGbLft7PipzCgk0seN64iqEJUaOI/d/Eo5n1K5nED/2v3/vzaovnI5nmKdoGWMYxTwHj5a4eVRfLyOb/fBLM1OAK7UNKLhoB2IZev0CfvOwdpNW4nFYjgEypTCATbCTYvdB5NYhgGc+kVyAoda8Xw1sIAdmKxkfwMf99j6Raatb/TAYCxw76Aeg/6CnzTyeRz4x742AxOQ2ToPrSNGPVEvwDA40TTzAeZDZwP+A/TQCnkPMESS6wka/KhKTLWyG1FMJhvDKWV/BCUdtXZCE6QNPl57/MvHp8/fNH+aPaAd8FV4TfeZK7hCyzdxuOrOVkn1uGmdlU7fguDOhTBArLp58Uze5AQfF3AmtoUg5bxDGisQjrb3CUSEsLIXAjL2FfjZBTyLl+s0omNV9XC5XT5iIifjJYqvYTjdK9vGWYtCUWKRcC1EAqaVMpYr8K5ABxvzPyu8lMQFDIE+iXZ/S7kq/1TTrk5v7Rs03TiXH9jfQXno5d++/FdLg+YW8nkJu0DnL44A4gpf8eYNSKisxpKx9se8FN/JS+FHE07TuPPHeqrs2zwrGijJ3HsT4d9qEkL5gihj+F8AofCSIy+ZLSJiHGCkImTga7jes3cIQBwI0LZL90T5uNQUN0n1+uJOI6ddSvI7gcEDYEnMEgfrDNh16ZVMuOyaymvqci7l4uCPAscS5UQZYVXr+kWCFw/5XNpErT2Bl3mQKA/bqHLre4cAnCnWHLZdww7D4PE33sPpMDBVCYYjyRtHLVc49RirkDMu+DkTplx/Mb5VnVmFn8+q0ddZlMl5LDdGNCiGf19o8UHgVbw82ARtTQBOAejVvtdCfAxvHAHk4yOfmXjrXTO/8X7BlIxEQfUtQ4sItg9y5KGdMU0zTsWLIzDk2KSghmPAPOxe5n9+KFvxVY///xUqcTEaUBl9N0QQA/j6uq+vNk1zTuMkSYU78SWEQpQZ+PlwT74rNTVVO7RvzUWnHR93BliewMxcKN2G4XDwwLzpDOvQhz7du7Jm4xZ6z/n46xNUj64WljWeS1Bi3NOMbtx9AfHFoyYA0zQLDcNot2ciwM+l+LgZYSNeFC+X4G1qEWFxggm5r+PY6CAtxY0gvDx7Hk+53RdUQ76X36HsqIz8+Zn7iTkn5DeByPJiNhb5NesAPtbZixkLgbHkN5VHTatSLa/O+RhPiguny8VmkUiVGTKSGC7uSQ5qXDQK3K79hgsIfcnn/AZwjYer/P4C355NUqfdkA+pISJWWY6fI8hnIjALP5820htklYhRZYO7gKtWnMorfMp5pwwkGI4kfAVJbP8iYDJBKuLJ+eIWYCZEOmCtE/z6wccK8rmMpP0V6pjpU/BxUdLvl/FZNY/2nAD8NdfUxcsg8ilE6IFyCV5W4KvfDluVIFwOqZmwcyuSYmA4LKI9uEP76hWtLLb/AlBi+Ym/NICnQB8FvRKMf+5nFv3h9UD+DnxJSnp+EwWb7NYM9PEpftqhBBC6AB3twMbdTPgqhWAMB5QUgOEg3eXh6TffQ0Qo2F6FlsZzMcrLdrybsOVQB+gLIK+CXAuOt2BA4X6Ffj9nkV9rsgp4ObkS8r1kIPRtqtcb9fzIAPA8ynm28vJinaJNhEAwnCAGQwwrLkuVVzM/AXFgqtIxtyLML3RuaBjCYwl1IepciCttEX89+Wt6z/kdyELo+2UT59b9UnSBTnWoTq/ZiBe8DEK5CB9L9i4BWNxgJX7uxctHwH/JR/FyYhJbOiX+ZyQa5dQB1qbQhsNBSeFPliQIlFVgT8HjdlG0s8yOCMZEWWR/1TpWn5rJc08fyf0fLGHFsC/gmOftJw8mn6f2G+RbBH2pHcxRVel7Fz/xfX4PQTkFfxPkFO6RJ9DHEPy8gHAqMA8vx9lX1sRr0LicTuZ9ZW1yoKaJM8WDqsmM7C+4qei8Srs0/LClEIfDIGVGynsIp+HmFe5eOJVpvkugJAbGRXDsU/ZglaL0wZ8U+frrVwQVH0uRiiLUSVCSxAmm4cff1K937sGH/9f2JBaTz834eZ58lgNHqipOO9RLVUnNbGU5AtOzeOfdJXhS3PHVPwxDCF4TRLbLQGLi5a4VCrumoOEfIethkDH2bFhUbdOFX+aMdgC/QdmF8AJWfkFOPcLCT8FLb3yVts9bYre5EpLkfjwFLZ9DgG74G7913p7HA/hpRT7r8PIwPrLx8qg8IDbRWmG7ajggFkVRHA4rUbRjbmvmZixma7diPE95UId+ESyb1xVCr8Gx38PCiRC8CU6M4OXf+DjmVzKjY8B7NpK6JbHzOVh7FK/Cz4QanvwUrVjqTngKrXE9osq9t5DPQIQVifI0+4wALCLoRj4R8jkaMEzsDaPsAD1JyYRdxYm9/qKeGMHLggzddjzlgRCPx94lFnr8jyAvQb/vYeEEcE7Ce2w7YAE+OjdgBrpQ2iEU1icmrllZe+UxOrMScoUsfElRSz6ieHkT7L4KP9Rg++cA3yRi/5tEBHiTskkra58K5FCRVJFVp+3px0U+EZQRsQGxQ9Z/UnCa3RErGFSE7Fg6ZZlBUtJcXLJtCAK0ykq3zcZYAI5dAgvvwBF7lbuOPQblM6TyTty78ZTFgHeAMfALthYsS6ojXlYB1wMz8KGChBQFL2vw0ZX8JP+Ml09QzsHfdMiPc4D7azFNFDgQiODjbnuAb0bwxNGKcritqMzBzyybCFbHesZSnfMrPLYhwrgEWpmZzB+0mq7rc3FJ5eVrd9qNzwWdb9/K1cMGk7F9O7ABfz02dsznLWA7wiZ8jVsT30dE8CPQCS9DUd4ARuoOvfH292/X+96574JEZpFVfHKUbYI3eXSz7IadrrQR3BqlE0IaVkxeCJ+dj5/PowijgFyUE4AhrlmuAZGzI+fesXkkgrI6awcHl+XwwAFvcvyMXmwpLOZ3ZwyC9Na4gsXc88xbRA+68TPOes4gs+hKrMIQB9jf9yjCw/iS4vy8ZAPHAq/gox2/ZogrdF6+xcdhtnjItJXHTsBIfM2X0+DcjRw7ogbNcztwpR2eHEM5AR834KUz8APCBZEhkb84J7pY/4dtFLp2MiDSn+ScTDNeNNL2GEZvimA8mPeymVW0EFiDErMVIAOftRN3Jflp+c4v+NUjP1lX8HEYXhaggM8eLC/rsfYoajYCkEZSbW+U9ggG8B5KCTADP5fhZYkUSh5l5LXrlMXBgVx+Ez0JgqXMT/+G0vcCDO53OKkeD2ZaNs+lvc62B0rR0bHbtJ1+AzjxMy1pZjyFtd9uJjAK+BTffpPoUZNIU1tHUGAw/hr9A/vYD1DZVhW8HIdyDfkoyunaVt+lLRRHykihE0TDoCZhiWCq0io7g03fLufLo8ro9+khvNd9GeHW0ZsQXsbHX2wl9HK7ysZMhEvw8R/2d7C8gr9JKIp7xQvd9J24C2UGWLlrKeoiKjFu2zycmGny3oIVnH1aX/xZr3PnllGoKve2mUrqI6ndAuMCG7Ayf0pQyvGTQQs0KzRHUOgw/CyPk9ag8p5cuv0UAhKh+KfvibYx+XDV19y5ZRTRcIiH8mbieMZJcHRwNMpbKCUoHVqQ/2slAB+D8CKe+z0XuF9wU2IGOCCYzbK0DSw8ooRdrYJsWlWEAu+3W4G37CLMo00Q0hA+x4/gb+aKWi3QrBwAfKiIFOKEHms74ED4MHsF3QMHkvdjNtt3lmkwFObbnVujTy59d6drvnOjpmm0Vp9EC/zKCMAGx2ZHzAyHYmXbC2JXLTgilrOmNHZc58xYaSDMP16cPsN4zXHk+sHbMsO7wl1wM67Jc+pboJmsgPrBAlXNKy8uIJN0XA7LMxiOmfGNnQpLS8tIeO/2cb28FmiBFmiBFmiBFmiBFmiBFmiBFmiB/wH4f+jryq6sRdUDAAAAAElFTkSuQmCC" alt="DREME Logo"/>
+        <h1>DREME</h1>
+        <h2>Discriminative Regular Expression Motif Elicitation</h2>
+      </div>
+      <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>
+      <p>
+        If you use DREME in your research please cite the following paper:<br />
+        <span class="citation">
+          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
+          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
+        </span>
+      </p>
+    </div>
+    <!-- navigation -->
+    <div class="pad2">
+      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#info_sec">Program information</a>
+    </div>
+    <!-- alert the user when their browser is not up to the task -->
+    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
+    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
+    <script>
+      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
+    </script>
+    <!-- description -->
+    <div id="description_section" style="display:none">
+      <div id="description" class="header">
+        <h2>Description</h2>
+      </div>
+      <div id="description_text" class="box">
+      </div>
+    </div>
+    <script>
+      if (data.description) {
+        $("description_text").innerHTML = "";
+        $("description_text").appendChild(make_description(data.description));
+        $("description_section").style.display = "block";
+      }
+    </script>
+    <!-- motifs -->
+    <div id="motifs_sec" class="header">
+      <h2>Discovered Motifs</h2>
+      <span><a href="#inputs_sec">Next</a>&nbsp;<a href="#">Top</a></span>
+    </div>
+    <div id="motifs" class="box">
+      <p>No motifs were discovered!</p>
+    </div>
+    <script>make_motifs();</script>
+    <!-- inputs and settings -->
+    <div id="inputs_sec" class="header">
+      <h2>Inputs &amp; Settings</h2>
+      <span><a href="#motifs_sec">Previous</a>&nbsp;<a href="#info_sec">Next</a>&nbsp;<a href="#">Top</a></span>
+    </div>
+    <div class="box">
+      <h4>Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_seq_source"></td>
+          <td id="ins_seq_alphabet"></td>
+          <td id="ins_seq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.sequence_db;
+        $("ins_seq_source").innerHTML = db.file;
+        $("ins_seq_alphabet").innerHTML = dreme_alphabet.get_alphabet_name();
+        $("ins_seq_count").innerHTML = db.count;
+      }
+      </script>
+      <h4>Control Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_cseq_source"></td>
+          <td id="ins_cseq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.control_db;
+        if (db.from == "shuffled") {
+          $("ins_cseq_source").innerHTML = "Shuffled Sequences";
+        } else {
+          $("ins_cseq_source").innerHTML = db.file;
+        }
+        $("ins_cseq_count").innerHTML = db.count;
+      }
+      </script>
+      <h4>Background</h4>
+      <span id="alpha_bg"></span>
+      <script>
+      {
+        $("alpha_bg").appendChild(make_alpha_bg(dreme_alphabet, data.control_db.freqs));
+      }
+      </script>
+      <h4>Other Settings</h4>
+      <table id="tbl_settings" class="inputs hide_advanced">
+        <tr>
+          <th>Strand Handling</th>
+          <td id="opt_strand">
+            <span class="strand_none">This alphabet only has one strand</span>
+            <span class="strand_given">Only the given strand is processed</span>
+            <span class="strand_both">Both the given and reverse complement strands are processed</span>
+          </td>
+        </tr>
+        <tr><th># REs to Generalize</th><td id="opt_ngen"></td></tr>
+        <tr><th>Shuffle Seed</th><td id="opt_seed"></td></tr>
+        <tr><th>E-value Threshold</th><td id="opt_stop_evalue"></td></tr>
+        <tr><th>Max Motif Count</th><td id="opt_stop_count"></td></tr>
+        <tr><th>Max Run Time</th><td id="opt_stop_time"></td></tr>
+      </table>
+      <script>
+      {
+        $("opt_strand").className = (dreme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
+        $("opt_ngen").innerHTML = data.options.ngen;
+        $("opt_seed").innerHTML = data.options.seed;
+        $("opt_stop_evalue").innerHTML = data.options.stop.evalue;
+        $("opt_stop_count").innerHTML = (typeof data.options.stop.count == "number" ? data.options.stop.count : "No maximum motif count.");
+        $("opt_stop_time").innerHTML = (typeof data.options.stop.time == "number" ? data.options.stop.time + " seconds." : "No maximum running time.");
+      }
+      </script>
+    </div>
+    <!-- list information on this program -->
+    <div id="info_sec" class="bar" style="position:relative">
+      <div style="position: absolute; right: 0;"><a href="#inputs_sec">Previous</a> <a href="#">Top</a></div>
+      <div class="subsection">
+        <h5 id="version">DREME version</h5>
+        <span id="ins_version"></span> 
+        (Release date: <span id="ins_release"></span>)<br>
+      </div>
+      <script>
+        $("ins_version").innerHTML = data["version"];
+        $("ins_release").innerHTML = data["release"];
+      </script>
+      <div class="subsection">
+        <h5 id="reference">Reference</h5>
+        <span class="citation">
+          Timothy L. Bailey, "DREME: Motif discovery in transcription factor ChIP-seq data", <i>Bioinformatics</i>, <b>27</b>(12):1653-1659, 2011.
+          <a href="http://bioinformatics.oxfordjournals.org/content/27/12/1653">[full text]</a>
+        </span>
+      </div>
+      <div class="subsection">
+        <h5 id="command">Command line</h5>
+        <textarea id="cmd" rows="3" style="width:100%;" readonly="readonly">
+        </textarea>
+        <script>$("cmd").value = data["cmd"].join(" ");</script>
+      </div>
+    </div>
+    
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test2.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,68 @@
+# DREME 4.12.0
+#     command: dreme -o ./dreme_test2_out -p dreme_test_sites.fa -norc -rna -s 1 -e 1e-05 -g 100 -mink 4 -maxk 10
+#   positives: 1000 from dreme_test_sites.fa (Thu Apr 26 15:09:03 CEST 2018)
+#   negatives: 1000 from shuffled positives
+#        host: ThinkPad-T450s
+#        when: Thu May 03 13:22:11 CEST 2018
+
+MEME version 4.12.0
+
+ALPHABET "RNA" RNA-LIKE
+A "Adenine" CC0000
+C "Cytosine" 0000CC
+G "Guanine" FFB300
+U "Uracil" 008000
+N "Any base" = ACGU
+X = ACGU
+. = ACGU
+V "Not U" = ACG
+H "Not G" = ACU
+D "Not C" = AGU
+B "Not A" = CGU
+M "Amino" = AC
+R "Purine" = AG
+W "Weak" = AU
+S "Strong" = CG
+Y "Pyrimidine" = CU
+K "Keto" = GU
+T = U
+END ALPHABET
+
+Background letter frequencies (from dataset):
+A 0.221 C 0.245 G 0.221 U 0.312
+
+
+MOTIF UUYUCY DREME-1
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST      UUYUCY        387        210   2.6e-018   3.3e-013
+#           UUUUCC        147         75   1.8e-007   2.2e-002
+#           UUUUCU        155         94   2.2e-005   2.8e+000
+#           UUCUCU         94         51   1.3e-004   1.7e+001
+#           UUCUCC         75         42   1.1e-003   1.4e+002
+
+letter-probability matrix: alength= 4 w= 6 nsites= 459 E= 3.3e-013
+0.000000 0.000000 0.000000 1.000000
+0.000000 0.000000 0.000000 1.000000
+0.000000 0.294118 0.000000 0.705882
+0.000000 0.000000 0.000000 1.000000
+0.000000 1.000000 0.000000 0.000000
+0.000000 0.474946 0.000000 0.525054
+
+
+MOTIF YAGG DREME-2
+
+#             Word        Pos        Neg    P-value    E-value
+# BEST        YAGG        600        416   1.1e-016   1.4e-011
+#             CAGG        441        304   1.5e-010   1.8e-005
+#             UAGG        232        165   1.1e-004   1.3e+001
+
+letter-probability matrix: alength= 4 w= 4 nsites= 793 E= 1.4e-011
+0.000000 0.692308 0.000000 0.307692
+1.000000 0.000000 0.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+0.000000 0.000000 1.000000 0.000000
+
+
+# Stopping reason: E-value threshold exceeded
+#    Running time: 15.97 seconds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dreme_output_test2.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,55 @@
+<dreme version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  <model>
+    <command_line>dreme -o ./dreme_test2_out -p dreme_test_sites.fa -norc -rna -s 1 -e 1e-05 -g 100 -mink 4 -maxk 10</command_line>
+    <positives name="dreme test sites" count="1000" file="dreme_test_sites.fa" last_mod_date="Thu Apr 26 15:09:03 CEST 2018" />
+    <negatives name="shuffled positive sequences" count="1000" from="shuffled"/>
+    <alphabet name="RNA" like="rna">
+      <letter id="A" symbol="A" name="Adenine" colour="CC0000"/>
+      <letter id="C" symbol="C" name="Cytosine" colour="0000CC"/>
+      <letter id="G" symbol="G" name="Guanine" colour="FFB300"/>
+      <letter id="U" symbol="U" aliases="T" name="Uracil" colour="008000"/>
+      <letter id="N" symbol="N" aliases="X." equals="ACGU" name="Any base"/>
+      <letter id="V" symbol="V" equals="ACG" name="Not U"/>
+      <letter id="H" symbol="H" equals="ACU" name="Not G"/>
+      <letter id="D" symbol="D" equals="AGU" name="Not C"/>
+      <letter id="B" symbol="B" equals="CGU" name="Not A"/>
+      <letter id="M" symbol="M" equals="AC" name="Amino"/>
+      <letter id="R" symbol="R" equals="AG" name="Purine"/>
+      <letter id="W" symbol="W" equals="AU" name="Weak"/>
+      <letter id="S" symbol="S" equals="CG" name="Strong"/>
+      <letter id="Y" symbol="Y" equals="CU" name="Pyrimidine"/>
+      <letter id="K" symbol="K" equals="GU" name="Keto"/>
+    </alphabet>
+    <strands>none</strands>
+    <background A="0.221" C="0.245" G="0.221" U="0.312" from="dataset"/>
+    <stop evalue="1e-05"/>
+    <ngen>100</ngen>
+    <add_pv_thresh>0.01</add_pv_thresh>
+    <seed>1</seed>
+    <host>ThinkPad-T450s</host>
+    <when>Thu May 03 13:22:11 CEST 2018</when>
+  </model>
+  <motifs>
+    <motif id="m01" alt="DREME-1" seq="UUYUCY" length="6" nsites="459" p="387" n="210" pvalue="2.6e-018" evalue="3.3e-013" unerased_evalue="3.3e-013">
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="0.294118" G="0.000000" U="0.705882"/>
+      <pos A="0.000000" C="0.000000" G="0.000000" U="1.000000"/>
+      <pos A="0.000000" C="1.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.474946" G="0.000000" U="0.525054"/>
+      <match seq="UUUUCC" p="147" n="75" pvalue="1.8e-007" evalue="2.2e-002"/>
+      <match seq="UUUUCU" p="155" n="94" pvalue="2.2e-005" evalue="2.8e+000"/>
+      <match seq="UUCUCU" p="94" n="51" pvalue="1.3e-004" evalue="1.7e+001"/>
+      <match seq="UUCUCC" p="75" n="42" pvalue="1.1e-003" evalue="1.4e+002"/>
+    </motif>
+    <motif id="m02" alt="DREME-2" seq="YAGG" length="4" nsites="793" p="600" n="416" pvalue="1.1e-016" evalue="1.4e-011" unerased_evalue="6.3e-012">
+      <pos A="0.000000" C="0.692308" G="0.000000" U="0.307692"/>
+      <pos A="1.000000" C="0.000000" G="0.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <pos A="0.000000" C="0.000000" G="1.000000" U="0.000000"/>
+      <match seq="CAGG" p="441" n="304" pvalue="1.5e-010" evalue="1.8e-005"/>
+      <match seq="UAGG" p="232" n="165" pvalue="1.1e-004" evalue="1.3e+001"/>
+    </motif>
+  </motifs>
+  <run_time cpu="15.97" real="15.97" stop="evalue"/>
+</dreme>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_background_probs_hsa_chrM.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,7 @@
+# 0-order Markov frequencies from file hsa_chrM.fa
+# seqs: 1    min: 16569    max: 16569    avg: 16569.0    sum: 16569    alph: DNA
+# order 0
+A 3.093e-01
+C 3.127e-01
+G 1.309e-01
+T 2.471e-01
--- a/test-data/fimo_output_almost-gff_1.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-##gff-version 3
-phiX174	fimo	polypeptide_motif	1388	1398	102	+	.	Name=1;ID=1-1-phiX174;pvalue=6.36e-11;qvalue= 1.25e-09;sequence=AATATCTATAA;
-phiX174	fimo	polypeptide_motif	847	857	102	+	.	Name=1;ID=1-2-phiX174;pvalue=7.02e-11;qvalue= 1.25e-09;sequence=AATGTCTAAAG;
-phiX174	fimo	polypeptide_motif	2301	2311	99.6	+	.	Name=1;ID=1-3-phiX174;pvalue=1.08e-10;qvalue= 1.29e-09;sequence=AGGTTATAACG;
-phiX174	fimo	polypeptide_motif	5063	5073	95.6	+	.	Name=1;ID=1-4-phiX174;pvalue=2.73e-10;qvalue= 2.25e-09;sequence=AGGAGCTAAAG;
-phiX174	fimo	polypeptide_motif	989	999	 95	+	.	Name=1;ID=1-5-phiX174;pvalue=3.15e-10;qvalue= 2.25e-09;sequence=TGAGGATAAAT;
-phiX174	fimo	polypeptide_motif	4713	4723	91.1	+	.	Name=1;ID=1-6-phiX174;pvalue=7.74e-10;qvalue= 3.48e-09;sequence=GACTGCTATCA;
-phiX174	fimo	polypeptide_motif	5048	5058	90.7	+	.	Name=1;ID=1-7-phiX174;pvalue=8.51e-10;qvalue= 3.48e-09;sequence=TGCTGCTAAAG;
-phiX174	fimo	polypeptide_motif	855	865	90.6	+	.	Name=1;ID=1-8-phiX174;pvalue=8.64e-10;qvalue= 3.48e-09;sequence=AAGGTAAAAAA;
-phiX174	fimo	polypeptide_motif	3155	3165	90.1	+	.	Name=1;ID=1-9-phiX174;pvalue=9.76e-10;qvalue= 3.48e-09;sequence=TATGGCTAAAG;
-phiX174	fimo	polypeptide_motif	5009	5019	90.1	+	.	Name=1;ID=1-10-phiX174;pvalue=9.76e-10;qvalue= 3.48e-09;sequence=TGTGGCTAAAT;
-phiX174	fimo	polypeptide_motif	814	824	88.9	+	.	Name=1;ID=1-11-phiX174;pvalue=1.28e-09;qvalue= 4.14e-09;sequence=TGCGTCAAAAA;
-phiX174	fimo	polypeptide_motif	2832	2842	88.5	+	.	Name=1;ID=1-12-phiX174;pvalue=1.42e-09;qvalue= 4.23e-09;sequence=TTGGTCTAACT;
-phiX174	fimo	polypeptide_motif	3830	3840	87.7	+	.	Name=1;ID=1-13-phiX174;pvalue=1.7e-09;qvalue= 4.68e-09;sequence=TATTGATAAAG;
-phiX174	fimo	polypeptide_motif	3560	3570	87.2	+	.	Name=1;ID=1-14-phiX174;pvalue=1.89e-09;qvalue= 4.82e-09;sequence=TGCGTCTATTA;
-phiX174	fimo	polypeptide_motif	2882	2892	86.4	+	.	Name=1;ID=1-15-phiX174;pvalue=2.29e-09;qvalue= 5.46e-09;sequence=AGGTTATTAAA;
-phiX174	fimo	polypeptide_motif	4453	4463	85.9	+	.	Name=1;ID=1-16-phiX174;pvalue=2.58e-09;qvalue= 5.75e-09;sequence=AAGGTATTAAG;
-phiX174	fimo	polypeptide_motif	2493	2503	85.1	+	.	Name=1;ID=1-17-phiX174;pvalue=3.06e-09;qvalue= 5.79e-09;sequence=GACACCTAAAG;
-phiX174	fimo	polypeptide_motif	4104	4114	85.1	+	.	Name=1;ID=1-18-phiX174;pvalue=3.08e-09;qvalue= 5.79e-09;sequence=GGCTTCCATAA;
-phiX174	fimo	polypeptide_motif	4955	4965	85.1	+	.	Name=1;ID=1-19-phiX174;pvalue=3.08e-09;qvalue= 5.79e-09;sequence=TGATGCTAAAG;
-phiX174	fimo	polypeptide_motif	1885	1895	84.4	+	.	Name=1;ID=1-20-phiX174;pvalue=3.61e-09;qvalue= 6.45e-09;sequence=TGCGACTAAAG;
-phiX174	fimo	polypeptide_motif	3376	3386	84.2	+	.	Name=1;ID=1-21-phiX174;pvalue=3.81e-09;qvalue= 6.48e-09;sequence=AGAATCAAAAA;
-phiX174	fimo	polypeptide_motif	52	62	83.9	+	.	Name=1;ID=1-22-phiX174;pvalue=4.06e-09;qvalue= 6.58e-09;sequence=TGAGTCGAAAA;
-phiX174	fimo	polypeptide_motif	1390	1400	83.7	+	.	Name=1;ID=1-23-phiX174;pvalue=4.26e-09;qvalue= 6.61e-09;sequence=TATCTATAACA;
-phiX174	fimo	polypeptide_motif	2017	2027	83.4	+	.	Name=1;ID=1-24-phiX174;pvalue=4.6e-09;qvalue= 6.85e-09;sequence=TTCGTCTAAGA;
-phiX174	fimo	polypeptide_motif	1000	1010	83.1	+	.	Name=1;ID=1-25-phiX174;pvalue=4.88e-09;qvalue= 6.97e-09;sequence=TATGTCTAATA;
-phiX174	fimo	polypeptide_motif	1555	1565	82.5	+	.	Name=1;ID=1-26-phiX174;pvalue=5.58e-09;qvalue= 7.37e-09;sequence=GACTTCTACCA;
-phiX174	fimo	polypeptide_motif	4430	4440	82.5	+	.	Name=1;ID=1-27-phiX174;pvalue=5.62e-09;qvalue= 7.37e-09;sequence=TGAGTATAATT;
-phiX174	fimo	polypeptide_motif	1927	1937	82.3	+	.	Name=1;ID=1-28-phiX174;pvalue=5.82e-09;qvalue= 7.37e-09;sequence=GACTTATACCG;
-phiX174	fimo	polypeptide_motif	2981	2991	82.1	+	.	Name=1;ID=1-29-phiX174;pvalue=6.13e-09;qvalue= 7.37e-09;sequence=CATGTCTAAAT;
-phiX174	fimo	polypeptide_motif	4203	4213	 82	+	.	Name=1;ID=1-30-phiX174;pvalue=6.34e-09;qvalue= 7.37e-09;sequence=GACGGCCATAA;
-phiX174	fimo	polypeptide_motif	1669	1679	81.9	+	.	Name=1;ID=1-31-phiX174;pvalue=6.4e-09;qvalue= 7.37e-09;sequence=TGGAGGTAAAA;
-phiX174	fimo	polypeptide_motif	3260	3270	81.5	+	.	Name=1;ID=1-32-phiX174;pvalue=7.01e-09;qvalue= 7.82e-09;sequence=CGCTGATAAAG;
-phiX174	fimo	polypeptide_motif	3047	3057	81.3	+	.	Name=1;ID=1-33-phiX174;pvalue=7.4e-09;qvalue= 7.85e-09;sequence=TACCGATAACA;
-phiX174	fimo	polypeptide_motif	4176	4186	81.2	+	.	Name=1;ID=1-34-phiX174;pvalue=7.6e-09;qvalue= 7.85e-09;sequence=GAGTTCGATAA;
-phiX174	fimo	polypeptide_motif	4118	4128	81.1	+	.	Name=1;ID=1-35-phiX174;pvalue=7.7e-09;qvalue= 7.85e-09;sequence=GATGGATAACC;
-phiX174	fimo	polypeptide_motif	5370	5380	80.9	+	.	Name=1;ID=1-36-phiX174;pvalue=8.03e-09;qvalue= 7.87e-09;sequence=GGCGTATCCAA;
-phiX174	fimo	polypeptide_motif	1242	1252	80.5	+	.	Name=1;ID=1-37-phiX174;pvalue=8.94e-09;qvalue= 7.87e-09;sequence=AGTGGATTAAG;
-phiX174	fimo	polypeptide_motif	2583	2593	80.5	+	.	Name=1;ID=1-38-phiX174;pvalue=8.94e-09;qvalue= 7.87e-09;sequence=TACATCTGTCA;
-phiX174	fimo	polypeptide_motif	698	708	80.4	+	.	Name=1;ID=1-39-phiX174;pvalue=9.13e-09;qvalue= 7.87e-09;sequence=TACGGAAAACA;
-phiX174	fimo	polypeptide_motif	2299	2309	80.3	+	.	Name=1;ID=1-40-phiX174;pvalue=9.26e-09;qvalue= 7.87e-09;sequence=TGAGGTTATAA;
-phiX174	fimo	polypeptide_motif	4189	4199	80.1	+	.	Name=1;ID=1-41-phiX174;pvalue=9.69e-09;qvalue= 7.87e-09;sequence=GTGATATGTAT;
-phiX174	fimo	polypeptide_motif	275	285	80.1	+	.	Name=1;ID=1-42-phiX174;pvalue=9.85e-09;qvalue= 7.87e-09;sequence=GGTTTAGATAT;
-phiX174	fimo	polypeptide_motif	1801	1811	 80	+	.	Name=1;ID=1-43-phiX174;pvalue=1e-08;qvalue= 7.87e-09;sequence=GACCTATAAAC;
-phiX174	fimo	polypeptide_motif	1386	1396	79.9	+	.	Name=1;ID=1-44-phiX174;pvalue=1.03e-08;qvalue= 7.87e-09;sequence=TGAATATCTAT;
-phiX174	fimo	polypeptide_motif	1303	1313	79.8	+	.	Name=1;ID=1-45-phiX174;pvalue=1.03e-08;qvalue= 7.87e-09;sequence=TGGTTATATTG;
-phiX174	fimo	polypeptide_motif	3772	3782	79.8	+	.	Name=1;ID=1-46-phiX174;pvalue=1.04e-08;qvalue= 7.87e-09;sequence=AGGATATTTCT;
-phiX174	fimo	polypeptide_motif	1288	1298	79.8	+	.	Name=1;ID=1-47-phiX174;pvalue=1.04e-08;qvalue= 7.87e-09;sequence=GACTGTTAACA;
-phiX174	fimo	polypeptide_motif	2577	2587	79.7	+	.	Name=1;ID=1-48-phiX174;pvalue=1.08e-08;qvalue= 7.87e-09;sequence=GATGGATACAT;
-phiX174	fimo	polypeptide_motif	937	947	79.6	+	.	Name=1;ID=1-49-phiX174;pvalue=1.08e-08;qvalue= 7.87e-09;sequence=TTGGTATGTAG;
-phiX174	fimo	polypeptide_motif	904	914	79.5	+	.	Name=1;ID=1-50-phiX174;pvalue=1.11e-08;qvalue= 7.93e-09;sequence=AGGTACTAAAG;
-phiX174	fimo	polypeptide_motif	2279	2289	79.4	+	.	Name=1;ID=1-51-phiX174;pvalue=1.13e-08;qvalue= 7.93e-09;sequence=TCGTGATAAAA;
-phiX174	fimo	polypeptide_motif	3164	3174	79.3	+	.	Name=1;ID=1-52-phiX174;pvalue=1.16e-08;qvalue= 7.98e-09;sequence=AGCTGGTAAAG;
-phiX174	fimo	polypeptide_motif	24	34	79.1	+	.	Name=1;ID=1-53-phiX174;pvalue=1.23e-08;qvalue= 8.24e-09;sequence=AGAAGTTAACA;
-phiX174	fimo	polypeptide_motif	838	848	78.9	+	.	Name=1;ID=1-54-phiX174;pvalue=1.27e-08;qvalue= 8.24e-09;sequence=GAGTGATGTAA;
-phiX174	fimo	polypeptide_motif	853	863	78.9	+	.	Name=1;ID=1-55-phiX174;pvalue=1.27e-08;qvalue= 8.24e-09;sequence=TAAAGGTAAAA;
-phiX174	fimo	polypeptide_motif	1984	1994	78.6	+	.	Name=1;ID=1-56-phiX174;pvalue=1.36e-08;qvalue= 8.68e-09;sequence=AATTTCTATGA;
-phiX174	fimo	polypeptide_motif	1	11	78.3	+	.	Name=1;ID=1-57-phiX174;pvalue=1.46e-08;qvalue= 9.05e-09;sequence=GAGTTTTATCG;
-phiX174	fimo	polypeptide_motif	4307	4317	78.3	+	.	Name=1;ID=1-58-phiX174;pvalue=1.47e-08;qvalue= 9.05e-09;sequence=TATTAATAACA;
-phiX174	fimo	polypeptide_motif	4303	4313	78.2	+	.	Name=1;ID=1-59-phiX174;pvalue=1.52e-08;qvalue= 9.19e-09;sequence=TTGATATTAAT;
-phiX174	fimo	polypeptide_motif	5033	5043	 78	+	.	Name=1;ID=1-60-phiX174;pvalue=1.58e-08;qvalue= 9.41e-09;sequence=GTCAGATATGG;
-phiX174	fimo	polypeptide_motif	2579	2589	77.6	+	.	Name=1;ID=1-61-phiX174;pvalue=1.73e-08;qvalue= 1.01e-08;sequence=TGGATACATCT;
-phiX174	fimo	polypeptide_motif	322	332	77.4	+	.	Name=1;ID=1-62-phiX174;pvalue=1.82e-08;qvalue= 1.05e-08;sequence=GACATTTTAAA;
-phiX174	fimo	polypeptide_motif	5001	5011	76.8	+	.	Name=1;ID=1-63-phiX174;pvalue=2.09e-08;qvalue= 1.19e-08;sequence=GGTTTCTATGT;
-phiX174	fimo	polypeptide_motif	4217	4227	76.7	+	.	Name=1;ID=1-64-phiX174;pvalue=2.15e-08;qvalue= 1.2e-08;sequence=TGCTTCTGACG;
-phiX174	fimo	polypeptide_motif	4262	4272	76.6	+	.	Name=1;ID=1-65-phiX174;pvalue=2.18e-08;qvalue= 1.2e-08;sequence=AATGGATGAAT;
-phiX174	fimo	polypeptide_motif	3569	3579	76.5	+	.	Name=1;ID=1-66-phiX174;pvalue=2.26e-08;qvalue= 1.22e-08;sequence=TATGGAAAACA;
-phiX174	fimo	polypeptide_motif	194	204	76.4	+	.	Name=1;ID=1-67-phiX174;pvalue=2.29e-08;qvalue= 1.22e-08;sequence=ATCAACTAACG;
-phiX174	fimo	polypeptide_motif	131	141	 76	+	.	Name=1;ID=1-68-phiX174;pvalue=2.49e-08;qvalue= 1.31e-08;sequence=AAATGAGAAAA;
-phiX174	fimo	polypeptide_motif	1491	1501	75.9	+	.	Name=1;ID=1-69-phiX174;pvalue=2.55e-08;qvalue= 1.32e-08;sequence=GCCATCTCAAA;
-phiX174	fimo	polypeptide_motif	434	444	75.7	+	.	Name=1;ID=1-70-phiX174;pvalue=2.67e-08;qvalue= 1.36e-08;sequence=GGCCTCTATTA;
-phiX174	fimo	polypeptide_motif	4565	4575	75.6	+	.	Name=1;ID=1-71-phiX174;pvalue=2.73e-08;qvalue= 1.36e-08;sequence=TTGGTTTATCG;
-phiX174	fimo	polypeptide_motif	102	112	75.6	+	.	Name=1;ID=1-72-phiX174;pvalue=2.75e-08;qvalue= 1.36e-08;sequence=GAATTAAATCG;
-phiX174	fimo	polypeptide_motif	903	913	75.5	+	.	Name=1;ID=1-73-phiX174;pvalue=2.82e-08;qvalue= 1.38e-08;sequence=GAGGTACTAAA;
-phiX174	fimo	polypeptide_motif	4748	4758	75.2	+	.	Name=1;ID=1-74-phiX174;pvalue=3.01e-08;qvalue= 1.45e-08;sequence=TACAGCTAATG;
-phiX174	fimo	polypeptide_motif	2622	2632	 75	+	.	Name=1;ID=1-75-phiX174;pvalue=3.16e-08;qvalue= 1.5e-08;sequence=TGCTGATATTG;
-phiX174	fimo	polypeptide_motif	467	477	74.7	+	.	Name=1;ID=1-76-phiX174;pvalue=3.35e-08;qvalue= 1.57e-08;sequence=TTTGGATTTAA;
-phiX174	fimo	polypeptide_motif	4033	4043	74.6	+	.	Name=1;ID=1-77-phiX174;pvalue=3.44e-08;qvalue= 1.58e-08;sequence=AGCGTATCGAG;
-phiX174	fimo	polypeptide_motif	1348	1358	74.6	+	.	Name=1;ID=1-78-phiX174;pvalue=3.46e-08;qvalue= 1.58e-08;sequence=TACCAATAAAA;
-phiX174	fimo	polypeptide_motif	239	249	74.4	+	.	Name=1;ID=1-79-phiX174;pvalue=3.62e-08;qvalue= 1.64e-08;sequence=AGTGGCTTAAT;
-phiX174	fimo	polypeptide_motif	500	510	74.1	+	.	Name=1;ID=1-80-phiX174;pvalue=3.84e-08;qvalue= 1.71e-08;sequence=GACGAGTAACA;
-phiX174	fimo	polypeptide_motif	3001	3011	 74	+	.	Name=1;ID=1-81-phiX174;pvalue=3.93e-08;qvalue= 1.73e-08;sequence=GCGGTCAAAAA;
-phiX174	fimo	polypeptide_motif	3776	3786	 74	+	.	Name=1;ID=1-82-phiX174;pvalue=3.98e-08;qvalue= 1.73e-08;sequence=TATTTCTAATG;
-phiX174	fimo	polypeptide_motif	2026	2036	73.9	+	.	Name=1;ID=1-83-phiX174;pvalue=4.06e-08;qvalue= 1.75e-08;sequence=GAAGTTTAAGA;
-phiX174	fimo	polypeptide_motif	4237	4247	73.8	+	.	Name=1;ID=1-84-phiX174;pvalue=4.12e-08;qvalue= 1.75e-08;sequence=AGTTTGTATCT;
-phiX174	fimo	polypeptide_motif	803	813	73.7	+	.	Name=1;ID=1-85-phiX174;pvalue=4.24e-08;qvalue= 1.78e-08;sequence=AGAAGAAAACG;
-phiX174	fimo	polypeptide_motif	3770	3780	73.6	+	.	Name=1;ID=1-86-phiX174;pvalue=4.35e-08;qvalue= 1.81e-08;sequence=AAAGGATATTT;
-phiX174	fimo	polypeptide_motif	3429	3439	73.5	+	.	Name=1;ID=1-87-phiX174;pvalue=4.45e-08;qvalue= 1.82e-08;sequence=GAGATGCAAAA;
-phiX174	fimo	polypeptide_motif	99	109	73.5	+	.	Name=1;ID=1-88-phiX174;pvalue=4.48e-08;qvalue= 1.82e-08;sequence=TACGAATTAAA;
-phiX174	fimo	polypeptide_motif	67	77	73.2	+	.	Name=1;ID=1-89-phiX174;pvalue=4.78e-08;qvalue= 1.92e-08;sequence=TCTTGATAAAG;
-phiX174	fimo	polypeptide_motif	5332	5342	72.9	+	.	Name=1;ID=1-90-phiX174;pvalue=5.13e-08;qvalue= 2.01e-08;sequence=ATCTGCTCAAA;
-phiX174	fimo	polypeptide_motif	277	287	72.9	+	.	Name=1;ID=1-91-phiX174;pvalue=5.14e-08;qvalue= 2.01e-08;sequence=TTTAGATATGA;
-phiX174	fimo	polypeptide_motif	4338	4348	72.8	+	.	Name=1;ID=1-92-phiX174;pvalue=5.18e-08;qvalue= 2.01e-08;sequence=GGGGACGAAAA;
-phiX174	fimo	polypeptide_motif	3812	3822	72.8	+	.	Name=1;ID=1-93-phiX174;pvalue=5.28e-08;qvalue= 2.03e-08;sequence=GGTTGATATTT;
-phiX174	fimo	polypeptide_motif	1909	1919	72.6	+	.	Name=1;ID=1-94-phiX174;pvalue=5.51e-08;qvalue= 2.08e-08;sequence=TAACGCTAAAG;
-phiX174	fimo	polypeptide_motif	3000	3010	72.6	+	.	Name=1;ID=1-95-phiX174;pvalue=5.54e-08;qvalue= 2.08e-08;sequence=GGCGGTCAAAA;
-phiX174	fimo	polypeptide_motif	3891	3901	72.4	+	.	Name=1;ID=1-96-phiX174;pvalue=5.75e-08;qvalue= 2.11e-08;sequence=ATTGGCTCTAA;
-phiX174	fimo	polypeptide_motif	3079	3089	72.4	+	.	Name=1;ID=1-97-phiX174;pvalue=5.76e-08;qvalue= 2.11e-08;sequence=CTGGTATTAAA;
-phiX174	fimo	polypeptide_motif	37	47	72.4	+	.	Name=1;ID=1-98-phiX174;pvalue=5.79e-08;qvalue= 2.11e-08;sequence=TTCGGATATTT;
-phiX174	fimo	polypeptide_motif	380	390	72.2	+	.	Name=1;ID=1-99-phiX174;pvalue=6.01e-08;qvalue= 2.17e-08;sequence=GTAAGAAATCA;
--- a/test-data/fimo_output_almost-gff_2.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-##gff-version 3
-phiX174	fimo	polypeptide_motif	1388	1398	102	+	.	Name=1;ID=1-1-phiX174;pvalue=6.36e-11;sequence=AATATCTATAA;
-phiX174	fimo	polypeptide_motif	847	857	102	+	.	Name=1;ID=1-2-phiX174;pvalue=7.02e-11;sequence=AATGTCTAAAG;
-phiX174	fimo	polypeptide_motif	2301	2311	99.6	+	.	Name=1;ID=1-3-phiX174;pvalue=1.08e-10;sequence=AGGTTATAACG;
-phiX174	fimo	polypeptide_motif	5063	5073	95.6	+	.	Name=1;ID=1-4-phiX174;pvalue=2.73e-10;sequence=AGGAGCTAAAG;
-phiX174	fimo	polypeptide_motif	989	999	 95	+	.	Name=1;ID=1-5-phiX174;pvalue=3.15e-10;sequence=TGAGGATAAAT;
-phiX174	fimo	polypeptide_motif	4713	4723	91.1	+	.	Name=1;ID=1-6-phiX174;pvalue=7.74e-10;sequence=GACTGCTATCA;
-phiX174	fimo	polypeptide_motif	5048	5058	90.7	+	.	Name=1;ID=1-7-phiX174;pvalue=8.51e-10;sequence=TGCTGCTAAAG;
-phiX174	fimo	polypeptide_motif	855	865	90.6	+	.	Name=1;ID=1-8-phiX174;pvalue=8.64e-10;sequence=AAGGTAAAAAA;
-phiX174	fimo	polypeptide_motif	3155	3165	90.1	+	.	Name=1;ID=1-9-phiX174;pvalue=9.76e-10;sequence=TATGGCTAAAG;
-phiX174	fimo	polypeptide_motif	5009	5019	90.1	+	.	Name=1;ID=1-10-phiX174;pvalue=9.76e-10;sequence=TGTGGCTAAAT;
-phiX174	fimo	polypeptide_motif	814	824	88.9	+	.	Name=1;ID=1-11-phiX174;pvalue=1.28e-09;sequence=TGCGTCAAAAA;
-phiX174	fimo	polypeptide_motif	2832	2842	88.5	+	.	Name=1;ID=1-12-phiX174;pvalue=1.42e-09;sequence=TTGGTCTAACT;
-phiX174	fimo	polypeptide_motif	3830	3840	87.7	+	.	Name=1;ID=1-13-phiX174;pvalue=1.7e-09;sequence=TATTGATAAAG;
-phiX174	fimo	polypeptide_motif	3560	3570	87.2	+	.	Name=1;ID=1-14-phiX174;pvalue=1.89e-09;sequence=TGCGTCTATTA;
-phiX174	fimo	polypeptide_motif	2882	2892	86.4	+	.	Name=1;ID=1-15-phiX174;pvalue=2.29e-09;sequence=AGGTTATTAAA;
-phiX174	fimo	polypeptide_motif	4453	4463	85.9	+	.	Name=1;ID=1-16-phiX174;pvalue=2.58e-09;sequence=AAGGTATTAAG;
-phiX174	fimo	polypeptide_motif	2493	2503	85.1	+	.	Name=1;ID=1-17-phiX174;pvalue=3.06e-09;sequence=GACACCTAAAG;
-phiX174	fimo	polypeptide_motif	4104	4114	85.1	+	.	Name=1;ID=1-18-phiX174;pvalue=3.08e-09;sequence=GGCTTCCATAA;
-phiX174	fimo	polypeptide_motif	4955	4965	85.1	+	.	Name=1;ID=1-19-phiX174;pvalue=3.08e-09;sequence=TGATGCTAAAG;
-phiX174	fimo	polypeptide_motif	1885	1895	84.4	+	.	Name=1;ID=1-20-phiX174;pvalue=3.61e-09;sequence=TGCGACTAAAG;
-phiX174	fimo	polypeptide_motif	3376	3386	84.2	+	.	Name=1;ID=1-21-phiX174;pvalue=3.81e-09;sequence=AGAATCAAAAA;
-phiX174	fimo	polypeptide_motif	52	62	83.9	+	.	Name=1;ID=1-22-phiX174;pvalue=4.06e-09;sequence=TGAGTCGAAAA;
-phiX174	fimo	polypeptide_motif	1390	1400	83.7	+	.	Name=1;ID=1-23-phiX174;pvalue=4.26e-09;sequence=TATCTATAACA;
-phiX174	fimo	polypeptide_motif	2017	2027	83.4	+	.	Name=1;ID=1-24-phiX174;pvalue=4.6e-09;sequence=TTCGTCTAAGA;
-phiX174	fimo	polypeptide_motif	1000	1010	83.1	+	.	Name=1;ID=1-25-phiX174;pvalue=4.88e-09;sequence=TATGTCTAATA;
-phiX174	fimo	polypeptide_motif	1555	1565	82.5	+	.	Name=1;ID=1-26-phiX174;pvalue=5.58e-09;sequence=GACTTCTACCA;
-phiX174	fimo	polypeptide_motif	4430	4440	82.5	+	.	Name=1;ID=1-27-phiX174;pvalue=5.62e-09;sequence=TGAGTATAATT;
-phiX174	fimo	polypeptide_motif	1927	1937	82.3	+	.	Name=1;ID=1-28-phiX174;pvalue=5.82e-09;sequence=GACTTATACCG;
-phiX174	fimo	polypeptide_motif	2981	2991	82.1	+	.	Name=1;ID=1-29-phiX174;pvalue=6.13e-09;sequence=CATGTCTAAAT;
-phiX174	fimo	polypeptide_motif	4203	4213	 82	+	.	Name=1;ID=1-30-phiX174;pvalue=6.34e-09;sequence=GACGGCCATAA;
-phiX174	fimo	polypeptide_motif	1669	1679	81.9	+	.	Name=1;ID=1-31-phiX174;pvalue=6.4e-09;sequence=TGGAGGTAAAA;
-phiX174	fimo	polypeptide_motif	3260	3270	81.5	+	.	Name=1;ID=1-32-phiX174;pvalue=7.01e-09;sequence=CGCTGATAAAG;
-phiX174	fimo	polypeptide_motif	3047	3057	81.3	+	.	Name=1;ID=1-33-phiX174;pvalue=7.4e-09;sequence=TACCGATAACA;
-phiX174	fimo	polypeptide_motif	4176	4186	81.2	+	.	Name=1;ID=1-34-phiX174;pvalue=7.6e-09;sequence=GAGTTCGATAA;
-phiX174	fimo	polypeptide_motif	4118	4128	81.1	+	.	Name=1;ID=1-35-phiX174;pvalue=7.7e-09;sequence=GATGGATAACC;
-phiX174	fimo	polypeptide_motif	5370	5380	80.9	+	.	Name=1;ID=1-36-phiX174;pvalue=8.03e-09;sequence=GGCGTATCCAA;
-phiX174	fimo	polypeptide_motif	1242	1252	80.5	+	.	Name=1;ID=1-37-phiX174;pvalue=8.94e-09;sequence=AGTGGATTAAG;
-phiX174	fimo	polypeptide_motif	2583	2593	80.5	+	.	Name=1;ID=1-38-phiX174;pvalue=8.94e-09;sequence=TACATCTGTCA;
-phiX174	fimo	polypeptide_motif	698	708	80.4	+	.	Name=1;ID=1-39-phiX174;pvalue=9.13e-09;sequence=TACGGAAAACA;
-phiX174	fimo	polypeptide_motif	2299	2309	80.3	+	.	Name=1;ID=1-40-phiX174;pvalue=9.26e-09;sequence=TGAGGTTATAA;
-phiX174	fimo	polypeptide_motif	4189	4199	80.1	+	.	Name=1;ID=1-41-phiX174;pvalue=9.69e-09;sequence=GTGATATGTAT;
-phiX174	fimo	polypeptide_motif	275	285	80.1	+	.	Name=1;ID=1-42-phiX174;pvalue=9.85e-09;sequence=GGTTTAGATAT;
-phiX174	fimo	polypeptide_motif	1801	1811	 80	+	.	Name=1;ID=1-43-phiX174;pvalue=1e-08;sequence=GACCTATAAAC;
-phiX174	fimo	polypeptide_motif	1386	1396	79.9	+	.	Name=1;ID=1-44-phiX174;pvalue=1.03e-08;sequence=TGAATATCTAT;
-phiX174	fimo	polypeptide_motif	1303	1313	79.8	+	.	Name=1;ID=1-45-phiX174;pvalue=1.03e-08;sequence=TGGTTATATTG;
-phiX174	fimo	polypeptide_motif	3772	3782	79.8	+	.	Name=1;ID=1-46-phiX174;pvalue=1.04e-08;sequence=AGGATATTTCT;
-phiX174	fimo	polypeptide_motif	1288	1298	79.8	+	.	Name=1;ID=1-47-phiX174;pvalue=1.04e-08;sequence=GACTGTTAACA;
-phiX174	fimo	polypeptide_motif	2577	2587	79.7	+	.	Name=1;ID=1-48-phiX174;pvalue=1.08e-08;sequence=GATGGATACAT;
-phiX174	fimo	polypeptide_motif	937	947	79.6	+	.	Name=1;ID=1-49-phiX174;pvalue=1.08e-08;sequence=TTGGTATGTAG;
-phiX174	fimo	polypeptide_motif	904	914	79.5	+	.	Name=1;ID=1-50-phiX174;pvalue=1.11e-08;sequence=AGGTACTAAAG;
-phiX174	fimo	polypeptide_motif	2279	2289	79.4	+	.	Name=1;ID=1-51-phiX174;pvalue=1.13e-08;sequence=TCGTGATAAAA;
-phiX174	fimo	polypeptide_motif	3164	3174	79.3	+	.	Name=1;ID=1-52-phiX174;pvalue=1.16e-08;sequence=AGCTGGTAAAG;
-phiX174	fimo	polypeptide_motif	24	34	79.1	+	.	Name=1;ID=1-53-phiX174;pvalue=1.23e-08;sequence=AGAAGTTAACA;
-phiX174	fimo	polypeptide_motif	838	848	78.9	+	.	Name=1;ID=1-54-phiX174;pvalue=1.27e-08;sequence=GAGTGATGTAA;
-phiX174	fimo	polypeptide_motif	853	863	78.9	+	.	Name=1;ID=1-55-phiX174;pvalue=1.27e-08;sequence=TAAAGGTAAAA;
-phiX174	fimo	polypeptide_motif	1984	1994	78.6	+	.	Name=1;ID=1-56-phiX174;pvalue=1.36e-08;sequence=AATTTCTATGA;
-phiX174	fimo	polypeptide_motif	1	11	78.3	+	.	Name=1;ID=1-57-phiX174;pvalue=1.46e-08;sequence=GAGTTTTATCG;
-phiX174	fimo	polypeptide_motif	4307	4317	78.3	+	.	Name=1;ID=1-58-phiX174;pvalue=1.47e-08;sequence=TATTAATAACA;
-phiX174	fimo	polypeptide_motif	4303	4313	78.2	+	.	Name=1;ID=1-59-phiX174;pvalue=1.52e-08;sequence=TTGATATTAAT;
-phiX174	fimo	polypeptide_motif	5033	5043	 78	+	.	Name=1;ID=1-60-phiX174;pvalue=1.58e-08;sequence=GTCAGATATGG;
-phiX174	fimo	polypeptide_motif	2579	2589	77.6	+	.	Name=1;ID=1-61-phiX174;pvalue=1.73e-08;sequence=TGGATACATCT;
-phiX174	fimo	polypeptide_motif	322	332	77.4	+	.	Name=1;ID=1-62-phiX174;pvalue=1.82e-08;sequence=GACATTTTAAA;
-phiX174	fimo	polypeptide_motif	5001	5011	76.8	+	.	Name=1;ID=1-63-phiX174;pvalue=2.09e-08;sequence=GGTTTCTATGT;
-phiX174	fimo	polypeptide_motif	4217	4227	76.7	+	.	Name=1;ID=1-64-phiX174;pvalue=2.15e-08;sequence=TGCTTCTGACG;
-phiX174	fimo	polypeptide_motif	4262	4272	76.6	+	.	Name=1;ID=1-65-phiX174;pvalue=2.18e-08;sequence=AATGGATGAAT;
-phiX174	fimo	polypeptide_motif	3569	3579	76.5	+	.	Name=1;ID=1-66-phiX174;pvalue=2.26e-08;sequence=TATGGAAAACA;
-phiX174	fimo	polypeptide_motif	194	204	76.4	+	.	Name=1;ID=1-67-phiX174;pvalue=2.29e-08;sequence=ATCAACTAACG;
-phiX174	fimo	polypeptide_motif	131	141	 76	+	.	Name=1;ID=1-68-phiX174;pvalue=2.49e-08;sequence=AAATGAGAAAA;
-phiX174	fimo	polypeptide_motif	1491	1501	75.9	+	.	Name=1;ID=1-69-phiX174;pvalue=2.55e-08;sequence=GCCATCTCAAA;
-phiX174	fimo	polypeptide_motif	434	444	75.7	+	.	Name=1;ID=1-70-phiX174;pvalue=2.67e-08;sequence=GGCCTCTATTA;
-phiX174	fimo	polypeptide_motif	4565	4575	75.6	+	.	Name=1;ID=1-71-phiX174;pvalue=2.73e-08;sequence=TTGGTTTATCG;
-phiX174	fimo	polypeptide_motif	102	112	75.6	+	.	Name=1;ID=1-72-phiX174;pvalue=2.75e-08;sequence=GAATTAAATCG;
-phiX174	fimo	polypeptide_motif	903	913	75.5	+	.	Name=1;ID=1-73-phiX174;pvalue=2.82e-08;sequence=GAGGTACTAAA;
-phiX174	fimo	polypeptide_motif	4748	4758	75.2	+	.	Name=1;ID=1-74-phiX174;pvalue=3.01e-08;sequence=TACAGCTAATG;
-phiX174	fimo	polypeptide_motif	2622	2632	 75	+	.	Name=1;ID=1-75-phiX174;pvalue=3.16e-08;sequence=TGCTGATATTG;
-phiX174	fimo	polypeptide_motif	467	477	74.7	+	.	Name=1;ID=1-76-phiX174;pvalue=3.35e-08;sequence=TTTGGATTTAA;
-phiX174	fimo	polypeptide_motif	4033	4043	74.6	+	.	Name=1;ID=1-77-phiX174;pvalue=3.44e-08;sequence=AGCGTATCGAG;
-phiX174	fimo	polypeptide_motif	1348	1358	74.6	+	.	Name=1;ID=1-78-phiX174;pvalue=3.46e-08;sequence=TACCAATAAAA;
-phiX174	fimo	polypeptide_motif	239	249	74.4	+	.	Name=1;ID=1-79-phiX174;pvalue=3.62e-08;sequence=AGTGGCTTAAT;
-phiX174	fimo	polypeptide_motif	500	510	74.1	+	.	Name=1;ID=1-80-phiX174;pvalue=3.84e-08;sequence=GACGAGTAACA;
-phiX174	fimo	polypeptide_motif	3001	3011	 74	+	.	Name=1;ID=1-81-phiX174;pvalue=3.93e-08;sequence=GCGGTCAAAAA;
-phiX174	fimo	polypeptide_motif	3776	3786	 74	+	.	Name=1;ID=1-82-phiX174;pvalue=3.98e-08;sequence=TATTTCTAATG;
-phiX174	fimo	polypeptide_motif	2026	2036	73.9	+	.	Name=1;ID=1-83-phiX174;pvalue=4.06e-08;sequence=GAAGTTTAAGA;
-phiX174	fimo	polypeptide_motif	4237	4247	73.8	+	.	Name=1;ID=1-84-phiX174;pvalue=4.12e-08;sequence=AGTTTGTATCT;
-phiX174	fimo	polypeptide_motif	803	813	73.7	+	.	Name=1;ID=1-85-phiX174;pvalue=4.24e-08;sequence=AGAAGAAAACG;
-phiX174	fimo	polypeptide_motif	3770	3780	73.6	+	.	Name=1;ID=1-86-phiX174;pvalue=4.35e-08;sequence=AAAGGATATTT;
-phiX174	fimo	polypeptide_motif	3429	3439	73.5	+	.	Name=1;ID=1-87-phiX174;pvalue=4.45e-08;sequence=GAGATGCAAAA;
-phiX174	fimo	polypeptide_motif	99	109	73.5	+	.	Name=1;ID=1-88-phiX174;pvalue=4.48e-08;sequence=TACGAATTAAA;
-phiX174	fimo	polypeptide_motif	67	77	73.2	+	.	Name=1;ID=1-89-phiX174;pvalue=4.78e-08;sequence=TCTTGATAAAG;
-phiX174	fimo	polypeptide_motif	5332	5342	72.9	+	.	Name=1;ID=1-90-phiX174;pvalue=5.13e-08;sequence=ATCTGCTCAAA;
-phiX174	fimo	polypeptide_motif	277	287	72.9	+	.	Name=1;ID=1-91-phiX174;pvalue=5.14e-08;sequence=TTTAGATATGA;
-phiX174	fimo	polypeptide_motif	4338	4348	72.8	+	.	Name=1;ID=1-92-phiX174;pvalue=5.18e-08;sequence=GGGGACGAAAA;
-phiX174	fimo	polypeptide_motif	3812	3822	72.8	+	.	Name=1;ID=1-93-phiX174;pvalue=5.28e-08;sequence=GGTTGATATTT;
-phiX174	fimo	polypeptide_motif	1909	1919	72.6	+	.	Name=1;ID=1-94-phiX174;pvalue=5.51e-08;sequence=TAACGCTAAAG;
-phiX174	fimo	polypeptide_motif	3000	3010	72.6	+	.	Name=1;ID=1-95-phiX174;pvalue=5.54e-08;sequence=GGCGGTCAAAA;
-phiX174	fimo	polypeptide_motif	3891	3901	72.4	+	.	Name=1;ID=1-96-phiX174;pvalue=5.75e-08;sequence=ATTGGCTCTAA;
-phiX174	fimo	polypeptide_motif	3079	3089	72.4	+	.	Name=1;ID=1-97-phiX174;pvalue=5.76e-08;sequence=CTGGTATTAAA;
-phiX174	fimo	polypeptide_motif	37	47	72.4	+	.	Name=1;ID=1-98-phiX174;pvalue=5.79e-08;sequence=TTCGGATATTT;
-phiX174	fimo	polypeptide_motif	380	390	72.2	+	.	Name=1;ID=1-99-phiX174;pvalue=6.01e-08;sequence=GTAAGAAATCA;
--- a/test-data/fimo_output_html_1.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html xmlns:cis="http://zlab.bu.edu/schema/cisml" xmlns:fimo="http://noble.gs.washington.edu/schema/cisml" xmlns:mem="http://noble.gs.washington.edu/meme">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta charset="UTF-8">
-<title>FIMO Results</title>
-<style type="text/css">
-td.left {text-align: left;}
-td.right {text-align: right; padding-right: 1cm;}
-</style>
-</head>
-<body bgcolor="#D5F0FF">
-<a name="top_buttons"></a>
-<hr>
-<table summary="buttons" align="left" cellspacing="0">
-<tr>
-<td bgcolor="#00FFFF"><a href="#database_and_motifs"><b>Database and Motifs</b></a></td>
-<td bgcolor="#DDFFDD"><a href="#sec_i"><b>High-scoring Motif Occurences</b></a></td>
-<td bgcolor="#DDDDFF"><a href="#debugging_information"><b>Debugging Information</b></a></td>
-</tr>
-</table>
-<br/>
-<br/>
-<hr/>
-<center><big><b>FIMO - Motif search tool</b></big></center>
-<hr>
-<p>
-For further information on how to interpret these results
-or to get a copy of the FIMO software please access
-<a href="http://meme.nbcr.net">http://meme.nbcr.net</a></p>
-<p>If you use FIMO in your research, please cite the following paper:<br>
-Charles E. Grant, Timothy L. Bailey, and William Stafford Noble,
-"FIMO: Scanning for occurrences of a given motif",
-<i>Bioinformatics</i>, <b>27</b>(7):1017-1018, 2011.
-<a href="http://bioinformatics.oxfordjournals.org/content/27/7/1017">[full text]</a></p>
-<hr>
-<center><big><b><a name="database_and_motifs">DATABASE AND MOTIFS</a></b></big></center>
-<hr>
-<div style="padding-left: 0.75in; line-height: 1em; font-family: monospace;">
-<p>
-  <br />
-  Database contains 1 sequences, 5386 residues
-</p>
-<p>
-  <table>
-    <thead>
-      <tr>
-        <th style="border-bottom: 1px dashed;">MOTIF</th>
-        <th style="border-bottom: 1px dashed; padding-left: 1em;">WIDTH</th>
-        <th style="border-bottom: 1px dashed; padding-left: 1em;text-align:left;" >
-         BEST POSSIBLE MATCH
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td style="text-align:right;">1</td>
-        <td style="text-align:right;padding-left: 1em;">11</td>
-        <td style="text-align:left;padding-left: 1em;">GGGGTATAAAA</td>
-       </tr>
-    </tbody>
-  </table>
-</p>
-<p>
-Random model letter frequencies (from non-redundant database):
-<br/>
-
-A 0.073 C 0.018 D 0.052 E 0.062 F 0.040 G 0.069 H 0.022 I 0.056 K 0.058 
-L 0.092 M 0.023 N 0.046 P 0.051 Q 0.041 R 0.052 S 0.074 T 0.059 V 0.064 
-W 0.013 Y 0.033 </p>
-</div>
-<hr>
-<center><big><b><a name="sec_i">SECTION I: HIGH-SCORING MOTIF OCCURENCES</a></b></big></center>
-<hr>
-<ul>
-<li>
-There were 1937 motif occurences with a p-value less than 0.0001.
-<b>Only the most significant 1000 matches are shown here.</b>
-
-The full set of motif occurences can be seen in the
-tab-delimited plain text output file
-<a href="fimo.txt">fimo.txt</a>, 
-the GFF file 
-<a href="fimo.gff">fimo.gff</a> 
-which may be suitable for uploading to the 
-<a href="http://genome.ucsc.edu/cgi-bin/hgTables">UCSC Genome Table Browser</a>
-(assuming the FASTA input sequences included genomic coordinates in UCSC or Galaxy format),
-or the XML file 
-<a href="fimo.xml">fimo.xml</a>.
-</li>
-<li>
-The p-value of a motif occurrence is defined as the
-probability of a random sequence of the same length as the motif
-matching that position of the sequence with as good or better a score.
-</li>
-<li>
-The score for the match of a position in a sequence to a motif
--- a/test-data/fimo_output_html_2.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html xmlns:cis="http://zlab.bu.edu/schema/cisml" xmlns:fimo="http://noble.gs.washington.edu/schema/cisml" xmlns:mem="http://noble.gs.washington.edu/meme">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta charset="UTF-8">
-<title>FIMO Results</title>
-<style type="text/css">
-td.left {text-align: left;}
-td.right {text-align: right; padding-right: 1cm;}
-</style>
-</head>
-<body bgcolor="#D5F0FF">
-<a name="top_buttons"></a>
-<hr>
-<table summary="buttons" align="left" cellspacing="0">
-<tr>
-<td bgcolor="#00FFFF"><a href="#database_and_motifs"><b>Database and Motifs</b></a></td>
-<td bgcolor="#DDFFDD"><a href="#sec_i"><b>High-scoring Motif Occurences</b></a></td>
-<td bgcolor="#DDDDFF"><a href="#debugging_information"><b>Debugging Information</b></a></td>
-</tr>
-</table>
-<br/>
-<br/>
-<hr/>
-<center><big><b>FIMO - Motif search tool</b></big></center>
-<hr>
-<p>
-For further information on how to interpret these results
-or to get a copy of the FIMO software please access
-<a href="http://meme.nbcr.net">http://meme.nbcr.net</a></p>
-<p>If you use FIMO in your research, please cite the following paper:<br>
-Charles E. Grant, Timothy L. Bailey, and William Stafford Noble,
-"FIMO: Scanning for occurrences of a given motif",
-<i>Bioinformatics</i>, <b>27</b>(7):1017-1018, 2011.
-<a href="http://bioinformatics.oxfordjournals.org/content/27/7/1017">[full text]</a></p>
-<hr>
-<center><big><b><a name="database_and_motifs">DATABASE AND MOTIFS</a></b></big></center>
-<hr>
-<div style="padding-left: 0.75in; line-height: 1em; font-family: monospace;">
-<p>
-  <br />
-  Database contains 1 sequences, 5386 residues
-</p>
-<p>
-  <table>
-    <thead>
-      <tr>
-        <th style="border-bottom: 1px dashed;">MOTIF</th>
-        <th style="border-bottom: 1px dashed; padding-left: 1em;">WIDTH</th>
-        <th style="border-bottom: 1px dashed; padding-left: 1em;text-align:left;" >
-         BEST POSSIBLE MATCH
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td style="text-align:right;">1</td>
-        <td style="text-align:right;padding-left: 1em;">11</td>
-        <td style="text-align:left;padding-left: 1em;">GGGGTATAAAA</td>
-       </tr>
-    </tbody>
-  </table>
-</p>
-<p>
-Random model letter frequencies (from non-redundant database):
-<br/>
-
-A 0.073 C 0.018 D 0.052 E 0.062 F 0.040 G 0.069 H 0.022 I 0.056 K 0.058 
-L 0.092 M 0.023 N 0.046 P 0.051 Q 0.041 R 0.052 S 0.074 T 0.059 V 0.064 
-W 0.013 Y 0.033 </p>
-</div>
-<hr>
-<center><big><b><a name="sec_i">SECTION I: HIGH-SCORING MOTIF OCCURENCES</a></b></big></center>
-<hr>
-<ul>
-<li>
-There were 1937 motif occurences with a p-value less than 0.0001.
-<b>Only the most significant 1000 matches are shown here.</b>
-
-The full set of motif occurences can be seen in the
-tab-delimited plain text output file
-<a href="fimo.txt">fimo.txt</a>, 
-the GFF file 
-<a href="fimo.gff">fimo.gff</a> 
-which may be suitable for uploading to the 
-<a href="http://genome.ucsc.edu/cgi-bin/hgTables">UCSC Genome Table Browser</a>
-(assuming the FASTA input sequences included genomic coordinates in UCSC or Galaxy format),
-or the XML file 
-<a href="fimo.xml">fimo.xml</a>.
-</li>
-<li>
-The p-value of a motif occurrence is defined as the
-probability of a random sequence of the same length as the motif
-matching that position of the sequence with as good or better a score.
-</li>
-<li>
-The score for the match of a position in a sequence to a motif
--- a/test-data/fimo_output_interval_1.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#chr	start	end	pattern name	score	strand	matched sequence	p-value	q-value
-phiX174	1387	1398	1	+	+	1.25e-09	29.4024	6.36e-11
-phiX174	846	857	1	+	+	1.25e-09	29.122	7.02e-11
-phiX174	2300	2311	1	+	+	1.29e-09	27.6463	1.08e-10
-phiX174	5062	5073	1	+	+	2.25e-09	25.5366	2.73e-10
-phiX174	988	999	1	+	+	2.25e-09	25.3049	3.15e-10
-phiX174	4712	4723	1	+	+	3.48e-09	23.622	7.74e-10
-phiX174	5047	5058	1	+	+	3.48e-09	23.3293	8.51e-10
-phiX174	854	865	1	+	+	3.48e-09	23.3049	8.64e-10
-phiX174	3154	3165	1	+	+	3.48e-09	23.0366	9.76e-10
-phiX174	5008	5019	1	+	+	3.48e-09	23.0366	9.76e-10
-phiX174	813	824	1	+	+	4.14e-09	22.5854	1.28e-09
-phiX174	2831	2842	1	+	+	4.23e-09	22.3415	1.42e-09
-phiX174	3829	3840	1	+	+	4.68e-09	21.8293	1.7e-09
-phiX174	3559	3570	1	+	+	4.82e-09	21.5976	1.89e-09
-phiX174	2881	2892	1	+	+	5.46e-09	21.1951	2.29e-09
-phiX174	4452	4463	1	+	+	5.75e-09	20.8902	2.58e-09
-phiX174	2492	2503	1	+	+	5.79e-09	20.3415	3.06e-09
-phiX174	4103	4114	1	+	+	5.79e-09	20.3171	3.08e-09
-phiX174	4954	4965	1	+	+	5.79e-09	20.3171	3.08e-09
-phiX174	1884	1895	1	+	+	6.45e-09	19.9268	3.61e-09
-phiX174	3375	3386	1	+	+	6.48e-09	19.7683	3.81e-09
-phiX174	51	62	1	+	+	6.58e-09	19.5732	4.06e-09
-phiX174	1389	1400	1	+	+	6.61e-09	19.378	4.26e-09
-phiX174	2016	2027	1	+	+	6.85e-09	19.0854	4.6e-09
-phiX174	999	1010	1	+	+	6.97e-09	18.878	4.88e-09
-phiX174	1554	1565	1	+	+	7.37e-09	18.439	5.58e-09
-phiX174	4429	4440	1	+	+	7.37e-09	18.4268	5.62e-09
-phiX174	1926	1937	1	+	+	7.37e-09	18.2927	5.82e-09
-phiX174	2980	2991	1	+	+	7.37e-09	18.0732	6.13e-09
-phiX174	4202	4213	1	+	+	7.37e-09	17.9268	6.34e-09
-phiX174	1668	1679	1	+	+	7.37e-09	17.8659	6.4e-09
-phiX174	3259	3270	1	+	+	7.82e-09	17.5	7.01e-09
-phiX174	3046	3057	1	+	+	7.85e-09	17.2805	7.4e-09
-phiX174	4175	4186	1	+	+	7.85e-09	17.1829	7.6e-09
-phiX174	4117	4128	1	+	+	7.85e-09	17.1341	7.7e-09
-phiX174	5369	5380	1	+	+	7.87e-09	16.9878	8.03e-09
-phiX174	1241	1252	1	+	+	7.87e-09	16.5122	8.94e-09
-phiX174	2582	2593	1	+	+	7.87e-09	16.5122	8.94e-09
-phiX174	697	708	1	+	+	7.87e-09	16.4146	9.13e-09
-phiX174	2298	2309	1	+	+	7.87e-09	16.3537	9.26e-09
-phiX174	4188	4199	1	+	+	7.87e-09	16.1707	9.69e-09
-phiX174	274	285	1	+	+	7.87e-09	16.0976	9.85e-09
-phiX174	1800	1811	1	+	+	7.87e-09	16.0366	1e-08
-phiX174	1385	1396	1	+	+	7.87e-09	15.9268	1.03e-08
-phiX174	1302	1313	1	+	+	7.87e-09	15.9024	1.03e-08
-phiX174	3771	3782	1	+	+	7.87e-09	15.878	1.04e-08
-phiX174	1287	1298	1	+	+	7.87e-09	15.8659	1.04e-08
-phiX174	2576	2587	1	+	+	7.87e-09	15.7683	1.08e-08
-phiX174	936	947	1	+	+	7.87e-09	15.7561	1.08e-08
-phiX174	903	914	1	+	+	7.93e-09	15.6585	1.11e-08
-phiX174	2278	2289	1	+	+	7.93e-09	15.5854	1.13e-08
-phiX174	3163	3174	1	+	+	7.98e-09	15.5	1.16e-08
-phiX174	23	34	1	+	+	8.24e-09	15.3293	1.23e-08
-phiX174	837	848	1	+	+	8.24e-09	15.2561	1.27e-08
-phiX174	852	863	1	+	+	8.24e-09	15.2561	1.27e-08
-phiX174	1983	1994	1	+	+	8.68e-09	15.0244	1.36e-08
-phiX174	0	11	1	+	+	9.05e-09	14.8293	1.46e-08
-phiX174	4306	4317	1	+	+	9.05e-09	14.7927	1.47e-08
-phiX174	4302	4313	1	+	+	9.19e-09	14.6585	1.52e-08
-phiX174	5032	5043	1	+	+	9.41e-09	14.561	1.58e-08
-phiX174	2578	2589	1	+	+	1.01e-08	14.2927	1.73e-08
-phiX174	321	332	1	+	+	1.05e-08	14.1951	1.82e-08
-phiX174	5000	5011	1	+	+	1.19e-08	13.8902	2.09e-08
-phiX174	4216	4227	1	+	+	1.2e-08	13.8171	2.15e-08
-phiX174	4261	4272	1	+	+	1.2e-08	13.7805	2.18e-08
-phiX174	3568	3579	1	+	+	1.22e-08	13.7073	2.26e-08
-phiX174	193	204	1	+	+	1.22e-08	13.6829	2.29e-08
-phiX174	130	141	1	+	+	1.31e-08	13.4756	2.49e-08
-phiX174	1490	1501	1	+	+	1.32e-08	13.4024	2.55e-08
-phiX174	433	444	1	+	+	1.36e-08	13.2805	2.67e-08
-phiX174	4564	4575	1	+	+	1.36e-08	13.2439	2.73e-08
-phiX174	101	112	1	+	+	1.36e-08	13.2195	2.75e-08
-phiX174	902	913	1	+	+	1.38e-08	13.1463	2.82e-08
-phiX174	4747	4758	1	+	+	1.45e-08	12.9756	3.01e-08
-phiX174	2621	2632	1	+	+	1.5e-08	12.8659	3.16e-08
-phiX174	466	477	1	+	+	1.57e-08	12.7317	3.35e-08
-phiX174	4032	4043	1	+	+	1.58e-08	12.6829	3.44e-08
-phiX174	1347	1358	1	+	+	1.58e-08	12.6707	3.46e-08
-phiX174	238	249	1	+	+	1.64e-08	12.5732	3.62e-08
-phiX174	499	510	1	+	+	1.71e-08	12.4634	3.84e-08
-phiX174	3000	3011	1	+	+	1.73e-08	12.4146	3.93e-08
-phiX174	3775	3786	1	+	+	1.73e-08	12.378	3.98e-08
-phiX174	2025	2036	1	+	+	1.75e-08	12.3293	4.06e-08
-phiX174	4236	4247	1	+	+	1.75e-08	12.3049	4.12e-08
-phiX174	802	813	1	+	+	1.78e-08	12.2439	4.24e-08
-phiX174	3769	3780	1	+	+	1.81e-08	12.1829	4.35e-08
-phiX174	3428	3439	1	+	+	1.82e-08	12.122	4.45e-08
-phiX174	98	109	1	+	+	1.82e-08	12.1098	4.48e-08
-phiX174	66	77	1	+	+	1.92e-08	11.9268	4.78e-08
-phiX174	5331	5342	1	+	+	2.01e-08	11.7195	5.13e-08
-phiX174	276	287	1	+	+	2.01e-08	11.7073	5.14e-08
-phiX174	4337	4348	1	+	+	2.01e-08	11.6951	5.18e-08
-phiX174	3811	3822	1	+	+	2.03e-08	11.6585	5.28e-08
-phiX174	1908	1919	1	+	+	2.08e-08	11.5488	5.51e-08
-phiX174	2999	3010	1	+	+	2.08e-08	11.5366	5.54e-08
-phiX174	3890	3901	1	+	+	2.11e-08	11.439	5.75e-08
-phiX174	3078	3089	1	+	+	2.11e-08	11.4268	5.76e-08
-phiX174	36	47	1	+	+	2.11e-08	11.4146	5.79e-08
-phiX174	379	390	1	+	+	2.17e-08	11.3293	6.01e-08
--- a/test-data/fimo_output_interval_2.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#chr	start	end	pattern name	score	strand	matched sequence	p-value	q-value
-phiX174	1387	1398	1	+	+	0	29.4024	6.36e-11
-phiX174	846	857	1	+	+	0	29.122	7.02e-11
-phiX174	2300	2311	1	+	+	0	27.6463	1.08e-10
-phiX174	5062	5073	1	+	+	0	25.5366	2.73e-10
-phiX174	988	999	1	+	+	0	25.3049	3.15e-10
-phiX174	4712	4723	1	+	+	0	23.622	7.74e-10
-phiX174	5047	5058	1	+	+	0	23.3293	8.51e-10
-phiX174	854	865	1	+	+	0	23.3049	8.64e-10
-phiX174	3154	3165	1	+	+	0	23.0366	9.76e-10
-phiX174	5008	5019	1	+	+	0	23.0366	9.76e-10
-phiX174	813	824	1	+	+	0	22.5854	1.28e-09
-phiX174	2831	2842	1	+	+	0	22.3415	1.42e-09
-phiX174	3829	3840	1	+	+	0	21.8293	1.7e-09
-phiX174	3559	3570	1	+	+	0	21.5976	1.89e-09
-phiX174	2881	2892	1	+	+	0	21.1951	2.29e-09
-phiX174	4452	4463	1	+	+	0	20.8902	2.58e-09
-phiX174	2492	2503	1	+	+	0	20.3415	3.06e-09
-phiX174	4103	4114	1	+	+	0	20.3171	3.08e-09
-phiX174	4954	4965	1	+	+	0	20.3171	3.08e-09
-phiX174	1884	1895	1	+	+	0	19.9268	3.61e-09
-phiX174	3375	3386	1	+	+	0	19.7683	3.81e-09
-phiX174	51	62	1	+	+	0	19.5732	4.06e-09
-phiX174	1389	1400	1	+	+	0	19.378	4.26e-09
-phiX174	2016	2027	1	+	+	0	19.0854	4.6e-09
-phiX174	999	1010	1	+	+	0	18.878	4.88e-09
-phiX174	1554	1565	1	+	+	0	18.439	5.58e-09
-phiX174	4429	4440	1	+	+	0	18.4268	5.62e-09
-phiX174	1926	1937	1	+	+	0	18.2927	5.82e-09
-phiX174	2980	2991	1	+	+	0	18.0732	6.13e-09
-phiX174	4202	4213	1	+	+	0	17.9268	6.34e-09
-phiX174	1668	1679	1	+	+	0	17.8659	6.4e-09
-phiX174	3259	3270	1	+	+	0	17.5	7.01e-09
-phiX174	3046	3057	1	+	+	0	17.2805	7.4e-09
-phiX174	4175	4186	1	+	+	0	17.1829	7.6e-09
-phiX174	4117	4128	1	+	+	0	17.1341	7.7e-09
-phiX174	5369	5380	1	+	+	0	16.9878	8.03e-09
-phiX174	1241	1252	1	+	+	0	16.5122	8.94e-09
-phiX174	2582	2593	1	+	+	0	16.5122	8.94e-09
-phiX174	697	708	1	+	+	0	16.4146	9.13e-09
-phiX174	2298	2309	1	+	+	0	16.3537	9.26e-09
-phiX174	4188	4199	1	+	+	0	16.1707	9.69e-09
-phiX174	274	285	1	+	+	0	16.0976	9.85e-09
-phiX174	1800	1811	1	+	+	0	16.0366	1e-08
-phiX174	1385	1396	1	+	+	0	15.9268	1.03e-08
-phiX174	1302	1313	1	+	+	0	15.9024	1.03e-08
-phiX174	3771	3782	1	+	+	0	15.878	1.04e-08
-phiX174	1287	1298	1	+	+	0	15.8659	1.04e-08
-phiX174	2576	2587	1	+	+	0	15.7683	1.08e-08
-phiX174	936	947	1	+	+	0	15.7561	1.08e-08
-phiX174	903	914	1	+	+	0	15.6585	1.11e-08
-phiX174	2278	2289	1	+	+	0	15.5854	1.13e-08
-phiX174	3163	3174	1	+	+	0	15.5	1.16e-08
-phiX174	23	34	1	+	+	0	15.3293	1.23e-08
-phiX174	837	848	1	+	+	0	15.2561	1.27e-08
-phiX174	852	863	1	+	+	0	15.2561	1.27e-08
-phiX174	1983	1994	1	+	+	0	15.0244	1.36e-08
-phiX174	0	11	1	+	+	0	14.8293	1.46e-08
-phiX174	4306	4317	1	+	+	0	14.7927	1.47e-08
-phiX174	4302	4313	1	+	+	0	14.6585	1.52e-08
-phiX174	5032	5043	1	+	+	0	14.561	1.58e-08
-phiX174	2578	2589	1	+	+	0	14.2927	1.73e-08
-phiX174	321	332	1	+	+	0	14.1951	1.82e-08
-phiX174	5000	5011	1	+	+	0	13.8902	2.09e-08
-phiX174	4216	4227	1	+	+	0	13.8171	2.15e-08
-phiX174	4261	4272	1	+	+	0	13.7805	2.18e-08
-phiX174	3568	3579	1	+	+	0	13.7073	2.26e-08
-phiX174	193	204	1	+	+	0	13.6829	2.29e-08
-phiX174	130	141	1	+	+	0	13.4756	2.49e-08
-phiX174	1490	1501	1	+	+	0	13.4024	2.55e-08
-phiX174	433	444	1	+	+	0	13.2805	2.67e-08
-phiX174	4564	4575	1	+	+	0	13.2439	2.73e-08
-phiX174	101	112	1	+	+	0	13.2195	2.75e-08
-phiX174	902	913	1	+	+	0	13.1463	2.82e-08
-phiX174	4747	4758	1	+	+	0	12.9756	3.01e-08
-phiX174	2621	2632	1	+	+	0	12.8659	3.16e-08
-phiX174	466	477	1	+	+	0	12.7317	3.35e-08
-phiX174	4032	4043	1	+	+	0	12.6829	3.44e-08
-phiX174	1347	1358	1	+	+	0	12.6707	3.46e-08
-phiX174	238	249	1	+	+	0	12.5732	3.62e-08
-phiX174	499	510	1	+	+	0	12.4634	3.84e-08
-phiX174	3000	3011	1	+	+	0	12.4146	3.93e-08
-phiX174	3775	3786	1	+	+	0	12.378	3.98e-08
-phiX174	2025	2036	1	+	+	0	12.3293	4.06e-08
-phiX174	4236	4247	1	+	+	0	12.3049	4.12e-08
-phiX174	802	813	1	+	+	0	12.2439	4.24e-08
-phiX174	3769	3780	1	+	+	0	12.1829	4.35e-08
-phiX174	3428	3439	1	+	+	0	12.122	4.45e-08
-phiX174	98	109	1	+	+	0	12.1098	4.48e-08
-phiX174	66	77	1	+	+	0	11.9268	4.78e-08
-phiX174	5331	5342	1	+	+	0	11.7195	5.13e-08
-phiX174	276	287	1	+	+	0	11.7073	5.14e-08
-phiX174	4337	4348	1	+	+	0	11.6951	5.18e-08
-phiX174	3811	3822	1	+	+	0	11.6585	5.28e-08
-phiX174	1908	1919	1	+	+	0	11.5488	5.51e-08
-phiX174	2999	3010	1	+	+	0	11.5366	5.54e-08
-phiX174	3890	3901	1	+	+	0	11.439	5.75e-08
-phiX174	3078	3089	1	+	+	0	11.4268	5.76e-08
-phiX174	36	47	1	+	+	0	11.4146	5.79e-08
-phiX174	379	390	1	+	+	0	11.3293	6.01e-08
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test1.gff	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,12 @@
+##gff-version 3
+chrM	fimo	nucleotide_motif	2299	2306	46.6	-	.	Name=TACTAAYM_chrM-;Alias=MEME-1;ID=TACTAAYM-MEME-1-1-chrM;pvalue=2.18e-05;qvalue= 0.142;sequence=TACTAACA;
+chrM	fimo	nucleotide_motif	6529	6536	46.6	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-2-chrM;pvalue=2.18e-05;qvalue= 0.142;sequence=TACTAACA;
+chrM	fimo	nucleotide_motif	7741	7748	46.6	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-3-chrM;pvalue=2.18e-05;qvalue= 0.142;sequence=TACTAACA;
+chrM	fimo	nucleotide_motif	13656	13663	46.6	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-4-chrM;pvalue=2.18e-05;qvalue= 0.142;sequence=TACTAACA;
+chrM	fimo	nucleotide_motif	13740	13747	46.6	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-5-chrM;pvalue=2.18e-05;qvalue= 0.142;sequence=TACTAACA;
+chrM	fimo	nucleotide_motif	861	868	 44	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-6-chrM;pvalue=3.96e-05;qvalue= 0.185;sequence=TACTAACC;
+chrM	fimo	nucleotide_motif	9346	9353	 44	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-7-chrM;pvalue=3.96e-05;qvalue= 0.185;sequence=TACTAACC;
+chrM	fimo	nucleotide_motif	3767	3774	41.8	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-8-chrM;pvalue=6.62e-05;qvalue= 0.216;sequence=TACTAATA;
+chrM	fimo	nucleotide_motif	5497	5504	41.8	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-9-chrM;pvalue=6.62e-05;qvalue= 0.216;sequence=TACTAATA;
+chrM	fimo	nucleotide_motif	10105	10112	41.8	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-10-chrM;pvalue=6.62e-05;qvalue= 0.216;sequence=TACTAATA;
+chrM	fimo	nucleotide_motif	10959	10966	40.6	+	.	Name=TACTAAYM_chrM+;Alias=MEME-1;ID=TACTAAYM-MEME-1-11-chrM;pvalue=8.79e-05;qvalue= 0.261;sequence=TACTAACT;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test1.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html xmlns:cis="http://zlab.bu.edu/schema/cisml" xmlns:fimo="http://noble.gs.washington.edu/schema/cisml" xmlns:mem="http://noble.gs.washington.edu/meme">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="UTF-8">
+<title>FIMO Results</title>
+<style type="text/css">
+td.left {text-align: left;}
+td.right {text-align: right; padding-right: 1cm;}
+</style>
+</head>
+<body bgcolor="#D5F0FF">
+<a name="top_buttons"></a>
+<hr>
+<table summary="buttons" align="left" cellspacing="0">
+<tr>
+<td bgcolor="#00FFFF"><a href="#database_and_motifs"><b>Database and Motifs</b></a></td>
+<td bgcolor="#DDFFDD"><a href="#sec_i"><b>High-scoring Motif Occurences</b></a></td>
+<td bgcolor="#DDDDFF"><a href="#debugging_information"><b>Debugging Information</b></a></td>
+</tr>
+</table>
+<br/>
+<br/>
+<hr/>
+<center><big><b>FIMO - Motif search tool</b></big></center>
+<hr>
+<p>
+FIMO version 4.12.0, (Release date: Tue Jun 27 16:22:50 2017 -0700)
+</p>
+<p>
+For further information on how to interpret these results
+or to get a copy of the FIMO software please access
+<a href="http://meme.nbcr.net">http://meme.nbcr.net</a></p>
+<p>If you use FIMO in your research, please cite the following paper:<br>
+Charles E. Grant, Timothy L. Bailey, and William Stafford Noble,
+"FIMO: Scanning for occurrences of a given motif",
+<i>Bioinformatics</i>, <b>27</b>(7):1017-1018, 2011.
+<a href="http://bioinformatics.oxfordjournals.org/content/27/7/1017">[full text]</a></p>
+<hr>
+<center><big><b><a name="database_and_motifs">DATABASE AND MOTIFS</a></b></big></center>
+<hr>
+<div style="padding-left: 0.75in; line-height: 1em; font-family: monospace;">
+<p>
+  DATABASE hsa_chrM.fa
+  <br />
+  Database contains 1 sequences, 16569 residues
+</p>
+<p>
+  MOTIFS meme_fimo_input_1.xml (DNA)
+  <table>
+    <thead>
+      <tr>
+        <th style="border-bottom: 1px dashed;">MOTIF</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;">WIDTH</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;text-align:left;" >
+         BEST POSSIBLE MATCH
+        </th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td style="text-align:right;">TACTAAYM</td>
+        <td style="text-align:right;padding-left: 1em;">8</td>
+        <td style="text-align:left;padding-left: 1em;">TACTAACA</td>
+       </tr>
+    </tbody>
+  </table>
+</p>
+<p>
+Random model letter frequencies (--nrdb--):
+<br/>
+
+A 0.275 C 0.225 G 0.225 T 0.275 </p>
+</div>
+<hr>
+<center><big><b><a name="sec_i">SECTION I: HIGH-SCORING MOTIF OCCURENCES</a></b></big></center>
+<hr>
+<ul>
+<li>
+There were 11 motif occurences with a p-value less than 0.0001.
+
+The full set of motif occurences can be seen in the
+tab-delimited plain text output file
+<a href="fimo.txt">fimo.txt</a>, 
+the GFF file 
+<a href="fimo.gff">fimo.gff</a> 
+which may be suitable for uploading to the 
+<a href="http://genome.ucsc.edu/cgi-bin/hgTables">UCSC Genome Table Browser</a>
+(assuming the FASTA input sequences included genomic coordinates in UCSC or Galaxy format),
+or the XML file 
+<a href="fimo.xml">fimo.xml</a>.
+</li>
+<li>
+The p-value of a motif occurrence is defined as the
+probability of a random sequence of the same length as the motif
+matching that position of the sequence with as good or better a score.
+</li>
+<li>
+The score for the match of a position in a sequence to a motif
+is computed by summing the appropriate entries from each column of
+the position-dependent scoring matrix that represents the motif.
+</li>
+<li>
+The q-value of a motif occurrence is defined as the
+false discovery rate if the occurrence is accepted as significant.
+</li>
+<li>The table is sorted by increasing p-value.</li>
+</ul>
+<table border="1">
+<thead>
+<tr>
+<th>Motif ID</th>
+<th>Alt ID</th>
+<th>Sequence Name</th>
+<th>Strand</th>
+<th>Start</th>
+<th>End</th>
+<th>p-value</th>
+<th>q-value</th>
+<th>Matched Sequence</th>
+</tr>
+</thead>
+<tbody>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2299</td>
+      <td style="text-align:left;">2306</td>
+      <td style="text-align:left;">2.18e-05</td>
+      <td style="text-align:left;">0.142</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6529</td>
+      <td style="text-align:left;">6536</td>
+      <td style="text-align:left;">2.18e-05</td>
+      <td style="text-align:left;">0.142</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7741</td>
+      <td style="text-align:left;">7748</td>
+      <td style="text-align:left;">2.18e-05</td>
+      <td style="text-align:left;">0.142</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13656</td>
+      <td style="text-align:left;">13663</td>
+      <td style="text-align:left;">2.18e-05</td>
+      <td style="text-align:left;">0.142</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13740</td>
+      <td style="text-align:left;">13747</td>
+      <td style="text-align:left;">2.18e-05</td>
+      <td style="text-align:left;">0.142</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">861</td>
+      <td style="text-align:left;">868</td>
+      <td style="text-align:left;">3.96e-05</td>
+      <td style="text-align:left;">0.185</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9346</td>
+      <td style="text-align:left;">9353</td>
+      <td style="text-align:left;">3.96e-05</td>
+      <td style="text-align:left;">0.185</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3767</td>
+      <td style="text-align:left;">3774</td>
+      <td style="text-align:left;">6.62e-05</td>
+      <td style="text-align:left;">0.216</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5497</td>
+      <td style="text-align:left;">5504</td>
+      <td style="text-align:left;">6.62e-05</td>
+      <td style="text-align:left;">0.216</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10105</td>
+      <td style="text-align:left;">10112</td>
+      <td style="text-align:left;">6.62e-05</td>
+      <td style="text-align:left;">0.216</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">TACTAAYM</td>
+      <td style="text-align:left;">MEME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10959</td>
+      <td style="text-align:left;">10966</td>
+      <td style="text-align:left;">8.79e-05</td>
+      <td style="text-align:left;">0.261</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TACTAACT</td>
+   </tr>
+</tbody>
+</table>
+
+<hr>
+<center><big><b><a name="debugging_information">DEBUGGING INFORMATION</a></b></big></center>
+<hr>
+<p>
+Command line:
+</p>
+<pre>
+fimo -oc fimo_test1_out meme_fimo_input_1.xml hsa_chrM.fa
+</pre>
+<p>
+Settings:
+</p>
+<pre>
+<table>
+  <tr>
+    <td style="padding-right: 2em">output_directory = fimo_test1_out</td>
+    <td style="padding-left: 5em; padding-right: 2em">MEME file name = meme_fimo_input_1.xml</td>
+    <td style="padding-left: 5em; padding-right: 2em">sequence file name = hsa_chrM.fa</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">background file name = --nrdb--</td>
+    <td style="padding-left: 5em; padding-right: 2em">alphabet = DNA</td>
+    <td style="padding-left: 5em; padding-right: 2em">max stored scores = 100000</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">allow clobber = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">compute q-values = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">parse genomic coord. = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">text only = false</td>
+    <td style="padding-left: 5em; padding-right: 2em">scan both strands = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">max strand = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">threshold type = p-value</td>
+    <td style="padding-left: 5em; padding-right: 2em">output theshold = 0.0001</td>
+    <td style="padding-left: 5em; padding-right: 2em">pseudocount = 0.1</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">alpha = 1</td>
+    <td style="padding-left: 5em; padding-right: 2em">verbosity = 2</td>
+    <td style="padding-left: 5em; padding-right: 2em"></td>
+  </tr>
+
+</table>
+</pre>
+<p>
+This information can be useful in the event you wish to report a
+problem with the FIMO software.
+</p>
+<hr>
+<span style="background-color: #DDDDFF"><a href="#top_buttons"><b>Go to top</b></a></span>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test1.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,12 @@
+# motif_id	motif_alt_id	sequence_name	start	stop	strand	score	p-value	q-value	matched_sequence
+TACTAAYM	MEME-1	chrM	2299	2306	-	12.9701	2.18e-05	0.142	TACTAACA
+TACTAAYM	MEME-1	chrM	6529	6536	+	12.9701	2.18e-05	0.142	TACTAACA
+TACTAAYM	MEME-1	chrM	7741	7748	+	12.9701	2.18e-05	0.142	TACTAACA
+TACTAAYM	MEME-1	chrM	13656	13663	+	12.9701	2.18e-05	0.142	TACTAACA
+TACTAAYM	MEME-1	chrM	13740	13747	+	12.9701	2.18e-05	0.142	TACTAACA
+TACTAAYM	MEME-1	chrM	861	868	+	12.2836	3.96e-05	0.185	TACTAACC
+TACTAAYM	MEME-1	chrM	9346	9353	+	12.2836	3.96e-05	0.185	TACTAACC
+TACTAAYM	MEME-1	chrM	3767	3774	+	11.7164	6.62e-05	0.216	TACTAATA
+TACTAAYM	MEME-1	chrM	5497	5504	+	11.7164	6.62e-05	0.216	TACTAATA
+TACTAAYM	MEME-1	chrM	10105	10112	+	11.7164	6.62e-05	0.216	TACTAATA
+TACTAAYM	MEME-1	chrM	10959	10966	+	11.6567	8.79e-05	0.261	TACTAACT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test1.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Begin document body -->
+<fimo version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation=  xmlns:fimo="http://noble.gs.washington.edu/schema/fimo"
+>
+<command-line>fimo -oc fimo_test1_out meme_fimo_input_1.xml hsa_chrM.fa</command-line>
+<settings>
+<setting name="output directory">fimo_test1_out</setting>
+<setting name="MEME file name">meme_fimo_input_1.xml</setting>
+<setting name="sequence file name">hsa_chrM.fa</setting>
+<setting name="background file name">--nrdb--</setting>
+<setting name="allow clobber">true</setting>
+<setting name="compute q-values">true</setting>
+<setting name="parse genomic coord.">false</setting>
+<setting name="text only">false</setting>
+<setting name="scan both strands">true</setting>
+<setting name="output threshold">0.0001</setting>
+<setting name="threshold type">p-value</setting>
+<setting name="max stored scores">100000</setting>
+<setting name="pseudocount">0.1</setting>
+<setting name="verbosity">2</setting>
+</settings>
+<sequence-data num-sequences="1" num-residues="16569" />
+<alphabet name="DNA" like="dna">
+<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+<letter id="V" symbol="V" equals="ACG" name="Not T"/>
+<letter id="H" symbol="H" equals="ACT" name="Not G"/>
+<letter id="D" symbol="D" equals="AGT" name="Not C"/>
+<letter id="B" symbol="B" equals="CGT" name="Not A"/>
+<letter id="M" symbol="M" equals="AC" name="Amino"/>
+<letter id="R" symbol="R" equals="AG" name="Purine"/>
+<letter id="W" symbol="W" equals="AT" name="Weak"/>
+<letter id="S" symbol="S" equals="CG" name="Strong"/>
+<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+<letter id="K" symbol="K" equals="GT" name="Keto"/>
+</alphabet>
+<motif name="TACTAAYM" alt="MEME-1" width="8" best-possible-match="TACTAACA"/>
+<background source="--nrdb--">
+<value letter="A">0.275</value>
+<value letter="C">0.225</value>
+<value letter="G">0.225</value>
+<value letter="T">0.275</value>
+</background>
+<cisml-file>cisml.xml</cisml-file>
+</fimo>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test2.gff	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,12 @@
+##gff-version 3
+chrM	fimo	nucleotide_motif	440	446	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-1-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	2093	2099	40.9	-	.	Name=ACTAAYH_chrM-;Alias=DREME-1;ID=ACTAAYH-DREME-1-2-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	2299	2305	40.9	-	.	Name=ACTAAYH_chrM-;Alias=DREME-1;ID=ACTAAYH-DREME-1-3-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	5186	5192	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-4-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	6530	6536	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-5-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	7742	7748	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-6-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	13657	13663	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-7-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	13741	13747	40.9	+	.	Name=ACTAAYH_chrM+;Alias=DREME-1;ID=ACTAAYH-DREME-1-8-chrM;pvalue=8.2e-05;qvalue= 0.327;sequence=ACTAACA;
+chrM	fimo	nucleotide_motif	510	516	43.8	+	.	Name=CCAGCAY_chrM+;Alias=DREME-5;ID=CCAGCAY-DREME-5-1-chrM;pvalue=4.15e-05;qvalue= 0.668;sequence=CCAGCAC;
+chrM	fimo	nucleotide_motif	5137	5143	43.8	+	.	Name=CCAGCAY_chrM+;Alias=DREME-5;ID=CCAGCAY-DREME-5-2-chrM;pvalue=4.15e-05;qvalue= 0.668;sequence=CCAGCAC;
+chrM	fimo	nucleotide_motif	4241	4247	40.3	+	.	Name=CCAGCAY_chrM+;Alias=DREME-5;ID=CCAGCAY-DREME-5-3-chrM;pvalue=9.37e-05;qvalue= 1;sequence=CCAGCAT;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test2.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,325 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html xmlns:cis="http://zlab.bu.edu/schema/cisml" xmlns:fimo="http://noble.gs.washington.edu/schema/cisml" xmlns:mem="http://noble.gs.washington.edu/meme">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="UTF-8">
+<title>FIMO Results</title>
+<style type="text/css">
+td.left {text-align: left;}
+td.right {text-align: right; padding-right: 1cm;}
+</style>
+</head>
+<body bgcolor="#D5F0FF">
+<a name="top_buttons"></a>
+<hr>
+<table summary="buttons" align="left" cellspacing="0">
+<tr>
+<td bgcolor="#00FFFF"><a href="#database_and_motifs"><b>Database and Motifs</b></a></td>
+<td bgcolor="#DDFFDD"><a href="#sec_i"><b>High-scoring Motif Occurences</b></a></td>
+<td bgcolor="#DDDDFF"><a href="#debugging_information"><b>Debugging Information</b></a></td>
+</tr>
+</table>
+<br/>
+<br/>
+<hr/>
+<center><big><b>FIMO - Motif search tool</b></big></center>
+<hr>
+<p>
+FIMO version 4.12.0, (Release date: Tue Jun 27 16:22:50 2017 -0700)
+</p>
+<p>
+For further information on how to interpret these results
+or to get a copy of the FIMO software please access
+<a href="http://meme.nbcr.net">http://meme.nbcr.net</a></p>
+<p>If you use FIMO in your research, please cite the following paper:<br>
+Charles E. Grant, Timothy L. Bailey, and William Stafford Noble,
+"FIMO: Scanning for occurrences of a given motif",
+<i>Bioinformatics</i>, <b>27</b>(7):1017-1018, 2011.
+<a href="http://bioinformatics.oxfordjournals.org/content/27/7/1017">[full text]</a></p>
+<hr>
+<center><big><b><a name="database_and_motifs">DATABASE AND MOTIFS</a></b></big></center>
+<hr>
+<div style="padding-left: 0.75in; line-height: 1em; font-family: monospace;">
+<p>
+  DATABASE hsa_chrM.fa
+  <br />
+  Database contains 1 sequences, 16569 residues
+</p>
+<p>
+  MOTIFS dreme_fimo_input_1.xml (DNA)
+  <table>
+    <thead>
+      <tr>
+        <th style="border-bottom: 1px dashed;">MOTIF</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;">WIDTH</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;text-align:left;" >
+         BEST POSSIBLE MATCH
+        </th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td style="text-align:right;">ACTAAYH</td>
+        <td style="text-align:right;padding-left: 1em;">7</td>
+        <td style="text-align:left;padding-left: 1em;">ACTAACA</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">YTAACA</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">TTAACA</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">TCTGT</td>
+        <td style="text-align:right;padding-left: 1em;">5</td>
+        <td style="text-align:left;padding-left: 1em;">TCTGT</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">SCCAGG</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">CCCAGG</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">CCAGCAY</td>
+        <td style="text-align:right;padding-left: 1em;">7</td>
+        <td style="text-align:left;padding-left: 1em;">CCAGCAC</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">GMATGT</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">GAATGT</td>
+       </tr>
+    </tbody>
+  </table>
+</p>
+<p>
+Random model letter frequencies (fimo_background_probs_hsa_chrM.txt):
+<br/>
+
+A 0.278 C 0.222 G 0.222 T 0.278 </p>
+</div>
+<hr>
+<center><big><b><a name="sec_i">SECTION I: HIGH-SCORING MOTIF OCCURENCES</a></b></big></center>
+<hr>
+<ul>
+<li>
+There were 11 motif occurences with a p-value less than 0.0001.
+
+The full set of motif occurences can be seen in the
+tab-delimited plain text output file
+<a href="fimo.txt">fimo.txt</a>, 
+the GFF file 
+<a href="fimo.gff">fimo.gff</a> 
+which may be suitable for uploading to the 
+<a href="http://genome.ucsc.edu/cgi-bin/hgTables">UCSC Genome Table Browser</a>
+(assuming the FASTA input sequences included genomic coordinates in UCSC or Galaxy format),
+or the XML file 
+<a href="fimo.xml">fimo.xml</a>.
+</li>
+<li>
+The p-value of a motif occurrence is defined as the
+probability of a random sequence of the same length as the motif
+matching that position of the sequence with as good or better a score.
+</li>
+<li>
+The score for the match of a position in a sequence to a motif
+is computed by summing the appropriate entries from each column of
+the position-dependent scoring matrix that represents the motif.
+</li>
+<li>
+The q-value of a motif occurrence is defined as the
+false discovery rate if the occurrence is accepted as significant.
+</li>
+<li>The table is sorted by increasing p-value.</li>
+</ul>
+<table border="1">
+<thead>
+<tr>
+<th>Motif ID</th>
+<th>Alt ID</th>
+<th>Sequence Name</th>
+<th>Strand</th>
+<th>Start</th>
+<th>End</th>
+<th>p-value</th>
+<th>q-value</th>
+<th>Matched Sequence</th>
+</tr>
+</thead>
+<tbody>
+    <tr>
+      <td style="text-align:left;">CCAGCAY</td>
+      <td style="text-align:left;">DREME-5</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">510</td>
+      <td style="text-align:left;">516</td>
+      <td style="text-align:left;">4.15e-05</td>
+      <td style="text-align:left;">0.668</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCAGCAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">CCAGCAY</td>
+      <td style="text-align:left;">DREME-5</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5137</td>
+      <td style="text-align:left;">5143</td>
+      <td style="text-align:left;">4.15e-05</td>
+      <td style="text-align:left;">0.668</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCAGCAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">440</td>
+      <td style="text-align:left;">446</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2093</td>
+      <td style="text-align:left;">2099</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2299</td>
+      <td style="text-align:left;">2305</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5186</td>
+      <td style="text-align:left;">5192</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6530</td>
+      <td style="text-align:left;">6536</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7742</td>
+      <td style="text-align:left;">7748</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13657</td>
+      <td style="text-align:left;">13663</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13741</td>
+      <td style="text-align:left;">13747</td>
+      <td style="text-align:left;">8.2e-05</td>
+      <td style="text-align:left;">0.327</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">CCAGCAY</td>
+      <td style="text-align:left;">DREME-5</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4241</td>
+      <td style="text-align:left;">4247</td>
+      <td style="text-align:left;">9.37e-05</td>
+      <td style="text-align:left;">1</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCAGCAT</td>
+   </tr>
+</tbody>
+</table>
+
+<hr>
+<center><big><b><a name="debugging_information">DEBUGGING INFORMATION</a></b></big></center>
+<hr>
+<p>
+Command line:
+</p>
+<pre>
+fimo -oc fimo_test2_out --bgfile fimo_background_probs_hsa_chrM.txt dreme_fimo_input_1.xml hsa_chrM.fa
+</pre>
+<p>
+Settings:
+</p>
+<pre>
+<table>
+  <tr>
+    <td style="padding-right: 2em">output_directory = fimo_test2_out</td>
+    <td style="padding-left: 5em; padding-right: 2em">MEME file name = dreme_fimo_input_1.xml</td>
+    <td style="padding-left: 5em; padding-right: 2em">sequence file name = hsa_chrM.fa</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">background file name = fimo_background_probs_hsa_chrM.txt</td>
+    <td style="padding-left: 5em; padding-right: 2em">alphabet = DNA</td>
+    <td style="padding-left: 5em; padding-right: 2em">max stored scores = 100000</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">allow clobber = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">compute q-values = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">parse genomic coord. = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">text only = false</td>
+    <td style="padding-left: 5em; padding-right: 2em">scan both strands = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">max strand = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">threshold type = p-value</td>
+    <td style="padding-left: 5em; padding-right: 2em">output theshold = 0.0001</td>
+    <td style="padding-left: 5em; padding-right: 2em">pseudocount = 0.1</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">alpha = 1</td>
+    <td style="padding-left: 5em; padding-right: 2em">verbosity = 2</td>
+    <td style="padding-left: 5em; padding-right: 2em"></td>
+  </tr>
+
+</table>
+</pre>
+<p>
+This information can be useful in the event you wish to report a
+problem with the FIMO software.
+</p>
+<hr>
+<span style="background-color: #DDDDFF"><a href="#top_buttons"><b>Go to top</b></a></span>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test2.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,12 @@
+# motif_id	motif_alt_id	sequence_name	start	stop	strand	score	p-value	q-value	matched_sequence
+CCAGCAY	DREME-5	chrM	510	516	+	13.5843	4.15e-05	0.668	CCAGCAC
+CCAGCAY	DREME-5	chrM	5137	5143	+	13.5843	4.15e-05	0.668	CCAGCAC
+ACTAAYH	DREME-1	chrM	440	446	+	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	2093	2099	-	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	2299	2305	-	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	5186	5192	+	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	6530	6536	+	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	7742	7748	+	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	13657	13663	+	11.7385	8.2e-05	0.327	ACTAACA
+ACTAAYH	DREME-1	chrM	13741	13747	+	11.7385	8.2e-05	0.327	ACTAACA
+CCAGCAY	DREME-5	chrM	4241	4247	+	13.1461	9.37e-05	1	CCAGCAT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test2.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Begin document body -->
+<fimo version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation=  xmlns:fimo="http://noble.gs.washington.edu/schema/fimo"
+>
+<command-line>fimo -oc fimo_test2_out --bgfile fimo_background_probs_hsa_chrM.txt dreme_fimo_input_1.xml hsa_chrM.fa</command-line>
+<settings>
+<setting name="output directory">fimo_test2_out</setting>
+<setting name="MEME file name">dreme_fimo_input_1.xml</setting>
+<setting name="sequence file name">hsa_chrM.fa</setting>
+<setting name="background file name">fimo_background_probs_hsa_chrM.txt</setting>
+<setting name="allow clobber">true</setting>
+<setting name="compute q-values">true</setting>
+<setting name="parse genomic coord.">false</setting>
+<setting name="text only">false</setting>
+<setting name="scan both strands">true</setting>
+<setting name="output threshold">0.0001</setting>
+<setting name="threshold type">p-value</setting>
+<setting name="max stored scores">100000</setting>
+<setting name="pseudocount">0.1</setting>
+<setting name="verbosity">2</setting>
+</settings>
+<sequence-data num-sequences="1" num-residues="16569" />
+<alphabet name="DNA" like="dna">
+<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+<letter id="V" symbol="V" equals="ACG" name="Not T"/>
+<letter id="H" symbol="H" equals="ACT" name="Not G"/>
+<letter id="D" symbol="D" equals="AGT" name="Not C"/>
+<letter id="B" symbol="B" equals="CGT" name="Not A"/>
+<letter id="M" symbol="M" equals="AC" name="Amino"/>
+<letter id="R" symbol="R" equals="AG" name="Purine"/>
+<letter id="W" symbol="W" equals="AT" name="Weak"/>
+<letter id="S" symbol="S" equals="CG" name="Strong"/>
+<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+<letter id="K" symbol="K" equals="GT" name="Keto"/>
+</alphabet>
+<motif name="ACTAAYH" alt="DREME-1" width="7" best-possible-match="ACTAACA"/>
+<motif name="YTAACA" alt="DREME-2" width="6" best-possible-match="TTAACA"/>
+<motif name="TCTGT" alt="DREME-3" width="5" best-possible-match="TCTGT"/>
+<motif name="SCCAGG" alt="DREME-4" width="6" best-possible-match="CCCAGG"/>
+<motif name="CCAGCAY" alt="DREME-5" width="7" best-possible-match="CCAGCAC"/>
+<motif name="GMATGT" alt="DREME-6" width="6" best-possible-match="GAATGT"/>
+<background source="fimo_background_probs_hsa_chrM.txt">
+<value letter="A">0.278</value>
+<value letter="C">0.222</value>
+<value letter="G">0.222</value>
+<value letter="T">0.278</value>
+</background>
+<cisml-file>cisml.xml</cisml-file>
+</fimo>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test3.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,5891 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html xmlns:cis="http://zlab.bu.edu/schema/cisml" xmlns:fimo="http://noble.gs.washington.edu/schema/cisml" xmlns:mem="http://noble.gs.washington.edu/meme">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="UTF-8">
+<title>FIMO Results</title>
+<style type="text/css">
+td.left {text-align: left;}
+td.right {text-align: right; padding-right: 1cm;}
+</style>
+</head>
+<body bgcolor="#D5F0FF">
+<a name="top_buttons"></a>
+<hr>
+<table summary="buttons" align="left" cellspacing="0">
+<tr>
+<td bgcolor="#00FFFF"><a href="#database_and_motifs"><b>Database and Motifs</b></a></td>
+<td bgcolor="#DDFFDD"><a href="#sec_i"><b>High-scoring Motif Occurences</b></a></td>
+<td bgcolor="#DDDDFF"><a href="#debugging_information"><b>Debugging Information</b></a></td>
+</tr>
+</table>
+<br/>
+<br/>
+<hr/>
+<center><big><b>FIMO - Motif search tool</b></big></center>
+<hr>
+<p>
+FIMO version 4.12.0, (Release date: Tue Jun 27 16:22:50 2017 -0700)
+</p>
+<p>
+For further information on how to interpret these results
+or to get a copy of the FIMO software please access
+<a href="http://meme.nbcr.net">http://meme.nbcr.net</a></p>
+<p>If you use FIMO in your research, please cite the following paper:<br>
+Charles E. Grant, Timothy L. Bailey, and William Stafford Noble,
+"FIMO: Scanning for occurrences of a given motif",
+<i>Bioinformatics</i>, <b>27</b>(7):1017-1018, 2011.
+<a href="http://bioinformatics.oxfordjournals.org/content/27/7/1017">[full text]</a></p>
+<hr>
+<center><big><b><a name="database_and_motifs">DATABASE AND MOTIFS</a></b></big></center>
+<hr>
+<div style="padding-left: 0.75in; line-height: 1em; font-family: monospace;">
+<p>
+  DATABASE hsa_chrM.fa
+  <br />
+  Database contains 1 sequences, 16569 residues
+</p>
+<p>
+  MOTIFS dreme_fimo_input_1.xml (DNA)
+  <table>
+    <thead>
+      <tr>
+        <th style="border-bottom: 1px dashed;">MOTIF</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;">WIDTH</th>
+        <th style="border-bottom: 1px dashed; padding-left: 1em;text-align:left;" >
+         BEST POSSIBLE MATCH
+        </th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td style="text-align:right;">ACTAAYH</td>
+        <td style="text-align:right;padding-left: 1em;">7</td>
+        <td style="text-align:left;padding-left: 1em;">ACTAACA</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">YTAACA</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">TTAACA</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">TCTGT</td>
+        <td style="text-align:right;padding-left: 1em;">5</td>
+        <td style="text-align:left;padding-left: 1em;">TCTGT</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">SCCAGG</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">CCCAGG</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">CCAGCAY</td>
+        <td style="text-align:right;padding-left: 1em;">7</td>
+        <td style="text-align:left;padding-left: 1em;">CCAGCAC</td>
+       </tr>
+      <tr>
+        <td style="text-align:right;">GMATGT</td>
+        <td style="text-align:right;padding-left: 1em;">6</td>
+        <td style="text-align:left;padding-left: 1em;">GAATGT</td>
+       </tr>
+    </tbody>
+  </table>
+</p>
+<p>
+Random model letter frequencies (--uniform--):
+<br/>
+
+A 0.250 C 0.250 G 0.250 T 0.250 </p>
+</div>
+<hr>
+<center><big><b><a name="sec_i">SECTION I: HIGH-SCORING MOTIF OCCURENCES</a></b></big></center>
+<hr>
+<ul>
+<li>
+There were 517 motif occurences with a p-value less than 0.01.
+
+The full set of motif occurences can be seen in the
+tab-delimited plain text output file
+<a href="fimo.txt">fimo.txt</a>, 
+the GFF file 
+<a href="fimo.gff">fimo.gff</a> 
+which may be suitable for uploading to the 
+<a href="http://genome.ucsc.edu/cgi-bin/hgTables">UCSC Genome Table Browser</a>
+(assuming the FASTA input sequences included genomic coordinates in UCSC or Galaxy format),
+or the XML file 
+<a href="fimo.xml">fimo.xml</a>.
+</li>
+<li>
+The p-value of a motif occurrence is defined as the
+probability of a random sequence of the same length as the motif
+matching that position of the sequence with as good or better a score.
+</li>
+<li>
+The score for the match of a position in a sequence to a motif
+is computed by summing the appropriate entries from each column of
+the position-dependent scoring matrix that represents the motif.
+</li>
+<li>
+The q-value of a motif occurrence is defined as the
+false discovery rate if the occurrence is accepted as significant.
+</li>
+<li>The table is sorted by increasing p-value.</li>
+</ul>
+<table border="1">
+<thead>
+<tr>
+<th>Motif ID</th>
+<th>Alt ID</th>
+<th>Sequence Name</th>
+<th>Strand</th>
+<th>Start</th>
+<th>End</th>
+<th>p-value</th>
+<th>q-value</th>
+<th>Matched Sequence</th>
+</tr>
+</thead>
+<tbody>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">440</td>
+      <td style="text-align:left;">446</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2093</td>
+      <td style="text-align:left;">2099</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2299</td>
+      <td style="text-align:left;">2305</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5186</td>
+      <td style="text-align:left;">5192</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6530</td>
+      <td style="text-align:left;">6536</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7742</td>
+      <td style="text-align:left;">7748</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13657</td>
+      <td style="text-align:left;">13663</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13741</td>
+      <td style="text-align:left;">13747</td>
+      <td style="text-align:left;">6.1e-05</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3768</td>
+      <td style="text-align:left;">3774</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5498</td>
+      <td style="text-align:left;">5504</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7736</td>
+      <td style="text-align:left;">7742</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9872</td>
+      <td style="text-align:left;">9878</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10106</td>
+      <td style="text-align:left;">10112</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10313</td>
+      <td style="text-align:left;">10319</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11818</td>
+      <td style="text-align:left;">11824</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15903</td>
+      <td style="text-align:left;">15909</td>
+      <td style="text-align:left;">0.000122</td>
+      <td style="text-align:left;">0.239</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7732</td>
+      <td style="text-align:left;">7738</td>
+      <td style="text-align:left;">0.000183</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10960</td>
+      <td style="text-align:left;">10966</td>
+      <td style="text-align:left;">0.000183</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">862</td>
+      <td style="text-align:left;">868</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1832</td>
+      <td style="text-align:left;">1838</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8679</td>
+      <td style="text-align:left;">8685</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8770</td>
+      <td style="text-align:left;">8776</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9347</td>
+      <td style="text-align:left;">9353</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9359</td>
+      <td style="text-align:left;">9365</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10302</td>
+      <td style="text-align:left;">10308</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14765</td>
+      <td style="text-align:left;">14771</td>
+      <td style="text-align:left;">0.000244</td>
+      <td style="text-align:left;">0.294</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4466</td>
+      <td style="text-align:left;">4472</td>
+      <td style="text-align:left;">0.000305</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11248</td>
+      <td style="text-align:left;">11254</td>
+      <td style="text-align:left;">0.000305</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">475</td>
+      <td style="text-align:left;">481</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7930</td>
+      <td style="text-align:left;">7936</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8649</td>
+      <td style="text-align:left;">8655</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8670</td>
+      <td style="text-align:left;">8676</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10768</td>
+      <td style="text-align:left;">10774</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11053</td>
+      <td style="text-align:left;">11059</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11101</td>
+      <td style="text-align:left;">11107</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12720</td>
+      <td style="text-align:left;">12726</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13149</td>
+      <td style="text-align:left;">13155</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14216</td>
+      <td style="text-align:left;">14222</td>
+      <td style="text-align:left;">0.000366</td>
+      <td style="text-align:left;">0.302</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">678</td>
+      <td style="text-align:left;">684</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1435</td>
+      <td style="text-align:left;">1441</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1524</td>
+      <td style="text-align:left;">1530</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2035</td>
+      <td style="text-align:left;">2041</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8440</td>
+      <td style="text-align:left;">8446</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9995</td>
+      <td style="text-align:left;">10001</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10225</td>
+      <td style="text-align:left;">10231</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12725</td>
+      <td style="text-align:left;">12731</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14393</td>
+      <td style="text-align:left;">14399</td>
+      <td style="text-align:left;">0.000549</td>
+      <td style="text-align:left;">0.366</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2294</td>
+      <td style="text-align:left;">2300</td>
+      <td style="text-align:left;">0.00061</td>
+      <td style="text-align:left;">0.398</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAATG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">206</td>
+      <td style="text-align:left;">212</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">237</td>
+      <td style="text-align:left;">243</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">370</td>
+      <td style="text-align:left;">376</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1630</td>
+      <td style="text-align:left;">1636</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1702</td>
+      <td style="text-align:left;">1708</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2309</td>
+      <td style="text-align:left;">2315</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2363</td>
+      <td style="text-align:left;">2369</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2370</td>
+      <td style="text-align:left;">2376</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2395</td>
+      <td style="text-align:left;">2401</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2761</td>
+      <td style="text-align:left;">2767</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2784</td>
+      <td style="text-align:left;">2790</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3191</td>
+      <td style="text-align:left;">3197</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3756</td>
+      <td style="text-align:left;">3762</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3873</td>
+      <td style="text-align:left;">3879</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3991</td>
+      <td style="text-align:left;">3997</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">4445</td>
+      <td style="text-align:left;">4451</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4734</td>
+      <td style="text-align:left;">4740</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5061</td>
+      <td style="text-align:left;">5067</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5177</td>
+      <td style="text-align:left;">5183</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5391</td>
+      <td style="text-align:left;">5397</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5680</td>
+      <td style="text-align:left;">5686</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">5686</td>
+      <td style="text-align:left;">5692</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6595</td>
+      <td style="text-align:left;">6601</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7146</td>
+      <td style="text-align:left;">7152</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7286</td>
+      <td style="text-align:left;">7292</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7714</td>
+      <td style="text-align:left;">7720</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7720</td>
+      <td style="text-align:left;">7726</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8344</td>
+      <td style="text-align:left;">8350</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8374</td>
+      <td style="text-align:left;">8380</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8460</td>
+      <td style="text-align:left;">8466</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9010</td>
+      <td style="text-align:left;">9016</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9257</td>
+      <td style="text-align:left;">9263</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9351</td>
+      <td style="text-align:left;">9357</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10127</td>
+      <td style="text-align:left;">10133</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10295</td>
+      <td style="text-align:left;">10301</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10496</td>
+      <td style="text-align:left;">10502</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10792</td>
+      <td style="text-align:left;">10798</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10798</td>
+      <td style="text-align:left;">10804</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10939</td>
+      <td style="text-align:left;">10945</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11023</td>
+      <td style="text-align:left;">11029</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11258</td>
+      <td style="text-align:left;">11264</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11314</td>
+      <td style="text-align:left;">11320</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11593</td>
+      <td style="text-align:left;">11599</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11650</td>
+      <td style="text-align:left;">11656</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11768</td>
+      <td style="text-align:left;">11774</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">11901</td>
+      <td style="text-align:left;">11907</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11941</td>
+      <td style="text-align:left;">11947</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12026</td>
+      <td style="text-align:left;">12032</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12245</td>
+      <td style="text-align:left;">12251</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12412</td>
+      <td style="text-align:left;">12418</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12530</td>
+      <td style="text-align:left;">12536</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12617</td>
+      <td style="text-align:left;">12623</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12736</td>
+      <td style="text-align:left;">12742</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13161</td>
+      <td style="text-align:left;">13167</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13626</td>
+      <td style="text-align:left;">13632</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13797</td>
+      <td style="text-align:left;">13803</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13830</td>
+      <td style="text-align:left;">13836</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13858</td>
+      <td style="text-align:left;">13864</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14185</td>
+      <td style="text-align:left;">14191</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14189</td>
+      <td style="text-align:left;">14195</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14548</td>
+      <td style="text-align:left;">14554</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14569</td>
+      <td style="text-align:left;">14575</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15469</td>
+      <td style="text-align:left;">15475</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15599</td>
+      <td style="text-align:left;">15605</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16227</td>
+      <td style="text-align:left;">16233</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16277</td>
+      <td style="text-align:left;">16283</td>
+      <td style="text-align:left;">0.00165</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">852</td>
+      <td style="text-align:left;">858</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">1449</td>
+      <td style="text-align:left;">1455</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4913</td>
+      <td style="text-align:left;">4919</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11278</td>
+      <td style="text-align:left;">11284</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13686</td>
+      <td style="text-align:left;">13692</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14582</td>
+      <td style="text-align:left;">14588</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14636</td>
+      <td style="text-align:left;">14642</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15703</td>
+      <td style="text-align:left;">15709</td>
+      <td style="text-align:left;">0.00177</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAGC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">152</td>
+      <td style="text-align:left;">158</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">234</td>
+      <td style="text-align:left;">240</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">472</td>
+      <td style="text-align:left;">478</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">645</td>
+      <td style="text-align:left;">651</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">671</td>
+      <td style="text-align:left;">677</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2305</td>
+      <td style="text-align:left;">2311</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2529</td>
+      <td style="text-align:left;">2535</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2744</td>
+      <td style="text-align:left;">2750</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2880</td>
+      <td style="text-align:left;">2886</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4158</td>
+      <td style="text-align:left;">4164</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4206</td>
+      <td style="text-align:left;">4212</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4301</td>
+      <td style="text-align:left;">4307</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4679</td>
+      <td style="text-align:left;">4685</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4728</td>
+      <td style="text-align:left;">4734</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4754</td>
+      <td style="text-align:left;">4760</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5036</td>
+      <td style="text-align:left;">5042</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5103</td>
+      <td style="text-align:left;">5109</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5153</td>
+      <td style="text-align:left;">5159</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">5962</td>
+      <td style="text-align:left;">5968</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6110</td>
+      <td style="text-align:left;">6116</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6155</td>
+      <td style="text-align:left;">6161</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6527</td>
+      <td style="text-align:left;">6533</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">6973</td>
+      <td style="text-align:left;">6979</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7295</td>
+      <td style="text-align:left;">7301</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7301</td>
+      <td style="text-align:left;">7307</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7300</td>
+      <td style="text-align:left;">7306</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7349</td>
+      <td style="text-align:left;">7355</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7351</td>
+      <td style="text-align:left;">7357</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7522</td>
+      <td style="text-align:left;">7528</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8739</td>
+      <td style="text-align:left;">8745</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8738</td>
+      <td style="text-align:left;">8744</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8945</td>
+      <td style="text-align:left;">8951</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8982</td>
+      <td style="text-align:left;">8988</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9613</td>
+      <td style="text-align:left;">9619</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9656</td>
+      <td style="text-align:left;">9662</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10055</td>
+      <td style="text-align:left;">10061</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10103</td>
+      <td style="text-align:left;">10109</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10246</td>
+      <td style="text-align:left;">10252</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10315</td>
+      <td style="text-align:left;">10321</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10336</td>
+      <td style="text-align:left;">10342</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10368</td>
+      <td style="text-align:left;">10374</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10526</td>
+      <td style="text-align:left;">10532</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10525</td>
+      <td style="text-align:left;">10531</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10574</td>
+      <td style="text-align:left;">10580</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10657</td>
+      <td style="text-align:left;">10663</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10699</td>
+      <td style="text-align:left;">10705</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10788</td>
+      <td style="text-align:left;">10794</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10858</td>
+      <td style="text-align:left;">10864</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10954</td>
+      <td style="text-align:left;">10960</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11873</td>
+      <td style="text-align:left;">11879</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">11958</td>
+      <td style="text-align:left;">11964</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12333</td>
+      <td style="text-align:left;">12339</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12349</td>
+      <td style="text-align:left;">12355</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12425</td>
+      <td style="text-align:left;">12431</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12471</td>
+      <td style="text-align:left;">12477</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12933</td>
+      <td style="text-align:left;">12939</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12972</td>
+      <td style="text-align:left;">12978</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13269</td>
+      <td style="text-align:left;">13275</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">13274</td>
+      <td style="text-align:left;">13280</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">13566</td>
+      <td style="text-align:left;">13572</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14210</td>
+      <td style="text-align:left;">14216</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14213</td>
+      <td style="text-align:left;">14219</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14251</td>
+      <td style="text-align:left;">14257</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14314</td>
+      <td style="text-align:left;">14320</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14510</td>
+      <td style="text-align:left;">14516</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14545</td>
+      <td style="text-align:left;">14551</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14773</td>
+      <td style="text-align:left;">14779</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">15627</td>
+      <td style="text-align:left;">15633</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15838</td>
+      <td style="text-align:left;">15844</td>
+      <td style="text-align:left;">0.00269</td>
+      <td style="text-align:left;">0.441</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">193</td>
+      <td style="text-align:left;">199</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">714</td>
+      <td style="text-align:left;">720</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1860</td>
+      <td style="text-align:left;">1866</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1870</td>
+      <td style="text-align:left;">1876</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2220</td>
+      <td style="text-align:left;">2226</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2901</td>
+      <td style="text-align:left;">2907</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4154</td>
+      <td style="text-align:left;">4160</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">4283</td>
+      <td style="text-align:left;">4289</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5099</td>
+      <td style="text-align:left;">5105</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5156</td>
+      <td style="text-align:left;">5162</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">5555</td>
+      <td style="text-align:left;">5561</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6142</td>
+      <td style="text-align:left;">6148</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6678</td>
+      <td style="text-align:left;">6684</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7169</td>
+      <td style="text-align:left;">7175</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8304</td>
+      <td style="text-align:left;">8310</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8456</td>
+      <td style="text-align:left;">8462</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8817</td>
+      <td style="text-align:left;">8823</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8949</td>
+      <td style="text-align:left;">8955</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9120</td>
+      <td style="text-align:left;">9126</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9852</td>
+      <td style="text-align:left;">9858</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10025</td>
+      <td style="text-align:left;">10031</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10964</td>
+      <td style="text-align:left;">10970</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11293</td>
+      <td style="text-align:left;">11299</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11347</td>
+      <td style="text-align:left;">11353</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12226</td>
+      <td style="text-align:left;">12232</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12516</td>
+      <td style="text-align:left;">12522</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13850</td>
+      <td style="text-align:left;">13856</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13862</td>
+      <td style="text-align:left;">13868</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14206</td>
+      <td style="text-align:left;">14212</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15185</td>
+      <td style="text-align:left;">15191</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15189</td>
+      <td style="text-align:left;">15195</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15603</td>
+      <td style="text-align:left;">15609</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15844</td>
+      <td style="text-align:left;">15850</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15848</td>
+      <td style="text-align:left;">15854</td>
+      <td style="text-align:left;">0.0036</td>
+      <td style="text-align:left;">0.501</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">21</td>
+      <td style="text-align:left;">27</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">381</td>
+      <td style="text-align:left;">387</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">529</td>
+      <td style="text-align:left;">535</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">547</td>
+      <td style="text-align:left;">553</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">823</td>
+      <td style="text-align:left;">829</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">873</td>
+      <td style="text-align:left;">879</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">910</td>
+      <td style="text-align:left;">916</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">978</td>
+      <td style="text-align:left;">984</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">1569</td>
+      <td style="text-align:left;">1575</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1596</td>
+      <td style="text-align:left;">1602</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1991</td>
+      <td style="text-align:left;">1997</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2578</td>
+      <td style="text-align:left;">2584</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2765</td>
+      <td style="text-align:left;">2771</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3031</td>
+      <td style="text-align:left;">3037</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3225</td>
+      <td style="text-align:left;">3231</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3883</td>
+      <td style="text-align:left;">3889</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4101</td>
+      <td style="text-align:left;">4107</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4191</td>
+      <td style="text-align:left;">4197</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4598</td>
+      <td style="text-align:left;">4604</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4874</td>
+      <td style="text-align:left;">4880</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5237</td>
+      <td style="text-align:left;">5243</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5839</td>
+      <td style="text-align:left;">5845</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5931</td>
+      <td style="text-align:left;">5937</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6335</td>
+      <td style="text-align:left;">6341</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7228</td>
+      <td style="text-align:left;">7234</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7781</td>
+      <td style="text-align:left;">7787</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8315</td>
+      <td style="text-align:left;">8321</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8508</td>
+      <td style="text-align:left;">8514</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8721</td>
+      <td style="text-align:left;">8727</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8805</td>
+      <td style="text-align:left;">8811</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9003</td>
+      <td style="text-align:left;">9009</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9076</td>
+      <td style="text-align:left;">9082</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9124</td>
+      <td style="text-align:left;">9130</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11548</td>
+      <td style="text-align:left;">11554</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11852</td>
+      <td style="text-align:left;">11858</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11876</td>
+      <td style="text-align:left;">11882</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11905</td>
+      <td style="text-align:left;">11911</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12013</td>
+      <td style="text-align:left;">12019</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12336</td>
+      <td style="text-align:left;">12342</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12363</td>
+      <td style="text-align:left;">12369</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13295</td>
+      <td style="text-align:left;">13301</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13672</td>
+      <td style="text-align:left;">13678</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13854</td>
+      <td style="text-align:left;">13860</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13998</td>
+      <td style="text-align:left;">14004</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14124</td>
+      <td style="text-align:left;">14130</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14384</td>
+      <td style="text-align:left;">14390</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14401</td>
+      <td style="text-align:left;">14407</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14624</td>
+      <td style="text-align:left;">14630</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14786</td>
+      <td style="text-align:left;">14792</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14910</td>
+      <td style="text-align:left;">14916</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15193</td>
+      <td style="text-align:left;">15199</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15631</td>
+      <td style="text-align:left;">15637</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15748</td>
+      <td style="text-align:left;">15754</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16066</td>
+      <td style="text-align:left;">16072</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16281</td>
+      <td style="text-align:left;">16287</td>
+      <td style="text-align:left;">0.00452</td>
+      <td style="text-align:left;">0.505</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">211</td>
+      <td style="text-align:left;">217</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">210</td>
+      <td style="text-align:left;">216</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">214</td>
+      <td style="text-align:left;">220</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">1961</td>
+      <td style="text-align:left;">1967</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2188</td>
+      <td style="text-align:left;">2194</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3771</td>
+      <td style="text-align:left;">3777</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3923</td>
+      <td style="text-align:left;">3929</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">4469</td>
+      <td style="text-align:left;">4475</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4543</td>
+      <td style="text-align:left;">4549</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5085</td>
+      <td style="text-align:left;">5091</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6146</td>
+      <td style="text-align:left;">6152</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7087</td>
+      <td style="text-align:left;">7093</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7304</td>
+      <td style="text-align:left;">7310</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8041</td>
+      <td style="text-align:left;">8047</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8221</td>
+      <td style="text-align:left;">8227</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8220</td>
+      <td style="text-align:left;">8226</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8795</td>
+      <td style="text-align:left;">8801</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8946</td>
+      <td style="text-align:left;">8952</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8973</td>
+      <td style="text-align:left;">8979</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9042</td>
+      <td style="text-align:left;">9048</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9111</td>
+      <td style="text-align:left;">9117</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9538</td>
+      <td style="text-align:left;">9544</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9680</td>
+      <td style="text-align:left;">9686</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9953</td>
+      <td style="text-align:left;">9959</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10004</td>
+      <td style="text-align:left;">10010</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10029</td>
+      <td style="text-align:left;">10035</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10028</td>
+      <td style="text-align:left;">10034</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10109</td>
+      <td style="text-align:left;">10115</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10112</td>
+      <td style="text-align:left;">10118</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10402</td>
+      <td style="text-align:left;">10408</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10438</td>
+      <td style="text-align:left;">10444</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10852</td>
+      <td style="text-align:left;">10858</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10855</td>
+      <td style="text-align:left;">10861</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10876</td>
+      <td style="text-align:left;">10882</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11500</td>
+      <td style="text-align:left;">11506</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12378</td>
+      <td style="text-align:left;">12384</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12584</td>
+      <td style="text-align:left;">12590</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12679</td>
+      <td style="text-align:left;">12685</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12708</td>
+      <td style="text-align:left;">12714</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">13013</td>
+      <td style="text-align:left;">13019</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13350</td>
+      <td style="text-align:left;">13356</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13611</td>
+      <td style="text-align:left;">13617</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">14296</td>
+      <td style="text-align:left;">14302</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14782</td>
+      <td style="text-align:left;">14788</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">14781</td>
+      <td style="text-align:left;">14787</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14793</td>
+      <td style="text-align:left;">14799</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15178</td>
+      <td style="text-align:left;">15184</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15856</td>
+      <td style="text-align:left;">15862</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16003</td>
+      <td style="text-align:left;">16009</td>
+      <td style="text-align:left;">0.00543</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATT</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">1074</td>
+      <td style="text-align:left;">1080</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2270</td>
+      <td style="text-align:left;">2276</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3081</td>
+      <td style="text-align:left;">3087</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3345</td>
+      <td style="text-align:left;">3351</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3824</td>
+      <td style="text-align:left;">3830</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3924</td>
+      <td style="text-align:left;">3930</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4470</td>
+      <td style="text-align:left;">4476</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4520</td>
+      <td style="text-align:left;">4526</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4737</td>
+      <td style="text-align:left;">4743</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4747</td>
+      <td style="text-align:left;">4753</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4757</td>
+      <td style="text-align:left;">4763</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5120</td>
+      <td style="text-align:left;">5126</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5354</td>
+      <td style="text-align:left;">5360</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5378</td>
+      <td style="text-align:left;">5384</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5453</td>
+      <td style="text-align:left;">5459</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5501</td>
+      <td style="text-align:left;">5507</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5707</td>
+      <td style="text-align:left;">5713</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5921</td>
+      <td style="text-align:left;">5927</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6095</td>
+      <td style="text-align:left;">6101</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">6145</td>
+      <td style="text-align:left;">6151</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6158</td>
+      <td style="text-align:left;">6164</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6307</td>
+      <td style="text-align:left;">6313</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6467</td>
+      <td style="text-align:left;">6473</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6659</td>
+      <td style="text-align:left;">6665</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6682</td>
+      <td style="text-align:left;">6688</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">6982</td>
+      <td style="text-align:left;">6988</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8007</td>
+      <td style="text-align:left;">8013</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8422</td>
+      <td style="text-align:left;">8428</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8589</td>
+      <td style="text-align:left;">8595</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9093</td>
+      <td style="text-align:left;">9099</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9214</td>
+      <td style="text-align:left;">9220</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10079</td>
+      <td style="text-align:left;">10085</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10337</td>
+      <td style="text-align:left;">10343</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10387</td>
+      <td style="text-align:left;">10393</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10658</td>
+      <td style="text-align:left;">10664</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10700</td>
+      <td style="text-align:left;">10706</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11007</td>
+      <td style="text-align:left;">11013</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11065</td>
+      <td style="text-align:left;">11071</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11134</td>
+      <td style="text-align:left;">11140</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11239</td>
+      <td style="text-align:left;">11245</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11290</td>
+      <td style="text-align:left;">11296</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11734</td>
+      <td style="text-align:left;">11740</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11959</td>
+      <td style="text-align:left;">11965</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12676</td>
+      <td style="text-align:left;">12682</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12699</td>
+      <td style="text-align:left;">12705</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12952</td>
+      <td style="text-align:left;">12958</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13113</td>
+      <td style="text-align:left;">13119</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13419</td>
+      <td style="text-align:left;">13425</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14118</td>
+      <td style="text-align:left;">14124</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14136</td>
+      <td style="text-align:left;">14142</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14366</td>
+      <td style="text-align:left;">14372</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14890</td>
+      <td style="text-align:left;">14896</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14907</td>
+      <td style="text-align:left;">14913</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15475</td>
+      <td style="text-align:left;">15481</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15652</td>
+      <td style="text-align:left;">15658</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15832</td>
+      <td style="text-align:left;">15838</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15951</td>
+      <td style="text-align:left;">15957</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAATC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16013</td>
+      <td style="text-align:left;">16019</td>
+      <td style="text-align:left;">0.00635</td>
+      <td style="text-align:left;">0.514</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATTC</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">197</td>
+      <td style="text-align:left;">203</td>
+      <td style="text-align:left;">0.00647</td>
+      <td style="text-align:left;">0.521</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8713</td>
+      <td style="text-align:left;">8719</td>
+      <td style="text-align:left;">0.00647</td>
+      <td style="text-align:left;">0.521</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAAAG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">28</td>
+      <td style="text-align:left;">34</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">1322</td>
+      <td style="text-align:left;">1328</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2910</td>
+      <td style="text-align:left;">2916</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3035</td>
+      <td style="text-align:left;">3041</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5106</td>
+      <td style="text-align:left;">5112</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7218</td>
+      <td style="text-align:left;">7224</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8381</td>
+      <td style="text-align:left;">8387</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACCG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10580</td>
+      <td style="text-align:left;">10586</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATCG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11760</td>
+      <td style="text-align:left;">11766</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13546</td>
+      <td style="text-align:left;">13552</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13663</td>
+      <td style="text-align:left;">13669</td>
+      <td style="text-align:left;">0.00739</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAACG</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">57</td>
+      <td style="text-align:left;">63</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">284</td>
+      <td style="text-align:left;">290</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">331</td>
+      <td style="text-align:left;">337</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">361</td>
+      <td style="text-align:left;">367</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">608</td>
+      <td style="text-align:left;">614</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTGAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">682</td>
+      <td style="text-align:left;">688</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">946</td>
+      <td style="text-align:left;">952</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">972</td>
+      <td style="text-align:left;">978</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1019</td>
+      <td style="text-align:left;">1025</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1057</td>
+      <td style="text-align:left;">1063</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1142</td>
+      <td style="text-align:left;">1148</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1162</td>
+      <td style="text-align:left;">1168</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1384</td>
+      <td style="text-align:left;">1390</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1864</td>
+      <td style="text-align:left;">1870</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1894</td>
+      <td style="text-align:left;">1900</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1922</td>
+      <td style="text-align:left;">1928</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">1932</td>
+      <td style="text-align:left;">1938</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2124</td>
+      <td style="text-align:left;">2130</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2148</td>
+      <td style="text-align:left;">2154</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2175</td>
+      <td style="text-align:left;">2181</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2192</td>
+      <td style="text-align:left;">2198</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2224</td>
+      <td style="text-align:left;">2230</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2350</td>
+      <td style="text-align:left;">2356</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2463</td>
+      <td style="text-align:left;">2469</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2500</td>
+      <td style="text-align:left;">2506</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">2658</td>
+      <td style="text-align:left;">2664</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2798</td>
+      <td style="text-align:left;">2804</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">2855</td>
+      <td style="text-align:left;">2861</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">3065</td>
+      <td style="text-align:left;">3071</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3262</td>
+      <td style="text-align:left;">3268</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3378</td>
+      <td style="text-align:left;">3384</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3441</td>
+      <td style="text-align:left;">3447</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3486</td>
+      <td style="text-align:left;">3492</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3558</td>
+      <td style="text-align:left;">3564</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">3677</td>
+      <td style="text-align:left;">3683</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4021</td>
+      <td style="text-align:left;">4027</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4087</td>
+      <td style="text-align:left;">4093</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4259</td>
+      <td style="text-align:left;">4265</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4334</td>
+      <td style="text-align:left;">4340</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">4586</td>
+      <td style="text-align:left;">4592</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4602</td>
+      <td style="text-align:left;">4608</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4778</td>
+      <td style="text-align:left;">4784</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4784</td>
+      <td style="text-align:left;">4790</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">4807</td>
+      <td style="text-align:left;">4813</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">4868</td>
+      <td style="text-align:left;">4874</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">5002</td>
+      <td style="text-align:left;">5008</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">5075</td>
+      <td style="text-align:left;">5081</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5128</td>
+      <td style="text-align:left;">5134</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5280</td>
+      <td style="text-align:left;">5286</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5405</td>
+      <td style="text-align:left;">5411</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5533</td>
+      <td style="text-align:left;">5539</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5670</td>
+      <td style="text-align:left;">5676</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">5938</td>
+      <td style="text-align:left;">5944</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">6106</td>
+      <td style="text-align:left;">6112</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">6376</td>
+      <td style="text-align:left;">6382</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">6451</td>
+      <td style="text-align:left;">6457</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">7445</td>
+      <td style="text-align:left;">7451</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7581</td>
+      <td style="text-align:left;">7587</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7692</td>
+      <td style="text-align:left;">7698</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">7800</td>
+      <td style="text-align:left;">7806</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8230</td>
+      <td style="text-align:left;">8236</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8323</td>
+      <td style="text-align:left;">8329</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8335</td>
+      <td style="text-align:left;">8341</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8494</td>
+      <td style="text-align:left;">8500</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8521</td>
+      <td style="text-align:left;">8527</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8531</td>
+      <td style="text-align:left;">8537</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">8757</td>
+      <td style="text-align:left;">8763</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8881</td>
+      <td style="text-align:left;">8887</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">TCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">8887</td>
+      <td style="text-align:left;">8893</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9173</td>
+      <td style="text-align:left;">9179</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">9236</td>
+      <td style="text-align:left;">9242</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9706</td>
+      <td style="text-align:left;">9712</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9796</td>
+      <td style="text-align:left;">9802</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">9987</td>
+      <td style="text-align:left;">9993</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10075</td>
+      <td style="text-align:left;">10081</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10243</td>
+      <td style="text-align:left;">10249</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10333</td>
+      <td style="text-align:left;">10339</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10376</td>
+      <td style="text-align:left;">10382</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10379</td>
+      <td style="text-align:left;">10385</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">10630</td>
+      <td style="text-align:left;">10636</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">10762</td>
+      <td style="text-align:left;">10768</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11029</td>
+      <td style="text-align:left;">11035</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">11367</td>
+      <td style="text-align:left;">11373</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11602</td>
+      <td style="text-align:left;">11608</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">11646</td>
+      <td style="text-align:left;">11652</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11751</td>
+      <td style="text-align:left;">11757</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">11757</td>
+      <td style="text-align:left;">11763</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12152</td>
+      <td style="text-align:left;">12158</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12295</td>
+      <td style="text-align:left;">12301</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">12311</td>
+      <td style="text-align:left;">12317</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12327</td>
+      <td style="text-align:left;">12333</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12352</td>
+      <td style="text-align:left;">12358</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTATAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12416</td>
+      <td style="text-align:left;">12422</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACAAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12509</td>
+      <td style="text-align:left;">12515</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">12662</td>
+      <td style="text-align:left;">12668</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">13109</td>
+      <td style="text-align:left;">13115</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AGTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13263</td>
+      <td style="text-align:left;">13269</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13422</td>
+      <td style="text-align:left;">13428</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13667</td>
+      <td style="text-align:left;">13673</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACGAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13791</td>
+      <td style="text-align:left;">13797</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13866</td>
+      <td style="text-align:left;">13872</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTTAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">13872</td>
+      <td style="text-align:left;">13878</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">13894</td>
+      <td style="text-align:left;">13900</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14007</td>
+      <td style="text-align:left;">14013</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14023</td>
+      <td style="text-align:left;">14029</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">CCTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14405</td>
+      <td style="text-align:left;">14411</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACCAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14501</td>
+      <td style="text-align:left;">14507</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ATTAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14687</td>
+      <td style="text-align:left;">14693</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14732</td>
+      <td style="text-align:left;">14738</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">14776</td>
+      <td style="text-align:left;">14782</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15072</td>
+      <td style="text-align:left;">15078</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15607</td>
+      <td style="text-align:left;">15613</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15874</td>
+      <td style="text-align:left;">15880</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTCAAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">-</td>
+      <td style="text-align:left;">15892</td>
+      <td style="text-align:left;">15898</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTACAA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">15995</td>
+      <td style="text-align:left;">16001</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">GCTAAGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16269</td>
+      <td style="text-align:left;">16275</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">ACTAGGA</td>
+   </tr>
+    <tr>
+      <td style="text-align:left;">ACTAAYH</td>
+      <td style="text-align:left;">DREME-1</td>
+      <td style="text-align:left;">chrM</td>
+      <td style="text-align:center;">+</td>
+      <td style="text-align:left;">16553</td>
+      <td style="text-align:left;">16559</td>
+      <td style="text-align:left;">0.00922</td>
+      <td style="text-align:left;">0.559</td>
+      <td style="text-align:left;font-size:x-large;font-family:monospace;">AATAAGA</td>
+   </tr>
+</tbody>
+</table>
+
+<hr>
+<center><big><b><a name="debugging_information">DEBUGGING INFORMATION</a></b></big></center>
+<hr>
+<p>
+Command line:
+</p>
+<pre>
+fimo -o ./fimo_test4_out --thresh 0.01 --bgfile --uniform-- --max-stored-scores 100000 --motif ACTAAYH --motif-pseudo 0.1 dreme_fimo_input_1.xml hsa_chrM.fa
+</pre>
+<p>
+Settings:
+</p>
+<pre>
+<table>
+  <tr>
+    <td style="padding-right: 2em">output_directory = ./fimo_test4_out</td>
+    <td style="padding-left: 5em; padding-right: 2em">MEME file name = dreme_fimo_input_1.xml</td>
+    <td style="padding-left: 5em; padding-right: 2em">sequence file name = hsa_chrM.fa</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">background file name = --uniform--</td>
+    <td style="padding-left: 5em; padding-right: 2em">alphabet = DNA</td>
+    <td style="padding-left: 5em; padding-right: 2em">max stored scores = 100000</td>
+  </tr>  <tr>
+    <td style="padding-right: 2em">allow clobber = false</td>
+    <td style="padding-left: 5em; padding-right: 2em">compute q-values = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">parse genomic coord. = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">text only = false</td>
+    <td style="padding-left: 5em; padding-right: 2em">scan both strands = true</td>
+    <td style="padding-left: 5em; padding-right: 2em">max strand = false</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">threshold type = p-value</td>
+    <td style="padding-left: 5em; padding-right: 2em">output theshold = 0.01</td>
+    <td style="padding-left: 5em; padding-right: 2em">pseudocount = 0.1</td>
+  </tr>
+  <tr>
+    <td style="padding-right: 2em">alpha = 1</td>
+    <td style="padding-left: 5em; padding-right: 2em">verbosity = 2</td>
+    <td style="padding-left: 5em; padding-right: 2em"></td>
+  </tr>
+
+</table>
+</pre>
+<p>
+This information can be useful in the event you wish to report a
+problem with the FIMO software.
+</p>
+<hr>
+<span style="background-color: #DDDDFF"><a href="#top_buttons"><b>Go to top</b></a></span>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test3.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,518 @@
+# motif_id	motif_alt_id	sequence_name	start	stop	strand	score	p-value	q-value	matched_sequence
+ACTAAYH	DREME-1	chrM	440	446	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	2093	2099	-	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	2299	2305	-	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	5186	5192	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	6530	6536	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	7742	7748	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	13657	13663	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	13741	13747	+	12.1831	6.1e-05	0.239	ACTAACA
+ACTAAYH	DREME-1	chrM	3768	3774	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	5498	5504	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	7736	7742	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	9872	9878	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	10106	10112	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	10313	10319	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	11818	11824	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	15903	15909	+	11.5915	0.000122	0.239	ACTAATA
+ACTAAYH	DREME-1	chrM	7732	7738	+	11.4507	0.000183	0.294	ACTAACT
+ACTAAYH	DREME-1	chrM	10960	10966	+	11.4507	0.000183	0.294	ACTAACT
+ACTAAYH	DREME-1	chrM	862	868	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	1832	1838	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	8679	8685	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	8770	8776	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	9347	9353	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	9359	9365	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	10302	10308	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	14765	14771	+	11.2394	0.000244	0.294	ACTAACC
+ACTAAYH	DREME-1	chrM	4466	4472	+	10.8592	0.000305	0.302	ACTAATT
+ACTAAYH	DREME-1	chrM	11248	11254	+	10.8592	0.000305	0.302	ACTAATT
+ACTAAYH	DREME-1	chrM	475	481	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	7930	7936	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	8649	8655	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	8670	8676	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	10768	10774	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	11053	11059	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	11101	11107	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	12720	12726	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	13149	13155	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	14216	14222	+	10.6479	0.000366	0.302	ACTAATC
+ACTAAYH	DREME-1	chrM	678	684	-	-1.07042	0.000549	0.366	ACTAAGA
+ACTAAYH	DREME-1	chrM	1435	1441	+	-1.07042	0.000549	0.366	ACTAAGA
+ACTAAYH	DREME-1	chrM	1524	1530	+	-1.07042	0.000549	0.366	ACTAAAA
+ACTAAYH	DREME-1	chrM	2035	2041	-	-1.07042	0.000549	0.366	ACTAAGA
+ACTAAYH	DREME-1	chrM	8440	8446	+	-1.07042	0.000549	0.366	ACTAAAA
+ACTAAYH	DREME-1	chrM	9995	10001	-	-1.07042	0.000549	0.366	ACTAAAA
+ACTAAYH	DREME-1	chrM	10225	10231	-	-1.07042	0.000549	0.366	ACTAAGA
+ACTAAYH	DREME-1	chrM	12725	12731	-	-1.07042	0.000549	0.366	ACTAAGA
+ACTAAYH	DREME-1	chrM	14393	14399	+	-1.07042	0.000549	0.366	ACTAAAA
+ACTAAYH	DREME-1	chrM	2294	2300	+	-1.30986	0.00061	0.398	ACTAATG
+ACTAAYH	DREME-1	chrM	206	212	-	-1.80282	0.00165	0.441	ATTAACA
+ACTAAYH	DREME-1	chrM	237	243	+	-1.80282	0.00165	0.441	AATAACA
+ACTAAYH	DREME-1	chrM	370	376	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	1630	1636	+	-1.80282	0.00165	0.441	ACTTACA
+ACTAAYH	DREME-1	chrM	1702	1708	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	2309	2315	+	-1.80282	0.00165	0.441	AGTAACA
+ACTAAYH	DREME-1	chrM	2363	2369	+	-1.80282	0.00165	0.441	ACTGACA
+ACTAAYH	DREME-1	chrM	2370	2376	+	-1.80282	0.00165	0.441	ATTAACA
+ACTAAYH	DREME-1	chrM	2395	2401	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	2761	2767	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	2784	2790	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	3191	3197	-	-1.80282	0.00165	0.441	ACTAAGT
+ACTAAYH	DREME-1	chrM	3756	3762	+	-1.80282	0.00165	0.441	ACTATCA
+ACTAAYH	DREME-1	chrM	3873	3879	+	-1.80282	0.00165	0.441	ACTAGCA
+ACTAAYH	DREME-1	chrM	3991	3997	+	-1.80282	0.00165	0.441	ACAAACA
+ACTAAYH	DREME-1	chrM	4445	4451	-	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	4734	4740	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	5061	5067	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	5177	5183	+	-1.80282	0.00165	0.441	GCTAACA
+ACTAAYH	DREME-1	chrM	5391	5397	+	-1.80282	0.00165	0.441	TCTAACA
+ACTAAYH	DREME-1	chrM	5680	5686	+	-1.80282	0.00165	0.441	ACAAACA
+ACTAAYH	DREME-1	chrM	5686	5692	-	-1.80282	0.00165	0.441	ACTAAGT
+ACTAAYH	DREME-1	chrM	6595	6601	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	7146	7152	+	-1.80282	0.00165	0.441	ACTATCA
+ACTAAYH	DREME-1	chrM	7286	7292	+	-1.80282	0.00165	0.441	TCTAACA
+ACTAAYH	DREME-1	chrM	7714	7720	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	7720	7726	+	-1.80282	0.00165	0.441	ACTCACA
+ACTAAYH	DREME-1	chrM	8344	8350	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	8374	8380	+	-1.80282	0.00165	0.441	ACTAAAT
+ACTAAYH	DREME-1	chrM	8460	8466	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	9010	9016	+	-1.80282	0.00165	0.441	GCTAACA
+ACTAAYH	DREME-1	chrM	9257	9263	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	9351	9357	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	10127	10133	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	10295	10301	+	-1.80282	0.00165	0.441	ACAAACA
+ACTAAYH	DREME-1	chrM	10496	10502	+	-1.80282	0.00165	0.441	ACTAGCA
+ACTAAYH	DREME-1	chrM	10792	10798	+	-1.80282	0.00165	0.441	ACTACCA
+ACTAAYH	DREME-1	chrM	10798	10804	+	-1.80282	0.00165	0.441	ACTGACA
+ACTAAYH	DREME-1	chrM	10939	10945	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	11023	11029	+	-1.80282	0.00165	0.441	ACTATCA
+ACTAAYH	DREME-1	chrM	11258	11264	+	-1.80282	0.00165	0.441	ACTCACA
+ACTAAYH	DREME-1	chrM	11314	11320	+	-1.80282	0.00165	0.441	ACTATCA
+ACTAAYH	DREME-1	chrM	11593	11599	+	-1.80282	0.00165	0.441	ACAAACA
+ACTAAYH	DREME-1	chrM	11650	11656	+	-1.80282	0.00165	0.441	AGTAACA
+ACTAAYH	DREME-1	chrM	11768	11774	+	-1.80282	0.00165	0.441	ACTCACA
+ACTAAYH	DREME-1	chrM	11901	11907	-	-1.80282	0.00165	0.441	ACTAGCA
+ACTAAYH	DREME-1	chrM	11941	11947	+	-1.80282	0.00165	0.441	ACTTACA
+ACTAAYH	DREME-1	chrM	12026	12032	+	-1.80282	0.00165	0.441	ATTAACA
+ACTAAYH	DREME-1	chrM	12245	12251	+	-1.80282	0.00165	0.441	TCTAACA
+ACTAAYH	DREME-1	chrM	12412	12418	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	12530	12536	+	-1.80282	0.00165	0.441	ACTGACA
+ACTAAYH	DREME-1	chrM	12617	12623	-	-1.80282	0.00165	0.441	ACGAACA
+ACTAAYH	DREME-1	chrM	12736	12742	+	-1.80282	0.00165	0.441	GCTAACA
+ACTAAYH	DREME-1	chrM	13161	13167	+	-1.80282	0.00165	0.441	TCTAACA
+ACTAAYH	DREME-1	chrM	13626	13632	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	13797	13803	+	-1.80282	0.00165	0.441	ACTCACA
+ACTAAYH	DREME-1	chrM	13830	13836	+	-1.80282	0.00165	0.441	TCTAACA
+ACTAAYH	DREME-1	chrM	13858	13864	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	14185	14191	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	14189	14195	+	-1.80282	0.00165	0.441	ACAAACA
+ACTAAYH	DREME-1	chrM	14548	14554	+	-1.80282	0.00165	0.441	AATAACA
+ACTAAYH	DREME-1	chrM	14569	14575	+	-1.80282	0.00165	0.441	GCTAACA
+ACTAAYH	DREME-1	chrM	15469	15475	+	-1.80282	0.00165	0.441	ATTAACA
+ACTAAYH	DREME-1	chrM	15599	15605	+	-1.80282	0.00165	0.441	CCTAACA
+ACTAAYH	DREME-1	chrM	16227	16233	+	-1.80282	0.00165	0.441	ACTATCA
+ACTAAYH	DREME-1	chrM	16277	16283	+	-1.80282	0.00165	0.441	ACCAACA
+ACTAAYH	DREME-1	chrM	852	858	+	-2.01408	0.00177	0.441	ACTAAGC
+ACTAAYH	DREME-1	chrM	1449	1455	-	-2.01408	0.00177	0.441	ACTAAGC
+ACTAAYH	DREME-1	chrM	4913	4919	+	-2.01408	0.00177	0.441	ACTAAAC
+ACTAAYH	DREME-1	chrM	11278	11284	+	-2.01408	0.00177	0.441	ACTAAAC
+ACTAAYH	DREME-1	chrM	13686	13692	+	-2.01408	0.00177	0.441	ACTAAAC
+ACTAAYH	DREME-1	chrM	14582	14588	+	-2.01408	0.00177	0.441	ACTAAAC
+ACTAAYH	DREME-1	chrM	14636	14642	+	-2.01408	0.00177	0.441	ACTAAAC
+ACTAAYH	DREME-1	chrM	15703	15709	+	-2.01408	0.00177	0.441	ACTAAGC
+ACTAAYH	DREME-1	chrM	152	158	-	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	234	240	+	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	472	478	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	645	651	+	-2.39437	0.00269	0.441	ACAAATA
+ACTAAYH	DREME-1	chrM	671	677	-	-2.39437	0.00269	0.441	GCTAATA
+ACTAAYH	DREME-1	chrM	2305	2311	-	-2.39437	0.00269	0.441	ACTTATA
+ACTAAYH	DREME-1	chrM	2529	2535	-	-2.39437	0.00269	0.441	TCTAATA
+ACTAAYH	DREME-1	chrM	2744	2750	-	-2.39437	0.00269	0.441	ATTAATA
+ACTAAYH	DREME-1	chrM	2880	2886	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	4158	4164	+	-2.39437	0.00269	0.441	ACTCATA
+ACTAAYH	DREME-1	chrM	4206	4212	+	-2.39437	0.00269	0.441	ACTTATA
+ACTAAYH	DREME-1	chrM	4301	4307	+	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	4679	4685	+	-2.39437	0.00269	0.441	TCTAATA
+ACTAAYH	DREME-1	chrM	4728	4734	+	-2.39437	0.00269	0.441	ACCAATA
+ACTAAYH	DREME-1	chrM	4754	4760	+	-2.39437	0.00269	0.441	ATTAATA
+ACTAAYH	DREME-1	chrM	5036	5042	+	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	5103	5109	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	5153	5159	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	5962	5968	-	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	6110	6116	+	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	6155	6161	+	-2.39437	0.00269	0.441	CCTAATA
+ACTAAYH	DREME-1	chrM	6527	6533	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	6973	6979	-	-2.39437	0.00269	0.441	GCTAATA
+ACTAAYH	DREME-1	chrM	7295	7301	+	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	7301	7307	+	-2.39437	0.00269	0.441	ATTAATA
+ACTAAYH	DREME-1	chrM	7300	7306	-	-2.39437	0.00269	0.441	ATTAATA
+ACTAAYH	DREME-1	chrM	7349	7355	+	-2.39437	0.00269	0.441	CCTAATA
+ACTAAYH	DREME-1	chrM	7351	7357	-	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	7522	7528	-	-2.39437	0.00269	0.441	TCTAATA
+ACTAAYH	DREME-1	chrM	8739	8745	+	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	8738	8744	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	8945	8951	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	8982	8988	+	-2.39437	0.00269	0.441	ACCAATA
+ACTAAYH	DREME-1	chrM	9613	9619	-	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	9656	9662	+	-2.39437	0.00269	0.441	TCTAATA
+ACTAAYH	DREME-1	chrM	10055	10061	+	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	10103	10109	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	10246	10252	-	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	10315	10321	-	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	10336	10342	-	-2.39437	0.00269	0.441	ATTAATA
+ACTAAYH	DREME-1	chrM	10368	10374	-	-2.39437	0.00269	0.441	ACTCATA
+ACTAAYH	DREME-1	chrM	10526	10532	+	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	10525	10531	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	10574	10580	+	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	10657	10663	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	10699	10705	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	10788	10794	-	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	10858	10864	-	-2.39437	0.00269	0.441	GCTAATA
+ACTAAYH	DREME-1	chrM	10954	10960	+	-2.39437	0.00269	0.441	CCTAATA
+ACTAAYH	DREME-1	chrM	11873	11879	+	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	11958	11964	-	-2.39437	0.00269	0.441	ACTAGTA
+ACTAAYH	DREME-1	chrM	12333	12339	+	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	12349	12355	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	12425	12431	+	-2.39437	0.00269	0.441	ACTCATA
+ACTAAYH	DREME-1	chrM	12471	12477	-	-2.39437	0.00269	0.441	ACTGATA
+ACTAAYH	DREME-1	chrM	12933	12939	+	-2.39437	0.00269	0.441	ACAAATA
+ACTAAYH	DREME-1	chrM	12972	12978	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	13269	13275	+	-2.39437	0.00269	0.441	ACTCATA
+ACTAAYH	DREME-1	chrM	13274	13280	-	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	13566	13572	-	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	14210	14216	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	14213	14219	+	-2.39437	0.00269	0.441	ACTACTA
+ACTAAYH	DREME-1	chrM	14251	14257	+	-2.39437	0.00269	0.441	ACCAATA
+ACTAAYH	DREME-1	chrM	14314	14320	+	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	14510	14516	+	-2.39437	0.00269	0.441	ACTATTA
+ACTAAYH	DREME-1	chrM	14545	14551	+	-2.39437	0.00269	0.441	AATAATA
+ACTAAYH	DREME-1	chrM	14773	14779	+	-2.39437	0.00269	0.441	CCTAATA
+ACTAAYH	DREME-1	chrM	15627	15633	-	-2.39437	0.00269	0.441	AGTAATA
+ACTAAYH	DREME-1	chrM	15838	15844	+	-2.39437	0.00269	0.441	CCTAATA
+ACTAAYH	DREME-1	chrM	193	199	+	-2.53521	0.0036	0.501	ACTTACT
+ACTAAYH	DREME-1	chrM	714	720	-	-2.53521	0.0036	0.501	ACTCACT
+ACTAAYH	DREME-1	chrM	1860	1866	+	-2.53521	0.0036	0.501	ATTAACT
+ACTAAYH	DREME-1	chrM	1870	1876	+	-2.53521	0.0036	0.501	AATAACT
+ACTAAYH	DREME-1	chrM	2220	2226	+	-2.53521	0.0036	0.501	ACTACCT
+ACTAAYH	DREME-1	chrM	2901	2907	+	-2.53521	0.0036	0.501	AATAACT
+ACTAAYH	DREME-1	chrM	4154	4160	+	-2.53521	0.0036	0.501	ACCAACT
+ACTAAYH	DREME-1	chrM	4283	4289	-	-2.53521	0.0036	0.501	AGTAACT
+ACTAAYH	DREME-1	chrM	5099	5105	+	-2.53521	0.0036	0.501	CCTAACT
+ACTAAYH	DREME-1	chrM	5156	5162	+	-2.53521	0.0036	0.501	ACTATCT
+ACTAAYH	DREME-1	chrM	5555	5561	-	-2.53521	0.0036	0.501	ACTTACT
+ACTAAYH	DREME-1	chrM	6142	6148	+	-2.53521	0.0036	0.501	ACTGACT
+ACTAAYH	DREME-1	chrM	6678	6684	+	-2.53521	0.0036	0.501	ACTTACT
+ACTAAYH	DREME-1	chrM	7169	7175	+	-2.53521	0.0036	0.501	TCTAACT
+ACTAAYH	DREME-1	chrM	8304	8310	+	-2.53521	0.0036	0.501	GCTAACT
+ACTAAYH	DREME-1	chrM	8456	8462	+	-2.53521	0.0036	0.501	ACAAACT
+ACTAAYH	DREME-1	chrM	8817	8823	+	-2.53521	0.0036	0.501	ACTATCT
+ACTAAYH	DREME-1	chrM	8949	8955	-	-2.53521	0.0036	0.501	AATAACT
+ACTAAYH	DREME-1	chrM	9120	9126	+	-2.53521	0.0036	0.501	ACTGACT
+ACTAAYH	DREME-1	chrM	9852	9858	+	-2.53521	0.0036	0.501	ACTATCT
+ACTAAYH	DREME-1	chrM	10025	10031	+	-2.53521	0.0036	0.501	ATTAACT
+ACTAAYH	DREME-1	chrM	10964	10970	+	-2.53521	0.0036	0.501	ACTACCT
+ACTAAYH	DREME-1	chrM	11293	11299	+	-2.53521	0.0036	0.501	ACTCACT
+ACTAAYH	DREME-1	chrM	11347	11353	+	-2.53521	0.0036	0.501	ACTAGCT
+ACTAAYH	DREME-1	chrM	12226	12232	+	-2.53521	0.0036	0.501	GCTAACT
+ACTAAYH	DREME-1	chrM	12516	12522	-	-2.53521	0.0036	0.501	AATAACT
+ACTAAYH	DREME-1	chrM	13850	13856	+	-2.53521	0.0036	0.501	ACTACCT
+ACTAAYH	DREME-1	chrM	13862	13868	+	-2.53521	0.0036	0.501	ACAAACT
+ACTAAYH	DREME-1	chrM	14206	14212	+	-2.53521	0.0036	0.501	AGTAACT
+ACTAAYH	DREME-1	chrM	15185	15191	+	-2.53521	0.0036	0.501	ACAAACT
+ACTAAYH	DREME-1	chrM	15189	15195	+	-2.53521	0.0036	0.501	ACTTACT
+ACTAAYH	DREME-1	chrM	15603	15609	+	-2.53521	0.0036	0.501	ACAAACT
+ACTAAYH	DREME-1	chrM	15844	15850	+	-2.53521	0.0036	0.501	ACCAACT
+ACTAAYH	DREME-1	chrM	15848	15854	+	-2.53521	0.0036	0.501	ACTATCT
+ACTAAYH	DREME-1	chrM	21	27	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	381	387	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	529	535	+	-2.74648	0.00452	0.505	GCTAACC
+ACTAAYH	DREME-1	chrM	547	553	+	-2.74648	0.00452	0.505	ACCAACC
+ACTAAYH	DREME-1	chrM	823	829	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	873	879	-	-2.74648	0.00452	0.505	ACCAACC
+ACTAAYH	DREME-1	chrM	910	916	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	978	984	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	1569	1575	-	-2.74648	0.00452	0.505	ACTTACC
+ACTAAYH	DREME-1	chrM	1596	1602	+	-2.74648	0.00452	0.505	ACGAACC
+ACTAAYH	DREME-1	chrM	1991	1997	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	2578	2584	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	2765	2771	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	3031	3037	-	-2.74648	0.00452	0.505	ACGAACC
+ACTAAYH	DREME-1	chrM	3225	3231	-	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	3883	3889	+	-2.74648	0.00452	0.505	ACCAACC
+ACTAAYH	DREME-1	chrM	4101	4107	+	-2.74648	0.00452	0.505	TCTAACC
+ACTAAYH	DREME-1	chrM	4191	4197	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	4598	4604	+	-2.74648	0.00452	0.505	TCTAACC
+ACTAAYH	DREME-1	chrM	4874	4880	+	-2.74648	0.00452	0.505	ACTAGCC
+ACTAAYH	DREME-1	chrM	5237	5243	+	-2.74648	0.00452	0.505	GCTAACC
+ACTAAYH	DREME-1	chrM	5839	5845	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	5931	5937	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	6335	6341	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	7228	7234	+	-2.74648	0.00452	0.505	ACTACCC
+ACTAAYH	DREME-1	chrM	7781	7787	+	-2.74648	0.00452	0.505	ACTATCC
+ACTAAYH	DREME-1	chrM	8315	8321	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	8508	8514	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	8721	8727	+	-2.74648	0.00452	0.505	ACGAACC
+ACTAAYH	DREME-1	chrM	8805	8811	+	-2.74648	0.00452	0.505	ACCAACC
+ACTAAYH	DREME-1	chrM	9003	9009	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	9076	9082	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	9124	9130	+	-2.74648	0.00452	0.505	ACTATCC
+ACTAAYH	DREME-1	chrM	11548	11554	+	-2.74648	0.00452	0.505	ACTATCC
+ACTAAYH	DREME-1	chrM	11852	11858	+	-2.74648	0.00452	0.505	GCTAACC
+ACTAAYH	DREME-1	chrM	11876	11882	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	11905	11911	+	-2.74648	0.00452	0.505	AGTAACC
+ACTAAYH	DREME-1	chrM	12013	12019	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	12336	12342	+	-2.74648	0.00452	0.505	AATAACC
+ACTAAYH	DREME-1	chrM	12363	12369	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	13295	13301	+	-2.74648	0.00452	0.505	ACCAACC
+ACTAAYH	DREME-1	chrM	13672	13678	+	-2.74648	0.00452	0.505	AATAACC
+ACTAAYH	DREME-1	chrM	13854	13860	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	13998	14004	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	14124	14130	+	-2.74648	0.00452	0.505	CCTAACC
+ACTAAYH	DREME-1	chrM	14384	14390	+	-2.74648	0.00452	0.505	GCTAACC
+ACTAAYH	DREME-1	chrM	14401	14407	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	14624	14630	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	14786	14792	+	-2.74648	0.00452	0.505	ATTAACC
+ACTAAYH	DREME-1	chrM	14910	14916	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	15193	15199	+	-2.74648	0.00452	0.505	ACTATCC
+ACTAAYH	DREME-1	chrM	15631	15637	+	-2.74648	0.00452	0.505	ACTATCC
+ACTAAYH	DREME-1	chrM	15748	15754	+	-2.74648	0.00452	0.505	TCTAACC
+ACTAAYH	DREME-1	chrM	16066	16072	+	-2.74648	0.00452	0.505	ACTCACC
+ACTAAYH	DREME-1	chrM	16281	16287	+	-2.74648	0.00452	0.505	ACAAACC
+ACTAAYH	DREME-1	chrM	211	217	+	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	210	216	-	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	214	220	-	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	1961	1967	-	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	2188	2194	+	-3.12676	0.00543	0.514	ACCAATT
+ACTAAYH	DREME-1	chrM	3771	3777	-	-3.12676	0.00543	0.514	ACTTATT
+ACTAAYH	DREME-1	chrM	3923	3929	-	-3.12676	0.00543	0.514	ACTAGTT
+ACTAAYH	DREME-1	chrM	4469	4475	-	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	4543	4549	+	-3.12676	0.00543	0.514	ACTGATT
+ACTAAYH	DREME-1	chrM	5085	5091	+	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	6146	6152	+	-3.12676	0.00543	0.514	ACTAGTT
+ACTAAYH	DREME-1	chrM	7087	7093	+	-3.12676	0.00543	0.514	ACTGATT
+ACTAAYH	DREME-1	chrM	7304	7310	+	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	8041	8047	+	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	8221	8227	+	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	8220	8226	-	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	8795	8801	+	-3.12676	0.00543	0.514	ACTCATT
+ACTAAYH	DREME-1	chrM	8946	8952	+	-3.12676	0.00543	0.514	ACTAGTT
+ACTAAYH	DREME-1	chrM	8973	8979	+	-3.12676	0.00543	0.514	ACTCATT
+ACTAAYH	DREME-1	chrM	9042	9048	+	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	9111	9117	+	-3.12676	0.00543	0.514	TCTAATT
+ACTAAYH	DREME-1	chrM	9538	9544	-	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	9680	9686	+	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	9953	9959	+	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	10004	10010	-	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	10029	10035	+	-3.12676	0.00543	0.514	ACTAGTT
+ACTAAYH	DREME-1	chrM	10028	10034	-	-3.12676	0.00543	0.514	ACTAGTT
+ACTAAYH	DREME-1	chrM	10109	10115	+	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	10112	10118	-	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	10402	10408	-	-3.12676	0.00543	0.514	ACCAATT
+ACTAAYH	DREME-1	chrM	10438	10444	+	-3.12676	0.00543	0.514	ACTCATT
+ACTAAYH	DREME-1	chrM	10852	10858	+	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	10855	10861	-	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	10876	10882	+	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	11500	11506	+	-3.12676	0.00543	0.514	ACTCATT
+ACTAAYH	DREME-1	chrM	12378	12384	+	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	12584	12590	+	-3.12676	0.00543	0.514	ACTACTT
+ACTAAYH	DREME-1	chrM	12679	12685	-	-3.12676	0.00543	0.514	ACTGATT
+ACTAAYH	DREME-1	chrM	12708	12714	+	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	13013	13019	-	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	13350	13356	+	-3.12676	0.00543	0.514	ACTATTT
+ACTAAYH	DREME-1	chrM	13611	13617	+	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	14296	14302	-	-3.12676	0.00543	0.514	AATAATT
+ACTAAYH	DREME-1	chrM	14782	14788	+	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	14781	14787	-	-3.12676	0.00543	0.514	ATTAATT
+ACTAAYH	DREME-1	chrM	14793	14799	+	-3.12676	0.00543	0.514	ACTCATT
+ACTAAYH	DREME-1	chrM	15178	15184	+	-3.12676	0.00543	0.514	AGTAATT
+ACTAAYH	DREME-1	chrM	15856	15862	+	-3.12676	0.00543	0.514	CCTAATT
+ACTAAYH	DREME-1	chrM	16003	16009	+	-3.12676	0.00543	0.514	TCTAATT
+ACTAAYH	DREME-1	chrM	1074	1080	-	-3.33803	0.00635	0.514	TCTAATC
+ACTAAYH	DREME-1	chrM	2270	2276	+	-3.33803	0.00635	0.514	ACCAATC
+ACTAAYH	DREME-1	chrM	3081	3087	+	-3.33803	0.00635	0.514	AGTAATC
+ACTAAYH	DREME-1	chrM	3345	3351	+	-3.33803	0.00635	0.514	TCTAATC
+ACTAAYH	DREME-1	chrM	3824	3830	-	-3.33803	0.00635	0.514	AGTAATC
+ACTAAYH	DREME-1	chrM	3924	3930	+	-3.33803	0.00635	0.514	ACTAGTC
+ACTAAYH	DREME-1	chrM	4470	4476	+	-3.33803	0.00635	0.514	ATTAATC
+ACTAAYH	DREME-1	chrM	4520	4526	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	4737	4743	+	-3.33803	0.00635	0.514	ACCAATC
+ACTAAYH	DREME-1	chrM	4747	4753	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	4757	4763	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	5120	5126	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	5354	5360	+	-3.33803	0.00635	0.514	CCTAATC
+ACTAAYH	DREME-1	chrM	5378	5384	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	5453	5459	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	5501	5507	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	5707	5713	+	-3.33803	0.00635	0.514	CCTAATC
+ACTAAYH	DREME-1	chrM	5921	5927	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	6095	6101	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	6145	6151	-	-3.33803	0.00635	0.514	ACTAGTC
+ACTAAYH	DREME-1	chrM	6158	6164	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	6307	6313	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	6467	6473	+	-3.33803	0.00635	0.514	CCTAATC
+ACTAAYH	DREME-1	chrM	6659	6665	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	6682	6688	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	6982	6988	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	8007	8013	-	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	8422	8428	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	8589	8595	+	-3.33803	0.00635	0.514	ACTGATC
+ACTAAYH	DREME-1	chrM	9093	9099	+	-3.33803	0.00635	0.514	ACTTATC
+ACTAAYH	DREME-1	chrM	9214	9220	+	-3.33803	0.00635	0.514	ACCAATC
+ACTAAYH	DREME-1	chrM	10079	10085	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	10337	10343	+	-3.33803	0.00635	0.514	ATTAATC
+ACTAAYH	DREME-1	chrM	10387	10393	-	-3.33803	0.00635	0.514	TCTAATC
+ACTAAYH	DREME-1	chrM	10658	10664	+	-3.33803	0.00635	0.514	ACTAGTC
+ACTAAYH	DREME-1	chrM	10700	10706	+	-3.33803	0.00635	0.514	ACTAGTC
+ACTAAYH	DREME-1	chrM	11007	11013	+	-3.33803	0.00635	0.514	ACTTATC
+ACTAAYH	DREME-1	chrM	11065	11071	+	-3.33803	0.00635	0.514	ACAAATC
+ACTAAYH	DREME-1	chrM	11134	11140	+	-3.33803	0.00635	0.514	ACTTATC
+ACTAAYH	DREME-1	chrM	11239	11245	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	11290	11296	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	11734	11740	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	11959	11965	+	-3.33803	0.00635	0.514	ACTAGTC
+ACTAAYH	DREME-1	chrM	12676	12682	+	-3.33803	0.00635	0.514	ATTAATC
+ACTAAYH	DREME-1	chrM	12699	12705	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	12952	12958	+	-3.33803	0.00635	0.514	GCTAATC
+ACTAAYH	DREME-1	chrM	13113	13119	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	13419	13425	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	14118	14124	+	-3.33803	0.00635	0.514	ACTCATC
+ACTAAYH	DREME-1	chrM	14136	14142	+	-3.33803	0.00635	0.514	CCTAATC
+ACTAAYH	DREME-1	chrM	14366	14372	+	-3.33803	0.00635	0.514	ACCAATC
+ACTAAYH	DREME-1	chrM	14890	14896	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	14907	14913	+	-3.33803	0.00635	0.514	ACTACTC
+ACTAAYH	DREME-1	chrM	15475	15481	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	15652	15658	+	-3.33803	0.00635	0.514	AATAATC
+ACTAAYH	DREME-1	chrM	15832	15838	+	-3.33803	0.00635	0.514	CCTAATC
+ACTAAYH	DREME-1	chrM	15951	15957	+	-3.33803	0.00635	0.514	ACAAATC
+ACTAAYH	DREME-1	chrM	16013	16019	+	-3.33803	0.00635	0.514	ACTATTC
+ACTAAYH	DREME-1	chrM	197	203	+	-13.9718	0.00647	0.521	ACTAAAG
+ACTAAYH	DREME-1	chrM	8713	8719	+	-13.9718	0.00647	0.521	ACTAAAG
+ACTAAYH	DREME-1	chrM	28	34	+	-14.7042	0.00739	0.559	ACTCACG
+ACTAAYH	DREME-1	chrM	1322	1328	-	-14.7042	0.00739	0.559	CCTAACG
+ACTAAYH	DREME-1	chrM	2910	2916	+	-14.7042	0.00739	0.559	ACCAACG
+ACTAAYH	DREME-1	chrM	3035	3041	-	-14.7042	0.00739	0.559	ACAAACG
+ACTAAYH	DREME-1	chrM	5106	5112	+	-14.7042	0.00739	0.559	ACTACCG
+ACTAAYH	DREME-1	chrM	7218	7224	-	-14.7042	0.00739	0.559	AGTAACG
+ACTAAYH	DREME-1	chrM	8381	8387	+	-14.7042	0.00739	0.559	ACTACCG
+ACTAAYH	DREME-1	chrM	10580	10586	+	-14.7042	0.00739	0.559	ACTATCG
+ACTAAYH	DREME-1	chrM	11760	11766	+	-14.7042	0.00739	0.559	ACGAACG
+ACTAAYH	DREME-1	chrM	13546	13552	+	-14.7042	0.00739	0.559	ACAAACG
+ACTAAYH	DREME-1	chrM	13663	13669	+	-14.7042	0.00739	0.559	ATTAACG
+ACTAAYH	DREME-1	chrM	57	63	-	-15.0563	0.00922	0.559	ACGAAAA
+ACTAAYH	DREME-1	chrM	284	290	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	331	337	+	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	361	367	+	-15.0563	0.00922	0.559	ACAAAGA
+ACTAAYH	DREME-1	chrM	608	614	+	-15.0563	0.00922	0.559	ACTGAAA
+ACTAAYH	DREME-1	chrM	682	688	+	-15.0563	0.00922	0.559	AGTAAGA
+ACTAAYH	DREME-1	chrM	946	952	-	-15.0563	0.00922	0.559	TCTAAAA
+ACTAAYH	DREME-1	chrM	972	978	+	-15.0563	0.00922	0.559	GCTAAAA
+ACTAAYH	DREME-1	chrM	1019	1025	+	-15.0563	0.00922	0.559	ACTACGA
+ACTAAYH	DREME-1	chrM	1057	1063	+	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	1142	1148	+	-15.0563	0.00922	0.559	ACTACGA
+ACTAAYH	DREME-1	chrM	1162	1168	+	-15.0563	0.00922	0.559	ACTCAAA
+ACTAAYH	DREME-1	chrM	1384	1390	+	-15.0563	0.00922	0.559	ACTACGA
+ACTAAYH	DREME-1	chrM	1864	1870	+	-15.0563	0.00922	0.559	ACTAGAA
+ACTAAYH	DREME-1	chrM	1894	1900	+	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	1922	1928	+	-15.0563	0.00922	0.559	CCTAAGA
+ACTAAYH	DREME-1	chrM	1932	1938	+	-15.0563	0.00922	0.559	GCTAAAA
+ACTAAYH	DREME-1	chrM	2124	2130	+	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	2148	2154	+	-15.0563	0.00922	0.559	AGTAAAA
+ACTAAYH	DREME-1	chrM	2175	2181	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	2192	2198	+	-15.0563	0.00922	0.559	ATTAAGA
+ACTAAYH	DREME-1	chrM	2224	2230	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	2350	2356	+	-15.0563	0.00922	0.559	ATTAAAA
+ACTAAYH	DREME-1	chrM	2463	2469	+	-15.0563	0.00922	0.559	AGTAAAA
+ACTAAYH	DREME-1	chrM	2500	2506	+	-15.0563	0.00922	0.559	ACCAAAA
+ACTAAYH	DREME-1	chrM	2658	2664	-	-15.0563	0.00922	0.559	AGTAAGA
+ACTAAYH	DREME-1	chrM	2798	2804	+	-15.0563	0.00922	0.559	ATTAAAA
+ACTAAYH	DREME-1	chrM	2855	2861	+	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	3065	3071	-	-15.0563	0.00922	0.559	ACTCAGA
+ACTAAYH	DREME-1	chrM	3262	3268	+	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	3378	3384	+	-15.0563	0.00922	0.559	ACGAAAA
+ACTAAYH	DREME-1	chrM	3441	3447	+	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	3486	3492	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	3558	3564	+	-15.0563	0.00922	0.559	ACTATGA
+ACTAAYH	DREME-1	chrM	3677	3683	+	-15.0563	0.00922	0.559	ACTCAAA
+ACTAAYH	DREME-1	chrM	4021	4027	+	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	4087	4093	+	-15.0563	0.00922	0.559	ACCAAGA
+ACTAAYH	DREME-1	chrM	4259	4265	+	-15.0563	0.00922	0.559	CCTAAGA
+ACTAAYH	DREME-1	chrM	4334	4340	+	-15.0563	0.00922	0.559	ACTATGA
+ACTAAYH	DREME-1	chrM	4586	4592	-	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	4602	4608	+	-15.0563	0.00922	0.559	ACCAAAA
+ACTAAYH	DREME-1	chrM	4778	4784	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	4784	4790	+	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	4807	4813	-	-15.0563	0.00922	0.559	ACTCAGA
+ACTAAYH	DREME-1	chrM	4868	4874	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	5002	5008	-	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	5075	5081	-	-15.0563	0.00922	0.559	ATTAAGA
+ACTAAYH	DREME-1	chrM	5128	5134	+	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	5280	5286	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	5405	5411	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	5533	5539	+	-15.0563	0.00922	0.559	ACCAAGA
+ACTAAYH	DREME-1	chrM	5670	5676	+	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	5938	5944	+	-15.0563	0.00922	0.559	ACAAAGA
+ACTAAYH	DREME-1	chrM	6106	6112	-	-15.0563	0.00922	0.559	ACTATGA
+ACTAAYH	DREME-1	chrM	6376	6382	-	-15.0563	0.00922	0.559	CCTAAGA
+ACTAAYH	DREME-1	chrM	6451	6457	-	-15.0563	0.00922	0.559	ACGAAGA
+ACTAAYH	DREME-1	chrM	7445	7451	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	7581	7587	-	-15.0563	0.00922	0.559	ATTAAGA
+ACTAAYH	DREME-1	chrM	7692	7698	-	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	7800	7806	-	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	8230	8236	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	8323	8329	-	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	8335	8341	+	-15.0563	0.00922	0.559	ATTAAGA
+ACTAAYH	DREME-1	chrM	8494	8500	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	8521	8527	+	-15.0563	0.00922	0.559	ACCAAAA
+ACTAAYH	DREME-1	chrM	8531	8537	+	-15.0563	0.00922	0.559	ACGAAAA
+ACTAAYH	DREME-1	chrM	8757	8763	-	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	8881	8887	+	-15.0563	0.00922	0.559	TCTAAGA
+ACTAAYH	DREME-1	chrM	8887	8893	+	-15.0563	0.00922	0.559	ATTAAAA
+ACTAAYH	DREME-1	chrM	9173	9179	-	-15.0563	0.00922	0.559	ACTAGAA
+ACTAAYH	DREME-1	chrM	9236	9242	+	-15.0563	0.00922	0.559	AGTAAAA
+ACTAAYH	DREME-1	chrM	9706	9712	-	-15.0563	0.00922	0.559	AGTAAAA
+ACTAAYH	DREME-1	chrM	9796	9802	-	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	9987	9993	-	-15.0563	0.00922	0.559	AGTAAGA
+ACTAAYH	DREME-1	chrM	10075	10081	-	-15.0563	0.00922	0.559	ATTAAAA
+ACTAAYH	DREME-1	chrM	10243	10249	-	-15.0563	0.00922	0.559	AATAAGA
+ACTAAYH	DREME-1	chrM	10333	10339	-	-15.0563	0.00922	0.559	AATAAGA
+ACTAAYH	DREME-1	chrM	10376	10382	+	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	10379	10385	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	10630	10636	-	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	10762	10768	+	-15.0563	0.00922	0.559	GCTAAAA
+ACTAAYH	DREME-1	chrM	11029	11035	+	-15.0563	0.00922	0.559	ACGAAAA
+ACTAAYH	DREME-1	chrM	11367	11373	-	-15.0563	0.00922	0.559	ACTATAA
+ACTAAYH	DREME-1	chrM	11602	11608	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	11646	11652	-	-15.0563	0.00922	0.559	ACTACGA
+ACTAAYH	DREME-1	chrM	11751	11757	+	-15.0563	0.00922	0.559	ACTCAAA
+ACTAAYH	DREME-1	chrM	11757	11763	+	-15.0563	0.00922	0.559	ACTACGA
+ACTAAYH	DREME-1	chrM	12152	12158	+	-15.0563	0.00922	0.559	ACCAAAA
+ACTAAYH	DREME-1	chrM	12295	12301	-	-15.0563	0.00922	0.559	CCTAAGA
+ACTAAYH	DREME-1	chrM	12311	12317	-	-15.0563	0.00922	0.559	ACCAAAA
+ACTAAYH	DREME-1	chrM	12327	12333	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	12352	12358	+	-15.0563	0.00922	0.559	ACTATAA
+ACTAAYH	DREME-1	chrM	12416	12422	+	-15.0563	0.00922	0.559	ACAAAAA
+ACTAAYH	DREME-1	chrM	12509	12515	+	-15.0563	0.00922	0.559	ACCAAGA
+ACTAAYH	DREME-1	chrM	12662	12668	+	-15.0563	0.00922	0.559	ACTCAGA
+ACTAAYH	DREME-1	chrM	13109	13115	-	-15.0563	0.00922	0.559	AGTAAGA
+ACTAAYH	DREME-1	chrM	13263	13269	+	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	13422	13428	+	-15.0563	0.00922	0.559	ACTCAAA
+ACTAAYH	DREME-1	chrM	13667	13673	+	-15.0563	0.00922	0.559	ACGAAAA
+ACTAAYH	DREME-1	chrM	13791	13797	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	13866	13872	+	-15.0563	0.00922	0.559	ACTTAAA
+ACTAAYH	DREME-1	chrM	13872	13878	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	13894	13900	-	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	14007	14013	+	-15.0563	0.00922	0.559	ACTAGAA
+ACTAAYH	DREME-1	chrM	14023	14029	+	-15.0563	0.00922	0.559	CCTAAAA
+ACTAAYH	DREME-1	chrM	14405	14411	+	-15.0563	0.00922	0.559	ACCAAGA
+ACTAAYH	DREME-1	chrM	14501	14507	+	-15.0563	0.00922	0.559	ATTAAAA
+ACTAAYH	DREME-1	chrM	14687	14693	+	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	14732	14738	+	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	14776	14782	+	-15.0563	0.00922	0.559	AATAAAA
+ACTAAYH	DREME-1	chrM	15072	15078	+	-15.0563	0.00922	0.559	ACTCAGA
+ACTAAYH	DREME-1	chrM	15607	15613	+	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	15874	15880	+	-15.0563	0.00922	0.559	ACTCAAA
+ACTAAYH	DREME-1	chrM	15892	15898	-	-15.0563	0.00922	0.559	ACTACAA
+ACTAAYH	DREME-1	chrM	15995	16001	+	-15.0563	0.00922	0.559	GCTAAGA
+ACTAAYH	DREME-1	chrM	16269	16275	+	-15.0563	0.00922	0.559	ACTAGGA
+ACTAAYH	DREME-1	chrM	16553	16559	+	-15.0563	0.00922	0.559	AATAAGA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fimo_output_test3.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Begin document body -->
+<fimo version="4.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation=  xmlns:fimo="http://noble.gs.washington.edu/schema/fimo"
+>
+<command-line>fimo -o ./fimo_test4_out --thresh 0.01 --bgfile --uniform-- --max-stored-scores 100000 --motif ACTAAYH --motif-pseudo 0.1 dreme_fimo_input_1.xml hsa_chrM.fa</command-line>
+<settings>
+<setting name="output directory">./fimo_test4_out</setting>
+<setting name="MEME file name">dreme_fimo_input_1.xml</setting>
+<setting name="sequence file name">hsa_chrM.fa</setting>
+<setting name="background file name">--uniform--</setting>
+<setting name="allow clobber">false</setting>
+<setting name="compute q-values">true</setting>
+<setting name="parse genomic coord.">false</setting>
+<setting name="text only">false</setting>
+<setting name="scan both strands">true</setting>
+<setting name="output threshold">0.01</setting>
+<setting name="threshold type">p-value</setting>
+<setting name="max stored scores">100000</setting>
+<setting name="pseudocount">0.1</setting>
+<setting name="verbosity">2</setting>
+<setting name="selected motif">ACTAAYH</setting>
+</settings>
+<sequence-data num-sequences="1" num-residues="16569" />
+<alphabet name="DNA" like="dna">
+<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+<letter id="V" symbol="V" equals="ACG" name="Not T"/>
+<letter id="H" symbol="H" equals="ACT" name="Not G"/>
+<letter id="D" symbol="D" equals="AGT" name="Not C"/>
+<letter id="B" symbol="B" equals="CGT" name="Not A"/>
+<letter id="M" symbol="M" equals="AC" name="Amino"/>
+<letter id="R" symbol="R" equals="AG" name="Purine"/>
+<letter id="W" symbol="W" equals="AT" name="Weak"/>
+<letter id="S" symbol="S" equals="CG" name="Strong"/>
+<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+<letter id="K" symbol="K" equals="GT" name="Keto"/>
+</alphabet>
+<motif name="ACTAAYH" alt="DREME-1" width="7" best-possible-match="ACTAACA"/>
+<motif name="YTAACA" alt="DREME-2" width="6" best-possible-match="TTAACA"/>
+<motif name="TCTGT" alt="DREME-3" width="5" best-possible-match="TCTGT"/>
+<motif name="SCCAGG" alt="DREME-4" width="6" best-possible-match="CCCAGG"/>
+<motif name="CCAGCAY" alt="DREME-5" width="7" best-possible-match="CCAGCAC"/>
+<motif name="GMATGT" alt="DREME-6" width="6" best-possible-match="GAATGT"/>
+<background source="--uniform--">
+<value letter="A">0.250</value>
+<value letter="C">0.250</value>
+<value letter="G">0.250</value>
+<value letter="T">0.250</value>
+</background>
+<cisml-file>cisml.xml</cisml-file>
+</fimo>
--- a/test-data/fimo_output_txt_1.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#pattern name	sequence name	start	stop	strand	score	p-value	q-value	matched sequence
-1	phiX174	1388	1398	+	29.4024	6.36e-11	1.25e-09	AATATCTATAA
-1	phiX174	847	857	+	29.122	7.02e-11	1.25e-09	AATGTCTAAAG
-1	phiX174	2301	2311	+	27.6463	1.08e-10	1.29e-09	AGGTTATAACG
-1	phiX174	5063	5073	+	25.5366	2.73e-10	2.25e-09	AGGAGCTAAAG
-1	phiX174	989	999	+	25.3049	3.15e-10	2.25e-09	TGAGGATAAAT
-1	phiX174	4713	4723	+	23.622	7.74e-10	3.48e-09	GACTGCTATCA
-1	phiX174	5048	5058	+	23.3293	8.51e-10	3.48e-09	TGCTGCTAAAG
-1	phiX174	855	865	+	23.3049	8.64e-10	3.48e-09	AAGGTAAAAAA
-1	phiX174	3155	3165	+	23.0366	9.76e-10	3.48e-09	TATGGCTAAAG
-1	phiX174	5009	5019	+	23.0366	9.76e-10	3.48e-09	TGTGGCTAAAT
-1	phiX174	814	824	+	22.5854	1.28e-09	4.14e-09	TGCGTCAAAAA
-1	phiX174	2832	2842	+	22.3415	1.42e-09	4.23e-09	TTGGTCTAACT
-1	phiX174	3830	3840	+	21.8293	1.7e-09	4.68e-09	TATTGATAAAG
-1	phiX174	3560	3570	+	21.5976	1.89e-09	4.82e-09	TGCGTCTATTA
-1	phiX174	2882	2892	+	21.1951	2.29e-09	5.46e-09	AGGTTATTAAA
-1	phiX174	4453	4463	+	20.8902	2.58e-09	5.75e-09	AAGGTATTAAG
-1	phiX174	2493	2503	+	20.3415	3.06e-09	5.79e-09	GACACCTAAAG
-1	phiX174	4104	4114	+	20.3171	3.08e-09	5.79e-09	GGCTTCCATAA
-1	phiX174	4955	4965	+	20.3171	3.08e-09	5.79e-09	TGATGCTAAAG
-1	phiX174	1885	1895	+	19.9268	3.61e-09	6.45e-09	TGCGACTAAAG
-1	phiX174	3376	3386	+	19.7683	3.81e-09	6.48e-09	AGAATCAAAAA
-1	phiX174	52	62	+	19.5732	4.06e-09	6.58e-09	TGAGTCGAAAA
-1	phiX174	1390	1400	+	19.378	4.26e-09	6.61e-09	TATCTATAACA
-1	phiX174	2017	2027	+	19.0854	4.6e-09	6.85e-09	TTCGTCTAAGA
-1	phiX174	1000	1010	+	18.878	4.88e-09	6.97e-09	TATGTCTAATA
-1	phiX174	1555	1565	+	18.439	5.58e-09	7.37e-09	GACTTCTACCA
-1	phiX174	4430	4440	+	18.4268	5.62e-09	7.37e-09	TGAGTATAATT
-1	phiX174	1927	1937	+	18.2927	5.82e-09	7.37e-09	GACTTATACCG
-1	phiX174	2981	2991	+	18.0732	6.13e-09	7.37e-09	CATGTCTAAAT
-1	phiX174	4203	4213	+	17.9268	6.34e-09	7.37e-09	GACGGCCATAA
-1	phiX174	1669	1679	+	17.8659	6.4e-09	7.37e-09	TGGAGGTAAAA
-1	phiX174	3260	3270	+	17.5	7.01e-09	7.82e-09	CGCTGATAAAG
-1	phiX174	3047	3057	+	17.2805	7.4e-09	7.85e-09	TACCGATAACA
-1	phiX174	4176	4186	+	17.1829	7.6e-09	7.85e-09	GAGTTCGATAA
-1	phiX174	4118	4128	+	17.1341	7.7e-09	7.85e-09	GATGGATAACC
-1	phiX174	5370	5380	+	16.9878	8.03e-09	7.87e-09	GGCGTATCCAA
-1	phiX174	1242	1252	+	16.5122	8.94e-09	7.87e-09	AGTGGATTAAG
-1	phiX174	2583	2593	+	16.5122	8.94e-09	7.87e-09	TACATCTGTCA
-1	phiX174	698	708	+	16.4146	9.13e-09	7.87e-09	TACGGAAAACA
-1	phiX174	2299	2309	+	16.3537	9.26e-09	7.87e-09	TGAGGTTATAA
-1	phiX174	4189	4199	+	16.1707	9.69e-09	7.87e-09	GTGATATGTAT
-1	phiX174	275	285	+	16.0976	9.85e-09	7.87e-09	GGTTTAGATAT
-1	phiX174	1801	1811	+	16.0366	1e-08	7.87e-09	GACCTATAAAC
-1	phiX174	1386	1396	+	15.9268	1.03e-08	7.87e-09	TGAATATCTAT
-1	phiX174	1303	1313	+	15.9024	1.03e-08	7.87e-09	TGGTTATATTG
-1	phiX174	3772	3782	+	15.878	1.04e-08	7.87e-09	AGGATATTTCT
-1	phiX174	1288	1298	+	15.8659	1.04e-08	7.87e-09	GACTGTTAACA
-1	phiX174	2577	2587	+	15.7683	1.08e-08	7.87e-09	GATGGATACAT
-1	phiX174	937	947	+	15.7561	1.08e-08	7.87e-09	TTGGTATGTAG
-1	phiX174	904	914	+	15.6585	1.11e-08	7.93e-09	AGGTACTAAAG
-1	phiX174	2279	2289	+	15.5854	1.13e-08	7.93e-09	TCGTGATAAAA
-1	phiX174	3164	3174	+	15.5	1.16e-08	7.98e-09	AGCTGGTAAAG
-1	phiX174	24	34	+	15.3293	1.23e-08	8.24e-09	AGAAGTTAACA
-1	phiX174	838	848	+	15.2561	1.27e-08	8.24e-09	GAGTGATGTAA
-1	phiX174	853	863	+	15.2561	1.27e-08	8.24e-09	TAAAGGTAAAA
-1	phiX174	1984	1994	+	15.0244	1.36e-08	8.68e-09	AATTTCTATGA
-1	phiX174	1	11	+	14.8293	1.46e-08	9.05e-09	GAGTTTTATCG
-1	phiX174	4307	4317	+	14.7927	1.47e-08	9.05e-09	TATTAATAACA
-1	phiX174	4303	4313	+	14.6585	1.52e-08	9.19e-09	TTGATATTAAT
-1	phiX174	5033	5043	+	14.561	1.58e-08	9.41e-09	GTCAGATATGG
-1	phiX174	2579	2589	+	14.2927	1.73e-08	1.01e-08	TGGATACATCT
-1	phiX174	322	332	+	14.1951	1.82e-08	1.05e-08	GACATTTTAAA
-1	phiX174	5001	5011	+	13.8902	2.09e-08	1.19e-08	GGTTTCTATGT
-1	phiX174	4217	4227	+	13.8171	2.15e-08	1.2e-08	TGCTTCTGACG
-1	phiX174	4262	4272	+	13.7805	2.18e-08	1.2e-08	AATGGATGAAT
-1	phiX174	3569	3579	+	13.7073	2.26e-08	1.22e-08	TATGGAAAACA
-1	phiX174	194	204	+	13.6829	2.29e-08	1.22e-08	ATCAACTAACG
-1	phiX174	131	141	+	13.4756	2.49e-08	1.31e-08	AAATGAGAAAA
-1	phiX174	1491	1501	+	13.4024	2.55e-08	1.32e-08	GCCATCTCAAA
-1	phiX174	434	444	+	13.2805	2.67e-08	1.36e-08	GGCCTCTATTA
-1	phiX174	4565	4575	+	13.2439	2.73e-08	1.36e-08	TTGGTTTATCG
-1	phiX174	102	112	+	13.2195	2.75e-08	1.36e-08	GAATTAAATCG
-1	phiX174	903	913	+	13.1463	2.82e-08	1.38e-08	GAGGTACTAAA
-1	phiX174	4748	4758	+	12.9756	3.01e-08	1.45e-08	TACAGCTAATG
-1	phiX174	2622	2632	+	12.8659	3.16e-08	1.5e-08	TGCTGATATTG
-1	phiX174	467	477	+	12.7317	3.35e-08	1.57e-08	TTTGGATTTAA
-1	phiX174	4033	4043	+	12.6829	3.44e-08	1.58e-08	AGCGTATCGAG
-1	phiX174	1348	1358	+	12.6707	3.46e-08	1.58e-08	TACCAATAAAA
-1	phiX174	239	249	+	12.5732	3.62e-08	1.64e-08	AGTGGCTTAAT
-1	phiX174	500	510	+	12.4634	3.84e-08	1.71e-08	GACGAGTAACA
-1	phiX174	3001	3011	+	12.4146	3.93e-08	1.73e-08	GCGGTCAAAAA
-1	phiX174	3776	3786	+	12.378	3.98e-08	1.73e-08	TATTTCTAATG
-1	phiX174	2026	2036	+	12.3293	4.06e-08	1.75e-08	GAAGTTTAAGA
-1	phiX174	4237	4247	+	12.3049	4.12e-08	1.75e-08	AGTTTGTATCT
-1	phiX174	803	813	+	12.2439	4.24e-08	1.78e-08	AGAAGAAAACG
-1	phiX174	3770	3780	+	12.1829	4.35e-08	1.81e-08	AAAGGATATTT
-1	phiX174	3429	3439	+	12.122	4.45e-08	1.82e-08	GAGATGCAAAA
-1	phiX174	99	109	+	12.1098	4.48e-08	1.82e-08	TACGAATTAAA
-1	phiX174	67	77	+	11.9268	4.78e-08	1.92e-08	TCTTGATAAAG
-1	phiX174	5332	5342	+	11.7195	5.13e-08	2.01e-08	ATCTGCTCAAA
-1	phiX174	277	287	+	11.7073	5.14e-08	2.01e-08	TTTAGATATGA
-1	phiX174	4338	4348	+	11.6951	5.18e-08	2.01e-08	GGGGACGAAAA
-1	phiX174	3812	3822	+	11.6585	5.28e-08	2.03e-08	GGTTGATATTT
-1	phiX174	1909	1919	+	11.5488	5.51e-08	2.08e-08	TAACGCTAAAG
-1	phiX174	3000	3010	+	11.5366	5.54e-08	2.08e-08	GGCGGTCAAAA
-1	phiX174	3891	3901	+	11.439	5.75e-08	2.11e-08	ATTGGCTCTAA
-1	phiX174	3079	3089	+	11.4268	5.76e-08	2.11e-08	CTGGTATTAAA
-1	phiX174	37	47	+	11.4146	5.79e-08	2.11e-08	TTCGGATATTT
-1	phiX174	380	390	+	11.3293	6.01e-08	2.17e-08	GTAAGAAATCA
--- a/test-data/fimo_output_txt_2.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#pattern name	sequence name	start	stop	strand	score	p-value	q-value	matched sequence
-1	phiX174	1388	1398	+	29.4024	6.36e-11	0	AATATCTATAA
-1	phiX174	847	857	+	29.122	7.02e-11	0	AATGTCTAAAG
-1	phiX174	2301	2311	+	27.6463	1.08e-10	0	AGGTTATAACG
-1	phiX174	5063	5073	+	25.5366	2.73e-10	0	AGGAGCTAAAG
-1	phiX174	989	999	+	25.3049	3.15e-10	0	TGAGGATAAAT
-1	phiX174	4713	4723	+	23.622	7.74e-10	0	GACTGCTATCA
-1	phiX174	5048	5058	+	23.3293	8.51e-10	0	TGCTGCTAAAG
-1	phiX174	855	865	+	23.3049	8.64e-10	0	AAGGTAAAAAA
-1	phiX174	3155	3165	+	23.0366	9.76e-10	0	TATGGCTAAAG
-1	phiX174	5009	5019	+	23.0366	9.76e-10	0	TGTGGCTAAAT
-1	phiX174	814	824	+	22.5854	1.28e-09	0	TGCGTCAAAAA
-1	phiX174	2832	2842	+	22.3415	1.42e-09	0	TTGGTCTAACT
-1	phiX174	3830	3840	+	21.8293	1.7e-09	0	TATTGATAAAG
-1	phiX174	3560	3570	+	21.5976	1.89e-09	0	TGCGTCTATTA
-1	phiX174	2882	2892	+	21.1951	2.29e-09	0	AGGTTATTAAA
-1	phiX174	4453	4463	+	20.8902	2.58e-09	0	AAGGTATTAAG
-1	phiX174	2493	2503	+	20.3415	3.06e-09	0	GACACCTAAAG
-1	phiX174	4104	4114	+	20.3171	3.08e-09	0	GGCTTCCATAA
-1	phiX174	4955	4965	+	20.3171	3.08e-09	0	TGATGCTAAAG
-1	phiX174	1885	1895	+	19.9268	3.61e-09	0	TGCGACTAAAG
-1	phiX174	3376	3386	+	19.7683	3.81e-09	0	AGAATCAAAAA
-1	phiX174	52	62	+	19.5732	4.06e-09	0	TGAGTCGAAAA
-1	phiX174	1390	1400	+	19.378	4.26e-09	0	TATCTATAACA
-1	phiX174	2017	2027	+	19.0854	4.6e-09	0	TTCGTCTAAGA
-1	phiX174	1000	1010	+	18.878	4.88e-09	0	TATGTCTAATA
-1	phiX174	1555	1565	+	18.439	5.58e-09	0	GACTTCTACCA
-1	phiX174	4430	4440	+	18.4268	5.62e-09	0	TGAGTATAATT
-1	phiX174	1927	1937	+	18.2927	5.82e-09	0	GACTTATACCG
-1	phiX174	2981	2991	+	18.0732	6.13e-09	0	CATGTCTAAAT
-1	phiX174	4203	4213	+	17.9268	6.34e-09	0	GACGGCCATAA
-1	phiX174	1669	1679	+	17.8659	6.4e-09	0	TGGAGGTAAAA
-1	phiX174	3260	3270	+	17.5	7.01e-09	0	CGCTGATAAAG
-1	phiX174	3047	3057	+	17.2805	7.4e-09	0	TACCGATAACA
-1	phiX174	4176	4186	+	17.1829	7.6e-09	0	GAGTTCGATAA
-1	phiX174	4118	4128	+	17.1341	7.7e-09	0	GATGGATAACC
-1	phiX174	5370	5380	+	16.9878	8.03e-09	0	GGCGTATCCAA
-1	phiX174	1242	1252	+	16.5122	8.94e-09	0	AGTGGATTAAG
-1	phiX174	2583	2593	+	16.5122	8.94e-09	0	TACATCTGTCA
-1	phiX174	698	708	+	16.4146	9.13e-09	0	TACGGAAAACA
-1	phiX174	2299	2309	+	16.3537	9.26e-09	0	TGAGGTTATAA
-1	phiX174	4189	4199	+	16.1707	9.69e-09	0	GTGATATGTAT
-1	phiX174	275	285	+	16.0976	9.85e-09	0	GGTTTAGATAT
-1	phiX174	1801	1811	+	16.0366	1e-08	0	GACCTATAAAC
-1	phiX174	1386	1396	+	15.9268	1.03e-08	0	TGAATATCTAT
-1	phiX174	1303	1313	+	15.9024	1.03e-08	0	TGGTTATATTG
-1	phiX174	3772	3782	+	15.878	1.04e-08	0	AGGATATTTCT
-1	phiX174	1288	1298	+	15.8659	1.04e-08	0	GACTGTTAACA
-1	phiX174	2577	2587	+	15.7683	1.08e-08	0	GATGGATACAT
-1	phiX174	937	947	+	15.7561	1.08e-08	0	TTGGTATGTAG
-1	phiX174	904	914	+	15.6585	1.11e-08	0	AGGTACTAAAG
-1	phiX174	2279	2289	+	15.5854	1.13e-08	0	TCGTGATAAAA
-1	phiX174	3164	3174	+	15.5	1.16e-08	0	AGCTGGTAAAG
-1	phiX174	24	34	+	15.3293	1.23e-08	0	AGAAGTTAACA
-1	phiX174	838	848	+	15.2561	1.27e-08	0	GAGTGATGTAA
-1	phiX174	853	863	+	15.2561	1.27e-08	0	TAAAGGTAAAA
-1	phiX174	1984	1994	+	15.0244	1.36e-08	0	AATTTCTATGA
-1	phiX174	1	11	+	14.8293	1.46e-08	0	GAGTTTTATCG
-1	phiX174	4307	4317	+	14.7927	1.47e-08	0	TATTAATAACA
-1	phiX174	4303	4313	+	14.6585	1.52e-08	0	TTGATATTAAT
-1	phiX174	5033	5043	+	14.561	1.58e-08	0	GTCAGATATGG
-1	phiX174	2579	2589	+	14.2927	1.73e-08	0	TGGATACATCT
-1	phiX174	322	332	+	14.1951	1.82e-08	0	GACATTTTAAA
-1	phiX174	5001	5011	+	13.8902	2.09e-08	0	GGTTTCTATGT
-1	phiX174	4217	4227	+	13.8171	2.15e-08	0	TGCTTCTGACG
-1	phiX174	4262	4272	+	13.7805	2.18e-08	0	AATGGATGAAT
-1	phiX174	3569	3579	+	13.7073	2.26e-08	0	TATGGAAAACA
-1	phiX174	194	204	+	13.6829	2.29e-08	0	ATCAACTAACG
-1	phiX174	131	141	+	13.4756	2.49e-08	0	AAATGAGAAAA
-1	phiX174	1491	1501	+	13.4024	2.55e-08	0	GCCATCTCAAA
-1	phiX174	434	444	+	13.2805	2.67e-08	0	GGCCTCTATTA
-1	phiX174	4565	4575	+	13.2439	2.73e-08	0	TTGGTTTATCG
-1	phiX174	102	112	+	13.2195	2.75e-08	0	GAATTAAATCG
-1	phiX174	903	913	+	13.1463	2.82e-08	0	GAGGTACTAAA
-1	phiX174	4748	4758	+	12.9756	3.01e-08	0	TACAGCTAATG
-1	phiX174	2622	2632	+	12.8659	3.16e-08	0	TGCTGATATTG
-1	phiX174	467	477	+	12.7317	3.35e-08	0	TTTGGATTTAA
-1	phiX174	4033	4043	+	12.6829	3.44e-08	0	AGCGTATCGAG
-1	phiX174	1348	1358	+	12.6707	3.46e-08	0	TACCAATAAAA
-1	phiX174	239	249	+	12.5732	3.62e-08	0	AGTGGCTTAAT
-1	phiX174	500	510	+	12.4634	3.84e-08	0	GACGAGTAACA
-1	phiX174	3001	3011	+	12.4146	3.93e-08	0	GCGGTCAAAAA
-1	phiX174	3776	3786	+	12.378	3.98e-08	0	TATTTCTAATG
-1	phiX174	2026	2036	+	12.3293	4.06e-08	0	GAAGTTTAAGA
-1	phiX174	4237	4247	+	12.3049	4.12e-08	0	AGTTTGTATCT
-1	phiX174	803	813	+	12.2439	4.24e-08	0	AGAAGAAAACG
-1	phiX174	3770	3780	+	12.1829	4.35e-08	0	AAAGGATATTT
-1	phiX174	3429	3439	+	12.122	4.45e-08	0	GAGATGCAAAA
-1	phiX174	99	109	+	12.1098	4.48e-08	0	TACGAATTAAA
-1	phiX174	67	77	+	11.9268	4.78e-08	0	TCTTGATAAAG
-1	phiX174	5332	5342	+	11.7195	5.13e-08	0	ATCTGCTCAAA
-1	phiX174	277	287	+	11.7073	5.14e-08	0	TTTAGATATGA
-1	phiX174	4338	4348	+	11.6951	5.18e-08	0	GGGGACGAAAA
-1	phiX174	3812	3822	+	11.6585	5.28e-08	0	GGTTGATATTT
-1	phiX174	1909	1919	+	11.5488	5.51e-08	0	TAACGCTAAAG
-1	phiX174	3000	3010	+	11.5366	5.54e-08	0	GGCGGTCAAAA
-1	phiX174	3891	3901	+	11.439	5.75e-08	0	ATTGGCTCTAA
-1	phiX174	3079	3089	+	11.4268	5.76e-08	0	CTGGTATTAAA
-1	phiX174	37	47	+	11.4146	5.79e-08	0	TTCGGATATTT
-1	phiX174	380	390	+	11.3293	6.01e-08	0	GTAAGAAATCA
--- a/test-data/fimo_output_xml_1.xml	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Begin document body -->
-<settings>
-<setting name="allow clobber">false</setting>
-<setting name="compute q-values">true</setting>
-<setting name="parse genomic coord.">false</setting>
-<setting name="text only">false</setting>
-<setting name="scan both strands">false</setting>
-<setting name="output threshold">0.0001</setting>
-<setting name="threshold type">p-value</setting>
-<setting name="max stored scores">100000</setting>
-<setting name="pseudocount">0.1</setting>
-<setting name="verbosity">1</setting>
-</settings>
-<sequence-data num-sequences="1" num-residues="5386" />
-<alphabet name="Protein" like="protein">
-<letter id="A" symbol="A" name="Alanine" colour="0000CC"/>
-<letter id="C" symbol="C" name="Cysteine" colour="0000CC"/>
-<letter id="D" symbol="D" name="Aspartic acid" colour="FF00FF"/>
-<letter id="E" symbol="E" name="Glutamic acid" colour="FF00FF"/>
-<letter id="F" symbol="F" name="Phenylalanine" colour="0000CC"/>
-<letter id="G" symbol="G" name="Glycine" colour="FFB300"/>
-<letter id="H" symbol="H" name="Histidine" colour="FFCCCC"/>
-<letter id="I" symbol="I" name="Isoleucine" colour="0000CC"/>
-<letter id="K" symbol="K" name="Lysine" colour="CC0000"/>
-<letter id="L" symbol="L" name="Leucine" colour="0000CC"/>
-<letter id="M" symbol="M" name="Methionine" colour="0000CC"/>
-<letter id="N" symbol="N" name="Asparagine" colour="008000"/>
-<letter id="P" symbol="P" name="Proline" colour="FFFF00"/>
-<letter id="Q" symbol="Q" name="Glutamine" colour="008000"/>
-<letter id="R" symbol="R" name="Arginine" colour="CC0000"/>
-<letter id="S" symbol="S" name="Serine" colour="008000"/>
-<letter id="T" symbol="T" name="Threonine" colour="008000"/>
-<letter id="V" symbol="V" name="Valine" colour="0000CC"/>
-<letter id="W" symbol="W" name="Tryptophan" colour="0000CC"/>
-<letter id="Y" symbol="Y" name="Tyrosine" colour="33E6CC"/>
-<letter id="X" symbol="X" aliases="*." equals="ACDEFGHIKLMNPQRSTVWY" name="Any amino acid"/>
-<letter id="B" symbol="B" equals="DN" name="Asparagine or Aspartic acid"/>
-<letter id="Z" symbol="Z" equals="EQ" name="Glutamine or Glutamic acid"/>
-<letter id="J" symbol="J" equals="IL" name="Leucine or Isoleucine"/>
-</alphabet>
-<motif name="1" width="11" best-possible-match="GGGGTATAAAA"/>
-<background source="non-redundant database">
-<value letter="A">0.073</value>
-<value letter="C">0.018</value>
-<value letter="D">0.052</value>
-<value letter="E">0.062</value>
-<value letter="F">0.040</value>
-<value letter="G">0.069</value>
-<value letter="H">0.022</value>
-<value letter="I">0.056</value>
-<value letter="K">0.058</value>
-<value letter="L">0.092</value>
-<value letter="M">0.023</value>
-<value letter="N">0.046</value>
-<value letter="P">0.051</value>
-<value letter="Q">0.041</value>
-<value letter="R">0.052</value>
-<value letter="S">0.074</value>
-<value letter="T">0.059</value>
-<value letter="V">0.064</value>
-<value letter="W">0.013</value>
-<value letter="Y">0.033</value>
-</background>
-<cisml-file>cisml.xml</cisml-file>
-</fimo>
--- a/test-data/fimo_output_xml_2.xml	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Begin document body -->
-<settings>
-<setting name="allow clobber">false</setting>
-<setting name="compute q-values">false</setting>
-<setting name="text only">false</setting>
-<setting name="scan both strands">false</setting>
-<setting name="output threshold">0.0001</setting>
-<setting name="threshold type">p-value</setting>
-<setting name="max stored scores">100000</setting>
-<setting name="pseudocount">0.1</setting>
-<setting name="verbosity">1</setting>
-</settings>
-<sequence-data num-sequences="1" num-residues="5386" />
-<alphabet name="Protein" like="protein">
-<letter id="A" symbol="A" name="Alanine" colour="0000CC"/>
-<letter id="C" symbol="C" name="Cysteine" colour="0000CC"/>
-<letter id="D" symbol="D" name="Aspartic acid" colour="FF00FF"/>
-<letter id="E" symbol="E" name="Glutamic acid" colour="FF00FF"/>
-<letter id="F" symbol="F" name="Phenylalanine" colour="0000CC"/>
-<letter id="G" symbol="G" name="Glycine" colour="FFB300"/>
-<letter id="H" symbol="H" name="Histidine" colour="FFCCCC"/>
-<letter id="I" symbol="I" name="Isoleucine" colour="0000CC"/>
-<letter id="K" symbol="K" name="Lysine" colour="CC0000"/>
-<letter id="L" symbol="L" name="Leucine" colour="0000CC"/>
-<letter id="M" symbol="M" name="Methionine" colour="0000CC"/>
-<letter id="N" symbol="N" name="Asparagine" colour="008000"/>
-<letter id="P" symbol="P" name="Proline" colour="FFFF00"/>
-<letter id="Q" symbol="Q" name="Glutamine" colour="008000"/>
-<letter id="R" symbol="R" name="Arginine" colour="CC0000"/>
-<letter id="S" symbol="S" name="Serine" colour="008000"/>
-<letter id="T" symbol="T" name="Threonine" colour="008000"/>
-<letter id="V" symbol="V" name="Valine" colour="0000CC"/>
-<letter id="W" symbol="W" name="Tryptophan" colour="0000CC"/>
-<letter id="Y" symbol="Y" name="Tyrosine" colour="33E6CC"/>
-<letter id="X" symbol="X" aliases="*." equals="ACDEFGHIKLMNPQRSTVWY" name="Any amino acid"/>
-<letter id="B" symbol="B" equals="DN" name="Asparagine or Aspartic acid"/>
-<letter id="Z" symbol="Z" equals="EQ" name="Glutamine or Glutamic acid"/>
-<letter id="J" symbol="J" equals="IL" name="Leucine or Isoleucine"/>
-</alphabet>
-<motif name="1" width="11" best-possible-match="GGGGTATAAAA"/>
-<background source="non-redundant database">
-<value letter="A">0.073</value>
-<value letter="C">0.018</value>
-<value letter="D">0.052</value>
-<value letter="E">0.062</value>
-<value letter="F">0.040</value>
-<value letter="G">0.069</value>
-<value letter="H">0.022</value>
-<value letter="I">0.056</value>
-<value letter="K">0.058</value>
-<value letter="L">0.092</value>
-<value letter="M">0.023</value>
-<value letter="N">0.046</value>
-<value letter="P">0.051</value>
-<value letter="Q">0.041</value>
-<value letter="R">0.052</value>
-<value letter="S">0.074</value>
-<value letter="T">0.059</value>
-<value letter="V">0.064</value>
-<value letter="W">0.013</value>
-<value letter="Y">0.033</value>
-</background>
-<cisml-file>cisml.xml</cisml-file>
-</fimo>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hsa_chrM.fa	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,238 @@
+>chrM
+GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGG
+GTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTC
+CTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGTGTTA
+ATTAATTAATGCTTGTAGGACATAATAATAACAATTGAATGTCTGCACAGCCACTTTCCACACAGACATC
+ATAACAAAAAATTTCCACCAAACCCCCCCTCCCCCGCTTCTGGCCACAGCACTTAAACACATCTCTGCCA
+AACCCCAAAAACAAAGAACCCTAACACCAGCCTAACCAGATTTCAAATTTTATCTTTTGGCGGTATGCAC
+TTTTAACAGTCACCCCCCAACTAACACATTATTTTCCCCTCCCACTCCCATACTACTAATCTCATCAATA
+CAACCCCCGCCCATCCTACCCAGCACACACACACCGCTGCTAACCCCATACCCCGAACCAACCAAACCCC
+AAAGACACCCCCCACAGTTTATGTAGCTTACCTCCTCAAAGCAATACACTGAAAATGTTTAGACGGGCTC
+ACATCACCCCATAAACAAATAGGTTTGGTCCTAGCCTTTCTATTAGCTCTTAGTAAGATTACACATGCAA
+GCATCCCCGTTCCAGTGAGTTCACCCTCTAAATCACCACGATCAAAAGGAACAAGCATCAAGCACGCAGC
+AATGCAGCTCAAAACGCTTAGCCTAGCCACACCCCCACGGGAAACAGCAGTGATTAACCTTTAGCAATAA
+ACGAAAGTTTAACTAAGCTATACTAACCCCAGGGTTGGTCAATTTCGTGCCAGCCACCGCGGTCACACGA
+TTAACCCAAGTCAATAGAAGCCGGCGTAAAGAGTGTTTTAGATCACCCCCTCCCCAATAAAGCTAAAACT
+CACCTGAGTTGTAAAAAACTCCAGTTGACACAAAATAGACTACGAAAGTGGCTTTAACATATCTGAACAC
+ACAATAGCTAAGACCCAAACTGGGATTAGATACCCCACTATGCTTAGCCCTAAACCTCAACAGTTAAATC
+AACAAAACTGCTCGCCAGAACACTACGAGCCACAGCTTAAAACTCAAAGGACCTGGCGGTGCTTCATATC
+CCTCTAGAGGAGCCTGTTCTGTAATCGATAAACCCCGATCAACCTCACCACCTCTTGCTCAGCCTATATA
+CCGCCATCTTCAGCAAACCCTGATGAAGGCTACAAAGTAAGCGCAAGTACCCACGTAAAGACGTTAGGTC
+AAGGTGTAGCCCATGAGGTGGCAAGAAATGGGCTACATTTTCTACCCCAGAAAACTACGATAGCCCTTAT
+GAAACTTAAGGGTCGAAGGTGGATTTAGCAGTAAACTAAGAGTAGAGTGCTTAGTTGAACAGGGCCCTGA
+AGCGCGTACACACCGCCCGTCACCCTCCTCAAGTATACTTCAAAGGACATTTAACTAAAACCCCTACGCA
+TTTATATAGAGGAGACAAGTCGTAACATGGTAAGTGTACTGGAAAGTGCACTTGGACGAACCAGAGTGTA
+GCTTAACACAAAGCACCCAACTTACACTTAGGAGATTTCAACTTAACTTGACCGCTCTGAGCTAAACCTA
+GCCCCAAACCCACTCCACCTTACTACCAGACAACCTTAGCCAAACCATTTACCCAAATAAAGTATAGGCG
+ATAGAAATTGAAACCTGGCGCAATAGATATAGTACCGCAAGGGAAAGATGAAAAATTATAACCAAGCATA
+ATATAGCAAGGACTAACCCCTATACCTTCTGCATAATGAATTAACTAGAAATAACTTTGCAAGGAGAGCC
+AAAGCTAAGACCCCCGAAACCAGACGAGCTACCTAAGAACAGCTAAAAGAGCACACCCGTCTATGTAGCA
+AAATAGTGGGAAGATTTATAGGTAGAGGCGACAAACCTACCGAGCCTGGTGATAGCTGGTTGTCCAAGAT
+AGAATCTTAGTTCAACTTTAAATTTGCCCACAGAACCCTCTAAATCCCCTTGTAAATTTAACTGTTAGTC
+CAAAGAGGAACAGCTCTTTGGACACTAGGAAAAAACCTTGTAGAGAGAGTAAAAAATTTAACACCCATAG
+TAGGCCTAAAAGCAGCCACCAATTAAGAAAGCGTTCAAGCTCAACACCCACTACCTAAAAAATCCCAAAC
+ATATAACTGAACTCCTCACACCCAATTGGACCAATCTATCACCCTATAGAAGAACTAATGTTAGTATAAG
+TAACATGAAAACATTCTCCTCCGCATAAGCCTGCGTCAGATTAAAACACTGAACTGACAATTAACAGCCC
+AATATCTACAATCAACCAACAAGTCATTATTACCCTCACTGTCAACCCAACACAGGCATGCTCATAAGGA
+AAGGTTAAAAAAAGTAAAAGGAACTCGGCAAATCTTACCCCGCCTGTTTACCAAAAACATCACCTCTAGC
+ATCACCAGTATTAGAGGCACCGCCTGCCCAGTGACACATGTTTAACGGCCGCGGTACCCTAACCGTGCAA
+AGGTAGCATAATCACTTGTTCCTTAAATAGGGACCTGTATGAATGGCTCCACGAGGGTTCAGCTGTCTCT
+TACTTTTAACCAGTGAAATTGACCTGCCCGTGAAGAGGCGGGCATAACACAGCAAGACGAGAAGACCCTA
+TGGAGCTTTAATTTATTAATGCAAACAGTACCTAACAAACCCACAGGTCCTAAACTACCAAACCTGCATT
+AAAAATTTCGGTTGGGGCGACCTCGGAGCAGAACCCAACCTCCGAGCAGTACATGCTAAGACTTCACCAG
+TCAAAGCGAACTACTATACTCAATTGATCCAATAACTTGACCAACGGAACAAGTTACCCTAGGGATAACA
+GCGCAATCCTATTCTAGAGTCCATATCAACAATAGGGTTTACGACCTCGATGTTGGATCAGGACATCCCG
+ATGGTGCAGCCGCTATTAAAGGTTCGTTTGTTCAACGATTAAAGTCCTACGTGATCTGAGTTCAGACCGG
+AGTAATCCAGGTCGGTTTCTATCTACNTTCAAATTCCTCCCTGTACGAAAGGACAAGAGAAATAAGGCCT
+ACTTCACAAAGCGCCTTCCCCCGTAAATGATATCATCTCAACTTAGTATTATACCCACACCCACCCAAGA
+ACAGGGTTTGTTAAGATGGCAGAGCCCGGTAATCGCATAAAACTTAAAACTTTACAGTCAGAGGTTCAAT
+TCCTCTTCTTAACAACATACCCATGGCCAACCTCCTACTCCTCATTGTACCCATTCTAATCGCAATGGCA
+TTCCTAATGCTTACCGAACGAAAAATTCTAGGCTATATACAACTACGCAAAGGCCCCAACGTTGTAGGCC
+CCTACGGGCTACTACAACCCTTCGCTGACGCCATAAAACTCTTCACCAAAGAGCCCCTAAAACCCGCCAC
+ATCTACCATCACCCTCTACATCACCGCCCCGACCTTAGCTCTCACCATCGCTCTTCTACTATGAACCCCC
+CTCCCCATACCCAACCCCCTGGTCAACCTCAACCTAGGCCTCCTATTTATTCTAGCCACCTCTAGCCTAG
+CCGTTTACTCAATCCTCTGATCAGGGTGAGCATCAAACTCAAACTACGCCCTGATCGGCGCACTGCGAGC
+AGTAGCCCAAACAATCTCATATGAAGTCACCCTAGCCATCATTCTACTATCAACATTACTAATAAGTGGC
+TCCTTTAACCTCTCCACCCTTATCACAACACAAGAACACCTCTGATTACTCCTGCCATCATGACCCTTGG
+CCATAATATGATTTATCTCCACACTAGCAGAGACCAACCGAACCCCCTTCGACCTTGCCGAAGGGGAGTC
+CGAACTAGTCTCAGGCTTCAACATCGAATACGCCGCAGGCCCCTTCGCCCTATTCTTCATAGCCGAATAC
+ACAAACATTATTATAATAAACACCCTCACCACTACAATCTTCCTAGGAACAACATATGACGCACTCTCCC
+CTGAACTCTACACAACATATTTTGTCACCAAGACCCTACTTCTAACCTCCCTGTTCTTATGAATTCGAAC
+AGCATACCCCCGATTCCGCTACGACCAACTCATACACCTCCTATGAAAAAACTTCCTACCACTCACCCTA
+GCATTACTTATATGATATGTCTCCATACCCATTACAATCTCCAGCATTCCCCCTCAAACCTAAGAAATAT
+GTCTGATAAAAGAGTTACTTTGATAGAGTAAATAATAGGAGCTTAAACCCCCTTATTTCTAGGACTATGA
+GAATCGAACCCATCCCTGAGAATCCAAAATTCTCCGTGCCACCTATCACACCCCATCCTAAAGTAAGGTC
+AGCTAAATAAGCTATCGGGCCCATACCCCGAAAATGTTGGTTATACCCTTCCCGTACTAATTAATCCCCT
+GGCCCAACCCGTCATCTACTCTACCATCTTTGCAGGCACACTCATCACAGCGCTAAGCTCGCACTGATTT
+TTTACCTGAGTAGGCCTAGAAATAAACATGCTAGCTTTTATTCCAGTTCTAACCAAAAAAATAAACCCTC
+GTTCCACAGAAGCTGCCATCAAGTATTTCCTCACGCAAGCAACCGCATCCATAATCCTTCTAATAGCTAT
+CCTCTTCAACAATATACTCTCCGGACAATGAACCATAACCAATACTACCAATCAATACTCATCATTAATA
+ATCATAATAGCTATAGCAATAAAACTAGGAATAGCCCCCTTTCACTTCTGAGTCCCAGAGGTTACCCAAG
+GCACCCCTCTGACATCCGGCCTGCTTCTTCTCACATGACAAAAACTAGCCCCCATCTCAATCATATACCA
+AATCTCTCCCTCACTAAACGTAAGCCTTCTCCTCACTCTCTCAATCTTATCCATCATAGCAGGCAGTTGA
+GGTGGATTAAACCAAACCCAGCTACGCAAAATCTTAGCATACTCCTCAATTACCCACATAGGATGAATAA
+TAGCAGTTCTACCGTACAACCCTAACATAACCATTCTTAATTTAACTATTTATATTATCCTAACTACTAC
+CGCATTCCTACTACTCAACTTAAACTCCAGCACCACGACCCTACTACTATCTCGCACCTGAAACAAGCTA
+ACATGACTAACACCCTTAATTCCATCCACCCTCCTCTCCCTAGGAGGCCTGCCCCCGCTAACCGGCTTTT
+TGCCCAAATGGGCCATTATCGAAGAATTCACAAAAAACAATAGCCTCATCATCCCCACCATCATAGCCAC
+CATCACCCTCCTTAACCTCTACTTCTACCTACGCCTAATCTACTCCACCTCAATCACACTACTCCCCATA
+TCTAACAACGTAAAAATAAAATGACAGTTTGAACATACAAAACCCACCCCATTCCTCCCCACACTCATCG
+CCCTTACCACGCTACTCCTACCTATCTCCCCTTTTATACTAATAATCTTATAGAAATTTAGGTTAAATAC
+AGACCAAGAGCCTTCAAAGCCCTCAGTAAGTTGCAATACTTAATTTCTGTAACAGCTAAGGACTGCAAAA
+CCCCACTCTGCATCAACTGAACGCAAATCAGCCACTTTAATTAAGCTAAGCCCTTACTAGACCAATGGGA
+CTTAAACCCACAAACACTTAGTTAACAGCTAAGCACCCTAATCAACTGGCTTCAATCTACTTCTCCCGCC
+GCCGGGAAAAAAGGCGGGAGAAGCCCCGGCAGGTTTGAAGCTGCTTCTTCGAATTTGCAATTCAATATGA
+AAATCACCTCGGAGCTGGTAAAAAGAGGCCTAACCCCTGTCTTTAGATTTACAGTCCAATGCTTCACTCA
+GCCATTTTACCTCACCCCCACTGATGTTCGCCGACCGTTGACTATTCTCTACAAACCACAAAGACATTGG
+AACACTATACCTATTATTCGGCGCATGAGCTGGAGTCCTAGGCACAGCTCTAAGCCTCCTTATTCGAGCC
+GAGCTGGGCCAGCCAGGCAACCTTCTAGGTAACGACCACATCTACAACGTTATCGTCACAGCCCATGCAT
+TTGTAATAATCTTCTTCATAGTAATACCCATCATAATCGGAGGCTTTGGCAACTGACTAGTTCCCCTAAT
+AATCGGTGCCCCCGATATGGCGTTTCCCCGCATAAACAACATAAGCTTCTGACTCTTACCTCCCTCTCTC
+CTACTCCTGCTCGCATCTGCTATAGTGGAGGCCGGAGCAGGAACAGGTTGAACAGTCTACCCTCCCTTAG
+CAGGGAACTACTCCCACCCTGGAGCCTCCGTAGACCTAACCATCTTCTCCTTACACCTAGCAGGTGTCTC
+CTCTATCTTAGGGGCCATCAATTTCATCACAACAATTATCAATATAAAACCCCCTGCCATAACCCAATAC
+CAAACGCCCCTCTTCGTCTGATCCGTCCTAATCACAGCAGTCCTACTTCTCCTATCTCTCCCAGTCCTAG
+CTGCTGGCATCACTATACTACTAACAGACCGCAACCTCAACACCACCTTCTTCGACCCCGCCGGAGGAGG
+AGACCCCATTCTATACCAACACCTATTCTGATTTTTCGGTCACCCTGAAGTTTATATTCTTATCCTACCA
+GGCTTCGGAATAATCTCCCATATTGTAACTTACTACTCCGGAAAAAAAGAACCATTTGGATACATAGGTA
+TGGTCTGAGCTATGATATCAATTGGCTTCCTAGGGTTTATCGTGTGAGCACACCATATATTTACAGTAGG
+AATAGACGTAGACACACGAGCATATTTCACCTCCGCTACCATAATCATCGCTATCCCCACCGGCGTCAAA
+GTATTTAGCTGACTCGCCACACTCCACGGAAGCAATATGAAATGATCTGCTGCAGTGCTCTGAGCCCTAG
+GATTCATCTTTCTTTTCACCGTAGGTGGCCTGACTGGCATTGTATTAGCAAACTCATCACTAGACATCGT
+ACTACACGACACGTACTACGTTGTAGCCCACTTCCACTATGTCCTATCAATAGGAGCTGTATTTGCCATC
+ATAGGAGGCTTCATTCACTGATTTCCCCTATTCTCAGGCTACACCCTAGACCAAACCTACGCCAAAATCC
+ATTTCACTATCATATTCATCGGCGTAAATCTAACTTTCTTCCCACAACACTTTCTCGGCCTATCCGGAAT
+GCCCCGACGTTACTCGGACTACCCCGATGCATACACCACATGAAACATCCTATCATCTGTAGGCTCATTC
+ATTTCTCTAACAGCAGTAATATTAATAATTTTCATGATTTGAGAAGCCTTCGCTTCGAAGCGAAAAGTCC
+TAATAGTAGAAGAACCCTCCATAAACCTGGAGTGACTATATGGATGCCCCCCACCCTACCACACATTCGA
+AGAACCCGTATACATAAAATCTAGACAAAAAAGGAAGGAATCGAACCCCCCAAAGCTGGTTTCAAGCCAA
+CCCCATGGCCTCCATGACTTTTTCAAAAAGGTATTAGAAAAACCATTTCATAACTTTGTCAAAGTTAAAT
+TATAGGCTAAATCCTATATATCTTAATGGCACATGCAGCGCAAGTAGGTCTACAAGACGCTACTTCCCCT
+ATCATAGAAGAGCTTATCACCTTTCATGATCACGCCCTCATAATCATTTTCCTTATCTGCTTCCTAGTCC
+TGTATGCCCTTTTCCTAACACTCACAACAAAACTAACTAATACTAACATCTCAGACGCTCAGGAAATAGA
+AACCGTCTGAACTATCCTGCCCGCCATCATCCTAGTCCTCATCGCCCTCCCATCCCTACGCATCCTTTAC
+ATAACAGACGAGGTCAACGATCCCTCCCTTACCATCAAATCAATTGGCCACCAATGGTACTGAACCTACG
+AGTACACCGACTACGGCGGACTAATCTTCAACTCCTACATACTTCCCCCATTATTCCTAGAACCAGGCGA
+CCTGCGACTCCTTGACGTTGACAATCGAGTAGTACTCCCGATTGAAGCCCCCATTCGTATAATAATTACA
+TCACAAGACGTCTTGCACTCATGAGCTGTCCCCACATTAGGCTTAAAAACAGATGCAATTCCCGGACGTC
+TAAACCAAACCACTTTCACCGCTACACGACCGGGGGTATACTACGGTCAATGCTCTGAAATCTGTGGAGC
+AAACCACAGTTTCATGCCCATCGTCCTAGAATTAATTCCCCTAAAAATCTTTGAAATAGGGCCCGTATTT
+ACCCTATAGCACCCCCTCTACCCCCTCTAGAGCCCACTGTAAAGCTAACTTAGCATTAACCTTTTAAGTT
+AAAGATTAAGAGAACCAACACCTCTTTACAGTGAAATGCCCCAACTAAATACTACCGTATGGCCCACCAT
+AATTACCCCCATACTCCTTACACTATTCCTCATCACCCAACTAAAAATATTAAACACAAACTACCACCTA
+CCTCCCTCACCAAAGCCCATAAAAATAAAAAATTATAACAAACCCTGAGAACCAAAATGAACGAAAATCT
+GTTCGCTTCATTCATTGCCCCCACAATCCTAGGCCTACCCGCCGCAGTACTGATCATTCTATTTCCCCCT
+CTATTGATCCCCACCTCCAAATATCTCATCAACAACCGACTAATCACCACCCAACAATGACTAATCAAAC
+TAACCTCAAAACAAATGATAACCATACACAACACTAAAGGACGAACCTGATCTCTTATACTAGTATCCTT
+AATCATTTTTATTGCCACAACTAACCTCCTCGGACTCCTGCCTCACTCATTTACACCAACCACCCAACTA
+TCTATAAACCTAGCCATGGCCATCCCCTTATGAGCGGGCACAGTGATTATAGGCTTTCGCTCTAAGATTA
+AAAATGCCCTAGCCCACTTCTTACCACAAGGCACACCTACACCCCTTATCCCCATACTAGTTATTATCGA
+AACCATCAGCCTACTCATTCAACCAATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCAC
+CTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCA
+TCTTCACAATTCTAATTCTACTGACTATCCTAGAAATCGCTGTCGCCTTAATCCAAGCCTACGTTTTCAC
+ACTTCTAGTAAGCCTCTACCTGCACGACAACACATAATGACCCACCAATCACATGCCTATCATATAGTAA
+AACCCAGCCCATGACCCCTAACAGGGGCCCTCTCAGCCCTCCTAATGACCTCCGGCCTAGCCATGTGATT
+TCACTTCCACTCCATAACGCTCCTCATACTAGGCCTACTAACCAACACACTAACCATATACCAATGATGG
+CGCGATGTAACACGAGAAAGCACATACCAAGGCCACCACACACCACCTGTCCAAAAAGGCCTTCGATACG
+GGATAATCCTATTTATTACCTCAGAAGTTTTTTTCTTCGCAGGATTTTTCTGAGCCTTTTACCACTCCAG
+CCTAGCCCCTACCCCCCAATTAGGAGGGCACTGGCCCCCAACAGGCATCACCCCGCTAAATCCCCTAGAA
+GTCCCACTCCTAAACACATCCGTATTACTCGCATCAGGAGTATCAATCACCTGAGCTCACCATAGTCTAA
+TAGAAAACAACCGAAACCAAATAATTCAAGCACTGCTTATTACAATTTTACTGGGTCTCTATTTTACCCT
+CCTACAAGCCTCAGAGTACTTCGAGTCTCCCTTCACCATTTCCGACGGCATCTACGGCTCAACATTTTTT
+GTAGCCACAGGCTTCCACGGACTTCACGTCATTATTGGCTCAACTTTCCTCACTATCTGCTTCATCCGCC
+AACTAATATTTCACTTTACATCCAAACATCACTTTGGCTTCGAAGCCGCCGCCTGATACTGGCATTTTGT
+AGATGTGGTTTGACTATTTCTGTATGTCTCCATCTATTGATGAGGGTCTTACTCTTTTAGTATAAATAGT
+ACCGTTAACTTCCAATTAACTAGTTTTGACAACATTCAAAAAAGAGTAATAAACTTCGCCTTAATTTTAA
+TAATCAACACCCTCCTAGCCTTACTACTAATAATTATTACATTTTGACTACCACAACTCAACGGCTACAT
+AGAAAAATCCACCCCTTACGAGTGCGGCTTCGACCCTATATCCCCCGCCCGCGTCCCTTTCTCCATAAAA
+TTCTTCTTAGTAGCTATTACCTTCTTATTATTTGATCTAGAAATTGCCCTCCTTTTACCCCTACCATGAG
+CCCTACAAACAACTAACCTGCCACTAATAGTTATGTCATCCCTCTTATTAATCATCATCCTAGCCCTAAG
+TCTGGCCTATGAGTGACTACAAAAAGGATTAGACTGAACCGAATTGGTATATAGTTTAAACAAAACGAAT
+GATTTCGACTCATTAAATTATGATAATCATATTTACCAAATGCCCCTCATTTACATAAATATTATACTAG
+CATTTACCATCTCACTTCTAGGAATACTAGTATATCGCTCACACCTCATATCCTCCCTACTATGCCTAGA
+AGGAATAATACTATCGCTGTTCATTATAGCTACTCTCATAACCCTCAACACCCACTCCCTCTTAGCCAAT
+ATTGTGCCTATTGCCATACTAGTCTTTGCCGCCTGCGAAGCAGCGGTGGGCCTAGCCCTACTAGTCTCAA
+TCTCCAACACATATGGCCTAGACTACGTACATAACCTAAACCTACTCCAATGCTAAAACTAATCGTCCCA
+ACAATTATATTACTACCACTGACATGACTTTCCAAAAAACACATAATTTGAATCAACACAACCACCCACA
+GCCTAATTATTAGCATCATCCCTCTACTATTTTTTAACCAAATCAACAACAACCTATTTAGCTGTTCCCC
+AACCTTTTCCTCCGACCCCCTAACAACCCCCCTCCTAATACTAACTACCTGACTCCTACCCCTCACAATC
+ATGGCAAGCCAACGCCACTTATCCAGTGAACCACTATCACGAAAAAAACTCTACCTCTCTATACTAATCT
+CCCTACAAATCTCCTTAATTATAACATTCACAGCCACAGAACTAATCATATTTTATATCTTCTTCGAAAC
+CACACTTATCCCCACCTTGGCTATCATCACCCGATGAGGCAACCAGCCAGAACGCCTGAACGCAGGCACA
+TACTTCCTATTCTACACCCTAGTAGGCTCCCTTCCCCTACTCATCGCACTAATTTACACTCACAACACCC
+TAGGCTCACTAAACATTCTACTACTCACTCTCACTGCCCAAGAACTATCAAACTCCTGAGCCAACAACTT
+AATATGACTAGCTTACACAATAGCTTTTATAGTAAAGATACCTCTTTACGGACTCCACTTATGACTCCCT
+AAAGCCCATGTCGAAGCCCCCATCGCTGGGTCAATAGTACTTGCCGCAGTACTCTTAAAACTAGGCGGCT
+ATGGTATAATACGCCTCACACTCATTCTCAACCCCCTGACAAAACACATAGCCTACCCCTTCCTTGTACT
+ATCCCTATGAGGCATAATTATAACAAGCTCCATCTGCCTACGACAAACAGACCTAAAATCGCTCATTGCA
+TACTCTTCAATCAGCCACATAGCCCTCGTAGTAACAGCCATTCTCATCCAAACCCCCTGAAGCTTCACCG
+GCGCAGTCATTCTCATAATCGCCCACGGGCTTACATCCTCATTACTATTCTGCCTAGCAAACTCAAACTA
+CGAACGCACTCACAGTCGCATCATAATCCTCTCTCAAGGACTTCAAACTCTACTCCCACTAATAGCTTTT
+TGATGACTTCTAGCAAGCCTCGCTAACCTCGCCTTACCCCCCACTATTAACCTACTGGGAGAACTCTCTG
+TGCTAGTAACCACGTTCTCCTGATCAAATATCACTCTCCTACTTACAGGACTCAACATACTAGTCACAGC
+CCTATACTCCCTCTACATATTTACCACAACACAATGGGGCTCACTCACCCACCACATTAACAACATAAAA
+CCCTCATTCACACGAGAAAACACCCTCATGTTCATACACCTATCCCCCATTCTCCTCCTATCCCTCAACC
+CCGACATCATTACCGGGTTTTCCTCTTGTAAATATAGTTTAACCAAAACATCAGATTGTGAATCTGACAA
+CAGAGGCTTACGACCCCTTATTTACCGAGAAAGCTCACAAGAACTGCTAACTCATGCCCCCATGTCTAAC
+AACATGGCTTTCTCAACTTTTAAAGGATAACAGCTATCCATTGGTCTTAGGCCCCAAAAATTTTGGTGCA
+ACTCCAAATAAAAGTAATAACCATGCACACTACTATAACCACCCTAACCCTGACTTCCCTAATTCCCCCC
+ATCCTTACCACCCTCGTTAACCCTAACAAAAAAAACTCATACCCCCATTATGTAAAATCCATTGTCGCAT
+CCACCTTTATTATCAGTCTCTTCCCCACAACAATATTCATGTGCCTAGACCAAGAAGTTATTATCTCGAA
+CTGACACTGAGCCACAACCCAAACAACCCAGCTCTCCCTAAGCTTCAAACTAGACTACTTCTCCATAATA
+TTCATCCCTGTAGCATTGTTCGTTACATGGTCCATCATAGAATTCTCACTGTGATATATAAACTCAGACC
+CAAACATTAATCAGTTCTTCAAATATCTACTCATCTTCCTAATTACCATACTAATCTTAGTTACCGCTAA
+CAACCTATTCCAACTGTTCATCGGCTGAGAGGGCGTAGGAATTATATCCTTCTTGCTCATCAGTTGATGA
+TACGCCCGAGCAGATGCCAACACAGCAGCCATTCAAGCAATCCTATACAACCGTATCGGCGATATCGGTT
+TCATCCTCGCCTTAGCATGATTTATCCTACACTCCAACTCATGAGACCCACAACAAATAGCCCTTCTAAA
+CGCTAATCCAAGCCTCACCCCACTACTAGGCCTCCTCCTAGCAGCAGCAGGCAAATCAGCCCAATTAGGT
+CTCCACCCCTGACTCCCCTCAGCCATAGAAGGCCCCACCCCAGTCTCAGCCCTACTCCACTCAAGCACTA
+TAGTTGTAGCAGGAATCTTCTTACTCATCCGCTTCCACCCCCTAGCAGAAAATAGCCCACTAATCCAAAC
+TCTAACACTATGCTTAGGCGCTATCACCACTCTGTTCGCAGCAGTCTGCGCCCTTACACAAAATGACATC
+AAAAAAATCGTAGCCTTCTCCACTTCAAGTCAACTAGGACTCATAATAGTTACAATCGGCATCAACCAAC
+CACACCTAGCATTCCTGCACATCTGTACCCACGCCTTCTTCAAAGCCATACTATTTATGTGCTCCGGGTC
+CATCATCCACAACCTTAACAATGAACAAGATATTCGAAAAATAGGAGGACTACTCAAAACCATACCTCTC
+ACTTCAACCTCCCTCACCATTGGCAGCCTAGCATTAGCAGGAATACCTTTCCTCACAGGTTTCTACTCCA
+AAGACCACATCATCGAAACCGCAAACATATCATACACAAACGCCTGAGCCCTATCTATTACTCTCATCGC
+TACCTCCCTGACAAGCGCCTATAGCACTCGAATAATTCTTCTCACCCTAACAGGTCAACCTCGCTTCCCC
+ACCCTTACTAACATTAACGAAAATAACCCCACCCTACTAAACCCCATTAAACGCCTGGCAGCCGGAAGCC
+TATTCGCAGGATTTCTCATTACTAACAACATTTCCCCCGCATCCCCCTTCCAAACAACAATCCCCCTCTA
+CCTAAAACTCACAGCCCTCGCTGTCACTTTCCTAGGACTTCTAACAGCCCTAGACCTCAACTACCTAACC
+AACAAACTTAAAATAAAATCCCCACTATGCACATTTTATTTCTCCAACATACTCGGATTCTACCCTAGCA
+TCACACACCGCACAATCCCCTATCTAGGCCTTCTTACGAGCCAAAACCTGCCCCTACTCCTCCTAGACCT
+AACCTGACTAGAAAAGCTATTACCTAAAACAATTTCACAGCACCAAATCTCCACCTCCATCATCACCTCA
+ACCCAAAAAGGCATAATTAAACTTTACTTCCTCTCTTTCTTCTTCCCACTCATCCTAACCCTACTCCTAA
+TCACATAACCTATTCCCCCGAGCAATCTCAATTACAATATATACACCAACAAACAATGTTCAACCAGTAA
+CTACTACTAATCAACGCCCATAATCATACAAAGCCCCCGCACCAATAGGATCCTCCCGAATCAACCCTGA
+CCCCTCTCCTTCATAAATTATTCAGCTTCCTACACTATTAAAGTTTACCACAACCACCACCCCATCATAC
+TCTTTCACCCACAGCACCAATCCTACCTCCATCGCTAACCCCACTAAAACACTCACCAAGACCTCAACCC
+CTGACCCCCATGCCTCAGGATACTCCTCAATAGCCATCGCTGTAGTATATCCAAAGACAACCATCATTCC
+CCCTAAATAAATTAAAAAAACTATTAAACCCATATAACCTCCCCCAAAATTCAGAATAATAACACACCCG
+ACCACACCGCTAACAATCAATACTAAACCCCCATAAATAGGAGAAGGCTTAGAAGAAAACCCCACAAACC
+CCATTACTAAACCCACACTCAACAGAAACAAAGCATACATCATTATTCTCGCACGGACTACAACCACGAC
+CAATGATATGAAAAACCATCGTTGTATTTCAACTACAAGAACACCAATGACCCCAATACGCAAAACTAAC
+CCCCTAATAAAATTAATTAACCACTCATTCATCGACCTCCCCACCCCATCCAACATCTCCGCATGATGAA
+ACTTCGGCTCACTCCTTGGCGCCTGCCTGATCCTCCAAATCACCACAGGACTATTCCTAGCCATGCACTA
+CTCACCAGACGCCTCAACCGCCTTTTCATCAATCGCCCACATCACTCGAGACGTAAATTATGGCTGAATC
+ATCCGCTACCTTCACGCCAATGGCGCCTCAATATTCTTTATCTGCCTCTTCCTACACATCGGGCGAGGCC
+TATATTACGGATCATTTCTCTACTCAGAAACCTGAAACATCGGCATTATCCTCCTGCTTGCAACTATAGC
+AACAGCCTTCATAGGCTATGTCCTCCCGTGAGGCCAAATATCATTCTGAGGGGCCACAGTAATTACAAAC
+TTACTATCCGCCATCCCATACATTGGGACAGACCTAGTTCAATGAATCTGAGGAGGCTACTCAGTAGACA
+GTCCCACCCTCACACGATTCTTTACCTTTCACTTCATCTTGCCCTTCATTATTGCAGCCCTAGCAACACT
+CCACCTCCTATTCTTGCACGAAACGGGATCAAACAACCCCCTAGGAATCACCTCCCATTCCGATAAAATC
+ACCTTCCACCCTTACTACACAATCAAAGACGCCCTCGGCTTACTTCTCTTCCTTCTCTCCTTAATGACAT
+TAACACTATTCTCACCAGACCTCCTAGGCGACCCAGACAATTATACCCTAGCCAACCCCTTAAACACCCC
+TCCCCACATCAAGCCCGAATGATATTTCCTATTCGCCTACACAATTCTCCGATCCGTCCCTAACAAACTA
+GGAGGCGTCCTTGCCCTATTACTATCCATCCTCATCCTAGCAATAATCCCCATCCTCCATATATCCAAAC
+AACAAAGCATAATATTTCGCCCACTAAGCCAATCACTTTATTGACTCCTAGCCGCAGACCTCCTCATTCT
+AACCTGAATCGGAGGACAACCAGTAAGCTACCCTTTTACCATCATTGGACAAGTAGCATCCGTACTATAC
+TTCACAACAATCCTAATCCTAATACCAACTATCTCCCTAATTGAAAACAAAATACTCAAATGGGCCTGTC
+CTTGTAGTATAAACTAATACACCAGTCTTGTAAACCGGAGATGAAAACCTTTTTCCAAGGACAAATCAGA
+GAAAAAGTCTTTAACTCCACCATTAGCACCCAAAGCTAAGATTCTAATTTAAACTATTCTCTGTTCTTTC
+ATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACCGCTATGTATTTCGTACA
+TTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACTTGACCACCTGTAGTACATAAAAACCCA
+ATCCACATCAAAACCCCCTCCCCATGCTTACAAGCAAGTACAGCAATCAACCCTCAACTATCACACATCA
+ACTGCAACTCCAAAGCCACCCCTCACCCACTAGGATACCAACAAACCTACCCACCCTTAACAGTACATAG
+TACATAAAGCCATTTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCC
+TCAGATAGGGGTCCCTTGACCACCATCCTCCGTGAAATCAATATCCCGCACAAGAGTGCTACTCTCCTCG
+CTCCGGGCCCATAACACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTC
+ATAAAGCCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_fimo_input_1.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,8739 @@
+<?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 name CDATA #REQUIRED>
+<!ELEMENT ambigs (letter*)>
+<!ELEMENT letter EMPTY>
+<!ATTLIST letter id ID #REQUIRED>
+<!ATTLIST letter symbol CDATA #REQUIRED>
+<!ATTLIST letter equals CDATA #IMPLIED>
+<!ATTLIST letter aliases CDATA #IMPLIED>
+<!ATTLIST letter complement CDATA #IMPLIED>
+<!ATTLIST letter name CDATA #IMPLIED>
+<!ATTLIST letter colour CDATA #IMPLIED>
+<!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,
+  spfun,
+  min_width,
+  max_width,
+  wg,
+  ws,
+  endgaps,
+  minsites,
+  maxsites,
+  wnsites,
+  spmap,
+  spfuzz,
+  prior,
+  beta,
+  maxiter,
+  distance,
+  num_sequences,
+  num_positions,
+  seed,
+  hsfrac,
+  maxwords,
+  maxsize,
+  csites,
+  strands,
+  priors_file,
+  reason_for_stopping,
+  back_order,
+  background_frequencies
+)>
+<!ELEMENT command_line (#PCDATA)*>
+<!ELEMENT host (#PCDATA)*>
+<!ELEMENT type (#PCDATA)*>
+<!ELEMENT nmotifs (#PCDATA)*>
+<!ELEMENT evalue_threshold (#PCDATA)*>
+<!ELEMENT object_function (#PCDATA)*>
+<!ELEMENT spfun (#PCDATA)*>
+<!ELEMENT min_width (#PCDATA)*>
+<!ELEMENT max_width (#PCDATA)*>
+<!ELEMENT wg (#PCDATA)*>
+<!ELEMENT ws (#PCDATA)*>
+<!ELEMENT endgaps (#PCDATA)*>
+<!ELEMENT minsites (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT wnsites (#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 hsfrac (#PCDATA)*>
+<!ELEMENT maxwords (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT csites (#PCDATA)*>
+<!ELEMENT strands (#PCDATA)*>
+<!ELEMENT priors_file (#PCDATA)*>
+<!ELEMENT reason_for_stopping (#PCDATA)*>
+<!ELEMENT back_order (#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
+                alt CDATA ""
+                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.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+<training_set datafile="meme_inputx.fa" length="1000">
+<alphabet name="DNA" like="dna">
+<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+<letter id="V" symbol="V" equals="ACG" name="Not T"/>
+<letter id="H" symbol="H" equals="ACT" name="Not G"/>
+<letter id="D" symbol="D" equals="AGT" name="Not C"/>
+<letter id="B" symbol="B" equals="CGT" name="Not A"/>
+<letter id="M" symbol="M" equals="AC" name="Amino"/>
+<letter id="R" symbol="R" equals="AG" name="Purine"/>
+<letter id="W" symbol="W" equals="AT" name="Weak"/>
+<letter id="S" symbol="S" equals="CG" name="Strong"/>
+<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+<letter id="K" symbol="K" equals="GT" name="Keto"/>
+</alphabet>
+<sequence id="sequence_0" name="QKI_HepG2_rep01_29358" length="81" weight="1.000000" />
+<sequence id="sequence_1" name="QKI_HepG2_rep01_15042" length="81" weight="1.000000" />
+<sequence id="sequence_2" name="QKI_HepG2_rep01_48178" length="81" weight="1.000000" />
+<sequence id="sequence_3" name="QKI_HepG2_rep01_43658" length="81" weight="1.000000" />
+<sequence id="sequence_4" name="QKI_HepG2_rep01_33613" length="81" weight="1.000000" />
+<sequence id="sequence_5" name="QKI_HepG2_rep01_54213" length="81" weight="1.000000" />
+<sequence id="sequence_6" name="QKI_HepG2_rep01_9280" length="81" weight="1.000000" />
+<sequence id="sequence_7" name="QKI_HepG2_rep01_38176" length="81" weight="1.000000" />
+<sequence id="sequence_8" name="QKI_HepG2_rep01_5190" length="81" weight="1.000000" />
+<sequence id="sequence_9" name="QKI_HepG2_rep01_46364" length="81" weight="1.000000" />
+<sequence id="sequence_10" name="QKI_HepG2_rep01_35016" length="81" weight="1.000000" />
+<sequence id="sequence_11" name="QKI_HepG2_rep01_30752" length="81" weight="1.000000" />
+<sequence id="sequence_12" name="QKI_HepG2_rep01_30905" length="81" weight="1.000000" />
+<sequence id="sequence_13" name="QKI_HepG2_rep01_54108" length="81" weight="1.000000" />
+<sequence id="sequence_14" name="QKI_HepG2_rep01_4260" length="81" weight="1.000000" />
+<sequence id="sequence_15" name="QKI_HepG2_rep01_1449" length="81" weight="1.000000" />
+<sequence id="sequence_16" name="QKI_HepG2_rep01_54286" length="81" weight="1.000000" />
+<sequence id="sequence_17" name="QKI_HepG2_rep01_25178" length="81" weight="1.000000" />
+<sequence id="sequence_18" name="QKI_HepG2_rep01_51192" length="81" weight="1.000000" />
+<sequence id="sequence_19" name="QKI_HepG2_rep01_51768" length="81" weight="1.000000" />
+<sequence id="sequence_20" name="QKI_HepG2_rep01_50149" length="81" weight="1.000000" />
+<sequence id="sequence_21" name="QKI_HepG2_rep01_32123" length="81" weight="1.000000" />
+<sequence id="sequence_22" name="QKI_HepG2_rep01_15070" length="81" weight="1.000000" />
+<sequence id="sequence_23" name="QKI_HepG2_rep01_31017" length="81" weight="1.000000" />
+<sequence id="sequence_24" name="QKI_HepG2_rep01_44156" length="81" weight="1.000000" />
+<sequence id="sequence_25" name="QKI_HepG2_rep01_46738" length="81" weight="1.000000" />
+<sequence id="sequence_26" name="QKI_HepG2_rep01_7558" length="81" weight="1.000000" />
+<sequence id="sequence_27" name="QKI_HepG2_rep01_51260" length="81" weight="1.000000" />
+<sequence id="sequence_28" name="QKI_HepG2_rep01_17486" length="81" weight="1.000000" />
+<sequence id="sequence_29" name="QKI_HepG2_rep01_14960" length="81" weight="1.000000" />
+<sequence id="sequence_30" name="QKI_HepG2_rep01_33496" length="81" weight="1.000000" />
+<sequence id="sequence_31" name="QKI_HepG2_rep01_34434" length="81" weight="1.000000" />
+<sequence id="sequence_32" name="QKI_HepG2_rep01_52171" length="81" weight="1.000000" />
+<sequence id="sequence_33" name="QKI_HepG2_rep01_43488" length="81" weight="1.000000" />
+<sequence id="sequence_34" name="QKI_HepG2_rep01_21553" length="81" weight="1.000000" />
+<sequence id="sequence_35" name="QKI_HepG2_rep01_32206" length="81" weight="1.000000" />
+<sequence id="sequence_36" name="QKI_HepG2_rep01_49099" length="81" weight="1.000000" />
+<sequence id="sequence_37" name="QKI_HepG2_rep01_54516" length="81" weight="1.000000" />
+<sequence id="sequence_38" name="QKI_HepG2_rep01_41364" length="81" weight="1.000000" />
+<sequence id="sequence_39" name="QKI_HepG2_rep01_42776" length="81" weight="1.000000" />
+<sequence id="sequence_40" name="QKI_HepG2_rep01_33728" length="81" weight="1.000000" />
+<sequence id="sequence_41" name="QKI_HepG2_rep01_34426" length="81" weight="1.000000" />
+<sequence id="sequence_42" name="QKI_HepG2_rep01_49317" length="81" weight="1.000000" />
+<sequence id="sequence_43" name="QKI_HepG2_rep01_2721" length="81" weight="1.000000" />
+<sequence id="sequence_44" name="QKI_HepG2_rep01_70" length="81" weight="1.000000" />
+<sequence id="sequence_45" name="QKI_HepG2_rep01_3629" length="81" weight="1.000000" />
+<sequence id="sequence_46" name="QKI_HepG2_rep01_32675" length="81" weight="1.000000" />
+<sequence id="sequence_47" name="QKI_HepG2_rep01_29195" length="81" weight="1.000000" />
+<sequence id="sequence_48" name="QKI_HepG2_rep01_10867" length="81" weight="1.000000" />
+<sequence id="sequence_49" name="QKI_HepG2_rep01_54614" length="81" weight="1.000000" />
+<sequence id="sequence_50" name="QKI_HepG2_rep01_23039" length="81" weight="1.000000" />
+<sequence id="sequence_51" name="QKI_HepG2_rep01_12802" length="81" weight="1.000000" />
+<sequence id="sequence_52" name="QKI_HepG2_rep01_40580" length="81" weight="1.000000" />
+<sequence id="sequence_53" name="QKI_HepG2_rep01_53980" length="81" weight="1.000000" />
+<sequence id="sequence_54" name="QKI_HepG2_rep01_23257" length="81" weight="1.000000" />
+<sequence id="sequence_55" name="QKI_HepG2_rep01_46894" length="81" weight="1.000000" />
+<sequence id="sequence_56" name="QKI_HepG2_rep01_33658" length="81" weight="1.000000" />
+<sequence id="sequence_57" name="QKI_HepG2_rep01_29155" length="81" weight="1.000000" />
+<sequence id="sequence_58" name="QKI_HepG2_rep01_52906" length="81" weight="1.000000" />
+<sequence id="sequence_59" name="QKI_HepG2_rep01_7114" length="81" weight="1.000000" />
+<sequence id="sequence_60" name="QKI_HepG2_rep01_48212" length="81" weight="1.000000" />
+<sequence id="sequence_61" name="QKI_HepG2_rep01_51052" length="81" weight="1.000000" />
+<sequence id="sequence_62" name="QKI_HepG2_rep01_36331" length="81" weight="1.000000" />
+<sequence id="sequence_63" name="QKI_HepG2_rep01_17037" length="81" weight="1.000000" />
+<sequence id="sequence_64" name="QKI_HepG2_rep01_6482" length="81" weight="1.000000" />
+<sequence id="sequence_65" name="QKI_HepG2_rep01_54284" length="81" weight="1.000000" />
+<sequence id="sequence_66" name="QKI_HepG2_rep01_8241" length="81" weight="1.000000" />
+<sequence id="sequence_67" name="QKI_HepG2_rep01_30440" length="81" weight="1.000000" />
+<sequence id="sequence_68" name="QKI_HepG2_rep01_30966" length="81" weight="1.000000" />
+<sequence id="sequence_69" name="QKI_HepG2_rep01_25446" length="81" weight="1.000000" />
+<sequence id="sequence_70" name="QKI_HepG2_rep01_10821" length="81" weight="1.000000" />
+<sequence id="sequence_71" name="QKI_HepG2_rep01_548" length="81" weight="1.000000" />
+<sequence id="sequence_72" name="QKI_HepG2_rep01_38109" length="81" weight="1.000000" />
+<sequence id="sequence_73" name="QKI_HepG2_rep01_16917" length="81" weight="1.000000" />
+<sequence id="sequence_74" name="QKI_HepG2_rep01_44144" length="81" weight="1.000000" />
+<sequence id="sequence_75" name="QKI_HepG2_rep01_41444" length="81" weight="1.000000" />
+<sequence id="sequence_76" name="QKI_HepG2_rep01_18540" length="81" weight="1.000000" />
+<sequence id="sequence_77" name="QKI_HepG2_rep01_1716" length="81" weight="1.000000" />
+<sequence id="sequence_78" name="QKI_HepG2_rep01_42433" length="81" weight="1.000000" />
+<sequence id="sequence_79" name="QKI_HepG2_rep01_12479" length="81" weight="1.000000" />
+<sequence id="sequence_80" name="QKI_HepG2_rep01_23479" length="81" weight="1.000000" />
+<sequence id="sequence_81" name="QKI_HepG2_rep01_44834" length="81" weight="1.000000" />
+<sequence id="sequence_82" name="QKI_HepG2_rep01_16900" length="81" weight="1.000000" />
+<sequence id="sequence_83" name="QKI_HepG2_rep01_27817" length="81" weight="1.000000" />
+<sequence id="sequence_84" name="QKI_HepG2_rep01_6121" length="81" weight="1.000000" />
+<sequence id="sequence_85" name="QKI_HepG2_rep01_50364" length="81" weight="1.000000" />
+<sequence id="sequence_86" name="QKI_HepG2_rep01_12788" length="81" weight="1.000000" />
+<sequence id="sequence_87" name="QKI_HepG2_rep01_39967" length="81" weight="1.000000" />
+<sequence id="sequence_88" name="QKI_HepG2_rep01_18638" length="81" weight="1.000000" />
+<sequence id="sequence_89" name="QKI_HepG2_rep01_34838" length="81" weight="1.000000" />
+<sequence id="sequence_90" name="QKI_HepG2_rep01_53002" length="81" weight="1.000000" />
+<sequence id="sequence_91" name="QKI_HepG2_rep01_42554" length="81" weight="1.000000" />
+<sequence id="sequence_92" name="QKI_HepG2_rep01_448" length="81" weight="1.000000" />
+<sequence id="sequence_93" name="QKI_HepG2_rep01_46295" length="81" weight="1.000000" />
+<sequence id="sequence_94" name="QKI_HepG2_rep01_40447" length="81" weight="1.000000" />
+<sequence id="sequence_95" name="QKI_HepG2_rep01_6188" length="81" weight="1.000000" />
+<sequence id="sequence_96" name="QKI_HepG2_rep01_23569" length="81" weight="1.000000" />
+<sequence id="sequence_97" name="QKI_HepG2_rep01_43854" length="81" weight="1.000000" />
+<sequence id="sequence_98" name="QKI_HepG2_rep01_39137" length="81" weight="1.000000" />
+<sequence id="sequence_99" name="QKI_HepG2_rep01_46196" length="81" weight="1.000000" />
+<sequence id="sequence_100" name="QKI_HepG2_rep01_13287" length="81" weight="1.000000" />
+<sequence id="sequence_101" name="QKI_HepG2_rep01_12881" length="81" weight="1.000000" />
+<sequence id="sequence_102" name="QKI_HepG2_rep01_50598" length="81" weight="1.000000" />
+<sequence id="sequence_103" name="QKI_HepG2_rep01_8300" length="81" weight="1.000000" />
+<sequence id="sequence_104" name="QKI_HepG2_rep01_19971" length="81" weight="1.000000" />
+<sequence id="sequence_105" name="QKI_HepG2_rep01_15093" length="81" weight="1.000000" />
+<sequence id="sequence_106" name="QKI_HepG2_rep01_49200" length="81" weight="1.000000" />
+<sequence id="sequence_107" name="QKI_HepG2_rep01_6452" length="81" weight="1.000000" />
+<sequence id="sequence_108" name="QKI_HepG2_rep01_1453" length="81" weight="1.000000" />
+<sequence id="sequence_109" name="QKI_HepG2_rep01_26845" length="81" weight="1.000000" />
+<sequence id="sequence_110" name="QKI_HepG2_rep01_23241" length="81" weight="1.000000" />
+<sequence id="sequence_111" name="QKI_HepG2_rep01_40564" length="81" weight="1.000000" />
+<sequence id="sequence_112" name="QKI_HepG2_rep01_32280" length="81" weight="1.000000" />
+<sequence id="sequence_113" name="QKI_HepG2_rep01_44482" length="81" weight="1.000000" />
+<sequence id="sequence_114" name="QKI_HepG2_rep01_32445" length="81" weight="1.000000" />
+<sequence id="sequence_115" name="QKI_HepG2_rep01_48076" length="81" weight="1.000000" />
+<sequence id="sequence_116" name="QKI_HepG2_rep01_18808" length="81" weight="1.000000" />
+<sequence id="sequence_117" name="QKI_HepG2_rep01_42678" length="81" weight="1.000000" />
+<sequence id="sequence_118" name="QKI_HepG2_rep01_32315" length="81" weight="1.000000" />
+<sequence id="sequence_119" name="QKI_HepG2_rep01_51799" length="81" weight="1.000000" />
+<sequence id="sequence_120" name="QKI_HepG2_rep01_53264" length="81" weight="1.000000" />
+<sequence id="sequence_121" name="QKI_HepG2_rep01_21602" length="81" weight="1.000000" />
+<sequence id="sequence_122" name="QKI_HepG2_rep01_17440" length="81" weight="1.000000" />
+<sequence id="sequence_123" name="QKI_HepG2_rep01_41518" length="81" weight="1.000000" />
+<sequence id="sequence_124" name="QKI_HepG2_rep01_41640" length="81" weight="1.000000" />
+<sequence id="sequence_125" name="QKI_HepG2_rep01_39041" length="81" weight="1.000000" />
+<sequence id="sequence_126" name="QKI_HepG2_rep01_43211" length="81" weight="1.000000" />
+<sequence id="sequence_127" name="QKI_HepG2_rep01_46759" length="81" weight="1.000000" />
+<sequence id="sequence_128" name="QKI_HepG2_rep01_12411" length="81" weight="1.000000" />
+<sequence id="sequence_129" name="QKI_HepG2_rep01_46195" length="81" weight="1.000000" />
+<sequence id="sequence_130" name="QKI_HepG2_rep01_48269" length="81" weight="1.000000" />
+<sequence id="sequence_131" name="QKI_HepG2_rep01_36756" length="81" weight="1.000000" />
+<sequence id="sequence_132" name="QKI_HepG2_rep01_52674" length="81" weight="1.000000" />
+<sequence id="sequence_133" name="QKI_HepG2_rep01_38140" length="81" weight="1.000000" />
+<sequence id="sequence_134" name="QKI_HepG2_rep01_34461" length="81" weight="1.000000" />
+<sequence id="sequence_135" name="QKI_HepG2_rep01_17472" length="81" weight="1.000000" />
+<sequence id="sequence_136" name="QKI_HepG2_rep01_32086" length="81" weight="1.000000" />
+<sequence id="sequence_137" name="QKI_HepG2_rep01_4337" length="81" weight="1.000000" />
+<sequence id="sequence_138" name="QKI_HepG2_rep01_25316" length="81" weight="1.000000" />
+<sequence id="sequence_139" name="QKI_HepG2_rep01_40699" length="81" weight="1.000000" />
+<sequence id="sequence_140" name="QKI_HepG2_rep01_53037" length="81" weight="1.000000" />
+<sequence id="sequence_141" name="QKI_HepG2_rep01_9407" length="81" weight="1.000000" />
+<sequence id="sequence_142" name="QKI_HepG2_rep01_7112" length="81" weight="1.000000" />
+<sequence id="sequence_143" name="QKI_HepG2_rep01_33550" length="81" weight="1.000000" />
+<sequence id="sequence_144" name="QKI_HepG2_rep01_17382" length="81" weight="1.000000" />
+<sequence id="sequence_145" name="QKI_HepG2_rep01_47026" length="81" weight="1.000000" />
+<sequence id="sequence_146" name="QKI_HepG2_rep01_34413" length="81" weight="1.000000" />
+<sequence id="sequence_147" name="QKI_HepG2_rep01_17034" length="81" weight="1.000000" />
+<sequence id="sequence_148" name="QKI_HepG2_rep01_34406" length="81" weight="1.000000" />
+<sequence id="sequence_149" name="QKI_HepG2_rep01_49" length="81" weight="1.000000" />
+<sequence id="sequence_150" name="QKI_HepG2_rep01_30669" length="81" weight="1.000000" />
+<sequence id="sequence_151" name="QKI_HepG2_rep01_45963" length="81" weight="1.000000" />
+<sequence id="sequence_152" name="QKI_HepG2_rep01_46709" length="81" weight="1.000000" />
+<sequence id="sequence_153" name="QKI_HepG2_rep01_20068" length="81" weight="1.000000" />
+<sequence id="sequence_154" name="QKI_HepG2_rep01_27145" length="81" weight="1.000000" />
+<sequence id="sequence_155" name="QKI_HepG2_rep01_3753" length="81" weight="1.000000" />
+<sequence id="sequence_156" name="QKI_HepG2_rep01_29049" length="81" weight="1.000000" />
+<sequence id="sequence_157" name="QKI_HepG2_rep01_41244" length="81" weight="1.000000" />
+<sequence id="sequence_158" name="QKI_HepG2_rep01_18493" length="81" weight="1.000000" />
+<sequence id="sequence_159" name="QKI_HepG2_rep01_6173" length="81" weight="1.000000" />
+<sequence id="sequence_160" name="QKI_HepG2_rep01_51123" length="81" weight="1.000000" />
+<sequence id="sequence_161" name="QKI_HepG2_rep01_21867" length="81" weight="1.000000" />
+<sequence id="sequence_162" name="QKI_HepG2_rep01_15590" length="81" weight="1.000000" />
+<sequence id="sequence_163" name="QKI_HepG2_rep01_40510" length="81" weight="1.000000" />
+<sequence id="sequence_164" name="QKI_HepG2_rep01_34436" length="81" weight="1.000000" />
+<sequence id="sequence_165" name="QKI_HepG2_rep01_7607" length="81" weight="1.000000" />
+<sequence id="sequence_166" name="QKI_HepG2_rep01_36389" length="81" weight="1.000000" />
+<sequence id="sequence_167" name="QKI_HepG2_rep01_5006" length="81" weight="1.000000" />
+<sequence id="sequence_168" name="QKI_HepG2_rep01_36653" length="81" weight="1.000000" />
+<sequence id="sequence_169" name="QKI_HepG2_rep01_53297" length="81" weight="1.000000" />
+<sequence id="sequence_170" name="QKI_HepG2_rep01_53243" length="81" weight="1.000000" />
+<sequence id="sequence_171" name="QKI_HepG2_rep01_43531" length="81" weight="1.000000" />
+<sequence id="sequence_172" name="QKI_HepG2_rep01_226" length="81" weight="1.000000" />
+<sequence id="sequence_173" name="QKI_HepG2_rep01_3123" length="81" weight="1.000000" />
+<sequence id="sequence_174" name="QKI_HepG2_rep01_30934" length="81" weight="1.000000" />
+<sequence id="sequence_175" name="QKI_HepG2_rep01_12601" length="81" weight="1.000000" />
+<sequence id="sequence_176" name="QKI_HepG2_rep01_54487" length="81" weight="1.000000" />
+<sequence id="sequence_177" name="QKI_HepG2_rep01_25310" length="81" weight="1.000000" />
+<sequence id="sequence_178" name="QKI_HepG2_rep01_43728" length="81" weight="1.000000" />
+<sequence id="sequence_179" name="QKI_HepG2_rep01_25018" length="81" weight="1.000000" />
+<sequence id="sequence_180" name="QKI_HepG2_rep01_33995" length="81" weight="1.000000" />
+<sequence id="sequence_181" name="QKI_HepG2_rep01_32213" length="81" weight="1.000000" />
+<sequence id="sequence_182" name="QKI_HepG2_rep01_25443" length="81" weight="1.000000" />
+<sequence id="sequence_183" name="QKI_HepG2_rep01_29144" length="81" weight="1.000000" />
+<sequence id="sequence_184" name="QKI_HepG2_rep01_43271" length="81" weight="1.000000" />
+<sequence id="sequence_185" name="QKI_HepG2_rep01_18924" length="81" weight="1.000000" />
+<sequence id="sequence_186" name="QKI_HepG2_rep01_14935" length="81" weight="1.000000" />
+<sequence id="sequence_187" name="QKI_HepG2_rep01_26838" length="81" weight="1.000000" />
+<sequence id="sequence_188" name="QKI_HepG2_rep01_7597" length="81" weight="1.000000" />
+<sequence id="sequence_189" name="QKI_HepG2_rep01_6373" length="81" weight="1.000000" />
+<sequence id="sequence_190" name="QKI_HepG2_rep01_10972" length="81" weight="1.000000" />
+<sequence id="sequence_191" name="QKI_HepG2_rep01_36641" length="81" weight="1.000000" />
+<sequence id="sequence_192" name="QKI_HepG2_rep01_1524" length="81" weight="1.000000" />
+<sequence id="sequence_193" name="QKI_HepG2_rep01_23520" length="81" weight="1.000000" />
+<sequence id="sequence_194" name="QKI_HepG2_rep01_15280" length="81" weight="1.000000" />
+<sequence id="sequence_195" name="QKI_HepG2_rep01_32030" length="81" weight="1.000000" />
+<sequence id="sequence_196" name="QKI_HepG2_rep01_48184" length="81" weight="1.000000" />
+<sequence id="sequence_197" name="QKI_HepG2_rep01_52683" length="81" weight="1.000000" />
+<sequence id="sequence_198" name="QKI_HepG2_rep01_29216" length="81" weight="1.000000" />
+<sequence id="sequence_199" name="QKI_HepG2_rep01_2722" length="81" weight="1.000000" />
+<sequence id="sequence_200" name="QKI_HepG2_rep01_44151" length="81" weight="1.000000" />
+<sequence id="sequence_201" name="QKI_HepG2_rep01_51202" length="81" weight="1.000000" />
+<sequence id="sequence_202" name="QKI_HepG2_rep01_9410" length="81" weight="1.000000" />
+<sequence id="sequence_203" name="QKI_HepG2_rep01_4309" length="81" weight="1.000000" />
+<sequence id="sequence_204" name="QKI_HepG2_rep01_44128" length="81" weight="1.000000" />
+<sequence id="sequence_205" name="QKI_HepG2_rep01_12506" length="81" weight="1.000000" />
+<sequence id="sequence_206" name="QKI_HepG2_rep01_7358" length="81" weight="1.000000" />
+<sequence id="sequence_207" name="QKI_HepG2_rep01_39831" length="81" weight="1.000000" />
+<sequence id="sequence_208" name="QKI_HepG2_rep01_13247" length="81" weight="1.000000" />
+<sequence id="sequence_209" name="QKI_HepG2_rep01_4807" length="81" weight="1.000000" />
+<sequence id="sequence_210" name="QKI_HepG2_rep01_48309" length="81" weight="1.000000" />
+<sequence id="sequence_211" name="QKI_HepG2_rep01_15365" length="81" weight="1.000000" />
+<sequence id="sequence_212" name="QKI_HepG2_rep01_6430" length="81" weight="1.000000" />
+<sequence id="sequence_213" name="QKI_HepG2_rep01_43798" length="81" weight="1.000000" />
+<sequence id="sequence_214" name="QKI_HepG2_rep01_48074" length="81" weight="1.000000" />
+<sequence id="sequence_215" name="QKI_HepG2_rep01_49379" length="81" weight="1.000000" />
+<sequence id="sequence_216" name="QKI_HepG2_rep01_54403" length="81" weight="1.000000" />
+<sequence id="sequence_217" name="QKI_HepG2_rep01_4336" length="81" weight="1.000000" />
+<sequence id="sequence_218" name="QKI_HepG2_rep01_19802" length="81" weight="1.000000" />
+<sequence id="sequence_219" name="QKI_HepG2_rep01_13069" length="81" weight="1.000000" />
+<sequence id="sequence_220" name="QKI_HepG2_rep01_222" length="81" weight="1.000000" />
+<sequence id="sequence_221" name="QKI_HepG2_rep01_49266" length="81" weight="1.000000" />
+<sequence id="sequence_222" name="QKI_HepG2_rep01_43823" length="81" weight="1.000000" />
+<sequence id="sequence_223" name="QKI_HepG2_rep01_54631" length="81" weight="1.000000" />
+<sequence id="sequence_224" name="QKI_HepG2_rep01_38114" length="81" weight="1.000000" />
+<sequence id="sequence_225" name="QKI_HepG2_rep01_41725" length="81" weight="1.000000" />
+<sequence id="sequence_226" name="QKI_HepG2_rep01_29209" length="81" weight="1.000000" />
+<sequence id="sequence_227" name="QKI_HepG2_rep01_5966" length="81" weight="1.000000" />
+<sequence id="sequence_228" name="QKI_HepG2_rep01_46685" length="81" weight="1.000000" />
+<sequence id="sequence_229" name="QKI_HepG2_rep01_46084" length="81" weight="1.000000" />
+<sequence id="sequence_230" name="QKI_HepG2_rep01_18787" length="81" weight="1.000000" />
+<sequence id="sequence_231" name="QKI_HepG2_rep01_36669" length="81" weight="1.000000" />
+<sequence id="sequence_232" name="QKI_HepG2_rep01_45983" length="81" weight="1.000000" />
+<sequence id="sequence_233" name="QKI_HepG2_rep01_22" length="81" weight="1.000000" />
+<sequence id="sequence_234" name="QKI_HepG2_rep01_54541" length="81" weight="1.000000" />
+<sequence id="sequence_235" name="QKI_HepG2_rep01_37823" length="81" weight="1.000000" />
+<sequence id="sequence_236" name="QKI_HepG2_rep01_15007" length="81" weight="1.000000" />
+<sequence id="sequence_237" name="QKI_HepG2_rep01_7532" length="81" weight="1.000000" />
+<sequence id="sequence_238" name="QKI_HepG2_rep01_8999" length="81" weight="1.000000" />
+<sequence id="sequence_239" name="QKI_HepG2_rep01_44097" length="81" weight="1.000000" />
+<sequence id="sequence_240" name="QKI_HepG2_rep01_43656" length="81" weight="1.000000" />
+<sequence id="sequence_241" name="QKI_HepG2_rep01_36654" length="81" weight="1.000000" />
+<sequence id="sequence_242" name="QKI_HepG2_rep01_21676" length="81" weight="1.000000" />
+<sequence id="sequence_243" name="QKI_HepG2_rep01_18478" length="81" weight="1.000000" />
+<sequence id="sequence_244" name="QKI_HepG2_rep01_2491" length="81" weight="1.000000" />
+<sequence id="sequence_245" name="QKI_HepG2_rep01_46403" length="81" weight="1.000000" />
+<sequence id="sequence_246" name="QKI_HepG2_rep01_4887" length="81" weight="1.000000" />
+<sequence id="sequence_247" name="QKI_HepG2_rep01_4227" length="81" weight="1.000000" />
+<sequence id="sequence_248" name="QKI_HepG2_rep01_14961" length="81" weight="1.000000" />
+<sequence id="sequence_249" name="QKI_HepG2_rep01_13257" length="81" weight="1.000000" />
+<sequence id="sequence_250" name="QKI_HepG2_rep01_38121" length="81" weight="1.000000" />
+<sequence id="sequence_251" name="QKI_HepG2_rep01_50899" length="81" weight="1.000000" />
+<sequence id="sequence_252" name="QKI_HepG2_rep01_1468" length="81" weight="1.000000" />
+<sequence id="sequence_253" name="QKI_HepG2_rep01_44014" length="81" weight="1.000000" />
+<sequence id="sequence_254" name="QKI_HepG2_rep01_38180" length="81" weight="1.000000" />
+<sequence id="sequence_255" name="QKI_HepG2_rep01_10679" length="81" weight="1.000000" />
+<sequence id="sequence_256" name="QKI_HepG2_rep01_43795" length="81" weight="1.000000" />
+<sequence id="sequence_257" name="QKI_HepG2_rep01_51046" length="81" weight="1.000000" />
+<sequence id="sequence_258" name="QKI_HepG2_rep01_36293" length="81" weight="1.000000" />
+<sequence id="sequence_259" name="QKI_HepG2_rep01_39703" length="81" weight="1.000000" />
+<sequence id="sequence_260" name="QKI_HepG2_rep01_44554" length="81" weight="1.000000" />
+<sequence id="sequence_261" name="QKI_HepG2_rep01_7448" length="81" weight="1.000000" />
+<sequence id="sequence_262" name="QKI_HepG2_rep01_46704" length="81" weight="1.000000" />
+<sequence id="sequence_263" name="QKI_HepG2_rep01_51083" length="81" weight="1.000000" />
+<sequence id="sequence_264" name="QKI_HepG2_rep01_21347" length="81" weight="1.000000" />
+<sequence id="sequence_265" name="QKI_HepG2_rep01_52651" length="81" weight="1.000000" />
+<sequence id="sequence_266" name="QKI_HepG2_rep01_7352" length="81" weight="1.000000" />
+<sequence id="sequence_267" name="QKI_HepG2_rep01_40435" length="81" weight="1.000000" />
+<sequence id="sequence_268" name="QKI_HepG2_rep01_25011" length="81" weight="1.000000" />
+<sequence id="sequence_269" name="QKI_HepG2_rep01_3246" length="81" weight="1.000000" />
+<sequence id="sequence_270" name="QKI_HepG2_rep01_18798" length="81" weight="1.000000" />
+<sequence id="sequence_271" name="QKI_HepG2_rep01_4775" length="81" weight="1.000000" />
+<sequence id="sequence_272" name="QKI_HepG2_rep01_17115" length="81" weight="1.000000" />
+<sequence id="sequence_273" name="QKI_HepG2_rep01_7538" length="81" weight="1.000000" />
+<sequence id="sequence_274" name="QKI_HepG2_rep01_49261" length="81" weight="1.000000" />
+<sequence id="sequence_275" name="QKI_HepG2_rep01_12817" length="81" weight="1.000000" />
+<sequence id="sequence_276" name="QKI_HepG2_rep01_37820" length="81" weight="1.000000" />
+<sequence id="sequence_277" name="QKI_HepG2_rep01_23200" length="81" weight="1.000000" />
+<sequence id="sequence_278" name="QKI_HepG2_rep01_32680" length="81" weight="1.000000" />
+<sequence id="sequence_279" name="QKI_HepG2_rep01_52122" length="81" weight="1.000000" />
+<sequence id="sequence_280" name="QKI_HepG2_rep01_38726" length="81" weight="1.000000" />
+<sequence id="sequence_281" name="QKI_HepG2_rep01_15005" length="81" weight="1.000000" />
+<sequence id="sequence_282" name="QKI_HepG2_rep01_30925" length="81" weight="1.000000" />
+<sequence id="sequence_283" name="QKI_HepG2_rep01_8088" length="81" weight="1.000000" />
+<sequence id="sequence_284" name="QKI_HepG2_rep01_51189" length="81" weight="1.000000" />
+<sequence id="sequence_285" name="QKI_HepG2_rep01_33659" length="81" weight="1.000000" />
+<sequence id="sequence_286" name="QKI_HepG2_rep01_12953" length="81" weight="1.000000" />
+<sequence id="sequence_287" name="QKI_HepG2_rep01_54235" length="81" weight="1.000000" />
+<sequence id="sequence_288" name="QKI_HepG2_rep01_1821" length="81" weight="1.000000" />
+<sequence id="sequence_289" name="QKI_HepG2_rep01_18599" length="81" weight="1.000000" />
+<sequence id="sequence_290" name="QKI_HepG2_rep01_32175" length="81" weight="1.000000" />
+<sequence id="sequence_291" name="QKI_HepG2_rep01_50607" length="81" weight="1.000000" />
+<sequence id="sequence_292" name="QKI_HepG2_rep01_43259" length="81" weight="1.000000" />
+<sequence id="sequence_293" name="QKI_HepG2_rep01_34519" length="81" weight="1.000000" />
+<sequence id="sequence_294" name="QKI_HepG2_rep01_32279" length="81" weight="1.000000" />
+<sequence id="sequence_295" name="QKI_HepG2_rep01_42234" length="81" weight="1.000000" />
+<sequence id="sequence_296" name="QKI_HepG2_rep01_15325" length="81" weight="1.000000" />
+<sequence id="sequence_297" name="QKI_HepG2_rep01_21948" length="81" weight="1.000000" />
+<sequence id="sequence_298" name="QKI_HepG2_rep01_43212" length="81" weight="1.000000" />
+<sequence id="sequence_299" name="QKI_HepG2_rep01_20005" length="81" weight="1.000000" />
+<sequence id="sequence_300" name="QKI_HepG2_rep01_9170" length="81" weight="1.000000" />
+<sequence id="sequence_301" name="QKI_HepG2_rep01_6218" length="81" weight="1.000000" />
+<sequence id="sequence_302" name="QKI_HepG2_rep01_49891" length="81" weight="1.000000" />
+<sequence id="sequence_303" name="QKI_HepG2_rep01_46591" length="81" weight="1.000000" />
+<sequence id="sequence_304" name="QKI_HepG2_rep01_40428" length="81" weight="1.000000" />
+<sequence id="sequence_305" name="QKI_HepG2_rep01_34850" length="81" weight="1.000000" />
+<sequence id="sequence_306" name="QKI_HepG2_rep01_49125" length="81" weight="1.000000" />
+<sequence id="sequence_307" name="QKI_HepG2_rep01_51746" length="81" weight="1.000000" />
+<sequence id="sequence_308" name="QKI_HepG2_rep01_9169" length="81" weight="1.000000" />
+<sequence id="sequence_309" name="QKI_HepG2_rep01_44679" length="81" weight="1.000000" />
+<sequence id="sequence_310" name="QKI_HepG2_rep01_50456" length="81" weight="1.000000" />
+<sequence id="sequence_311" name="QKI_HepG2_rep01_12538" length="81" weight="1.000000" />
+<sequence id="sequence_312" name="QKI_HepG2_rep01_8540" length="81" weight="1.000000" />
+<sequence id="sequence_313" name="QKI_HepG2_rep01_44196" length="81" weight="1.000000" />
+<sequence id="sequence_314" name="QKI_HepG2_rep01_14827" length="81" weight="1.000000" />
+<sequence id="sequence_315" name="QKI_HepG2_rep01_6349" length="81" weight="1.000000" />
+<sequence id="sequence_316" name="QKI_HepG2_rep01_15433" length="81" weight="1.000000" />
+<sequence id="sequence_317" name="QKI_HepG2_rep01_30393" length="81" weight="1.000000" />
+<sequence id="sequence_318" name="QKI_HepG2_rep01_26886" length="81" weight="1.000000" />
+<sequence id="sequence_319" name="QKI_HepG2_rep01_34021" length="81" weight="1.000000" />
+<sequence id="sequence_320" name="QKI_HepG2_rep01_32567" length="81" weight="1.000000" />
+<sequence id="sequence_321" name="QKI_HepG2_rep01_24987" length="81" weight="1.000000" />
+<sequence id="sequence_322" name="QKI_HepG2_rep01_51095" length="81" weight="1.000000" />
+<sequence id="sequence_323" name="QKI_HepG2_rep01_41524" length="81" weight="1.000000" />
+<sequence id="sequence_324" name="QKI_HepG2_rep01_18449" length="81" weight="1.000000" />
+<sequence id="sequence_325" name="QKI_HepG2_rep01_7572" length="81" weight="1.000000" />
+<sequence id="sequence_326" name="QKI_HepG2_rep01_8516" length="81" weight="1.000000" />
+<sequence id="sequence_327" name="QKI_HepG2_rep01_52167" length="81" weight="1.000000" />
+<sequence id="sequence_328" name="QKI_HepG2_rep01_34855" length="81" weight="1.000000" />
+<sequence id="sequence_329" name="QKI_HepG2_rep01_41657" length="81" weight="1.000000" />
+<sequence id="sequence_330" name="QKI_HepG2_rep01_3211" length="81" weight="1.000000" />
+<sequence id="sequence_331" name="QKI_HepG2_rep01_30567" length="81" weight="1.000000" />
+<sequence id="sequence_332" name="QKI_HepG2_rep01_1351" length="81" weight="1.000000" />
+<sequence id="sequence_333" name="QKI_HepG2_rep01_34904" length="81" weight="1.000000" />
+<sequence id="sequence_334" name="QKI_HepG2_rep01_18626" length="81" weight="1.000000" />
+<sequence id="sequence_335" name="QKI_HepG2_rep01_38829" length="81" weight="1.000000" />
+<sequence id="sequence_336" name="QKI_HepG2_rep01_15248" length="81" weight="1.000000" />
+<sequence id="sequence_337" name="QKI_HepG2_rep01_43779" length="81" weight="1.000000" />
+<sequence id="sequence_338" name="QKI_HepG2_rep01_16955" length="81" weight="1.000000" />
+<sequence id="sequence_339" name="QKI_HepG2_rep01_3220" length="81" weight="1.000000" />
+<sequence id="sequence_340" name="QKI_HepG2_rep01_32247" length="81" weight="1.000000" />
+<sequence id="sequence_341" name="QKI_HepG2_rep01_49862" length="81" weight="1.000000" />
+<sequence id="sequence_342" name="QKI_HepG2_rep01_21820" length="81" weight="1.000000" />
+<sequence id="sequence_343" name="QKI_HepG2_rep01_44070" length="81" weight="1.000000" />
+<sequence id="sequence_344" name="QKI_HepG2_rep01_51990" length="81" weight="1.000000" />
+<sequence id="sequence_345" name="QKI_HepG2_rep01_19751" length="81" weight="1.000000" />
+<sequence id="sequence_346" name="QKI_HepG2_rep01_2527" length="81" weight="1.000000" />
+<sequence id="sequence_347" name="QKI_HepG2_rep01_36791" length="81" weight="1.000000" />
+<sequence id="sequence_348" name="QKI_HepG2_rep01_25384" length="81" weight="1.000000" />
+<sequence id="sequence_349" name="QKI_HepG2_rep01_32579" length="81" weight="1.000000" />
+<sequence id="sequence_350" name="QKI_HepG2_rep01_2610" length="81" weight="1.000000" />
+<sequence id="sequence_351" name="QKI_HepG2_rep01_48992" length="81" weight="1.000000" />
+<sequence id="sequence_352" name="QKI_HepG2_rep01_50820" length="81" weight="1.000000" />
+<sequence id="sequence_353" name="QKI_HepG2_rep01_6227" length="81" weight="1.000000" />
+<sequence id="sequence_354" name="QKI_HepG2_rep01_33758" length="81" weight="1.000000" />
+<sequence id="sequence_355" name="QKI_HepG2_rep01_18486" length="81" weight="1.000000" />
+<sequence id="sequence_356" name="QKI_HepG2_rep01_14847" length="81" weight="1.000000" />
+<sequence id="sequence_357" name="QKI_HepG2_rep01_34971" length="81" weight="1.000000" />
+<sequence id="sequence_358" name="QKI_HepG2_rep01_634" length="81" weight="1.000000" />
+<sequence id="sequence_359" name="QKI_HepG2_rep01_25447" length="81" weight="1.000000" />
+<sequence id="sequence_360" name="QKI_HepG2_rep01_50194" length="81" weight="1.000000" />
+<sequence id="sequence_361" name="QKI_HepG2_rep01_34063" length="81" weight="1.000000" />
+<sequence id="sequence_362" name="QKI_HepG2_rep01_52082" length="81" weight="1.000000" />
+<sequence id="sequence_363" name="QKI_HepG2_rep01_5211" length="81" weight="1.000000" />
+<sequence id="sequence_364" name="QKI_HepG2_rep01_17280" length="81" weight="1.000000" />
+<sequence id="sequence_365" name="QKI_HepG2_rep01_34912" length="81" weight="1.000000" />
+<sequence id="sequence_366" name="QKI_HepG2_rep01_42520" length="81" weight="1.000000" />
+<sequence id="sequence_367" name="QKI_HepG2_rep01_27543" length="81" weight="1.000000" />
+<sequence id="sequence_368" name="QKI_HepG2_rep01_7534" length="81" weight="1.000000" />
+<sequence id="sequence_369" name="QKI_HepG2_rep01_24986" length="81" weight="1.000000" />
+<sequence id="sequence_370" name="QKI_HepG2_rep01_6351" length="81" weight="1.000000" />
+<sequence id="sequence_371" name="QKI_HepG2_rep01_9066" length="81" weight="1.000000" />
+<sequence id="sequence_372" name="QKI_HepG2_rep01_51292" length="81" weight="1.000000" />
+<sequence id="sequence_373" name="QKI_HepG2_rep01_23187" length="81" weight="1.000000" />
+<sequence id="sequence_374" name="QKI_HepG2_rep01_114" length="81" weight="1.000000" />
+<sequence id="sequence_375" name="QKI_HepG2_rep01_3641" length="81" weight="1.000000" />
+<sequence id="sequence_376" name="QKI_HepG2_rep01_20287" length="81" weight="1.000000" />
+<sequence id="sequence_377" name="QKI_HepG2_rep01_15146" length="81" weight="1.000000" />
+<sequence id="sequence_378" name="QKI_HepG2_rep01_9398" length="81" weight="1.000000" />
+<sequence id="sequence_379" name="QKI_HepG2_rep01_14871" length="81" weight="1.000000" />
+<sequence id="sequence_380" name="QKI_HepG2_rep01_31010" length="81" weight="1.000000" />
+<sequence id="sequence_381" name="QKI_HepG2_rep01_30596" length="81" weight="1.000000" />
+<sequence id="sequence_382" name="QKI_HepG2_rep01_31874" length="81" weight="1.000000" />
+<sequence id="sequence_383" name="QKI_HepG2_rep01_13255" length="81" weight="1.000000" />
+<sequence id="sequence_384" name="QKI_HepG2_rep01_34527" length="81" weight="1.000000" />
+<sequence id="sequence_385" name="QKI_HepG2_rep01_27086" length="81" weight="1.000000" />
+<sequence id="sequence_386" name="QKI_HepG2_rep01_7571" length="81" weight="1.000000" />
+<sequence id="sequence_387" name="QKI_HepG2_rep01_43183" length="81" weight="1.000000" />
+<sequence id="sequence_388" name="QKI_HepG2_rep01_34044" length="81" weight="1.000000" />
+<sequence id="sequence_389" name="QKI_HepG2_rep01_41473" length="81" weight="1.000000" />
+<sequence id="sequence_390" name="QKI_HepG2_rep01_15565" length="81" weight="1.000000" />
+<sequence id="sequence_391" name="QKI_HepG2_rep01_10952" length="81" weight="1.000000" />
+<sequence id="sequence_392" name="QKI_HepG2_rep01_7396" length="81" weight="1.000000" />
+<sequence id="sequence_393" name="QKI_HepG2_rep01_32015" length="81" weight="1.000000" />
+<sequence id="sequence_394" name="QKI_HepG2_rep01_36749" length="81" weight="1.000000" />
+<sequence id="sequence_395" name="QKI_HepG2_rep01_8127" length="81" weight="1.000000" />
+<sequence id="sequence_396" name="QKI_HepG2_rep01_12460" length="81" weight="1.000000" />
+<sequence id="sequence_397" name="QKI_HepG2_rep01_36408" length="81" weight="1.000000" />
+<sequence id="sequence_398" name="QKI_HepG2_rep01_53184" length="81" weight="1.000000" />
+<sequence id="sequence_399" name="QKI_HepG2_rep01_2560" length="81" weight="1.000000" />
+<sequence id="sequence_400" name="QKI_HepG2_rep01_39862" length="81" weight="1.000000" />
+<sequence id="sequence_401" name="QKI_HepG2_rep01_30941" length="81" weight="1.000000" />
+<sequence id="sequence_402" name="QKI_HepG2_rep01_23166" length="81" weight="1.000000" />
+<sequence id="sequence_403" name="QKI_HepG2_rep01_30746" length="81" weight="1.000000" />
+<sequence id="sequence_404" name="QKI_HepG2_rep01_16977" length="81" weight="1.000000" />
+<sequence id="sequence_405" name="QKI_HepG2_rep01_25252" length="81" weight="1.000000" />
+<sequence id="sequence_406" name="QKI_HepG2_rep01_54449" length="81" weight="1.000000" />
+<sequence id="sequence_407" name="QKI_HepG2_rep01_34390" length="81" weight="1.000000" />
+<sequence id="sequence_408" name="QKI_HepG2_rep01_29067" length="81" weight="1.000000" />
+<sequence id="sequence_409" name="QKI_HepG2_rep01_46713" length="81" weight="1.000000" />
+<sequence id="sequence_410" name="QKI_HepG2_rep01_30150" length="81" weight="1.000000" />
+<sequence id="sequence_411" name="QKI_HepG2_rep01_18329" length="81" weight="1.000000" />
+<sequence id="sequence_412" name="QKI_HepG2_rep01_8124" length="81" weight="1.000000" />
+<sequence id="sequence_413" name="QKI_HepG2_rep01_51138" length="81" weight="1.000000" />
+<sequence id="sequence_414" name="QKI_HepG2_rep01_46312" length="81" weight="1.000000" />
+<sequence id="sequence_415" name="QKI_HepG2_rep01_21882" length="81" weight="1.000000" />
+<sequence id="sequence_416" name="QKI_HepG2_rep01_54063" length="81" weight="1.000000" />
+<sequence id="sequence_417" name="QKI_HepG2_rep01_48213" length="81" weight="1.000000" />
+<sequence id="sequence_418" name="QKI_HepG2_rep01_51797" length="81" weight="1.000000" />
+<sequence id="sequence_419" name="QKI_HepG2_rep01_17273" length="81" weight="1.000000" />
+<sequence id="sequence_420" name="QKI_HepG2_rep01_20034" length="81" weight="1.000000" />
+<sequence id="sequence_421" name="QKI_HepG2_rep01_17293" length="81" weight="1.000000" />
+<sequence id="sequence_422" name="QKI_HepG2_rep01_38970" length="81" weight="1.000000" />
+<sequence id="sequence_423" name="QKI_HepG2_rep01_7183" length="81" weight="1.000000" />
+<sequence id="sequence_424" name="QKI_HepG2_rep01_7302" length="81" weight="1.000000" />
+<sequence id="sequence_425" name="QKI_HepG2_rep01_36208" length="81" weight="1.000000" />
+<sequence id="sequence_426" name="QKI_HepG2_rep01_53266" length="81" weight="1.000000" />
+<sequence id="sequence_427" name="QKI_HepG2_rep01_49174" length="81" weight="1.000000" />
+<sequence id="sequence_428" name="QKI_HepG2_rep01_53346" length="81" weight="1.000000" />
+<sequence id="sequence_429" name="QKI_HepG2_rep01_15180" length="81" weight="1.000000" />
+<sequence id="sequence_430" name="QKI_HepG2_rep01_17537" length="81" weight="1.000000" />
+<sequence id="sequence_431" name="QKI_HepG2_rep01_53162" length="81" weight="1.000000" />
+<sequence id="sequence_432" name="QKI_HepG2_rep01_10807" length="81" weight="1.000000" />
+<sequence id="sequence_433" name="QKI_HepG2_rep01_21619" length="81" weight="1.000000" />
+<sequence id="sequence_434" name="QKI_HepG2_rep01_41231" length="81" weight="1.000000" />
+<sequence id="sequence_435" name="QKI_HepG2_rep01_53251" length="81" weight="1.000000" />
+<sequence id="sequence_436" name="QKI_HepG2_rep01_27098" length="81" weight="1.000000" />
+<sequence id="sequence_437" name="QKI_HepG2_rep01_30789" length="81" weight="1.000000" />
+<sequence id="sequence_438" name="QKI_HepG2_rep01_46695" length="81" weight="1.000000" />
+<sequence id="sequence_439" name="QKI_HepG2_rep01_52025" length="81" weight="1.000000" />
+<sequence id="sequence_440" name="QKI_HepG2_rep01_43787" length="81" weight="1.000000" />
+<sequence id="sequence_441" name="QKI_HepG2_rep01_36859" length="81" weight="1.000000" />
+<sequence id="sequence_442" name="QKI_HepG2_rep01_4976" length="81" weight="1.000000" />
+<sequence id="sequence_443" name="QKI_HepG2_rep01_44559" length="81" weight="1.000000" />
+<sequence id="sequence_444" name="QKI_HepG2_rep01_23429" length="81" weight="1.000000" />
+<sequence id="sequence_445" name="QKI_HepG2_rep01_29077" length="81" weight="1.000000" />
+<sequence id="sequence_446" name="QKI_HepG2_rep01_1703" length="81" weight="1.000000" />
+<sequence id="sequence_447" name="QKI_HepG2_rep01_51945" length="81" weight="1.000000" />
+<sequence id="sequence_448" name="QKI_HepG2_rep01_36262" length="81" weight="1.000000" />
+<sequence id="sequence_449" name="QKI_HepG2_rep01_29108" length="81" weight="1.000000" />
+<sequence id="sequence_450" name="QKI_HepG2_rep01_12428" length="81" weight="1.000000" />
+<sequence id="sequence_451" name="QKI_HepG2_rep01_42515" length="81" weight="1.000000" />
+<sequence id="sequence_452" name="QKI_HepG2_rep01_23209" length="81" weight="1.000000" />
+<sequence id="sequence_453" name="QKI_HepG2_rep01_15332" length="81" weight="1.000000" />
+<sequence id="sequence_454" name="QKI_HepG2_rep01_29340" length="81" weight="1.000000" />
+<sequence id="sequence_455" name="QKI_HepG2_rep01_45763" length="81" weight="1.000000" />
+<sequence id="sequence_456" name="QKI_HepG2_rep01_2613" length="81" weight="1.000000" />
+<sequence id="sequence_457" name="QKI_HepG2_rep01_20497" length="81" weight="1.000000" />
+<sequence id="sequence_458" name="QKI_HepG2_rep01_43173" length="81" weight="1.000000" />
+<sequence id="sequence_459" name="QKI_HepG2_rep01_7539" length="81" weight="1.000000" />
+<sequence id="sequence_460" name="QKI_HepG2_rep01_53014" length="81" weight="1.000000" />
+<sequence id="sequence_461" name="QKI_HepG2_rep01_42648" length="81" weight="1.000000" />
+<sequence id="sequence_462" name="QKI_HepG2_rep01_13303" length="81" weight="1.000000" />
+<sequence id="sequence_463" name="QKI_HepG2_rep01_14905" length="81" weight="1.000000" />
+<sequence id="sequence_464" name="QKI_HepG2_rep01_23218" length="81" weight="1.000000" />
+<sequence id="sequence_465" name="QKI_HepG2_rep01_1844" length="81" weight="1.000000" />
+<sequence id="sequence_466" name="QKI_HepG2_rep01_10918" length="81" weight="1.000000" />
+<sequence id="sequence_467" name="QKI_HepG2_rep01_20199" length="81" weight="1.000000" />
+<sequence id="sequence_468" name="QKI_HepG2_rep01_21437" length="81" weight="1.000000" />
+<sequence id="sequence_469" name="QKI_HepG2_rep01_9414" length="81" weight="1.000000" />
+<sequence id="sequence_470" name="QKI_HepG2_rep01_36839" length="81" weight="1.000000" />
+<sequence id="sequence_471" name="QKI_HepG2_rep01_23072" length="81" weight="1.000000" />
+<sequence id="sequence_472" name="QKI_HepG2_rep01_23442" length="81" weight="1.000000" />
+<sequence id="sequence_473" name="QKI_HepG2_rep01_46307" length="81" weight="1.000000" />
+<sequence id="sequence_474" name="QKI_HepG2_rep01_32419" length="81" weight="1.000000" />
+<sequence id="sequence_475" name="QKI_HepG2_rep01_23069" length="81" weight="1.000000" />
+<sequence id="sequence_476" name="QKI_HepG2_rep01_53105" length="81" weight="1.000000" />
+<sequence id="sequence_477" name="QKI_HepG2_rep01_5243" length="81" weight="1.000000" />
+<sequence id="sequence_478" name="QKI_HepG2_rep01_1729" length="81" weight="1.000000" />
+<sequence id="sequence_479" name="QKI_HepG2_rep01_36415" length="81" weight="1.000000" />
+<sequence id="sequence_480" name="QKI_HepG2_rep01_34865" length="81" weight="1.000000" />
+<sequence id="sequence_481" name="QKI_HepG2_rep01_48181" length="81" weight="1.000000" />
+<sequence id="sequence_482" name="QKI_HepG2_rep01_25435" length="81" weight="1.000000" />
+<sequence id="sequence_483" name="QKI_HepG2_rep01_20335" length="81" weight="1.000000" />
+<sequence id="sequence_484" name="QKI_HepG2_rep01_22994" length="81" weight="1.000000" />
+<sequence id="sequence_485" name="QKI_HepG2_rep01_8206" length="81" weight="1.000000" />
+<sequence id="sequence_486" name="QKI_HepG2_rep01_48408" length="81" weight="1.000000" />
+<sequence id="sequence_487" name="QKI_HepG2_rep01_43537" length="81" weight="1.000000" />
+<sequence id="sequence_488" name="QKI_HepG2_rep01_21629" length="81" weight="1.000000" />
+<sequence id="sequence_489" name="QKI_HepG2_rep01_54303" length="81" weight="1.000000" />
+<sequence id="sequence_490" name="QKI_HepG2_rep01_41271" length="81" weight="1.000000" />
+<sequence id="sequence_491" name="QKI_HepG2_rep01_2391" length="81" weight="1.000000" />
+<sequence id="sequence_492" name="QKI_HepG2_rep01_39811" length="81" weight="1.000000" />
+<sequence id="sequence_493" name="QKI_HepG2_rep01_29375" length="81" weight="1.000000" />
+<sequence id="sequence_494" name="QKI_HepG2_rep01_5026" length="81" weight="1.000000" />
+<sequence id="sequence_495" name="QKI_HepG2_rep01_179" length="81" weight="1.000000" />
+<sequence id="sequence_496" name="QKI_HepG2_rep01_19993" length="81" weight="1.000000" />
+<sequence id="sequence_497" name="QKI_HepG2_rep01_23622" length="81" weight="1.000000" />
+<sequence id="sequence_498" name="QKI_HepG2_rep01_43966" length="81" weight="1.000000" />
+<sequence id="sequence_499" name="QKI_HepG2_rep01_49864" length="81" weight="1.000000" />
+<sequence id="sequence_500" name="QKI_HepG2_rep01_52819" length="81" weight="1.000000" />
+<sequence id="sequence_501" name="QKI_HepG2_rep01_14968" length="81" weight="1.000000" />
+<sequence id="sequence_502" name="QKI_HepG2_rep01_26879" length="81" weight="1.000000" />
+<sequence id="sequence_503" name="QKI_HepG2_rep01_13250" length="81" weight="1.000000" />
+<sequence id="sequence_504" name="QKI_HepG2_rep01_10935" length="81" weight="1.000000" />
+<sequence id="sequence_505" name="QKI_HepG2_rep01_53990" length="81" weight="1.000000" />
+<sequence id="sequence_506" name="QKI_HepG2_rep01_12898" length="81" weight="1.000000" />
+<sequence id="sequence_507" name="QKI_HepG2_rep01_51803" length="81" weight="1.000000" />
+<sequence id="sequence_508" name="QKI_HepG2_rep01_6489" length="81" weight="1.000000" />
+<sequence id="sequence_509" name="QKI_HepG2_rep01_1345" length="81" weight="1.000000" />
+<sequence id="sequence_510" name="QKI_HepG2_rep01_54267" length="81" weight="1.000000" />
+<sequence id="sequence_511" name="QKI_HepG2_rep01_30335" length="81" weight="1.000000" />
+<sequence id="sequence_512" name="QKI_HepG2_rep01_53993" length="81" weight="1.000000" />
+<sequence id="sequence_513" name="QKI_HepG2_rep01_51726" length="81" weight="1.000000" />
+<sequence id="sequence_514" name="QKI_HepG2_rep01_2452" length="81" weight="1.000000" />
+<sequence id="sequence_515" name="QKI_HepG2_rep01_15418" length="81" weight="1.000000" />
+<sequence id="sequence_516" name="QKI_HepG2_rep01_17149" length="81" weight="1.000000" />
+<sequence id="sequence_517" name="QKI_HepG2_rep01_17442" length="81" weight="1.000000" />
+<sequence id="sequence_518" name="QKI_HepG2_rep01_14721" length="81" weight="1.000000" />
+<sequence id="sequence_519" name="QKI_HepG2_rep01_12726" length="81" weight="1.000000" />
+<sequence id="sequence_520" name="QKI_HepG2_rep01_2631" length="81" weight="1.000000" />
+<sequence id="sequence_521" name="QKI_HepG2_rep01_12899" length="81" weight="1.000000" />
+<sequence id="sequence_522" name="QKI_HepG2_rep01_44213" length="81" weight="1.000000" />
+<sequence id="sequence_523" name="QKI_HepG2_rep01_517" length="81" weight="1.000000" />
+<sequence id="sequence_524" name="QKI_HepG2_rep01_46191" length="81" weight="1.000000" />
+<sequence id="sequence_525" name="QKI_HepG2_rep01_34716" length="81" weight="1.000000" />
+<sequence id="sequence_526" name="QKI_HepG2_rep01_21403" length="81" weight="1.000000" />
+<sequence id="sequence_527" name="QKI_HepG2_rep01_1420" length="81" weight="1.000000" />
+<sequence id="sequence_528" name="QKI_HepG2_rep01_54039" length="81" weight="1.000000" />
+<sequence id="sequence_529" name="QKI_HepG2_rep01_25276" length="81" weight="1.000000" />
+<sequence id="sequence_530" name="QKI_HepG2_rep01_42385" length="81" weight="1.000000" />
+<sequence id="sequence_531" name="QKI_HepG2_rep01_21684" length="81" weight="1.000000" />
+<sequence id="sequence_532" name="QKI_HepG2_rep01_54544" length="81" weight="1.000000" />
+<sequence id="sequence_533" name="QKI_HepG2_rep01_38227" length="81" weight="1.000000" />
+<sequence id="sequence_534" name="QKI_HepG2_rep01_27968" length="81" weight="1.000000" />
+<sequence id="sequence_535" name="QKI_HepG2_rep01_9418" length="81" weight="1.000000" />
+<sequence id="sequence_536" name="QKI_HepG2_rep01_18345" length="81" weight="1.000000" />
+<sequence id="sequence_537" name="QKI_HepG2_rep01_49882" length="81" weight="1.000000" />
+<sequence id="sequence_538" name="QKI_HepG2_rep01_38716" length="81" weight="1.000000" />
+<sequence id="sequence_539" name="QKI_HepG2_rep01_8282" length="81" weight="1.000000" />
+<sequence id="sequence_540" name="QKI_HepG2_rep01_17590" length="81" weight="1.000000" />
+<sequence id="sequence_541" name="QKI_HepG2_rep01_36446" length="81" weight="1.000000" />
+<sequence id="sequence_542" name="QKI_HepG2_rep01_30547" length="81" weight="1.000000" />
+<sequence id="sequence_543" name="QKI_HepG2_rep01_52647" length="81" weight="1.000000" />
+<sequence id="sequence_544" name="QKI_HepG2_rep01_53172" length="81" weight="1.000000" />
+<sequence id="sequence_545" name="QKI_HepG2_rep01_50189" length="81" weight="1.000000" />
+<sequence id="sequence_546" name="QKI_HepG2_rep01_33945" length="81" weight="1.000000" />
+<sequence id="sequence_547" name="QKI_HepG2_rep01_24904" length="81" weight="1.000000" />
+<sequence id="sequence_548" name="QKI_HepG2_rep01_51894" length="81" weight="1.000000" />
+<sequence id="sequence_549" name="QKI_HepG2_rep01_51224" length="81" weight="1.000000" />
+<sequence id="sequence_550" name="QKI_HepG2_rep01_20116" length="81" weight="1.000000" />
+<sequence id="sequence_551" name="QKI_HepG2_rep01_46367" length="81" weight="1.000000" />
+<sequence id="sequence_552" name="QKI_HepG2_rep01_36412" length="81" weight="1.000000" />
+<sequence id="sequence_553" name="QKI_HepG2_rep01_54598" length="81" weight="1.000000" />
+<sequence id="sequence_554" name="QKI_HepG2_rep01_456" length="81" weight="1.000000" />
+<sequence id="sequence_555" name="QKI_HepG2_rep01_15345" length="81" weight="1.000000" />
+<sequence id="sequence_556" name="QKI_HepG2_rep01_43231" length="81" weight="1.000000" />
+<sequence id="sequence_557" name="QKI_HepG2_rep01_10903" length="81" weight="1.000000" />
+<sequence id="sequence_558" name="QKI_HepG2_rep01_42391" length="81" weight="1.000000" />
+<sequence id="sequence_559" name="QKI_HepG2_rep01_41438" length="81" weight="1.000000" />
+<sequence id="sequence_560" name="QKI_HepG2_rep01_52200" length="81" weight="1.000000" />
+<sequence id="sequence_561" name="QKI_HepG2_rep01_14629" length="81" weight="1.000000" />
+<sequence id="sequence_562" name="QKI_HepG2_rep01_13171" length="81" weight="1.000000" />
+<sequence id="sequence_563" name="QKI_HepG2_rep01_51346" length="81" weight="1.000000" />
+<sequence id="sequence_564" name="QKI_HepG2_rep01_44626" length="81" weight="1.000000" />
+<sequence id="sequence_565" name="QKI_HepG2_rep01_30284" length="81" weight="1.000000" />
+<sequence id="sequence_566" name="QKI_HepG2_rep01_41437" length="81" weight="1.000000" />
+<sequence id="sequence_567" name="QKI_HepG2_rep01_36490" length="81" weight="1.000000" />
+<sequence id="sequence_568" name="QKI_HepG2_rep01_41616" length="81" weight="1.000000" />
+<sequence id="sequence_569" name="QKI_HepG2_rep01_5981" length="81" weight="1.000000" />
+<sequence id="sequence_570" name="QKI_HepG2_rep01_7104" length="81" weight="1.000000" />
+<sequence id="sequence_571" name="QKI_HepG2_rep01_7220" length="81" weight="1.000000" />
+<sequence id="sequence_572" name="QKI_HepG2_rep01_41493" length="81" weight="1.000000" />
+<sequence id="sequence_573" name="QKI_HepG2_rep01_32330" length="81" weight="1.000000" />
+<sequence id="sequence_574" name="QKI_HepG2_rep01_7309" length="81" weight="1.000000" />
+<sequence id="sequence_575" name="QKI_HepG2_rep01_20194" length="81" weight="1.000000" />
+<sequence id="sequence_576" name="QKI_HepG2_rep01_30591" length="81" weight="1.000000" />
+<sequence id="sequence_577" name="QKI_HepG2_rep01_21654" length="81" weight="1.000000" />
+<sequence id="sequence_578" name="QKI_HepG2_rep01_43655" length="81" weight="1.000000" />
+<sequence id="sequence_579" name="QKI_HepG2_rep01_48185" length="81" weight="1.000000" />
+<sequence id="sequence_580" name="QKI_HepG2_rep01_25171" length="81" weight="1.000000" />
+<sequence id="sequence_581" name="QKI_HepG2_rep01_43773" length="81" weight="1.000000" />
+<sequence id="sequence_582" name="QKI_HepG2_rep01_12684" length="81" weight="1.000000" />
+<sequence id="sequence_583" name="QKI_HepG2_rep01_12670" length="81" weight="1.000000" />
+<sequence id="sequence_584" name="QKI_HepG2_rep01_54584" length="81" weight="1.000000" />
+<sequence id="sequence_585" name="QKI_HepG2_rep01_9430" length="81" weight="1.000000" />
+<sequence id="sequence_586" name="QKI_HepG2_rep01_35198" length="81" weight="1.000000" />
+<sequence id="sequence_587" name="QKI_HepG2_rep01_34845" length="81" weight="1.000000" />
+<sequence id="sequence_588" name="QKI_HepG2_rep01_52756" length="81" weight="1.000000" />
+<sequence id="sequence_589" name="QKI_HepG2_rep01_48311" length="81" weight="1.000000" />
+<sequence id="sequence_590" name="QKI_HepG2_rep01_33524" length="81" weight="1.000000" />
+<sequence id="sequence_591" name="QKI_HepG2_rep01_8385" length="81" weight="1.000000" />
+<sequence id="sequence_592" name="QKI_HepG2_rep01_12051" length="81" weight="1.000000" />
+<sequence id="sequence_593" name="QKI_HepG2_rep01_21573" length="81" weight="1.000000" />
+<sequence id="sequence_594" name="QKI_HepG2_rep01_30355" length="81" weight="1.000000" />
+<sequence id="sequence_595" name="QKI_HepG2_rep01_39969" length="81" weight="1.000000" />
+<sequence id="sequence_596" name="QKI_HepG2_rep01_20320" length="81" weight="1.000000" />
+<sequence id="sequence_597" name="QKI_HepG2_rep01_15057" length="81" weight="1.000000" />
+<sequence id="sequence_598" name="QKI_HepG2_rep01_12245" length="81" weight="1.000000" />
+<sequence id="sequence_599" name="QKI_HepG2_rep01_4300" length="81" weight="1.000000" />
+<sequence id="sequence_600" name="QKI_HepG2_rep01_17129" length="81" weight="1.000000" />
+<sequence id="sequence_601" name="QKI_HepG2_rep01_50079" length="81" weight="1.000000" />
+<sequence id="sequence_602" name="QKI_HepG2_rep01_46887" length="81" weight="1.000000" />
+<sequence id="sequence_603" name="QKI_HepG2_rep01_34984" length="81" weight="1.000000" />
+<sequence id="sequence_604" name="QKI_HepG2_rep01_27690" length="81" weight="1.000000" />
+<sequence id="sequence_605" name="QKI_HepG2_rep01_54586" length="81" weight="1.000000" />
+<sequence id="sequence_606" name="QKI_HepG2_rep01_12238" length="81" weight="1.000000" />
+<sequence id="sequence_607" name="QKI_HepG2_rep01_14593" length="81" weight="1.000000" />
+<sequence id="sequence_608" name="QKI_HepG2_rep01_39860" length="81" weight="1.000000" />
+<sequence id="sequence_609" name="QKI_HepG2_rep01_25149" length="81" weight="1.000000" />
+<sequence id="sequence_610" name="QKI_HepG2_rep01_48990" length="81" weight="1.000000" />
+<sequence id="sequence_611" name="QKI_HepG2_rep01_54067" length="81" weight="1.000000" />
+<sequence id="sequence_612" name="QKI_HepG2_rep01_511" length="81" weight="1.000000" />
+<sequence id="sequence_613" name="QKI_HepG2_rep01_51335" length="81" weight="1.000000" />
+<sequence id="sequence_614" name="QKI_HepG2_rep01_36196" length="81" weight="1.000000" />
+<sequence id="sequence_615" name="QKI_HepG2_rep01_32203" length="81" weight="1.000000" />
+<sequence id="sequence_616" name="QKI_HepG2_rep01_20096" length="81" weight="1.000000" />
+<sequence id="sequence_617" name="QKI_HepG2_rep01_36656" length="81" weight="1.000000" />
+<sequence id="sequence_618" name="QKI_HepG2_rep01_46117" length="81" weight="1.000000" />
+<sequence id="sequence_619" name="QKI_HepG2_rep01_17441" length="81" weight="1.000000" />
+<sequence id="sequence_620" name="QKI_HepG2_rep01_46404" length="81" weight="1.000000" />
+<sequence id="sequence_621" name="QKI_HepG2_rep01_14674" length="81" weight="1.000000" />
+<sequence id="sequence_622" name="QKI_HepG2_rep01_36586" length="81" weight="1.000000" />
+<sequence id="sequence_623" name="QKI_HepG2_rep01_25061" length="81" weight="1.000000" />
+<sequence id="sequence_624" name="QKI_HepG2_rep01_29045" length="81" weight="1.000000" />
+<sequence id="sequence_625" name="QKI_HepG2_rep01_38190" length="81" weight="1.000000" />
+<sequence id="sequence_626" name="QKI_HepG2_rep01_29241" length="81" weight="1.000000" />
+<sequence id="sequence_627" name="QKI_HepG2_rep01_49236" length="81" weight="1.000000" />
+<sequence id="sequence_628" name="QKI_HepG2_rep01_50997" length="81" weight="1.000000" />
+<sequence id="sequence_629" name="QKI_HepG2_rep01_36145" length="81" weight="1.000000" />
+<sequence id="sequence_630" name="QKI_HepG2_rep01_25058" length="81" weight="1.000000" />
+<sequence id="sequence_631" name="QKI_HepG2_rep01_38182" length="81" weight="1.000000" />
+<sequence id="sequence_632" name="QKI_HepG2_rep01_14863" length="81" weight="1.000000" />
+<sequence id="sequence_633" name="QKI_HepG2_rep01_39899" length="81" weight="1.000000" />
+<sequence id="sequence_634" name="QKI_HepG2_rep01_34659" length="81" weight="1.000000" />
+<sequence id="sequence_635" name="QKI_HepG2_rep01_21489" length="81" weight="1.000000" />
+<sequence id="sequence_636" name="QKI_HepG2_rep01_41425" length="81" weight="1.000000" />
+<sequence id="sequence_637" name="QKI_HepG2_rep01_23625" length="81" weight="1.000000" />
+<sequence id="sequence_638" name="QKI_HepG2_rep01_43244" length="81" weight="1.000000" />
+<sequence id="sequence_639" name="QKI_HepG2_rep01_3140" length="81" weight="1.000000" />
+<sequence id="sequence_640" name="QKI_HepG2_rep01_42562" length="81" weight="1.000000" />
+<sequence id="sequence_641" name="QKI_HepG2_rep01_49377" length="81" weight="1.000000" />
+<sequence id="sequence_642" name="QKI_HepG2_rep01_10758" length="81" weight="1.000000" />
+<sequence id="sequence_643" name="QKI_HepG2_rep01_20" length="81" weight="1.000000" />
+<sequence id="sequence_644" name="QKI_HepG2_rep01_23211" length="81" weight="1.000000" />
+<sequence id="sequence_645" name="QKI_HepG2_rep01_39732" length="81" weight="1.000000" />
+<sequence id="sequence_646" name="QKI_HepG2_rep01_46703" length="81" weight="1.000000" />
+<sequence id="sequence_647" name="QKI_HepG2_rep01_20345" length="81" weight="1.000000" />
+<sequence id="sequence_648" name="QKI_HepG2_rep01_46346" length="81" weight="1.000000" />
+<sequence id="sequence_649" name="QKI_HepG2_rep01_46540" length="81" weight="1.000000" />
+<sequence id="sequence_650" name="QKI_HepG2_rep01_51818" length="81" weight="1.000000" />
+<sequence id="sequence_651" name="QKI_HepG2_rep01_7310" length="81" weight="1.000000" />
+<sequence id="sequence_652" name="QKI_HepG2_rep01_50552" length="81" weight="1.000000" />
+<sequence id="sequence_653" name="QKI_HepG2_rep01_44110" length="81" weight="1.000000" />
+<sequence id="sequence_654" name="QKI_HepG2_rep01_50198" length="81" weight="1.000000" />
+<sequence id="sequence_655" name="QKI_HepG2_rep01_24857" length="81" weight="1.000000" />
+<sequence id="sequence_656" name="QKI_HepG2_rep01_54183" length="81" weight="1.000000" />
+<sequence id="sequence_657" name="QKI_HepG2_rep01_52749" length="81" weight="1.000000" />
+<sequence id="sequence_658" name="QKI_HepG2_rep01_44239" length="81" weight="1.000000" />
+<sequence id="sequence_659" name="QKI_HepG2_rep01_10816" length="81" weight="1.000000" />
+<sequence id="sequence_660" name="QKI_HepG2_rep01_32452" length="81" weight="1.000000" />
+<sequence id="sequence_661" name="QKI_HepG2_rep01_50042" length="81" weight="1.000000" />
+<sequence id="sequence_662" name="QKI_HepG2_rep01_43495" length="81" weight="1.000000" />
+<sequence id="sequence_663" name="QKI_HepG2_rep01_54068" length="81" weight="1.000000" />
+<sequence id="sequence_664" name="QKI_HepG2_rep01_49114" length="81" weight="1.000000" />
+<sequence id="sequence_665" name="QKI_HepG2_rep01_42714" length="81" weight="1.000000" />
+<sequence id="sequence_666" name="QKI_HepG2_rep01_42473" length="81" weight="1.000000" />
+<sequence id="sequence_667" name="QKI_HepG2_rep01_36883" length="81" weight="1.000000" />
+<sequence id="sequence_668" name="QKI_HepG2_rep01_36861" length="81" weight="1.000000" />
+<sequence id="sequence_669" name="QKI_HepG2_rep01_46500" length="81" weight="1.000000" />
+<sequence id="sequence_670" name="QKI_HepG2_rep01_17561" length="81" weight="1.000000" />
+<sequence id="sequence_671" name="QKI_HepG2_rep01_39204" length="81" weight="1.000000" />
+<sequence id="sequence_672" name="QKI_HepG2_rep01_12510" length="81" weight="1.000000" />
+<sequence id="sequence_673" name="QKI_HepG2_rep01_6477" length="81" weight="1.000000" />
+<sequence id="sequence_674" name="QKI_HepG2_rep01_54519" length="81" weight="1.000000" />
+<sequence id="sequence_675" name="QKI_HepG2_rep01_36476" length="81" weight="1.000000" />
+<sequence id="sequence_676" name="QKI_HepG2_rep01_29219" length="81" weight="1.000000" />
+<sequence id="sequence_677" name="QKI_HepG2_rep01_34192" length="81" weight="1.000000" />
+<sequence id="sequence_678" name="QKI_HepG2_rep01_49270" length="81" weight="1.000000" />
+<sequence id="sequence_679" name="QKI_HepG2_rep01_24905" length="81" weight="1.000000" />
+<sequence id="sequence_680" name="QKI_HepG2_rep01_53307" length="81" weight="1.000000" />
+<sequence id="sequence_681" name="QKI_HepG2_rep01_14997" length="81" weight="1.000000" />
+<sequence id="sequence_682" name="QKI_HepG2_rep01_44676" length="81" weight="1.000000" />
+<sequence id="sequence_683" name="QKI_HepG2_rep01_8421" length="81" weight="1.000000" />
+<sequence id="sequence_684" name="QKI_HepG2_rep01_36101" length="81" weight="1.000000" />
+<sequence id="sequence_685" name="QKI_HepG2_rep01_43906" length="81" weight="1.000000" />
+<sequence id="sequence_686" name="QKI_HepG2_rep01_38858" length="81" weight="1.000000" />
+<sequence id="sequence_687" name="QKI_HepG2_rep01_12243" length="81" weight="1.000000" />
+<sequence id="sequence_688" name="QKI_HepG2_rep01_40662" length="81" weight="1.000000" />
+<sequence id="sequence_689" name="QKI_HepG2_rep01_5130" length="81" weight="1.000000" />
+<sequence id="sequence_690" name="QKI_HepG2_rep01_1777" length="81" weight="1.000000" />
+<sequence id="sequence_691" name="QKI_HepG2_rep01_10845" length="81" weight="1.000000" />
+<sequence id="sequence_692" name="QKI_HepG2_rep01_42163" length="81" weight="1.000000" />
+<sequence id="sequence_693" name="QKI_HepG2_rep01_40614" length="81" weight="1.000000" />
+<sequence id="sequence_694" name="QKI_HepG2_rep01_44569" length="81" weight="1.000000" />
+<sequence id="sequence_695" name="QKI_HepG2_rep01_43967" length="81" weight="1.000000" />
+<sequence id="sequence_696" name="QKI_HepG2_rep01_38047" length="81" weight="1.000000" />
+<sequence id="sequence_697" name="QKI_HepG2_rep01_41253" length="81" weight="1.000000" />
+<sequence id="sequence_698" name="QKI_HepG2_rep01_50949" length="81" weight="1.000000" />
+<sequence id="sequence_699" name="QKI_HepG2_rep01_46111" length="81" weight="1.000000" />
+<sequence id="sequence_700" name="QKI_HepG2_rep01_34824" length="81" weight="1.000000" />
+<sequence id="sequence_701" name="QKI_HepG2_rep01_46559" length="81" weight="1.000000" />
+<sequence id="sequence_702" name="QKI_HepG2_rep01_40024" length="81" weight="1.000000" />
+<sequence id="sequence_703" name="QKI_HepG2_rep01_21377" length="81" weight="1.000000" />
+<sequence id="sequence_704" name="QKI_HepG2_rep01_31937" length="81" weight="1.000000" />
+<sequence id="sequence_705" name="QKI_HepG2_rep01_37871" length="81" weight="1.000000" />
+<sequence id="sequence_706" name="QKI_HepG2_rep01_23037" length="81" weight="1.000000" />
+<sequence id="sequence_707" name="QKI_HepG2_rep01_5227" length="81" weight="1.000000" />
+<sequence id="sequence_708" name="QKI_HepG2_rep01_276" length="81" weight="1.000000" />
+<sequence id="sequence_709" name="QKI_HepG2_rep01_15435" length="81" weight="1.000000" />
+<sequence id="sequence_710" name="QKI_HepG2_rep01_45955" length="81" weight="1.000000" />
+<sequence id="sequence_711" name="QKI_HepG2_rep01_52071" length="81" weight="1.000000" />
+<sequence id="sequence_712" name="QKI_HepG2_rep01_50200" length="81" weight="1.000000" />
+<sequence id="sequence_713" name="QKI_HepG2_rep01_1693" length="81" weight="1.000000" />
+<sequence id="sequence_714" name="QKI_HepG2_rep01_33674" length="81" weight="1.000000" />
+<sequence id="sequence_715" name="QKI_HepG2_rep01_33655" length="81" weight="1.000000" />
+<sequence id="sequence_716" name="QKI_HepG2_rep01_41469" length="81" weight="1.000000" />
+<sequence id="sequence_717" name="QKI_HepG2_rep01_36370" length="81" weight="1.000000" />
+<sequence id="sequence_718" name="QKI_HepG2_rep01_51143" length="81" weight="1.000000" />
+<sequence id="sequence_719" name="QKI_HepG2_rep01_54358" length="81" weight="1.000000" />
+<sequence id="sequence_720" name="QKI_HepG2_rep01_40471" length="81" weight="1.000000" />
+<sequence id="sequence_721" name="QKI_HepG2_rep01_23267" length="81" weight="1.000000" />
+<sequence id="sequence_722" name="QKI_HepG2_rep01_24819" length="81" weight="1.000000" />
+<sequence id="sequence_723" name="QKI_HepG2_rep01_12842" length="81" weight="1.000000" />
+<sequence id="sequence_724" name="QKI_HepG2_rep01_4874" length="81" weight="1.000000" />
+<sequence id="sequence_725" name="QKI_HepG2_rep01_37870" length="81" weight="1.000000" />
+<sequence id="sequence_726" name="QKI_HepG2_rep01_14967" length="81" weight="1.000000" />
+<sequence id="sequence_727" name="QKI_HepG2_rep01_30182" length="81" weight="1.000000" />
+<sequence id="sequence_728" name="QKI_HepG2_rep01_25414" length="81" weight="1.000000" />
+<sequence id="sequence_729" name="QKI_HepG2_rep01_46900" length="81" weight="1.000000" />
+<sequence id="sequence_730" name="QKI_HepG2_rep01_54037" length="81" weight="1.000000" />
+<sequence id="sequence_731" name="QKI_HepG2_rep01_49095" length="81" weight="1.000000" />
+<sequence id="sequence_732" name="QKI_HepG2_rep01_28020" length="81" weight="1.000000" />
+<sequence id="sequence_733" name="QKI_HepG2_rep01_29237" length="81" weight="1.000000" />
+<sequence id="sequence_734" name="QKI_HepG2_rep01_34646" length="81" weight="1.000000" />
+<sequence id="sequence_735" name="QKI_HepG2_rep01_40678" length="81" weight="1.000000" />
+<sequence id="sequence_736" name="QKI_HepG2_rep01_41517" length="81" weight="1.000000" />
+<sequence id="sequence_737" name="QKI_HepG2_rep01_2601" length="81" weight="1.000000" />
+<sequence id="sequence_738" name="QKI_HepG2_rep01_13101" length="81" weight="1.000000" />
+<sequence id="sequence_739" name="QKI_HepG2_rep01_8142" length="81" weight="1.000000" />
+<sequence id="sequence_740" name="QKI_HepG2_rep01_34583" length="81" weight="1.000000" />
+<sequence id="sequence_741" name="QKI_HepG2_rep01_40754" length="81" weight="1.000000" />
+<sequence id="sequence_742" name="QKI_HepG2_rep01_11037" length="81" weight="1.000000" />
+<sequence id="sequence_743" name="QKI_HepG2_rep01_9331" length="81" weight="1.000000" />
+<sequence id="sequence_744" name="QKI_HepG2_rep01_23140" length="81" weight="1.000000" />
+<sequence id="sequence_745" name="QKI_HepG2_rep01_36789" length="81" weight="1.000000" />
+<sequence id="sequence_746" name="QKI_HepG2_rep01_39920" length="81" weight="1.000000" />
+<sequence id="sequence_747" name="QKI_HepG2_rep01_1625" length="81" weight="1.000000" />
+<sequence id="sequence_748" name="QKI_HepG2_rep01_3218" length="81" weight="1.000000" />
+<sequence id="sequence_749" name="QKI_HepG2_rep01_32129" length="81" weight="1.000000" />
+<sequence id="sequence_750" name="QKI_HepG2_rep01_50578" length="81" weight="1.000000" />
+<sequence id="sequence_751" name="QKI_HepG2_rep01_7395" length="81" weight="1.000000" />
+<sequence id="sequence_752" name="QKI_HepG2_rep01_15551" length="81" weight="1.000000" />
+<sequence id="sequence_753" name="QKI_HepG2_rep01_36328" length="81" weight="1.000000" />
+<sequence id="sequence_754" name="QKI_HepG2_rep01_35179" length="81" weight="1.000000" />
+<sequence id="sequence_755" name="QKI_HepG2_rep01_40411" length="81" weight="1.000000" />
+<sequence id="sequence_756" name="QKI_HepG2_rep01_9405" length="81" weight="1.000000" />
+<sequence id="sequence_757" name="QKI_HepG2_rep01_15263" length="81" weight="1.000000" />
+<sequence id="sequence_758" name="QKI_HepG2_rep01_32337" length="81" weight="1.000000" />
+<sequence id="sequence_759" name="QKI_HepG2_rep01_43603" length="81" weight="1.000000" />
+<sequence id="sequence_760" name="QKI_HepG2_rep01_7498" length="81" weight="1.000000" />
+<sequence id="sequence_761" name="QKI_HepG2_rep01_23074" length="81" weight="1.000000" />
+<sequence id="sequence_762" name="QKI_HepG2_rep01_53013" length="81" weight="1.000000" />
+<sequence id="sequence_763" name="QKI_HepG2_rep01_18645" length="81" weight="1.000000" />
+<sequence id="sequence_764" name="QKI_HepG2_rep01_34866" length="81" weight="1.000000" />
+<sequence id="sequence_765" name="QKI_HepG2_rep01_53110" length="81" weight="1.000000" />
+<sequence id="sequence_766" name="QKI_HepG2_rep01_29229" length="81" weight="1.000000" />
+<sequence id="sequence_767" name="QKI_HepG2_rep01_12862" length="81" weight="1.000000" />
+<sequence id="sequence_768" name="QKI_HepG2_rep01_33978" length="81" weight="1.000000" />
+<sequence id="sequence_769" name="QKI_HepG2_rep01_15205" length="81" weight="1.000000" />
+<sequence id="sequence_770" name="QKI_HepG2_rep01_33543" length="81" weight="1.000000" />
+<sequence id="sequence_771" name="QKI_HepG2_rep01_9242" length="81" weight="1.000000" />
+<sequence id="sequence_772" name="QKI_HepG2_rep01_18682" length="81" weight="1.000000" />
+<sequence id="sequence_773" name="QKI_HepG2_rep01_7253" length="81" weight="1.000000" />
+<sequence id="sequence_774" name="QKI_HepG2_rep01_21954" length="81" weight="1.000000" />
+<sequence id="sequence_775" name="QKI_HepG2_rep01_19037" length="81" weight="1.000000" />
+<sequence id="sequence_776" name="QKI_HepG2_rep01_15463" length="81" weight="1.000000" />
+<sequence id="sequence_777" name="QKI_HepG2_rep01_41266" length="81" weight="1.000000" />
+<sequence id="sequence_778" name="QKI_HepG2_rep01_3855" length="81" weight="1.000000" />
+<sequence id="sequence_779" name="QKI_HepG2_rep01_10954" length="81" weight="1.000000" />
+<sequence id="sequence_780" name="QKI_HepG2_rep01_10974" length="81" weight="1.000000" />
+<sequence id="sequence_781" name="QKI_HepG2_rep01_46304" length="81" weight="1.000000" />
+<sequence id="sequence_782" name="QKI_HepG2_rep01_13205" length="81" weight="1.000000" />
+<sequence id="sequence_783" name="QKI_HepG2_rep01_46642" length="81" weight="1.000000" />
+<sequence id="sequence_784" name="QKI_HepG2_rep01_9350" length="81" weight="1.000000" />
+<sequence id="sequence_785" name="QKI_HepG2_rep01_38191" length="81" weight="1.000000" />
+<sequence id="sequence_786" name="QKI_HepG2_rep01_51039" length="81" weight="1.000000" />
+<sequence id="sequence_787" name="QKI_HepG2_rep01_12790" length="81" weight="1.000000" />
+<sequence id="sequence_788" name="QKI_HepG2_rep01_30360" length="81" weight="1.000000" />
+<sequence id="sequence_789" name="QKI_HepG2_rep01_43806" length="81" weight="1.000000" />
+<sequence id="sequence_790" name="QKI_HepG2_rep01_32331" length="81" weight="1.000000" />
+<sequence id="sequence_791" name="QKI_HepG2_rep01_12047" length="81" weight="1.000000" />
+<sequence id="sequence_792" name="QKI_HepG2_rep01_46356" length="81" weight="1.000000" />
+<sequence id="sequence_793" name="QKI_HepG2_rep01_25445" length="81" weight="1.000000" />
+<sequence id="sequence_794" name="QKI_HepG2_rep01_23225" length="81" weight="1.000000" />
+<sequence id="sequence_795" name="QKI_HepG2_rep01_54265" length="81" weight="1.000000" />
+<sequence id="sequence_796" name="QKI_HepG2_rep01_20256" length="81" weight="1.000000" />
+<sequence id="sequence_797" name="QKI_HepG2_rep01_29302" length="81" weight="1.000000" />
+<sequence id="sequence_798" name="QKI_HepG2_rep01_426" length="81" weight="1.000000" />
+<sequence id="sequence_799" name="QKI_HepG2_rep01_30432" length="81" weight="1.000000" />
+<sequence id="sequence_800" name="QKI_HepG2_rep01_44669" length="81" weight="1.000000" />
+<sequence id="sequence_801" name="QKI_HepG2_rep01_10811" length="81" weight="1.000000" />
+<sequence id="sequence_802" name="QKI_HepG2_rep01_17156" length="81" weight="1.000000" />
+<sequence id="sequence_803" name="QKI_HepG2_rep01_12341" length="81" weight="1.000000" />
+<sequence id="sequence_804" name="QKI_HepG2_rep01_52911" length="81" weight="1.000000" />
+<sequence id="sequence_805" name="QKI_HepG2_rep01_2605" length="81" weight="1.000000" />
+<sequence id="sequence_806" name="QKI_HepG2_rep01_21382" length="81" weight="1.000000" />
+<sequence id="sequence_807" name="QKI_HepG2_rep01_1774" length="81" weight="1.000000" />
+<sequence id="sequence_808" name="QKI_HepG2_rep01_41486" length="81" weight="1.000000" />
+<sequence id="sequence_809" name="QKI_HepG2_rep01_7464" length="81" weight="1.000000" />
+<sequence id="sequence_810" name="QKI_HepG2_rep01_38749" length="81" weight="1.000000" />
+<sequence id="sequence_811" name="QKI_HepG2_rep01_25162" length="81" weight="1.000000" />
+<sequence id="sequence_812" name="QKI_HepG2_rep01_21860" length="81" weight="1.000000" />
+<sequence id="sequence_813" name="QKI_HepG2_rep01_38954" length="81" weight="1.000000" />
+<sequence id="sequence_814" name="QKI_HepG2_rep01_23469" length="81" weight="1.000000" />
+<sequence id="sequence_815" name="QKI_HepG2_rep01_54549" length="81" weight="1.000000" />
+<sequence id="sequence_816" name="QKI_HepG2_rep01_47016" length="81" weight="1.000000" />
+<sequence id="sequence_817" name="QKI_HepG2_rep01_27685" length="81" weight="1.000000" />
+<sequence id="sequence_818" name="QKI_HepG2_rep01_18670" length="81" weight="1.000000" />
+<sequence id="sequence_819" name="QKI_HepG2_rep01_17374" length="81" weight="1.000000" />
+<sequence id="sequence_820" name="QKI_HepG2_rep01_42756" length="81" weight="1.000000" />
+<sequence id="sequence_821" name="QKI_HepG2_rep01_51885" length="81" weight="1.000000" />
+<sequence id="sequence_822" name="QKI_HepG2_rep01_34427" length="81" weight="1.000000" />
+<sequence id="sequence_823" name="QKI_HepG2_rep01_54301" length="81" weight="1.000000" />
+<sequence id="sequence_824" name="QKI_HepG2_rep01_6231" length="81" weight="1.000000" />
+<sequence id="sequence_825" name="QKI_HepG2_rep01_29101" length="81" weight="1.000000" />
+<sequence id="sequence_826" name="QKI_HepG2_rep01_43330" length="81" weight="1.000000" />
+<sequence id="sequence_827" name="QKI_HepG2_rep01_29094" length="81" weight="1.000000" />
+<sequence id="sequence_828" name="QKI_HepG2_rep01_23176" length="81" weight="1.000000" />
+<sequence id="sequence_829" name="QKI_HepG2_rep01_12982" length="81" weight="1.000000" />
+<sequence id="sequence_830" name="QKI_HepG2_rep01_8216" length="81" weight="1.000000" />
+<sequence id="sequence_831" name="QKI_HepG2_rep01_32693" length="81" weight="1.000000" />
+<sequence id="sequence_832" name="QKI_HepG2_rep01_13049" length="81" weight="1.000000" />
+<sequence id="sequence_833" name="QKI_HepG2_rep01_42258" length="81" weight="1.000000" />
+<sequence id="sequence_834" name="QKI_HepG2_rep01_44672" length="81" weight="1.000000" />
+<sequence id="sequence_835" name="QKI_HepG2_rep01_54580" length="81" weight="1.000000" />
+<sequence id="sequence_836" name="QKI_HepG2_rep01_25157" length="81" weight="1.000000" />
+<sequence id="sequence_837" name="QKI_HepG2_rep01_39763" length="81" weight="1.000000" />
+<sequence id="sequence_838" name="QKI_HepG2_rep01_41533" length="81" weight="1.000000" />
+<sequence id="sequence_839" name="QKI_HepG2_rep01_8059" length="81" weight="1.000000" />
+<sequence id="sequence_840" name="QKI_HepG2_rep01_34096" length="81" weight="1.000000" />
+<sequence id="sequence_841" name="QKI_HepG2_rep01_39185" length="81" weight="1.000000" />
+<sequence id="sequence_842" name="QKI_HepG2_rep01_42774" length="81" weight="1.000000" />
+<sequence id="sequence_843" name="QKI_HepG2_rep01_9291" length="81" weight="1.000000" />
+<sequence id="sequence_844" name="QKI_HepG2_rep01_36394" length="81" weight="1.000000" />
+<sequence id="sequence_845" name="QKI_HepG2_rep01_18934" length="81" weight="1.000000" />
+<sequence id="sequence_846" name="QKI_HepG2_rep01_21425" length="81" weight="1.000000" />
+<sequence id="sequence_847" name="QKI_HepG2_rep01_25146" length="81" weight="1.000000" />
+<sequence id="sequence_848" name="QKI_HepG2_rep01_43579" length="81" weight="1.000000" />
+<sequence id="sequence_849" name="QKI_HepG2_rep01_30565" length="81" weight="1.000000" />
+<sequence id="sequence_850" name="QKI_HepG2_rep01_1554" length="81" weight="1.000000" />
+<sequence id="sequence_851" name="QKI_HepG2_rep01_44163" length="81" weight="1.000000" />
+<sequence id="sequence_852" name="QKI_HepG2_rep01_36218" length="81" weight="1.000000" />
+<sequence id="sequence_853" name="QKI_HepG2_rep01_21745" length="81" weight="1.000000" />
+<sequence id="sequence_854" name="QKI_HepG2_rep01_14904" length="81" weight="1.000000" />
+<sequence id="sequence_855" name="QKI_HepG2_rep01_48932" length="81" weight="1.000000" />
+<sequence id="sequence_856" name="QKI_HepG2_rep01_7244" length="81" weight="1.000000" />
+<sequence id="sequence_857" name="QKI_HepG2_rep01_39842" length="81" weight="1.000000" />
+<sequence id="sequence_858" name="QKI_HepG2_rep01_50393" length="81" weight="1.000000" />
+<sequence id="sequence_859" name="QKI_HepG2_rep01_43200" length="81" weight="1.000000" />
+<sequence id="sequence_860" name="QKI_HepG2_rep01_4743" length="81" weight="1.000000" />
+<sequence id="sequence_861" name="QKI_HepG2_rep01_9402" length="81" weight="1.000000" />
+<sequence id="sequence_862" name="QKI_HepG2_rep01_398" length="81" weight="1.000000" />
+<sequence id="sequence_863" name="QKI_HepG2_rep01_15352" length="81" weight="1.000000" />
+<sequence id="sequence_864" name="QKI_HepG2_rep01_5107" length="81" weight="1.000000" />
+<sequence id="sequence_865" name="QKI_HepG2_rep01_17361" length="81" weight="1.000000" />
+<sequence id="sequence_866" name="QKI_HepG2_rep01_9085" length="81" weight="1.000000" />
+<sequence id="sequence_867" name="QKI_HepG2_rep01_23643" length="81" weight="1.000000" />
+<sequence id="sequence_868" name="QKI_HepG2_rep01_6450" length="81" weight="1.000000" />
+<sequence id="sequence_869" name="QKI_HepG2_rep01_558" length="81" weight="1.000000" />
+<sequence id="sequence_870" name="QKI_HepG2_rep01_19738" length="81" weight="1.000000" />
+<sequence id="sequence_871" name="QKI_HepG2_rep01_43285" length="81" weight="1.000000" />
+<sequence id="sequence_872" name="QKI_HepG2_rep01_51920" length="81" weight="1.000000" />
+<sequence id="sequence_873" name="QKI_HepG2_rep01_8138" length="81" weight="1.000000" />
+<sequence id="sequence_874" name="QKI_HepG2_rep01_9347" length="81" weight="1.000000" />
+<sequence id="sequence_875" name="QKI_HepG2_rep01_31822" length="81" weight="1.000000" />
+<sequence id="sequence_876" name="QKI_HepG2_rep01_30843" length="81" weight="1.000000" />
+<sequence id="sequence_877" name="QKI_HepG2_rep01_14567" length="81" weight="1.000000" />
+<sequence id="sequence_878" name="QKI_HepG2_rep01_23326" length="81" weight="1.000000" />
+<sequence id="sequence_879" name="QKI_HepG2_rep01_20348" length="81" weight="1.000000" />
+<sequence id="sequence_880" name="QKI_HepG2_rep01_8042" length="81" weight="1.000000" />
+<sequence id="sequence_881" name="QKI_HepG2_rep01_44352" length="81" weight="1.000000" />
+<sequence id="sequence_882" name="QKI_HepG2_rep01_12108" length="81" weight="1.000000" />
+<sequence id="sequence_883" name="QKI_HepG2_rep01_52612" length="81" weight="1.000000" />
+<sequence id="sequence_884" name="QKI_HepG2_rep01_1522" length="81" weight="1.000000" />
+<sequence id="sequence_885" name="QKI_HepG2_rep01_12852" length="81" weight="1.000000" />
+<sequence id="sequence_886" name="QKI_HepG2_rep01_43880" length="81" weight="1.000000" />
+<sequence id="sequence_887" name="QKI_HepG2_rep01_36771" length="81" weight="1.000000" />
+<sequence id="sequence_888" name="QKI_HepG2_rep01_23371" length="81" weight="1.000000" />
+<sequence id="sequence_889" name="QKI_HepG2_rep01_46644" length="81" weight="1.000000" />
+<sequence id="sequence_890" name="QKI_HepG2_rep01_4377" length="81" weight="1.000000" />
+<sequence id="sequence_891" name="QKI_HepG2_rep01_38980" length="81" weight="1.000000" />
+<sequence id="sequence_892" name="QKI_HepG2_rep01_37769" length="81" weight="1.000000" />
+<sequence id="sequence_893" name="QKI_HepG2_rep01_17172" length="81" weight="1.000000" />
+<sequence id="sequence_894" name="QKI_HepG2_rep01_33635" length="81" weight="1.000000" />
+<sequence id="sequence_895" name="QKI_HepG2_rep01_24841" length="81" weight="1.000000" />
+<sequence id="sequence_896" name="QKI_HepG2_rep01_34747" length="81" weight="1.000000" />
+<sequence id="sequence_897" name="QKI_HepG2_rep01_36847" length="81" weight="1.000000" />
+<sequence id="sequence_898" name="QKI_HepG2_rep01_1701" length="81" weight="1.000000" />
+<sequence id="sequence_899" name="QKI_HepG2_rep01_51237" length="81" weight="1.000000" />
+<sequence id="sequence_900" name="QKI_HepG2_rep01_30696" length="81" weight="1.000000" />
+<sequence id="sequence_901" name="QKI_HepG2_rep01_52054" length="81" weight="1.000000" />
+<sequence id="sequence_902" name="QKI_HepG2_rep01_48122" length="81" weight="1.000000" />
+<sequence id="sequence_903" name="QKI_HepG2_rep01_52006" length="81" weight="1.000000" />
+<sequence id="sequence_904" name="QKI_HepG2_rep01_42525" length="81" weight="1.000000" />
+<sequence id="sequence_905" name="QKI_HepG2_rep01_50888" length="81" weight="1.000000" />
+<sequence id="sequence_906" name="QKI_HepG2_rep01_34932" length="81" weight="1.000000" />
+<sequence id="sequence_907" name="QKI_HepG2_rep01_13030" length="81" weight="1.000000" />
+<sequence id="sequence_908" name="QKI_HepG2_rep01_36460" length="81" weight="1.000000" />
+<sequence id="sequence_909" name="QKI_HepG2_rep01_21836" length="81" weight="1.000000" />
+<sequence id="sequence_910" name="QKI_HepG2_rep01_49071" length="81" weight="1.000000" />
+<sequence id="sequence_911" name="QKI_HepG2_rep01_13251" length="81" weight="1.000000" />
+<sequence id="sequence_912" name="QKI_HepG2_rep01_46496" length="81" weight="1.000000" />
+<sequence id="sequence_913" name="QKI_HepG2_rep01_44537" length="81" weight="1.000000" />
+<sequence id="sequence_914" name="QKI_HepG2_rep01_46274" length="81" weight="1.000000" />
+<sequence id="sequence_915" name="QKI_HepG2_rep01_30735" length="81" weight="1.000000" />
+<sequence id="sequence_916" name="QKI_HepG2_rep01_22993" length="81" weight="1.000000" />
+<sequence id="sequence_917" name="QKI_HepG2_rep01_48330" length="81" weight="1.000000" />
+<sequence id="sequence_918" name="QKI_HepG2_rep01_6236" length="81" weight="1.000000" />
+<sequence id="sequence_919" name="QKI_HepG2_rep01_36483" length="81" weight="1.000000" />
+<sequence id="sequence_920" name="QKI_HepG2_rep01_54602" length="81" weight="1.000000" />
+<sequence id="sequence_921" name="QKI_HepG2_rep01_53291" length="81" weight="1.000000" />
+<sequence id="sequence_922" name="QKI_HepG2_rep01_51734" length="81" weight="1.000000" />
+<sequence id="sequence_923" name="QKI_HepG2_rep01_44133" length="81" weight="1.000000" />
+<sequence id="sequence_924" name="QKI_HepG2_rep01_38171" length="81" weight="1.000000" />
+<sequence id="sequence_925" name="QKI_HepG2_rep01_312" length="81" weight="1.000000" />
+<sequence id="sequence_926" name="QKI_HepG2_rep01_36466" length="81" weight="1.000000" />
+<sequence id="sequence_927" name="QKI_HepG2_rep01_53091" length="81" weight="1.000000" />
+<sequence id="sequence_928" name="QKI_HepG2_rep01_38193" length="81" weight="1.000000" />
+<sequence id="sequence_929" name="QKI_HepG2_rep01_42727" length="81" weight="1.000000" />
+<sequence id="sequence_930" name="QKI_HepG2_rep01_36283" length="81" weight="1.000000" />
+<sequence id="sequence_931" name="QKI_HepG2_rep01_15130" length="81" weight="1.000000" />
+<sequence id="sequence_932" name="QKI_HepG2_rep01_43638" length="81" weight="1.000000" />
+<sequence id="sequence_933" name="QKI_HepG2_rep01_1542" length="81" weight="1.000000" />
+<sequence id="sequence_934" name="QKI_HepG2_rep01_34878" length="81" weight="1.000000" />
+<sequence id="sequence_935" name="QKI_HepG2_rep01_39995" length="81" weight="1.000000" />
+<sequence id="sequence_936" name="QKI_HepG2_rep01_39061" length="81" weight="1.000000" />
+<sequence id="sequence_937" name="QKI_HepG2_rep01_385" length="81" weight="1.000000" />
+<sequence id="sequence_938" name="QKI_HepG2_rep01_34035" length="81" weight="1.000000" />
+<sequence id="sequence_939" name="QKI_HepG2_rep01_52035" length="81" weight="1.000000" />
+<sequence id="sequence_940" name="QKI_HepG2_rep01_27815" length="81" weight="1.000000" />
+<sequence id="sequence_941" name="QKI_HepG2_rep01_38850" length="81" weight="1.000000" />
+<sequence id="sequence_942" name="QKI_HepG2_rep01_46571" length="81" weight="1.000000" />
+<sequence id="sequence_943" name="QKI_HepG2_rep01_8357" length="81" weight="1.000000" />
+<sequence id="sequence_944" name="QKI_HepG2_rep01_44455" length="81" weight="1.000000" />
+<sequence id="sequence_945" name="QKI_HepG2_rep01_19740" length="81" weight="1.000000" />
+<sequence id="sequence_946" name="QKI_HepG2_rep01_44387" length="81" weight="1.000000" />
+<sequence id="sequence_947" name="QKI_HepG2_rep01_40540" length="81" weight="1.000000" />
+<sequence id="sequence_948" name="QKI_HepG2_rep01_20146" length="81" weight="1.000000" />
+<sequence id="sequence_949" name="QKI_HepG2_rep01_578" length="81" weight="1.000000" />
+<sequence id="sequence_950" name="QKI_HepG2_rep01_369" length="81" weight="1.000000" />
+<sequence id="sequence_951" name="QKI_HepG2_rep01_54479" length="81" weight="1.000000" />
+<sequence id="sequence_952" name="QKI_HepG2_rep01_36355" length="81" weight="1.000000" />
+<sequence id="sequence_953" name="QKI_HepG2_rep01_35039" length="81" weight="1.000000" />
+<sequence id="sequence_954" name="QKI_HepG2_rep01_20202" length="62" weight="1.000000" />
+<sequence id="sequence_955" name="QKI_HepG2_rep01_18663" length="81" weight="1.000000" />
+<sequence id="sequence_956" name="QKI_HepG2_rep01_3306" length="81" weight="1.000000" />
+<sequence id="sequence_957" name="QKI_HepG2_rep01_51868" length="81" weight="1.000000" />
+<sequence id="sequence_958" name="QKI_HepG2_rep01_41653" length="81" weight="1.000000" />
+<sequence id="sequence_959" name="QKI_HepG2_rep01_20237" length="81" weight="1.000000" />
+<sequence id="sequence_960" name="QKI_HepG2_rep01_36492" length="81" weight="1.000000" />
+<sequence id="sequence_961" name="QKI_HepG2_rep01_12765" length="81" weight="1.000000" />
+<sequence id="sequence_962" name="QKI_HepG2_rep01_47000" length="81" weight="1.000000" />
+<sequence id="sequence_963" name="QKI_HepG2_rep01_46257" length="81" weight="1.000000" />
+<sequence id="sequence_964" name="QKI_HepG2_rep01_46762" length="81" weight="1.000000" />
+<sequence id="sequence_965" name="QKI_HepG2_rep01_30636" length="81" weight="1.000000" />
+<sequence id="sequence_966" name="QKI_HepG2_rep01_30869" length="81" weight="1.000000" />
+<sequence id="sequence_967" name="QKI_HepG2_rep01_43535" length="81" weight="1.000000" />
+<sequence id="sequence_968" name="QKI_HepG2_rep01_30939" length="81" weight="1.000000" />
+<sequence id="sequence_969" name="QKI_HepG2_rep01_43169" length="81" weight="1.000000" />
+<sequence id="sequence_970" name="QKI_HepG2_rep01_27961" length="81" weight="1.000000" />
+<sequence id="sequence_971" name="QKI_HepG2_rep01_32265" length="81" weight="1.000000" />
+<sequence id="sequence_972" name="QKI_HepG2_rep01_32146" length="81" weight="1.000000" />
+<sequence id="sequence_973" name="QKI_HepG2_rep01_50391" length="81" weight="1.000000" />
+<sequence id="sequence_974" name="QKI_HepG2_rep01_39180" length="81" weight="1.000000" />
+<sequence id="sequence_975" name="QKI_HepG2_rep01_8463" length="81" weight="1.000000" />
+<sequence id="sequence_976" name="QKI_HepG2_rep01_36759" length="81" weight="1.000000" />
+<sequence id="sequence_977" name="QKI_HepG2_rep01_43534" length="81" weight="1.000000" />
+<sequence id="sequence_978" name="QKI_HepG2_rep01_9382" length="81" weight="1.000000" />
+<sequence id="sequence_979" name="QKI_HepG2_rep01_27910" length="81" weight="1.000000" />
+<sequence id="sequence_980" name="QKI_HepG2_rep01_9428" length="81" weight="1.000000" />
+<sequence id="sequence_981" name="QKI_HepG2_rep01_44551" length="81" weight="1.000000" />
+<sequence id="sequence_982" name="QKI_HepG2_rep01_639" length="81" weight="1.000000" />
+<sequence id="sequence_983" name="QKI_HepG2_rep01_50146" length="81" weight="1.000000" />
+<sequence id="sequence_984" name="QKI_HepG2_rep01_43568" length="81" weight="1.000000" />
+<sequence id="sequence_985" name="QKI_HepG2_rep01_49378" length="81" weight="1.000000" />
+<sequence id="sequence_986" name="QKI_HepG2_rep01_4936" length="81" weight="1.000000" />
+<sequence id="sequence_987" name="QKI_HepG2_rep01_5155" length="81" weight="1.000000" />
+<sequence id="sequence_988" name="QKI_HepG2_rep01_30902" length="81" weight="1.000000" />
+<sequence id="sequence_989" name="QKI_HepG2_rep01_2485" length="81" weight="1.000000" />
+<sequence id="sequence_990" name="QKI_HepG2_rep01_27851" length="81" weight="1.000000" />
+<sequence id="sequence_991" name="QKI_HepG2_rep01_8364" length="81" weight="1.000000" />
+<sequence id="sequence_992" name="QKI_HepG2_rep01_29215" length="81" weight="1.000000" />
+<sequence id="sequence_993" name="QKI_HepG2_rep01_15538" length="81" weight="1.000000" />
+<sequence id="sequence_994" name="QKI_HepG2_rep01_20329" length="81" weight="1.000000" />
+<sequence id="sequence_995" name="QKI_HepG2_rep01_36526" length="81" weight="1.000000" />
+<sequence id="sequence_996" name="QKI_HepG2_rep01_7160" length="81" weight="1.000000" />
+<sequence id="sequence_997" name="QKI_HepG2_rep01_46269" length="81" weight="1.000000" />
+<sequence id="sequence_998" name="QKI_HepG2_rep01_49355" length="81" weight="1.000000" />
+<sequence id="sequence_999" name="QKI_HepG2_rep01_27960" length="81" weight="1.000000" />
+<letter_frequencies>
+<alphabet_array>
+<value letter_id="A">0.294</value>
+<value letter_id="C">0.209</value>
+<value letter_id="G">0.164</value>
+<value letter_id="T">0.333</value>
+</alphabet_array>
+</letter_frequencies>
+</training_set>
+<model>
+<command_line>meme meme_inputx.fa -o meme_outx -dna </command_line>
+<host>ThinkPad-T450s</host>
+<type>zoops</type>
+<nmotifs>1</nmotifs>
+<evalue_threshold>inf</evalue_threshold>
+<object_function>E-value of product of p-values</object_function>
+<use_llr>0</use_llr>
+<min_width>8</min_width>
+<max_width>50</max_width>
+<wg>11</wg>
+<ws>1</ws>
+<endgaps>yes</endgaps>
+<substring>yes</substring>
+<minsites>2</minsites>
+<maxsites>1000</maxsites>
+<wnsites>0.8</wnsites>
+<spmap>uni</spmap>
+<spfuzz>0.5</spfuzz>
+<prior>dirichlet</prior>
+<beta>0.01</beta>
+<maxiter>50</maxiter>
+<distance>1e-05</distance>
+<num_sequences>1000</num_sequences>
+<num_positions>80981</num_positions>
+<seed>0</seed>
+<ctfrac>-1</ctfrac>
+<maxwords>-1</maxwords>
+<strands>forward</strands>
+<priors_file></priors_file>
+<reason_for_stopping>Stopped because requested number of motifs (1) found.</reason_for_stopping>
+<background_frequencies source="dataset with add-one prior applied">
+<alphabet_array>
+<value letter_id="A">0.294</value>
+<value letter_id="C">0.209</value>
+<value letter_id="G">0.164</value>
+<value letter_id="T">0.333</value>
+</alphabet_array>
+</background_frequencies>
+</model>
+<motifs>
+<motif id="motif_1" name="TACTAAYM" alt="MEME-1" width="8" sites="449" ic="11.4" re="10.1" llr="3130" e_value="5.7e-184" bayes_threshold="9.32212" elapsed_time="548.264000">
+<scores>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">-67</value>
+<value letter_id="C">-58</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">102</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">173</value>
+<value letter_id="C">-1545</value>
+<value letter_id="G">-262</value>
+<value letter_id="T">-1545</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-1545</value>
+<value letter_id="C">189</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">-57</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-1545</value>
+<value letter_id="C">-1545</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">159</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">177</value>
+<value letter_id="C">-1545</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">-1545</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">177</value>
+<value letter_id="C">-1545</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">-1545</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-1545</value>
+<value letter_id="C">166</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">1</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">83</value>
+<value letter_id="C">35</value>
+<value letter_id="G">-1545</value>
+<value letter_id="T">-67</value>
+</alphabet_array>
+</alphabet_matrix>
+</scores>
+<probabilities>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">0.184855</value>
+<value letter_id="C">0.140312</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.674833</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.973274</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.026726</value>
+<value letter_id="T">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.775056</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.224944</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">1.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">1.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">1.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.663697</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.336303</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.523385</value>
+<value letter_id="C">0.267261</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.209354</value>
+</alphabet_array>
+</alphabet_matrix>
+</probabilities>
+<regular_expression>
+TA[CT]TAA[CT][ACT]
+</regular_expression>
+<contributing_sites>
+<contributing_site sequence_id="sequence_998" position="3" strand="plus" pvalue="3.62e-05" >
+<left_flank>TAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATATATTAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_958" position="28" strand="plus" pvalue="3.62e-05" >
+<left_flank>TGGCCTCATT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GATAAGTAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_952" position="14" strand="plus" pvalue="3.62e-05" >
+<left_flank>GTCTTTCATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGTTTTCAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_951" position="24" strand="plus" pvalue="3.62e-05" >
+<left_flank>TCTTGGCTTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTGATCAGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_947" position="18" strand="plus" pvalue="3.62e-05" >
+<left_flank>CCCCCTCATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTCTTGTAGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_944" position="24" strand="plus" pvalue="3.62e-05" >
+<left_flank>GTGACTCAGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCAATGTAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_934" position="0" strand="plus" pvalue="3.62e-05" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTTGTGTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_924" position="17" strand="plus" pvalue="3.62e-05" >
+<left_flank>TAAATCCTCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAAAGTCTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_922" position="16" strand="plus" pvalue="3.62e-05" >
+<left_flank>TATTAACAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTTAGAGCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_917" position="19" strand="plus" pvalue="3.62e-05" >
+<left_flank>AAATATCCCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CACTGGGGAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_916" position="31" strand="plus" pvalue="3.62e-05" >
+<left_flank>AGACCACACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTCGTCTTCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_894" position="19" strand="plus" pvalue="3.62e-05" >
+<left_flank>GTTAATGAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AACCAGTGGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_882" position="69" strand="plus" pvalue="3.62e-05" >
+<left_flank>CTAATATAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_880" position="13" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATTTACCTTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CGCTTATTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_875" position="29" strand="plus" pvalue="3.62e-05" >
+<left_flank>CTCTGTTGTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAAATAGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_859" position="17" strand="plus" pvalue="3.62e-05" >
+<left_flank>TCCCCACCCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTAACGAAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_811" position="19" strand="plus" pvalue="3.62e-05" >
+<left_flank>AGGCAGGGCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GGGACCCAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_809" position="19" strand="plus" pvalue="3.62e-05" >
+<left_flank>AACAAAATTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAAATACTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_804" position="68" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATTTTCTTTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_795" position="26" strand="plus" pvalue="3.62e-05" >
+<left_flank>CCAATGCTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATATGGTTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_752" position="26" strand="plus" pvalue="3.62e-05" >
+<left_flank>CAGTGAAATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTGCTGCCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_716" position="3" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTTACACAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_680" position="24" strand="plus" pvalue="3.62e-05" >
+<left_flank>CATTTTCCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCATCCTAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_655" position="15" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATTGCTTTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTGGAACAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_645" position="7" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATGTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GAAATAAAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_633" position="29" strand="plus" pvalue="3.62e-05" >
+<left_flank>ACCATGTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GAAATAAAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_628" position="29" strand="plus" pvalue="3.62e-05" >
+<left_flank>CATTGAACAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGCCTGGGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_620" position="18" strand="plus" pvalue="3.62e-05" >
+<left_flank>AATTGTATGG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTAGAGTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_575" position="20" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTGGGACTGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTGCTGTTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_546" position="4" strand="plus" pvalue="3.62e-05" >
+<left_flank>CACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATATTTATTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_513" position="38" strand="plus" pvalue="3.62e-05" >
+<left_flank>TCCTACTGAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AATATAAAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_511" position="6" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTGTGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCTGCCAGCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_484" position="30" strand="plus" pvalue="3.62e-05" >
+<left_flank>AGACCACACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTCGTCTTCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_468" position="11" strand="plus" pvalue="3.62e-05" >
+<left_flank>TGTCGGTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTTAATATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_464" position="20" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATGACCCATT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GGCAACAAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_455" position="4" strand="plus" pvalue="3.62e-05" >
+<left_flank>AACC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGATTGGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_413" position="0" strand="plus" pvalue="3.62e-05" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGTATTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_408" position="32" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATTTAATACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACAGAGATAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_382" position="57" strand="plus" pvalue="3.62e-05" >
+<left_flank>GTTGTCTCCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATATTCTGCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_381" position="16" strand="plus" pvalue="3.62e-05" >
+<left_flank>AAAAAAATAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGTCTTTTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_375" position="37" strand="plus" pvalue="3.62e-05" >
+<left_flank>AATAGAAAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATATCTAACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_372" position="13" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATGTGAAAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTATTATGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_318" position="11" strand="plus" pvalue="3.62e-05" >
+<left_flank>CAATAGTGCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTGACAGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_306" position="27" strand="plus" pvalue="3.62e-05" >
+<left_flank>ACCCCATCTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGAGAAACC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_292" position="41" strand="plus" pvalue="3.62e-05" >
+<left_flank>AACTAACTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTCAGACGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_282" position="4" strand="plus" pvalue="3.62e-05" >
+<left_flank>TAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGTATCCAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_272" position="10" strand="plus" pvalue="3.62e-05" >
+<left_flank>AGTGGTTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGTTTGATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_268" position="15" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTTCACCTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTATTATGGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_253" position="32" strand="plus" pvalue="3.62e-05" >
+<left_flank>ATTACACCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTCAAACACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_240" position="58" strand="plus" pvalue="3.62e-05" >
+<left_flank>GAAGAGAATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGGAAAAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_230" position="18" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTTACATTTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGCGTTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_221" position="50" strand="plus" pvalue="3.62e-05" >
+<left_flank>TAGTACTTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTAGTTATTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_208" position="27" strand="plus" pvalue="3.62e-05" >
+<left_flank>AAAATCACTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGATTTGAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_180" position="11" strand="plus" pvalue="3.62e-05" >
+<left_flank>TGAAACCCAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAATTATAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_146" position="19" strand="plus" pvalue="3.62e-05" >
+<left_flank>CTACAATGTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGTCCTAGCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_119" position="4" strand="plus" pvalue="3.62e-05" >
+<left_flank>TTAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACAATCCTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_111" position="13" strand="plus" pvalue="3.62e-05" >
+<left_flank>CTGCTGGTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAGTTTACTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_93" position="0" strand="plus" pvalue="3.62e-05" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATAACGGATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_46" position="18" strand="plus" pvalue="3.62e-05" >
+<left_flank>CATTTTAAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGGCCACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_5" position="9" strand="plus" pvalue="3.62e-05" >
+<left_flank>CCCAAATTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCTCATAATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_935" position="11" strand="plus" pvalue="6.19e-05" >
+<left_flank>TCATTTAACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTGTAATTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_911" position="1" strand="plus" pvalue="6.19e-05" >
+<left_flank>C</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCCTTTCTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_893" position="19" strand="plus" pvalue="6.19e-05" >
+<left_flank>TAGCTCTCTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CGTGTTACAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_892" position="10" strand="plus" pvalue="6.19e-05" >
+<left_flank>ATTTACATAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAACTTAAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_876" position="2" strand="plus" pvalue="6.19e-05" >
+<left_flank>GC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAAGTCTAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_869" position="34" strand="plus" pvalue="6.19e-05" >
+<left_flank>AACCACTAAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TACTTCTTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_850" position="29" strand="plus" pvalue="6.19e-05" >
+<left_flank>TCAGTACTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACCTGGTGCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_824" position="27" strand="plus" pvalue="6.19e-05" >
+<left_flank>ACAACAACAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TGTGGAGTCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_791" position="33" strand="plus" pvalue="6.19e-05" >
+<left_flank>ATACTAGGCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AACACACTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_790" position="4" strand="plus" pvalue="6.19e-05" >
+<left_flank>ATTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTAAGGTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_768" position="14" strand="plus" pvalue="6.19e-05" >
+<left_flank>CATATGTGTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATACTCATCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_717" position="8" strand="plus" pvalue="6.19e-05" >
+<left_flank>GCAATTGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TATGATTAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_705" position="14" strand="plus" pvalue="6.19e-05" >
+<left_flank>TGTTGTTCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AACATCCCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_666" position="12" strand="plus" pvalue="6.19e-05" >
+<left_flank>ATGGCTTCCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATCCTTACTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_663" position="68" strand="plus" pvalue="6.19e-05" >
+<left_flank>ACTCACATTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCATC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_599" position="24" strand="plus" pvalue="6.19e-05" >
+<left_flank>TCCCCTTGCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCTATTTAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_537" position="19" strand="plus" pvalue="6.19e-05" >
+<left_flank>GCAGTAGCAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGTCCAGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_518" position="18" strand="plus" pvalue="6.19e-05" >
+<left_flank>GGGGTAACGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGTTCACCTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_499" position="5" strand="plus" pvalue="6.19e-05" >
+<left_flank>AGTGG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGTCCAGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_496" position="11" strand="plus" pvalue="6.19e-05" >
+<left_flank>CTTAGTTTTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAAGAAAGAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_453" position="26" strand="plus" pvalue="6.19e-05" >
+<left_flank>AGGAAAGTGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTTGCACCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_434" position="28" strand="plus" pvalue="6.19e-05" >
+<left_flank>GAATACTTTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCAGAGTCAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_416" position="39" strand="plus" pvalue="6.19e-05" >
+<left_flank>AACTAAGCTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTAGGGTTCG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_410" position="18" strand="plus" pvalue="6.19e-05" >
+<left_flank>TAAAGTCAGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TGGTACTATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_341" position="37" strand="plus" pvalue="6.19e-05" >
+<left_flank>GCACTAGCCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGTCCAGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_302" position="23" strand="plus" pvalue="6.19e-05" >
+<left_flank>GCACTAGCAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AATCCAGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_242" position="29" strand="plus" pvalue="6.19e-05" >
+<left_flank>ATATTCTGGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCCTTATCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_204" position="19" strand="plus" pvalue="6.19e-05" >
+<left_flank>GCCTAGCACC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTGAGAAAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_196" position="20" strand="plus" pvalue="6.19e-05" >
+<left_flank>GACTTCTCAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTGGAAACTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_143" position="23" strand="plus" pvalue="6.19e-05" >
+<left_flank>GTTTCTTTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGAATACCAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_95" position="15" strand="plus" pvalue="6.19e-05" >
+<left_flank>TGATGACCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAAACATACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_82" position="16" strand="plus" pvalue="6.19e-05" >
+<left_flank>ACAACTATAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTTTTCTCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_64" position="18" strand="plus" pvalue="6.19e-05" >
+<left_flank>GTAAAGGGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTAGCTCAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_52" position="14" strand="plus" pvalue="6.19e-05" >
+<left_flank>TACACATGTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATAGTAGTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_39" position="20" strand="plus" pvalue="6.19e-05" >
+<left_flank>TTCTGAGATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTGCCAGAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_17" position="7" strand="plus" pvalue="6.19e-05" >
+<left_flank>AGTAATT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCCACTGTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_995" position="19" strand="plus" pvalue="1.26e-04" >
+<left_flank>CCTGGGGATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AACTGAGTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_985" position="20" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTAAACAGAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATAAGGGTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_969" position="31" strand="plus" pvalue="1.26e-04" >
+<left_flank>CCCCTCCTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACCTGACTCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_950" position="13" strand="plus" pvalue="1.26e-04" >
+<left_flank>GTGTGAAGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TCCAACACTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_927" position="18" strand="plus" pvalue="1.26e-04" >
+<left_flank>CCCCCAACTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCAGTCCTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_877" position="20" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTTGGGCACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TACTAACTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_858" position="13" strand="plus" pvalue="1.26e-04" >
+<left_flank>ATATCACCCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AAATTATGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_853" position="12" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTTGGTATGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTAAACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_833" position="45" strand="plus" pvalue="1.26e-04" >
+<left_flank>CCCCCACACA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AACATGACAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_827" position="4" strand="plus" pvalue="1.26e-04" >
+<left_flank>GGCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACAGCTTTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_817" position="30" strand="plus" pvalue="1.26e-04" >
+<left_flank>TACTGTGCTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCCAATGGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_761" position="29" strand="plus" pvalue="1.26e-04" >
+<left_flank>CCTTTCACCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AATCTCCCTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_745" position="9" strand="plus" pvalue="1.26e-04" >
+<left_flank>GTGCCCATC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGCTGGACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_697" position="18" strand="plus" pvalue="1.26e-04" >
+<left_flank>TACCCAATAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCCTATCCCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_678" position="59" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTGTAAGTAG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATACATTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_664" position="11" strand="plus" pvalue="1.26e-04" >
+<left_flank>GCTCAAATTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGGCTAGTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_639" position="38" strand="plus" pvalue="1.26e-04" >
+<left_flank>CATGAGGTTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAAAATATGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_589" position="20" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTGAGCTGCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GTGGTGGGGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_574" position="7" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTCATCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TCTAAAGTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_555" position="24" strand="plus" pvalue="1.26e-04" >
+<left_flank>CTATCTCACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACTATGGACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_552" position="16" strand="plus" pvalue="1.26e-04" >
+<left_flank>TATGCTTCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GCATTTATGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_527" position="6" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTGTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAATAGTGGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_507" position="3" strand="plus" pvalue="1.26e-04" >
+<left_flank>AAG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGCTAGTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_459" position="26" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTTACATTCT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GAGTATAAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_451" position="5" strand="plus" pvalue="1.26e-04" >
+<left_flank>AATGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATACACATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_431" position="14" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTATGTTTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGTGAACAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_428" position="16" strand="plus" pvalue="1.26e-04" >
+<left_flank>AAAATAATCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TGATATTAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_400" position="5" strand="plus" pvalue="1.26e-04" >
+<left_flank>GAACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TGCTAATAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_399" position="17" strand="plus" pvalue="1.26e-04" >
+<left_flank>ATTACTTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACATAATGAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_348" position="2" strand="plus" pvalue="1.26e-04" >
+<left_flank>GT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AAGCACATTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_332" position="23" strand="plus" pvalue="1.26e-04" >
+<left_flank>AATTAATTTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAGATATTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_322" position="12" strand="plus" pvalue="1.26e-04" >
+<left_flank>ACCACTGGTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GGGACCTTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_263" position="4" strand="plus" pvalue="1.26e-04" >
+<left_flank>AGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACTTAGATTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_233" position="10" strand="plus" pvalue="1.26e-04" >
+<left_flank>CTCAAATACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATAAAAGGGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_188" position="12" strand="plus" pvalue="1.26e-04" >
+<left_flank>GTTAAAATTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CACTTATCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_187" position="14" strand="plus" pvalue="1.26e-04" >
+<left_flank>TTCTTTCTCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCCATCTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_175" position="11" strand="plus" pvalue="1.26e-04" >
+<left_flank>TGCTGATAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGTAACCCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_113" position="22" strand="plus" pvalue="1.26e-04" >
+<left_flank>AGAATTAAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAGGACTTCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_61" position="18" strand="plus" pvalue="1.26e-04" >
+<left_flank>CTTGCTTTTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGCGTCTCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_38" position="9" strand="plus" pvalue="1.26e-04" >
+<left_flank>TAGAACTTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CGTAGTCTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_986" position="5" strand="plus" pvalue="2.15e-04" >
+<left_flank>CATTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTATTGGAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_972" position="26" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTGCTTAGCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCAGCTATTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_968" position="47" strand="plus" pvalue="2.15e-04" >
+<left_flank>ACTGCTTAGT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTTCATAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_943" position="17" strand="plus" pvalue="2.15e-04" >
+<left_flank>TCAGTTATAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTGCAGCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_933" position="69" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATATTGTAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_928" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATGGCTTCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TACATAGCCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_912" position="14" strand="plus" pvalue="2.15e-04" >
+<left_flank>TAAATGTTTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GACTTTAATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_908" position="27" strand="plus" pvalue="2.15e-04" >
+<left_flank>CCCTTTAAGT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTAGAAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_884" position="28" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTATATTTCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTAGTGGAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_883" position="34" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTGTGAATAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTACTAATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_872" position="21" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATTTGAAAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AACATCATAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_860" position="3" strand="plus" pvalue="2.15e-04" >
+<left_flank>CCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAACTCTTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_844" position="15" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAAAAGAAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGTCAACCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_838" position="20" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTCAGAAACA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCACACGTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_807" position="5" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGTGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATAGTTAACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_802" position="28" strand="plus" pvalue="2.15e-04" >
+<left_flank>GTACATCCCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTGACATAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_794" position="8" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTATTACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCGTATCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_792" position="56" strand="plus" pvalue="2.15e-04" >
+<left_flank>GTGTTTTTTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTATTATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_787" position="1" strand="plus" pvalue="2.15e-04" >
+<left_flank>C</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATGTTTTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_784" position="21" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGATGTTTGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGAGCCCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_773" position="12" strand="plus" pvalue="2.15e-04" >
+<left_flank>GAATAACAGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGAATAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_728" position="31" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAACAAACCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCTAACCTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_695" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>TAATGATAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGAGAGTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_614" position="6" strand="plus" pvalue="2.15e-04" >
+<left_flank>TCACAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGTCCTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_609" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAGAGTAAT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTCCCTTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_588" position="14" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATTTTTCCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTCTCTGTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_570" position="11" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATAACTAAGA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGGGCTTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_532" position="27" strand="plus" pvalue="2.15e-04" >
+<left_flank>GCCATATGTG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTTGGAAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_510" position="10" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTCCATTTTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTATACTGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_505" position="8" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTATATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGTTTAGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_438" position="20" strand="plus" pvalue="2.15e-04" >
+<left_flank>ACTCTCCTAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTAAGCAATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_423" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>ACTAAGCTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTAGGGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_396" position="5" strand="plus" pvalue="2.15e-04" >
+<left_flank>TACCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCAGTATCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_393" position="53" strand="plus" pvalue="2.15e-04" >
+<left_flank>GCAAGAAGTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTCGTCACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_392" position="4" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGAT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGTCAGGGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_369" position="12" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAAAACAAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTCAGCTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_364" position="2" strand="plus" pvalue="2.15e-04" >
+<left_flank>TT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATCAAGAGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_352" position="7" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTAATC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGGAAATTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_340" position="7" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTATAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGGATGCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_336" position="13" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTCTCTGGGT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGAACTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_325" position="5" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTTAAAACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_321" position="13" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTTTAGTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTAGCCTGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_291" position="45" strand="plus" pvalue="2.15e-04" >
+<left_flank>TACTTTAATC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGCAATAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_288" position="13" strand="plus" pvalue="2.15e-04" >
+<left_flank>GTTCGATGAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTATAGCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_283" position="29" strand="plus" pvalue="2.15e-04" >
+<left_flank>TCAAACAAAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGCGTGATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_275" position="17" strand="plus" pvalue="2.15e-04" >
+<left_flank>GGGAGGTGAT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTCCATGCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_248" position="19" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGATAGATAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCATCGGCCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_245" position="20" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTGCTCTGCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTCTTAAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_244" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>CAAAGAAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATACAAGCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_239" position="8" strand="plus" pvalue="2.15e-04" >
+<left_flank>AATCAGGT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATTTAACTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_195" position="3" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATAACAATTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_192" position="21" strand="plus" pvalue="2.15e-04" >
+<left_flank>ACAGTAGAGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TACCTCATGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_191" position="11" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTCTATAGCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTTCACACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_183" position="24" strand="plus" pvalue="2.15e-04" >
+<left_flank>GACGCAGAAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCCCATCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_181" position="13" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTCTATGTGG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATCTTCCTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_176" position="45" strand="plus" pvalue="2.15e-04" >
+<left_flank>CAAGTTAACG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAATACATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_161" position="6" strand="plus" pvalue="2.15e-04" >
+<left_flank>GTCAGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAAATTACTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_155" position="15" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTGCTACCTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CGTGAATGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_152" position="9" strand="plus" pvalue="2.15e-04" >
+<left_flank>TAATTGAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAGTTGGTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_137" position="13" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTAACCAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTTTCTCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_136" position="22" strand="plus" pvalue="2.15e-04" >
+<left_flank>GTTCAGTTGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATTTTCAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_117" position="16" strand="plus" pvalue="2.15e-04" >
+<left_flank>AGTACTAAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTGTAAGTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_108" position="7" strand="plus" pvalue="2.15e-04" >
+<left_flank>CTACTAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATAATAATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_105" position="26" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGTTGACCAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCAGGAGTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_76" position="7" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATGATCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTTAATATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_69" position="14" strand="plus" pvalue="2.15e-04" >
+<left_flank>TTTTGTCTGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTACTACAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_51" position="16" strand="plus" pvalue="2.15e-04" >
+<left_flank>CCATTGGAGA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGTTCCAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_31" position="31" strand="plus" pvalue="2.15e-04" >
+<left_flank>ATTTTGTCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTCTAACCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_29" position="6" strand="plus" pvalue="2.15e-04" >
+<left_flank>TGAACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCTGTTATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_24" position="29" strand="plus" pvalue="2.15e-04" >
+<left_flank>ACACCTACTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGTTAACCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_21" position="14" strand="plus" pvalue="2.15e-04" >
+<left_flank>AAGAAATAGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTGATACCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_4" position="2" strand="plus" pvalue="2.15e-04" >
+<left_flank>AA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTGGTTTAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_994" position="26" strand="plus" pvalue="2.31e-04" >
+<left_flank>AAAGCAAATA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAGGGTTAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_862" position="3" strand="plus" pvalue="2.31e-04" >
+<left_flank>GTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>GAGATCTAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_735" position="60" strand="plus" pvalue="2.31e-04" >
+<left_flank>CCCATGCCAG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCACCTCAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_676" position="17" strand="plus" pvalue="2.31e-04" >
+<left_flank>TAAAGTACCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCCACCTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_647" position="53" strand="plus" pvalue="2.31e-04" >
+<left_flank>TAAGCCCCAT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTATATGGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_536" position="12" strand="plus" pvalue="2.31e-04" >
+<left_flank>TGGTTTAACT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTAGCTTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_406" position="45" strand="plus" pvalue="2.31e-04" >
+<left_flank>GCAGGTCACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAACAACTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_402" position="7" strand="plus" pvalue="2.31e-04" >
+<left_flank>AAATATT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTAGTTTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_329" position="11" strand="plus" pvalue="2.31e-04" >
+<left_flank>TTCAACTTTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>GTTGTATCAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_327" position="12" strand="plus" pvalue="2.31e-04" >
+<left_flank>AATTCATGGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TGAACTGGAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_203" position="22" strand="plus" pvalue="2.31e-04" >
+<left_flank>AAATGCCACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>GTGATCCAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_107" position="13" strand="plus" pvalue="2.31e-04" >
+<left_flank>GAGAGTACGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCAGATTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_925" position="66" strand="plus" pvalue="2.95e-04" >
+<left_flank>TGCTGCAGTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAACCTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_888" position="5" strand="plus" pvalue="2.95e-04" >
+<left_flank>CTCTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTTTCTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_856" position="14" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATGAGTTTAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTTTCAGGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_855" position="57" strand="plus" pvalue="2.95e-04" >
+<left_flank>AGACATTCAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTGCTGGAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_760" position="14" strand="plus" pvalue="2.95e-04" >
+<left_flank>CATAGAACTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCTCACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_707" position="0" strand="plus" pvalue="2.95e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCTAATTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_706" position="46" strand="plus" pvalue="2.95e-04" >
+<left_flank>AATAACCATC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TACTTATAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_698" position="52" strand="plus" pvalue="2.95e-04" >
+<left_flank>GTCCCCTTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAATTGTGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_624" position="2" strand="plus" pvalue="2.95e-04" >
+<left_flank>AA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAGTAGAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_598" position="21" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATTTAACCCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTCTACTTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_480" position="13" strand="plus" pvalue="2.95e-04" >
+<left_flank>TAATAATAAT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTTACGTAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_461" position="13" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATAGTCTCCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCTGTCCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_443" position="17" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATATTCAGAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAGATAAAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_427" position="19" strand="plus" pvalue="2.95e-04" >
+<left_flank>AACTAAAACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCAGCCTGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_371" position="18" strand="plus" pvalue="2.95e-04" >
+<left_flank>CTGTTTTCCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTTTTAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_370" position="14" strand="plus" pvalue="2.95e-04" >
+<left_flank>TTGTGATAGG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCCGTAGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_346" position="20" strand="plus" pvalue="2.95e-04" >
+<left_flank>GATAAAATGA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCAATGCAGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_313" position="14" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATACATTTTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTTCCATC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_312" position="14" strand="plus" pvalue="2.95e-04" >
+<left_flank>AGTGTAATAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CATTTCCTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_307" position="56" strand="plus" pvalue="2.95e-04" >
+<left_flank>CATCAGTGTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CATTATCCTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_259" position="6" strand="plus" pvalue="2.95e-04" >
+<left_flank>CTAACT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAGAGTAGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_232" position="25" strand="plus" pvalue="2.95e-04" >
+<left_flank>AAGTTTTAGA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACCAGTCCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_170" position="22" strand="plus" pvalue="2.95e-04" >
+<left_flank>TTCCCTACTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACTGGTATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_162" position="28" strand="plus" pvalue="2.95e-04" >
+<left_flank>AAAAAATCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCCGGGTGAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_121" position="16" strand="plus" pvalue="2.95e-04" >
+<left_flank>ATTTTCTTAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACCATCATCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_94" position="15" strand="plus" pvalue="2.95e-04" >
+<left_flank>TTTCTAAAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TGACCTGATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_66" position="33" strand="plus" pvalue="2.95e-04" >
+<left_flank>AATCCTGTTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTCTGTCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_1" position="1" strand="plus" pvalue="2.95e-04" >
+<left_flank>T</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTCTTCTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_966" position="69" strand="plus" pvalue="3.53e-04" >
+<left_flank>TAAATGTAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_959" position="7" strand="plus" pvalue="3.53e-04" >
+<left_flank>CCCCTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATTACATTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_955" position="17" strand="plus" pvalue="3.53e-04" >
+<left_flank>AATCAGGCAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTTCTCTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_900" position="12" strand="plus" pvalue="3.53e-04" >
+<left_flank>GGAAGTGATC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCCTTTATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_843" position="4" strand="plus" pvalue="3.53e-04" >
+<left_flank>TATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAAGTATTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_839" position="13" strand="plus" pvalue="3.53e-04" >
+<left_flank>TTTCCATACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTCAGTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_834" position="16" strand="plus" pvalue="3.53e-04" >
+<left_flank>TCAACTATTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCTGTTTACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_821" position="13" strand="plus" pvalue="3.53e-04" >
+<left_flank>GTATTCTGTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTATTGAGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_747" position="10" strand="plus" pvalue="3.53e-04" >
+<left_flank>ATTAACATTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTATATGGAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_699" position="3" strand="plus" pvalue="3.53e-04" >
+<left_flank>TTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCACCTGATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_694" position="55" strand="plus" pvalue="3.53e-04" >
+<left_flank>CTTTAAGAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTAAGCTTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_688" position="25" strand="plus" pvalue="3.53e-04" >
+<left_flank>CAATTAAGTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGTTGCCATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_687" position="8" strand="plus" pvalue="3.53e-04" >
+<left_flank>TCCTGTTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTAAGATAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_683" position="1" strand="plus" pvalue="3.53e-04" >
+<left_flank>T</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GATCTAAGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_675" position="13" strand="plus" pvalue="3.53e-04" >
+<left_flank>AATTACCTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AATCTTAAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_632" position="0" strand="plus" pvalue="3.53e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTATTACCAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_615" position="2" strand="plus" pvalue="3.53e-04" >
+<left_flank>TT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTTTCGTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_607" position="39" strand="plus" pvalue="3.53e-04" >
+<left_flank>TGCCCCCACA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAGTTTCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_594" position="17" strand="plus" pvalue="3.53e-04" >
+<left_flank>AATTAATCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACAGTACCGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_580" position="17" strand="plus" pvalue="3.53e-04" >
+<left_flank>GATAGATAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTCCAGGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_531" position="22" strand="plus" pvalue="3.53e-04" >
+<left_flank>CCTAAAGATC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGAATGGGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_493" position="3" strand="plus" pvalue="3.53e-04" >
+<left_flank>ACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTAGTTTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_450" position="10" strand="plus" pvalue="3.53e-04" >
+<left_flank>CAGAAGTATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAAACTCCCG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_388" position="16" strand="plus" pvalue="3.53e-04" >
+<left_flank>ACAACAGATC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTTCCTTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_356" position="10" strand="plus" pvalue="3.53e-04" >
+<left_flank>ATTTATCAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAGTACACTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_343" position="0" strand="plus" pvalue="3.53e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTATATTTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_337" position="2" strand="plus" pvalue="3.53e-04" >
+<left_flank>AT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTGCCAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_324" position="3" strand="plus" pvalue="3.53e-04" >
+<left_flank>CTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTAATTCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_296" position="2" strand="plus" pvalue="3.53e-04" >
+<left_flank>TG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCTTATATCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_286" position="14" strand="plus" pvalue="3.53e-04" >
+<left_flank>AGGTGATAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTTTGAAGAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_277" position="7" strand="plus" pvalue="3.53e-04" >
+<left_flank>TCCAGTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCATCTGAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_273" position="20" strand="plus" pvalue="3.53e-04" >
+<left_flank>TTTTCCTTTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTTGGCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_270" position="16" strand="plus" pvalue="3.53e-04" >
+<left_flank>TAACTTAATG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAATTTAGGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_160" position="9" strand="plus" pvalue="3.53e-04" >
+<left_flank>TTTATTGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTGTGCCAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_151" position="8" strand="plus" pvalue="3.53e-04" >
+<left_flank>TACTGGTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCAAGCAGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_150" position="19" strand="plus" pvalue="3.53e-04" >
+<left_flank>TAAATGTAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATGCTTGCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_938" position="11" strand="plus" pvalue="3.94e-04" >
+<left_flank>TAAGTAGTAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTATTTACAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_832" position="32" strand="plus" pvalue="3.94e-04" >
+<left_flank>CAATATCAAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTCCCTCTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_543" position="13" strand="plus" pvalue="3.94e-04" >
+<left_flank>TCATACAGCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTGTCTGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_526" position="10" strand="plus" pvalue="3.94e-04" >
+<left_flank>ATTGGCATGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACTGCTGTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_266" position="12" strand="plus" pvalue="3.94e-04" >
+<left_flank>ATGATTTACC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AACCTCTCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_213" position="68" strand="plus" pvalue="3.94e-04" >
+<left_flank>TAAGTTACAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_147" position="23" strand="plus" pvalue="3.94e-04" >
+<left_flank>TTTGTCTGTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTATATGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_56" position="16" strand="plus" pvalue="3.94e-04" >
+<left_flank>TCCAGTTACC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAGGTCAAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_30" position="13" strand="plus" pvalue="3.94e-04" >
+<left_flank>TTCTGTTAGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TGTTAACAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_977" position="54" strand="plus" pvalue="4.19e-04" >
+<left_flank>CTAACCATAA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCAACTACAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_967" position="55" strand="plus" pvalue="4.19e-04" >
+<left_flank>CTAACCATAA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCAACTACAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_913" position="17" strand="plus" pvalue="4.19e-04" >
+<left_flank>AGGTATCTAC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGGAATAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_907" position="41" strand="plus" pvalue="4.19e-04" >
+<left_flank>TTTCCATAGA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACAAAAGATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_898" position="36" strand="plus" pvalue="4.19e-04" >
+<left_flank>CTCTGAATCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CAAGACATGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_596" position="6" strand="plus" pvalue="4.19e-04" >
+<left_flank>CTGCTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTAAATTTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_579" position="72" strand="plus" pvalue="4.19e-04" >
+<left_flank>GCATGAAAAG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>T</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_241" position="17" strand="plus" pvalue="4.19e-04" >
+<left_flank>TAGATGCTAA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GGGGTTGATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_71" position="59" strand="plus" pvalue="4.19e-04" >
+<left_flank>GGTTGCAGCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TGATTGTACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_10" position="34" strand="plus" pvalue="4.19e-04" >
+<left_flank>ACCTATAAAA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTCAGGTGGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_997" position="24" strand="plus" pvalue="5.57e-04" >
+<left_flank>ATTTTTTTCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTGTCACCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_974" position="15" strand="plus" pvalue="5.57e-04" >
+<left_flank>TCATACTCTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACTGAGTTTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_963" position="61" strand="plus" pvalue="5.57e-04" >
+<left_flank>CTAACACAAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TGTTGAAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_940" position="13" strand="plus" pvalue="5.57e-04" >
+<left_flank>ATAGTGGCCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TGCATTCCTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_902" position="10" strand="plus" pvalue="5.57e-04" >
+<left_flank>CTCTTTGCAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TCTAATGTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_895" position="12" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAGAGAAGGT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCCCGAAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_825" position="5" strand="plus" pvalue="5.57e-04" >
+<left_flank>CAGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TATTCCAAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_812" position="3" strand="plus" pvalue="5.57e-04" >
+<left_flank>ACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCTGATCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_803" position="22" strand="plus" pvalue="5.57e-04" >
+<left_flank>TGCTGTTGTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTATCATCTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_800" position="4" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAAT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CATGCCCCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_781" position="10" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAGAATTCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GTGCTTGGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_765" position="13" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTTTCCTGAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATCTTCTCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_758" position="16" strand="plus" pvalue="5.57e-04" >
+<left_flank>GTGTACTAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CATCCCAAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_718" position="15" strand="plus" pvalue="5.57e-04" >
+<left_flank>TCTTGTTAAC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATACAGCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_691" position="44" strand="plus" pvalue="5.57e-04" >
+<left_flank>AACTGAATGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTCAATAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_685" position="10" strand="plus" pvalue="5.57e-04" >
+<left_flank>AACTTTAGCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTAGCATCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_649" position="7" strand="plus" pvalue="5.57e-04" >
+<left_flank>ACAACTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTATCATTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_613" position="0" strand="plus" pvalue="5.57e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AAATTCAGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_606" position="31" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTTTCCAGCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTTAGGTCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_597" position="5" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAAGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTCTGTCTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_593" position="11" strand="plus" pvalue="5.57e-04" >
+<left_flank>ATATTACAAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AATATTCATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_512" position="41" strand="plus" pvalue="5.57e-04" >
+<left_flank>CTCACAACAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AATACTAGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_500" position="3" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTTCTACTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_405" position="17" strand="plus" pvalue="5.57e-04" >
+<left_flank>GGGGTAATGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGCAATGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_379" position="54" strand="plus" pvalue="5.57e-04" >
+<left_flank>GTTGAGGAAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAAGAAAAAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_335" position="8" strand="plus" pvalue="5.57e-04" >
+<left_flank>CCATTACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCAAAATAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_287" position="11" strand="plus" pvalue="5.57e-04" >
+<left_flank>AATGCCTGAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTAACAACAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_258" position="1" strand="plus" pvalue="5.57e-04" >
+<left_flank>C</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAATATAGTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_256" position="46" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAAATCTTAA</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CAAGTAAAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_214" position="6" strand="plus" pvalue="5.57e-04" >
+<left_flank>CACTGT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTGAACTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_212" position="37" strand="plus" pvalue="5.57e-04" >
+<left_flank>GTGACAGAGC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AACTAACTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_193" position="14" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTTTAAATTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GACATGTTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_167" position="12" strand="plus" pvalue="5.57e-04" >
+<left_flank>AACTAATTCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCTTAAGAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_164" position="0" strand="plus" pvalue="5.57e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGTAACAATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_139" position="59" strand="plus" pvalue="5.57e-04" >
+<left_flank>ACAAGGGAGG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACACATGTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_128" position="31" strand="plus" pvalue="5.57e-04" >
+<left_flank>CCCCTCCCTG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TCTGCACTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_98" position="19" strand="plus" pvalue="5.57e-04" >
+<left_flank>ATTCTTTAAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GAATGTACTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_90" position="19" strand="plus" pvalue="5.57e-04" >
+<left_flank>TAACTTTCTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCCCCTGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_88" position="1" strand="plus" pvalue="5.57e-04" >
+<left_flank>T</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CAAATGCTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_87" position="14" strand="plus" pvalue="5.57e-04" >
+<left_flank>GAATTAATAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TCTCGGGTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_84" position="9" strand="plus" pvalue="5.57e-04" >
+<left_flank>GATTTGCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATTTGGCTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_81" position="11" strand="plus" pvalue="5.57e-04" >
+<left_flank>AATGGGCTAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GCCACGAACC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_75" position="9" strand="plus" pvalue="5.57e-04" >
+<left_flank>TCTTTTATT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TACTGTAGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_36" position="12" strand="plus" pvalue="5.57e-04" >
+<left_flank>ATTTTTTCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTTCACTTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_35" position="53" strand="plus" pvalue="5.57e-04" >
+<left_flank>GTTCATGGAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAATGTTAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_34" position="18" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTTAAAAAAT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTAGGGGAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_18" position="8" strand="plus" pvalue="5.57e-04" >
+<left_flank>TTAAAAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TAGGCAACTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_823" position="10" strand="plus" pvalue="6.08e-04" >
+<left_flank>CAAATCGGGA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCTATAGGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_681" position="8" strand="plus" pvalue="6.08e-04" >
+<left_flank>TTAATAAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTATTGCAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_525" position="22" strand="plus" pvalue="6.08e-04" >
+<left_flank>ATCCAATGCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAATCAGTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_471" position="49" strand="plus" pvalue="6.08e-04" >
+<left_flank>TATTAACTTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTCTATAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_349" position="11" strand="plus" pvalue="6.08e-04" >
+<left_flank>GCCAACTTCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATACTGTATA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_347" position="54" strand="plus" pvalue="6.08e-04" >
+<left_flank>CTGGAAGTTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCGGCTGTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_339" position="32" strand="plus" pvalue="6.08e-04" >
+<left_flank>ACACCTAGAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTCCTTAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_271" position="8" strand="plus" pvalue="6.08e-04" >
+<left_flank>CTTCTAAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCCAGTGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_267" position="24" strand="plus" pvalue="6.08e-04" >
+<left_flank>TAATTGTGTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAGACCTGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_158" position="6" strand="plus" pvalue="6.08e-04" >
+<left_flank>ACTAAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTCATTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_78" position="11" strand="plus" pvalue="6.08e-04" >
+<left_flank>GCATTTCCCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTAGCTCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_978" position="71" strand="plus" pvalue="6.34e-04" >
+<left_flank>CATGATAACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_714" position="42" strand="plus" pvalue="6.34e-04" >
+<left_flank>CCCAGAGTCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATTACCAGGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_544" position="72" strand="plus" pvalue="6.34e-04" >
+<left_flank>CCTAAGAAAC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>T</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_539" position="32" strand="plus" pvalue="6.34e-04" >
+<left_flank>AGCTAACTTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CATTATCCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_407" position="38" strand="plus" pvalue="6.34e-04" >
+<left_flank>TTTTCTAACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACGGTTCTGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_178" position="11" strand="plus" pvalue="6.34e-04" >
+<left_flank>TAACAGTTAC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATCCGGTAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_49" position="30" strand="plus" pvalue="6.34e-04" >
+<left_flank>TTTATAAGGG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CCATTCATGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_899" position="7" strand="plus" pvalue="7.71e-04" >
+<left_flank>ATAGCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CATCCTTTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_861" position="13" strand="plus" pvalue="7.71e-04" >
+<left_flank>GTTGCATTCG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATATGTAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_750" position="19" strand="plus" pvalue="7.71e-04" >
+<left_flank>TTACTTATAC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AAAAAGATTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_727" position="28" strand="plus" pvalue="7.71e-04" >
+<left_flank>AGATAGATAG</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGTGAGAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_658" position="0" strand="plus" pvalue="7.71e-04" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACATAATATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_559" position="67" strand="plus" pvalue="7.71e-04" >
+<left_flank>TAATGTACTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AATTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_482" position="23" strand="plus" pvalue="7.71e-04" >
+<left_flank>AATATGTCAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATAGTCAACA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_448" position="33" strand="plus" pvalue="7.71e-04" >
+<left_flank>TTCTACTTCC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACTGCTCTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_419" position="18" strand="plus" pvalue="7.71e-04" >
+<left_flank>CTTTATTAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACTTAGTCTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_353" position="11" strand="plus" pvalue="7.71e-04" >
+<left_flank>TATCTGTTAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTACTCCTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_238" position="48" strand="plus" pvalue="7.71e-04" >
+<left_flank>ACTTAGCAAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TATAAAGAAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_211" position="71" strand="plus" pvalue="7.71e-04" >
+<left_flank>TATACTTCTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_209" position="2" strand="plus" pvalue="7.71e-04" >
+<left_flank>AC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTCTATTGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_201" position="14" strand="plus" pvalue="7.71e-04" >
+<left_flank>GTATTCATAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTCTGGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_123" position="18" strand="plus" pvalue="7.71e-04" >
+<left_flank>TAAATGTCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATCTACCTCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_97" position="23" strand="plus" pvalue="7.71e-04" >
+<left_flank>CTTGCCTTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CCCCATTCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_80" position="19" strand="plus" pvalue="7.71e-04" >
+<left_flank>ATTGAACGTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGATGTGTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_65" position="23" strand="plus" pvalue="7.71e-04" >
+<left_flank>ATTCAATTCT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACTCTGTGTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_23" position="12" strand="plus" pvalue="7.71e-04" >
+<left_flank>AATATATATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ACTCTGTCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_19" position="13" strand="plus" pvalue="7.71e-04" >
+<left_flank>GGCTTTATCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CAGTCCCCAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_12" position="19" strand="plus" pvalue="7.71e-04" >
+<left_flank>CTTATCTACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTGTTAGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_910" position="46" strand="plus" pvalue="9.14e-04" >
+<left_flank>TTAACTCCAC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATTCTAATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_879" position="22" strand="plus" pvalue="9.14e-04" >
+<left_flank>TATTTGAATG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGGCATGTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_786" position="7" strand="plus" pvalue="9.14e-04" >
+<left_flank>TTTTACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGGACACTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_764" position="14" strand="plus" pvalue="9.14e-04" >
+<left_flank>TTTATAAAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGATCAGGGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_759" position="32" strand="plus" pvalue="9.14e-04" >
+<left_flank>CCCTAAACCT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGCCTCATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_738" position="24" strand="plus" pvalue="9.14e-04" >
+<left_flank>TACATGAAAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACATAATATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_715" position="19" strand="plus" pvalue="9.14e-04" >
+<left_flank>CTGTTTAAAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CACATAAATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_640" position="57" strand="plus" pvalue="9.14e-04" >
+<left_flank>ATCATTAATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGAAAAATTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_566" position="64" strand="plus" pvalue="9.14e-04" >
+<left_flank>TATATGAAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AACTTTCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_540" position="9" strand="plus" pvalue="9.14e-04" >
+<left_flank>ACCCCTCTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TACTTGCTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_520" position="14" strand="plus" pvalue="9.14e-04" >
+<left_flank>GGAGTATACA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CATGTAAAGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_514" position="51" strand="plus" pvalue="9.14e-04" >
+<left_flank>TGCTCTAATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTACTTAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_460" position="4" strand="plus" pvalue="9.14e-04" >
+<left_flank>ATTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TGAAAGTAGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_440" position="25" strand="plus" pvalue="9.14e-04" >
+<left_flank>CCTCACCACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTATCTCCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_409" position="1" strand="plus" pvalue="9.14e-04" >
+<left_flank>A</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTGTTATTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_333" position="61" strand="plus" pvalue="9.14e-04" >
+<left_flank>TGAATCGGAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTAACACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_311" position="13" strand="plus" pvalue="9.14e-04" >
+<left_flank>TCCTCTTCTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTGTGCCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_290" position="11" strand="plus" pvalue="9.14e-04" >
+<left_flank>GCCTTAATTT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATGCTATCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_246" position="57" strand="plus" pvalue="9.14e-04" >
+<left_flank>CCATTGTCTC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GGCAGTGTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_226" position="9" strand="plus" pvalue="9.14e-04" >
+<left_flank>GTTCATTTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTAGCTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_197" position="56" strand="plus" pvalue="9.14e-04" >
+<left_flank>TGAACTTTGC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTGTTGATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_194" position="24" strand="plus" pvalue="9.14e-04" >
+<left_flank>AGACTTAAGG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAGGAGCAGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_190" position="2" strand="plus" pvalue="9.14e-04" >
+<left_flank>AA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACACTAATTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_182" position="11" strand="plus" pvalue="9.14e-04" >
+<left_flank>ATCTTTTTTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATAGTTATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_156" position="7" strand="plus" pvalue="9.14e-04" >
+<left_flank>CTTCTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TATAACTTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_48" position="57" strand="plus" pvalue="9.14e-04" >
+<left_flank>CCTAGAGTAA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATTCTGCCCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_918" position="35" strand="plus" pvalue="9.34e-04" >
+<left_flank>TTGAATCATA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ACAAATGGAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_626" position="19" strand="plus" pvalue="9.34e-04" >
+<left_flank>TTTGTTTAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTCTAGCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_389" position="16" strand="plus" pvalue="9.34e-04" >
+<left_flank>CTCTCTTAAT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTATAGATTA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_116" position="19" strand="plus" pvalue="9.34e-04" >
+<left_flank>TTTCTGACTA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTGTATATAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_25" position="11" strand="plus" pvalue="9.34e-04" >
+<left_flank>ATACATAAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTTCTTGTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_926" position="44" strand="plus" pvalue="9.60e-04" >
+<left_flank>TACCATCAAT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTCACATATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_896" position="14" strand="plus" pvalue="9.60e-04" >
+<left_flank>GCTCTTAACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTCTTCTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_115" position="16" strand="plus" pvalue="9.60e-04" >
+<left_flank>TTAATGTATC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATTCCACTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_42" position="6" strand="plus" pvalue="9.60e-04" >
+<left_flank>TAGCTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AGTACTGACT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_9" position="11" strand="plus" pvalue="9.60e-04" >
+<left_flank>TGGTTGTACC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AATCTCTTTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_704" position="16" strand="plus" pvalue="1.06e-03" >
+<left_flank>AATGTTAACT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CGGGTTCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_674" position="2" strand="plus" pvalue="1.06e-03" >
+<left_flank>CC</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTAGACTTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_576" position="47" strand="plus" pvalue="1.06e-03" >
+<left_flank>CTTCTAACCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CAGAACCCTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_561" position="11" strand="plus" pvalue="1.06e-03" >
+<left_flank>CAATTAAATT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CACTTATTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_530" position="5" strand="plus" pvalue="1.06e-03" >
+<left_flank>CTATT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTCTTCATT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_494" position="5" strand="plus" pvalue="1.06e-03" >
+<left_flank>CTTCC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTAAAACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_387" position="23" strand="plus" pvalue="1.06e-03" >
+<left_flank>TCATCCCTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATCATCCTAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_200" position="47" strand="plus" pvalue="1.06e-03" >
+<left_flank>GATATAATTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATAAGAACTT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_153" position="0" strand="plus" pvalue="1.06e-03" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TTTTCTCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_26" position="16" strand="plus" pvalue="1.06e-03" >
+<left_flank>TACTGTCTTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TCTTCCTAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_932" position="58" strand="plus" pvalue="1.12e-03" >
+<left_flank>CCAACCCTAA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATAACCCTAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_798" position="22" strand="plus" pvalue="1.12e-03" >
+<left_flank>TTAAACCCCA</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ATTGCTCTTG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_766" position="9" strand="plus" pvalue="1.12e-03" >
+<left_flank>TTTTCTTCT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTCCCTTTTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_692" position="55" strand="plus" pvalue="1.12e-03" >
+<left_flank>GCTGGCACTG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>ACTTAACATG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_490" position="12" strand="plus" pvalue="1.12e-03" >
+<left_flank>ATAAACTTCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTCCCTAAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_368" position="20" strand="plus" pvalue="1.12e-03" >
+<left_flank>TACTATATGC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CTAACAGCTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_320" position="71" strand="plus" pvalue="1.12e-03" >
+<left_flank>TCCCAGCCTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>AT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_319" position="39" strand="plus" pvalue="1.12e-03" >
+<left_flank>TGAAGGCAGT</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>CTATATGAAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_251" position="21" strand="plus" pvalue="1.12e-03" >
+<left_flank>TAACCTTTAG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="C"/>
+</site>
+<right_flank>TAAACCTCCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_237" position="12" strand="plus" pvalue="1.12e-03" >
+<left_flank>GCTTTCTTTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTGGAATGAT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_55" position="5" strand="plus" pvalue="1.12e-03" >
+<left_flank>CTTTT</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>ATTTTAAGCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_939" position="8" strand="plus" pvalue="1.17e-03" >
+<left_flank>TAAATGTA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>TTTTAAGGTC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_840" position="12" strand="plus" pvalue="1.17e-03" >
+<left_flank>CCAATTAATT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>AATTTATTGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_509" position="29" strand="plus" pvalue="1.17e-03" >
+<left_flank>GAACTAGTAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>CAGGGAGCTC</right_flank>
+</contributing_site>
+</contributing_sites>
+</motif>
+</motifs>
+<scanned_sites_summary p_thresh="0.0001">
+<scanned_sites sequence_id="sequence_0" pvalue="8.24e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_1" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_2" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_3" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_4" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_5" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="9" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_6" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_7" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_8" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_9" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_10" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_11" pvalue="1.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_12" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_13" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_14" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_15" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_16" pvalue="1.48e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_17" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="7" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_18" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_19" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_20" pvalue="1.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_21" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_22" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_23" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_24" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_25" pvalue="6.68e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_26" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_27" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_28" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_29" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_30" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_31" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_32" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_33" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_34" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_35" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_36" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_37" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_38" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_39" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="20" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_40" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_41" pvalue="1.73e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_42" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_43" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_44" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_45" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_46" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_47" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_48" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_49" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_50" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_51" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_52" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_53" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_54" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_55" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_56" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_57" pvalue="2.39e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_58" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_59" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_60" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_61" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_62" pvalue="9.88e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_63" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_64" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_65" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_66" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_67" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_68" pvalue="8.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_69" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_70" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_71" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_72" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_73" pvalue="1.59e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_74" pvalue="9.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_75" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_76" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_77" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_78" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_79" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_80" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_81" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_82" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="16" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_83" pvalue="2.33e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_84" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_85" pvalue="8.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_86" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_87" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_88" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_89" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_90" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_91" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_92" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_93" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="0" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_94" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_95" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_96" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_97" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_98" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_99" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_100" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_101" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_102" pvalue="1.70e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_103" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_104" pvalue="7.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_105" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_106" pvalue="8.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_107" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_108" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_109" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_110" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_111" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_112" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_113" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_114" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_115" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_116" pvalue="6.68e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_117" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_118" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_119" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_120" pvalue="6.55e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_121" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_122" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_123" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_124" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_125" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_126" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_127" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_128" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_129" pvalue="8.95e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_130" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_131" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_132" pvalue="1.82e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_133" pvalue="1.36e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_134" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_135" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_136" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_137" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_138" pvalue="9.72e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_139" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_140" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_141" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_142" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_143" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="23" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_144" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_145" pvalue="7.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_146" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_147" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_148" pvalue="7.07e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_149" pvalue="1.48e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_150" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_151" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_152" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_153" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_154" pvalue="8.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_155" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_156" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_157" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_158" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_159" pvalue="6.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_160" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_161" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_162" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_163" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_164" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_165" pvalue="8.87e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_166" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_167" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_168" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_169" pvalue="1.53e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_170" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_171" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_172" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_173" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_174" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_175" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_176" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_177" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_178" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_179" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_180" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="11" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_181" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_182" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_183" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_184" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_185" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_186" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_187" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_188" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_189" pvalue="9.94e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_190" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_191" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_192" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_193" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_194" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_195" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_196" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="20" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_197" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_198" pvalue="2.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_199" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_200" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_201" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_202" pvalue="9.97e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_203" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_204" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_205" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_206" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_207" pvalue="1.54e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_208" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="27" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_209" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_210" pvalue="8.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_211" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_212" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_213" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_214" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_215" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_216" pvalue="8.49e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_217" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_218" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_219" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_220" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_221" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="50" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_222" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_223" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_224" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_225" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_226" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_227" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_228" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_229" pvalue="1.48e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_230" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_231" pvalue="8.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_232" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_233" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_234" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_235" pvalue="7.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_236" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_237" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_238" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_239" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_240" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="58" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_241" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_242" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="29" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_243" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_244" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_245" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_246" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_247" pvalue="8.49e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_248" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_249" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_250" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_251" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_252" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_253" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="32" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_254" pvalue="8.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_255" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_256" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_257" pvalue="1.21e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_258" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_259" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_260" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_261" pvalue="2.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_262" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_263" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_264" pvalue="1.41e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_265" pvalue="9.97e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_266" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_267" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_268" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_269" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_270" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_271" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_272" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="10" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_273" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_274" pvalue="7.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_275" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_276" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_277" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_278" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_279" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_280" pvalue="1.36e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_281" pvalue="1.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_282" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_283" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_284" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_285" pvalue="8.61e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_286" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_287" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_288" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_289" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_290" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_291" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_292" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="41" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_293" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_294" pvalue="1.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_295" pvalue="1.76e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_296" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_297" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_298" pvalue="9.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_299" pvalue="1.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_300" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_301" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_302" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="23" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_303" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_304" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_305" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_306" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="27" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_307" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_308" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_309" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_310" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_311" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_312" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_313" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_314" pvalue="1.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_315" pvalue="9.88e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_316" pvalue="8.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_317" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_318" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="11" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_319" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_320" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_321" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_322" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_323" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_324" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_325" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_326" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_327" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_328" pvalue="8.62e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_329" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_330" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_331" pvalue="1.53e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_332" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_333" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_334" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_335" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_336" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_337" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_338" pvalue="9.72e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_339" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_340" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_341" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="37" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_342" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_343" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_344" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_345" pvalue="9.95e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_346" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_347" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_348" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_349" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_350" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_351" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_352" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_353" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_354" pvalue="1.23e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_355" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_356" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_357" pvalue="1.48e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_358" pvalue="6.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_359" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_360" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_361" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_362" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_363" pvalue="8.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_364" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_365" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_366" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_367" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_368" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_369" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_370" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_371" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_372" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_373" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_374" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_375" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="37" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_376" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_377" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_378" pvalue="9.67e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_379" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_380" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_381" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="16" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_382" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="57" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_383" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_384" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_385" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_386" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_387" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_388" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_389" pvalue="6.68e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_390" pvalue="9.72e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_391" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_392" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_393" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_394" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_395" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_396" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_397" pvalue="1.23e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_398" pvalue="7.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_399" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_400" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_401" pvalue="8.85e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_402" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_403" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_404" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_405" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_406" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_407" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_408" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="32" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_409" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_410" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_411" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_412" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_413" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="0" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_414" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_415" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_416" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="39" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_417" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_418" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_419" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_420" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_421" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_422" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_423" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_424" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_425" pvalue="7.07e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_426" pvalue="6.55e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_427" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_428" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_429" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_430" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_431" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_432" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_433" pvalue="1.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_434" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="28" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_435" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_436" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_437" pvalue="8.24e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_438" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_439" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_440" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_441" pvalue="6.55e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_442" pvalue="8.73e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_443" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_444" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_445" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_446" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_447" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_448" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_449" pvalue="9.18e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_450" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_451" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_452" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_453" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="26" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_454" pvalue="8.62e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_455" pvalue="2.67e-03" num_sites="2"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="3.62e-05"/>
+<scanned_site motif_id="motif_1" strand="plus" position="52" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_456" pvalue="1.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_457" pvalue="7.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_458" pvalue="8.24e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_459" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_460" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_461" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_462" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_463" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_464" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="20" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_465" pvalue="8.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_466" pvalue="4.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_467" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_468" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="11" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_469" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_470" pvalue="2.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_471" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_472" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_473" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_474" pvalue="9.72e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_475" pvalue="8.69e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_476" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_477" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_478" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_479" pvalue="2.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_480" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_481" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_482" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_483" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_484" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="30" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_485" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_486" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_487" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_488" pvalue="9.67e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_489" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_490" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_491" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_492" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_493" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_494" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_495" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_496" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="11" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_497" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_498" pvalue="6.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_499" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="5" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_500" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_501" pvalue="4.19e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_502" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_503" pvalue="7.93e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_504" pvalue="8.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_505" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_506" pvalue="6.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_507" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_508" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_509" pvalue="8.33e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_510" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_511" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="6" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_512" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_513" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="38" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_514" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_515" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_516" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_517" pvalue="1.23e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_518" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_519" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_520" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_521" pvalue="6.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_522" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_523" pvalue="9.33e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_524" pvalue="1.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_525" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_526" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_527" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_528" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_529" pvalue="8.61e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_530" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_531" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_532" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_533" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_534" pvalue="8.85e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_535" pvalue="8.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_536" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_537" pvalue="4.57e-03" num_sites="2"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="6.19e-05"/>
+<scanned_site motif_id="motif_1" strand="plus" position="51" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_538" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_539" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_540" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_541" pvalue="2.33e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_542" pvalue="1.83e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_543" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_544" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_545" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_546" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_547" pvalue="1.15e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_548" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_549" pvalue="1.41e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_550" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_551" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_552" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_553" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_554" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_555" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_556" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_557" pvalue="7.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_558" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_559" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_560" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_561" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_562" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_563" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_564" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_565" pvalue="8.73e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_566" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_567" pvalue="1.19e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_568" pvalue="8.24e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_569" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_570" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_571" pvalue="1.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_572" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_573" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_574" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_575" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="20" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_576" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_577" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_578" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_579" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_580" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_581" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_582" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_583" pvalue="9.41e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_584" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_585" pvalue="9.94e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_586" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_587" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_588" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_589" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_590" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_591" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_592" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_593" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_594" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_595" pvalue="8.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_596" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_597" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_598" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_599" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="24" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_600" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_601" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_602" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_603" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_604" pvalue="6.55e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_605" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_606" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_607" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_608" pvalue="4.19e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_609" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_610" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_611" pvalue="1.76e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_612" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_613" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_614" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_615" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_616" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_617" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_618" pvalue="1.21e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_619" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_620" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_621" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_622" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_623" pvalue="8.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_624" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_625" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_626" pvalue="6.68e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_627" pvalue="8.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_628" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="29" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_629" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_630" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_631" pvalue="4.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_632" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_633" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="29" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_634" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_635" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_636" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_637" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_638" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_639" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_640" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_641" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_642" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_643" pvalue="1.48e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_644" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_645" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="7" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_646" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_647" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_648" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_649" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_650" pvalue="8.93e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_651" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_652" pvalue="1.83e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_653" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_654" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_655" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_656" pvalue="2.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_657" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_658" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_659" pvalue="7.93e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_660" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_661" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_662" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_663" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="68" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_664" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_665" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_666" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="12" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_667" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_668" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_669" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_670" pvalue="8.97e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_671" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_672" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_673" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_674" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_675" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_676" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_677" pvalue="8.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_678" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_679" pvalue="1.15e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_680" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="24" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_681" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_682" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_683" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_684" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_685" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_686" pvalue="7.07e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_687" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_688" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_689" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_690" pvalue="8.97e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_691" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_692" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_693" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_694" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_695" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_696" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_697" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_698" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_699" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_700" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_701" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_702" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_703" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_704" pvalue="7.56e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_705" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_706" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_707" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_708" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_709" pvalue="1.15e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_710" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_711" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_712" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_713" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_714" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_715" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_716" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="3" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_717" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="8" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_718" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_719" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_720" pvalue="8.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_721" pvalue="7.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_722" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_723" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_724" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_725" pvalue="8.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_726" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_727" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_728" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_729" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_730" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_731" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_732" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_733" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_734" pvalue="5.41e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_735" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_736" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_737" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_738" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_739" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_740" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_741" pvalue="1.53e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_742" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_743" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_744" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_745" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_746" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_747" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_748" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_749" pvalue="5.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_750" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_751" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_752" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="26" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_753" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_754" pvalue="4.22e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_755" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_756" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_757" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_758" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_759" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_760" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_761" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_762" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_763" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_764" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_765" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_766" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_767" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_768" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_769" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_770" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_771" pvalue="8.78e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_772" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_773" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_774" pvalue="1.83e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_775" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_776" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_777" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_778" pvalue="8.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_779" pvalue="8.98e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_780" pvalue="4.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_781" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_782" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_783" pvalue="1.70e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_784" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_785" pvalue="7.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_786" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_787" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_788" pvalue="2.33e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_789" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_790" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_791" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="33" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_792" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_793" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_794" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_795" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="26" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_796" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_797" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_798" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_799" pvalue="8.61e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_800" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_801" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_802" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_803" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_804" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="68" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_805" pvalue="9.88e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_806" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_807" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_808" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_809" pvalue="2.67e-03" num_sites="2"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="3.62e-05"/>
+<scanned_site motif_id="motif_1" strand="plus" position="31" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_810" pvalue="8.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_811" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_812" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_813" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_814" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_815" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_816" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_817" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_818" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_819" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_820" pvalue="2.39e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_821" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_822" pvalue="1.73e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_823" pvalue="4.40e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_824" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="27" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_825" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_826" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_827" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_828" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_829" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_830" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_831" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_832" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_833" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_834" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_835" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_836" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_837" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_838" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_839" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_840" pvalue="8.33e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_841" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_842" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_843" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_844" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_845" pvalue="5.35e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_846" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_847" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_848" pvalue="2.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_849" pvalue="9.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_850" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="29" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_851" pvalue="3.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_852" pvalue="7.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_853" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_854" pvalue="2.39e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_855" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_856" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_857" pvalue="7.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_858" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_859" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="17" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_860" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_861" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_862" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_863" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_864" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_865" pvalue="8.97e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_866" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_867" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_868" pvalue="8.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_869" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="34" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_870" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_871" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_872" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_873" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_874" pvalue="7.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_875" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="29" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_876" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="2" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_877" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_878" pvalue="6.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_879" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_880" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_881" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_882" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="69" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_883" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_884" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_885" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_886" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_887" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_888" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_889" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_890" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_891" pvalue="3.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_892" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="10" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_893" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_894" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_895" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_896" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_897" pvalue="8.62e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_898" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_899" pvalue="5.55e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_900" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_901" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_902" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_903" pvalue="9.75e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_904" pvalue="9.80e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_905" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_906" pvalue="5.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_907" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_908" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_909" pvalue="9.13e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_910" pvalue="6.54e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_911" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="1" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_912" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_913" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_914" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_915" pvalue="5.10e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_916" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="31" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_917" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="19" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_918" pvalue="6.68e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_919" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_920" pvalue="5.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_921" pvalue="4.40e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_922" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="16" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_923" pvalue="9.90e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_924" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="17" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_925" pvalue="2.16e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_926" pvalue="6.86e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_927" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_928" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_929" pvalue="2.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_930" pvalue="9.18e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_931" pvalue="9.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_932" pvalue="7.94e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_933" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_934" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="0" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_935" pvalue="4.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="11" pvalue="6.19e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_936" pvalue="6.03e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_937" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_938" pvalue="2.87e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_939" pvalue="8.33e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_940" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_941" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_942" pvalue="9.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_943" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_944" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="24" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_945" pvalue="8.42e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_946" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_947" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_948" pvalue="7.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_949" pvalue="1.84e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_950" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_951" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="24" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_952" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_953" pvalue="1.00e+00" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_954" pvalue="5.34e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_955" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_956" pvalue="1.58e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_957" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_958" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="28" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_959" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_960" pvalue="2.46e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_961" pvalue="1.29e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_962" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_963" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_964" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_965" pvalue="3.43e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_966" pvalue="2.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_967" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_968" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_969" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_970" pvalue="9.86e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_971" pvalue="6.77e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_972" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_973" pvalue="4.19e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_974" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_975" pvalue="1.36e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_976" pvalue="9.99e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_977" pvalue="3.06e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_978" pvalue="4.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_979" pvalue="9.72e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_980" pvalue="9.05e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_981" pvalue="2.89e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_982" pvalue="1.12e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_983" pvalue="5.56e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_984" pvalue="4.16e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_985" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_986" pvalue="1.58e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_987" pvalue="9.26e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_988" pvalue="9.57e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_989" pvalue="4.61e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_990" pvalue="1.09e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_991" pvalue="1.01e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_992" pvalue="3.32e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_993" pvalue="6.37e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_994" pvalue="1.70e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_995" pvalue="9.25e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_996" pvalue="2.08e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_997" pvalue="4.04e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_998" pvalue="2.67e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="3" pvalue="3.62e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_999" pvalue="8.90e-01" num_sites="0"></scanned_sites>
+</scanned_sites_summary>
+</MEME>
--- a/test-data/meme_output_html_1.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <meta charset="UTF-8">
-    <title>MEME</title>
-    <script>
-      // @JSON_VAR data
-      var data = {
-        "program": "MEME",
-        "stop_reason": "Stopped because requested number of motifs (1) found.",
-        "cmd": [
-          "meme",
-          "-nostatus"
-        ],
-        "options": {
-          "mod": "zoops",
-          "revcomp": false,
-          "nmotifs": 1,
-          "minw": 8,
-          "maxw": 50,
-          "minsites": 2,
-          "maxsites": 30,
-          "wnsites": 0.8,
-          "spmap": "pam",
-          "spfuzz": 120,
-          "maxwords": -1,
-          "prior": "megap",
-          "b": 7500,
-          "maxiter": 50,
-          "distance": 1e-05,
-          "wg": 11,
-          "ws": 1,
-          "noendgaps": false,
-          "substring": true
-        },
-        "alphabet": {
-          "name": "Protein",
-          "like": "protein",
-          "ncore": 20,
-          "symbols": [
-            {
-              "symbol": "A",
-              "name": "Alanine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "C",
-              "name": "Cysteine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "D",
-              "name": "Aspartic acid",
-              "colour": "FF00FF"
-            }, {
-              "symbol": "E",
-              "name": "Glutamic acid",
-              "colour": "FF00FF"
-            }, {
-              "symbol": "F",
-              "name": "Phenylalanine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "G",
-              "name": "Glycine",
-              "colour": "FFB300"
-            }, {
-              "symbol": "H",
-              "name": "Histidine",
-              "colour": "FFCCCC"
-            }, {
-              "symbol": "I",
-              "name": "Isoleucine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "K",
-              "name": "Lysine",
-              "colour": "CC0000"
-            }, {
-              "symbol": "L",
-              "name": "Leucine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "M",
-              "name": "Methionine",
-              "colour": "0000CC"
-            }, {
-              "symbol": "N",
-              "name": "Asparagine",
-              "colour": "008000"
-            }, {
-              "symbol": "P",
-              "name": "Proline",
-              "colour": "FFFF00"
-            }, {
-              "symbol": "Q",
-              "name": "Glutamine",
--- a/test-data/meme_output_html_2.html	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <meta charset="UTF-8">
-    <title>MEME</title>
-    <script>
-      // @JSON_VAR data
-      var data = {
-        "program": "MEME",
-        "stop_reason": "Stopped because requested number of motifs (1) found.",
-        "cmd": [
-          "meme",
-        ],
-        "options": {
-          "mod": "zoops",
-          "revcomp": false,
-          "nmotifs": 1,
-          "minw": 8,
-          "maxw": 50,
-          "minsites": 2,
-          "maxsites": 30,
-          "wnsites": 0.8,
-          "spmap": "uni",
-          "spfuzz": 0.5,
-          "maxwords": -1,
-          "prior": "dirichlet",
-          "b": 0.01,
-          "maxiter": 50,
-          "distance": 0.001,
-          "wg": 11,
-          "ws": 1,
-          "noendgaps": false,
-          "substring": true
-        },
-        "alphabet": {
-          "name": "DNA",
-          "like": "dna",
-          "ncore": 4,
-          "symbols": [
-            {
-              "symbol": "A",
-              "name": "Adenine",
-              "colour": "CC0000",
-              "complement": "T"
-            }, {
-              "symbol": "C",
-              "name": "Cytosine",
-              "colour": "0000CC",
-              "complement": "G"
-            }, {
-              "symbol": "G",
-              "name": "Guanine",
-              "colour": "FFB300",
-              "complement": "C"
-            }, {
-              "symbol": "T",
-              "aliases": "U",
-              "name": "Thymine",
-              "colour": "008000",
-              "complement": "A"
-            }, {
-              "symbol": "N",
-              "aliases": "X.",
-              "name": "Any base",
-              "equals": "ACGT"
-            }, {
-              "symbol": "V",
-              "name": "Not T",
-              "equals": "ACG"
-            }, {
-              "symbol": "H",
-              "name": "Not G",
-              "equals": "ACT"
-            }, {
-              "symbol": "D",
-              "name": "Not C",
-              "equals": "AGT"
-            }, {
-              "symbol": "B",
-              "name": "Not A",
-              "equals": "CGT"
-            }, {
-              "symbol": "M",
-              "name": "Amino",
-              "equals": "AC"
-            }, {
-              "symbol": "R",
-              "name": "Purine",
-              "equals": "AG"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_output_test1.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,8005 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>MEME</title>
+    <script>
+      // @JSON_VAR data
+      var data = {
+        "program": "MEME",
+        "version": "4.12.0",
+        "release": "Tue Jun 27 16:22:50 2017 -0700",
+        "stop_reason": "Stopped because requested number of motifs (1) found.",
+        "cmd": [
+          "meme", "meme_input_1.fasta", "-o", "meme_test1_out", "-nostatus",
+          "-maxsize", "1000000"
+        ],
+        "options": {
+          "mod": "zoops",
+          "revcomp": false,
+          "nmotifs": 1,
+          "minw": 8,
+          "maxw": 50,
+          "minsites": 2,
+          "maxsites": 30,
+          "wnsites": 0.8,
+          "spmap": "pam",
+          "spfuzz": 120,
+          "maxwords": -1,
+          "prior": "megap",
+          "b": 7500,
+          "maxiter": 50,
+          "distance": 1e-05,
+          "wg": 11,
+          "ws": 1,
+          "noendgaps": false,
+          "substring": true
+        },
+        "alphabet": {
+          "name": "Protein",
+          "like": "protein",
+          "ncore": 20,
+          "symbols": [
+            {
+              "symbol": "A",
+              "name": "Alanine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "C",
+              "name": "Cysteine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "D",
+              "name": "Aspartic acid",
+              "colour": "FF00FF"
+            }, {
+              "symbol": "E",
+              "name": "Glutamic acid",
+              "colour": "FF00FF"
+            }, {
+              "symbol": "F",
+              "name": "Phenylalanine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "G",
+              "name": "Glycine",
+              "colour": "FFB300"
+            }, {
+              "symbol": "H",
+              "name": "Histidine",
+              "colour": "FFCCCC"
+            }, {
+              "symbol": "I",
+              "name": "Isoleucine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "K",
+              "name": "Lysine",
+              "colour": "CC0000"
+            }, {
+              "symbol": "L",
+              "name": "Leucine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "M",
+              "name": "Methionine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "N",
+              "name": "Asparagine",
+              "colour": "008000"
+            }, {
+              "symbol": "P",
+              "name": "Proline",
+              "colour": "FFFF00"
+            }, {
+              "symbol": "Q",
+              "name": "Glutamine",
+              "colour": "008000"
+            }, {
+              "symbol": "R",
+              "name": "Arginine",
+              "colour": "CC0000"
+            }, {
+              "symbol": "S",
+              "name": "Serine",
+              "colour": "008000"
+            }, {
+              "symbol": "T",
+              "name": "Threonine",
+              "colour": "008000"
+            }, {
+              "symbol": "V",
+              "name": "Valine",
+              "colour": "0000CC"
+            }, {
+              "symbol": "W",
+              "name": "Tryptophan",
+              "colour": "0000CC"
+            }, {
+              "symbol": "Y",
+              "name": "Tyrosine",
+              "colour": "33E6CC"
+            }, {
+              "symbol": "X",
+              "aliases": "*.",
+              "name": "Any amino acid",
+              "equals": "ACDEFGHIKLMNPQRSTVWY"
+            }, {
+              "symbol": "B",
+              "name": "Asparagine or Aspartic acid",
+              "equals": "DN"
+            }, {
+              "symbol": "Z",
+              "name": "Glutamine or Glutamic acid",
+              "equals": "EQ"
+            }, {
+              "symbol": "J",
+              "name": "Leucine or Isoleucine",
+              "equals": "IL"
+            }
+          ]
+        },
+        "background": {
+          "freqs": [
+            0.291, 0.229, 0.001, 0.001, 0.001, 0.255, 0.001, 0.001, 0.001,
+            0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.215, 0.001,
+            0.001, 0.001
+          ]
+        },
+        "sequence_db": {
+          "source": "meme_input_1.fasta",
+          "psp_source": "prior30.plib",
+          "freqs": [
+            0.294, 0.231, 0.000, 0.000, 0.000, 0.257, 0.000, 0.000, 0.000,
+            0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.217, 0.000,
+            0.000, 0.000
+          ],
+          "sequences": [
+            {
+              "name": "chr21_19617074_19617124_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_26934381_26934431_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_28217753_28217803_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31710037_31710087_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31744582_31744632_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31768316_31768366_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31914206_31914256_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31933633_31933683_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31962741_31962791_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31964683_31964733_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31973364_31973414_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31992870_31992920_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32185595_32185645_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32202076_32202126_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32253899_32253949_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32410820_32410870_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_36411748_36411798_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_37838750_37838800_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45705687_45705737_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45971413_45971463_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45978668_45978718_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45993530_45993580_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46020421_46020471_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46031920_46031970_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46046964_46047014_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46057197_46057247_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46086869_46086919_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46102103_46102153_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_47517957_47518007_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_47575506_47575556_-",
+              "length": 50,
+              "weight": 1.000000
+            }
+          ]
+        },
+        "motifs": [
+          {
+            "db": 0,
+            "id": "GGGGTATAAAA",
+            "alt": "MEME-1",
+            "len": 11,
+            "nsites": 25,
+            "evalue": "2.4e-011",
+            "ic": 40.0,
+            "re": 13.8,
+            "llr": 239,
+            "bt": 5.33554,
+            "time": 0.772000,
+            "psm": [
+              [
+                -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
+              ]
+            ],
+            "pwm": [
+              [
+                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
+              ]
+            ],
+            "sites": [
+              {
+                "seq": 24,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 1.06e-06,
+                "lflank": "AAGGCCAGGA",
+                "match": "GGGGTATAAAA",
+                "rflank": "GCCTGAGAGC"
+              }, {
+                "seq": 25,
+                "pos": 36,
+                "rc": false,
+                "pvalue": 3.41e-06,
+                "lflank": "ACAGGCCCTG",
+                "match": "GGCATATAAAA",
+                "rflank": "GCC"
+              }, {
+                "seq": 19,
+                "pos": 9,
+                "rc": false,
+                "pvalue": 3.41e-06,
+                "lflank": "CAGGCCCTG",
+                "match": "GGCATATAAAA",
+                "rflank": "GCCCCAGCAG"
+              }, {
+                "seq": 9,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 3.41e-06,
+                "lflank": "GATTCACTGA",
+                "match": "GGCATATAAAA",
+                "rflank": "GGCCCTCTGC"
+              }, {
+                "seq": 21,
+                "pos": 7,
+                "rc": false,
+                "pvalue": 4.00e-06,
+                "lflank": "CCAAGGA",
+                "match": "GGAGTATAAAA",
+                "rflank": "GCCCCACAAA"
+              }, {
+                "seq": 13,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 5.01e-06,
+                "lflank": "CCACCAGCTT",
+                "match": "GAGGTATAAAA",
+                "rflank": "AGCCCTGTAC"
+              }, {
+                "seq": 23,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 6.06e-06,
+                "lflank": "ATACCCAGGG",
+                "match": "AGGGTATAAAA",
+                "rflank": "CCTCAGCAGC"
+              }, {
+                "seq": 15,
+                "pos": 21,
+                "rc": false,
+                "pvalue": 8.67e-06,
+                "lflank": "AATCACTGAG",
+                "match": "GATGTATAAAA",
+                "rflank": "GTCCCAGGGA"
+              }, {
+                "seq": 12,
+                "pos": 18,
+                "rc": false,
+                "pvalue": 8.67e-06,
+                "lflank": "CACCAGAGCT",
+                "match": "GGGATATATAA",
+                "rflank": "AGAAGGTTCT"
+              }, {
+                "seq": 11,
+                "pos": 16,
+                "rc": false,
+                "pvalue": 8.67e-06,
+                "lflank": "CACTATTGAA",
+                "match": "GATGTATAAAA",
+                "rflank": "TTTCATTTGC"
+              }, {
+                "seq": 22,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 1.21e-05,
+                "lflank": "GA",
+                "match": "GACATATAAAA",
+                "rflank": "GCCAACATCC"
+              }, {
+                "seq": 28,
+                "pos": 32,
+                "rc": false,
+                "pvalue": 1.59e-05,
+                "lflank": "CCGGCGGGGC",
+                "match": "GGGGTATAAAG",
+                "rflank": "GGGGCGG"
+              }, {
+                "seq": 20,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 1.59e-05,
+                "lflank": "CAGA",
+                "match": "GGGGTATAAAG",
+                "rflank": "GTTCCGACCA"
+              }, {
+                "seq": 6,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 1.68e-05,
+                "lflank": "CCCACTACTT",
+                "match": "AGAGTATAAAA",
+                "rflank": "TCATTCTGAG"
+              }, {
+                "seq": 14,
+                "pos": 19,
+                "rc": false,
+                "pvalue": 2.03e-05,
+                "lflank": "CACCAGCAAG",
+                "match": "GATATATAAAA",
+                "rflank": "GCTCAGGAGT"
+              }, {
+                "seq": 4,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 3.06e-05,
+                "lflank": "CAGGTCTAAG",
+                "match": "AGCATATATAA",
+                "rflank": "CTTGGAGTCC"
+              }, {
+                "seq": 0,
+                "pos": 39,
+                "rc": false,
+                "pvalue": 3.06e-05,
+                "lflank": "CCTCGGGACG",
+                "match": "TGGGTATATAA",
+                "rflank": ""
+              }, {
+                "seq": 18,
+                "pos": 37,
+                "rc": false,
+                "pvalue": 3.82e-05,
+                "lflank": "CGTGGTCGCG",
+                "match": "GGGGTATAACA",
+                "rflank": "GC"
+              }, {
+                "seq": 5,
+                "pos": 0,
+                "rc": false,
+                "pvalue": 3.82e-05,
+                "lflank": "",
+                "match": "AACGTATATAA",
+                "rflank": "ATGGTCCTGT"
+              }, {
+                "seq": 29,
+                "pos": 30,
+                "rc": false,
+                "pvalue": 4.02e-05,
+                "lflank": "GCTGCCGGTG",
+                "match": "AGCGTATAAAG",
+                "rflank": "GCCCTGGCG"
+              }, {
+                "seq": 1,
+                "pos": 27,
+                "rc": false,
+                "pvalue": 5.52e-05,
+                "lflank": "AGTCACAAGT",
+                "match": "GAGTTATAAAA",
+                "rflank": "GGGTCGCACG"
+              }, {
+                "seq": 3,
+                "pos": 14,
+                "rc": false,
+                "pvalue": 5.94e-05,
+                "lflank": "CCCAGGTTTC",
+                "match": "TGAGTATATAA",
+                "rflank": "TCGCCGCACC"
+              }, {
+                "seq": 16,
+                "pos": 22,
+                "rc": false,
+                "pvalue": 6.78e-05,
+                "lflank": "AGTTTCAGTT",
+                "match": "GGCATCTAAAA",
+                "rflank": "attatataac"
+              }, {
+                "seq": 7,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 2.08e-04,
+                "lflank": "TC",
+                "match": "AGAGTATATAT",
+                "rflank": "AAATGTTCCT"
+              }, {
+                "seq": 8,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 4.05e-04,
+                "lflank": "TATAACTCAG",
+                "match": "GTTGGATAAAA",
+                "rflank": "TAATTTGTAC"
+              }
+            ]
+          }
+        ],
+        "scan": [
+          {
+            "pvalue": 1.22e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 39,
+                "rc": false,
+                "pvalue": 3.06e-05
+              }
+            ]
+          }, {
+            "pvalue": 2.21e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 27,
+                "rc": false,
+                "pvalue": 5.52e-05
+              }
+            ]
+          }, {
+            "pvalue": 7.29e-01,
+            "sites": []
+          }, {
+            "pvalue": 2.37e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 14,
+                "rc": false,
+                "pvalue": 5.94e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.22e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 3.06e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.53e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 0,
+                "rc": false,
+                "pvalue": 3.82e-05
+              }
+            ]
+          }, {
+            "pvalue": 6.70e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 1.68e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.81e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 4.54e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.61e-02,
+            "sites": []
+          }, {
+            "pvalue": 1.36e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 3.41e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.99e-01,
+            "sites": []
+          }, {
+            "pvalue": 3.47e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 16,
+                "rc": false,
+                "pvalue": 8.67e-06
+              }
+            ]
+          }, {
+            "pvalue": 3.47e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 18,
+                "rc": false,
+                "pvalue": 8.67e-06
+              }
+            ]
+          }, {
+            "pvalue": 2.01e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 5.01e-06
+              }
+            ]
+          }, {
+            "pvalue": 8.11e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 19,
+                "rc": false,
+                "pvalue": 2.03e-05
+              }
+            ]
+          }, {
+            "pvalue": 3.47e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 21,
+                "rc": false,
+                "pvalue": 8.67e-06
+              }
+            ]
+          }, {
+            "pvalue": 2.71e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 22,
+                "rc": false,
+                "pvalue": 6.78e-05
+              }
+            ]
+          }, {
+            "pvalue": 8.23e-02,
+            "sites": []
+          }, {
+            "pvalue": 1.53e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 37,
+                "rc": false,
+                "pvalue": 3.82e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.36e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 9,
+                "rc": false,
+                "pvalue": 3.41e-06
+              }
+            ]
+          }, {
+            "pvalue": 6.37e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 1.59e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.60e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 7,
+                "rc": false,
+                "pvalue": 4.00e-06
+              }
+            ]
+          }, {
+            "pvalue": 4.83e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 1.21e-05
+              }
+            ]
+          }, {
+            "pvalue": 2.43e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 6.06e-06
+              }
+            ]
+          }, {
+            "pvalue": 4.26e-05,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 1.06e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.36e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 36,
+                "rc": false,
+                "pvalue": 3.41e-06
+              }
+            ]
+          }, {
+            "pvalue": 4.30e-02,
+            "sites": []
+          }, {
+            "pvalue": 4.30e-02,
+            "sites": []
+          }, {
+            "pvalue": 6.37e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 32,
+                "rc": false,
+                "pvalue": 1.59e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.61e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 30,
+                "rc": false,
+                "pvalue": 4.02e-05
+              }
+            ]
+          }
+        ]
+      };
+    </script>
+    <script>
+var site_url = "http://meme-suite.org";
+</script>
+    <script>
+
+/*
+ * $
+ *
+ * Shorthand function for getElementById
+ */
+function $(el) {
+  return document.getElementById(el);
+}
+
+
+/*
+ * See http://stackoverflow.com/a/5450113/66387
+ * Does string multiplication like the perl x operator.
+ */
+function string_mult(pattern, count) {
+    if (count < 1) return '';
+    var result = '';
+    while (count > 1) {
+        if (count & 1) result += pattern;
+        count >>= 1, pattern += pattern;
+    }
+    return result + pattern;
+}
+
+/*
+ * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
+ * Slightly modified with information from
+ * https://developer.mozilla.org/en/DOM/window.location
+ */
+function parse_params() {
+  "use strict";
+  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
+  search = window.location.search;
+  queryStart = search.indexOf("?") + 1;
+  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
+  query      = search.slice(queryStart, queryEnd - 1);
+
+  if (query === search || query === "") return {};
+
+  params  = {};
+  nvPairs = query.replace(/\+/g, " ").split("&");
+
+  for (i = 0; i < nvPairs.length; i++) {
+    nv = nvPairs[i].split("=");
+    n  = decodeURIComponent(nv[0]);
+    v  = decodeURIComponent(nv[1]);
+    // allow a name to be used multiple times
+    // storing each value in the array
+    if (!(n in params)) {
+      params[n] = [];
+    }
+    params[n].push(nv.length === 2 ? v : null);
+  }
+  return params;
+}
+
+/*
+ * coords
+ *
+ * Calculates the x and y offset of an element.
+ * From http://www.quirksmode.org/js/findpos.html
+ * with alterations to take into account scrolling regions
+ */
+function coords(elem) {
+  var myX = myY = 0;
+  if (elem.getBoundingClientRect) {
+    var rect;
+    rect = elem.getBoundingClientRect();
+    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
+        window.pageXOffset : document.body.scrollLeft);
+    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
+        window.pageYOffset : document.body.scrollTop);
+  } else {
+    // this fall back doesn't properly handle absolutely positioned elements
+    // inside a scrollable box
+    var node;
+    if (elem.offsetParent) {
+      // subtract all scrolling
+      node = elem;
+      do {
+        myX -= node.scrollLeft ? node.scrollLeft : 0;
+        myY -= node.scrollTop ? node.scrollTop : 0;
+      } while (node = node.parentNode);
+      // this will include the page scrolling (which is unwanted) so add it back on
+      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
+      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
+      // sum up offsets
+      node = elem;
+      do {
+        myX += node.offsetLeft;
+        myY += node.offsetTop;
+      } while (node = node.offsetParent);
+    }
+  }
+  return [myX, myY];
+}
+
+/*
+ * position_popup
+ *
+ * Positions a popup relative to an anchor element.
+ *
+ * The avaliable positions are:
+ * 0 - Centered below the anchor.
+ */
+function position_popup(anchor, popup, position) {
+  "use strict";
+  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
+  var a_xy, spacer, margin, scrollbar, page_w;
+  // define constants
+  spacer = 5;
+  margin = 15;
+  scrollbar = 15;
+  // define the positions and widths
+  a_xy = coords(anchor);
+  a_x = a_xy[0];
+  a_y = a_xy[1];
+  a_w = anchor.offsetWidth;
+  a_h = anchor.offsetHeight;
+  p_w = popup.offsetWidth;
+  p_h = popup.offsetHeight;
+  page_w = null;
+  if (window.innerWidth) {
+    page_w = window.innerWidth;
+  } else if (document.body) {
+    page_w = document.body.clientWidth;
+  }
+  // check the position type is defined
+  if (typeof position !== "number") {
+    position = 0;
+  }
+  // calculate the popup position
+  switch (position) {
+    case 1:
+      p_x = a_x + a_w + spacer;
+      p_y = a_y + (a_h / 2) - (p_h / 2);
+      break;
+    case 0:
+    default:
+      p_x = a_x + (a_w / 2) - (p_w / 2);
+      p_y = a_y + a_h + spacer;
+      break;
+  }
+  // constrain the popup position
+  if (p_x < margin) {
+    p_x = margin;
+  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
+    p_x = page_w - margin - scrollbar - p_w;
+  }
+  if (p_y < margin) {
+    p_y = margin;
+  }
+  // position the popup
+  popup.style.left = p_x + "px";
+  popup.style.top = p_y + "px";
+}
+
+function lookup_help_popup(popup_id) {
+  var _body, pop, info;
+  pop = document.getElementById(popup_id);
+  if (pop == null) {
+    _body = document.getElementsByTagName("body")[0];
+    pop = document.createElement("div");
+    pop.className = "pop_content";
+    pop.id = popup_id;
+    pop.style.backgroundColor = "#FFC";
+    pop.style.borderColor = "black";
+    info = document.createElement("p");
+    info.style.fontWeight = "bold";
+    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
+    pop.appendChild(info);
+    // this might cause problems with the menu, but as this only happens
+    // when something is already wrong I don't think that's too much of a problem
+    _body.insertBefore(pop, _body.firstChild);
+  }
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
+    if (!/\bauto_buttons\b/.test(pop.className)) {
+      pop.className += " auto_buttons";
+      var back_btn_sec = document.createElement("div");
+      back_btn_sec.className = "nested_only pop_back_sec";
+      var back_btn = document.createElement("span");
+      back_btn.className = "pop_back";
+      back_btn.appendChild(document.createTextNode("<< back"));
+      back_btn.addEventListener("click", function(e) {
+        help_return();
+      }, false);
+      back_btn_sec.appendChild(back_btn);
+      pop.insertBefore(back_btn_sec, pop.firstChild);
+      var close_btn_sec = document.createElement("div");
+      close_btn_sec.className = "pop_close_sec";
+      var close_btn = document.createElement("span");
+      close_btn.className = "pop_close";
+      close_btn.appendChild(document.createTextNode("close"));
+      close_btn.addEventListener("click", function(e) {
+        help_popup();
+      }, false);
+      close_btn_sec.appendChild(close_btn);
+      pop.appendChild(close_btn_sec);
+    }
+  }
+  return pop;
+}
+
+/*
+ * help_popup
+ *
+ * Moves around help pop-ups so they appear
+ * below an activator.
+ */
+function help_popup(activator, popup_id) {
+  "use strict";
+  var pop;
+  // set default values
+  if (typeof help_popup.popup === "undefined") {
+    help_popup.popup = [];
+  }
+  if (typeof help_popup.activator === "undefined") {
+    help_popup.activator = null;
+  }
+  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (typeof(activator) == "undefined") { // no activator so hide
+    if (last_pop != null) {
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+    }
+    return;
+  }
+  pop = lookup_help_popup(popup_id);
+  if (pop == last_pop) {
+    if (activator == help_popup.activator) {
+      //hide popup (as we've already shown it for the current help button)
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+      return; // toggling complete!
+    }
+  } else if (last_pop != null) {
+    //activating different popup so hide current one
+    last_pop.style.display = 'none';
+  }
+  help_popup.popup = [pop];
+  help_popup.activator = activator;
+  toggle_class(pop, "nested", false);
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = 'block';
+  position_popup(activator, pop);
+}
+
+/*
+ * help_refine
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_refine(popup_id) {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not refine a help popup when one is not shown!");
+  }
+  var pop = lookup_help_popup(popup_id);
+  var last_pop = help_popup.popup[help_popup.popup.length - 1];
+  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
+  help_popup.popup.push(pop);
+  toggle_class(pop, "nested", true);
+  last_pop.style.display = "none";
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = "block";
+  position_popup(help_popup.activator, pop);
+}
+
+/*
+ * help_return
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_return() {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not return to a earlier help popup when one is not shown!");
+  }
+  var last_pop = help_popup.popup.pop();
+  last_pop.style.display = "none";
+  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (pop != null) {
+    toggle_class(pop, "nested", help_popup.popup.length > 1);
+    pop.style.display = "block";
+    position_popup(help_popup.activator, pop);
+  } else {
+    help_popup.activator = null;
+  }
+}
+
+/*
+ * update_scroll_pad
+ *
+ * Creates padding at the bottom of the page to allow
+ * scrolling of anything into view.
+ */
+function update_scroll_pad() {
+  var page, pad;
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  pad = $("scrollpad");
+  if (pad === null) {
+    pad = document.createElement("div");
+    pad.id = 'scrollpad';
+    document.getElementsByTagName('body')[0].appendChild(pad);
+  }
+  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
+}
+
+function substitute_classes(node, remove, add) {
+  "use strict";
+  var list, all, i, cls, classes;
+  list = node.className.split(/\s+/);
+  all = {};
+  for (i = 0; i < list.length; i++) {
+    if (list[i].length > 0) all[list[i]] = true;
+  }
+  for (i = 0; i < remove.length; i++) {
+    if (all.hasOwnProperty(remove[i])) {
+      delete all[remove[i]];
+    }
+  }
+  for (i = 0; i < add.length; i++) {
+    all[add[i]] = true;
+  }
+  classes = "";
+  for (cls in all) {
+    classes += cls + " ";
+  }
+  node.className = classes;
+}
+
+/*
+ * toggle_class
+ *
+ * Adds or removes a class from the node. If the parameter 'enabled' is not 
+ * passed then the existence of the class will be toggled, otherwise it will be
+ * included if enabled is true.
+ */
+function toggle_class(node, cls, enabled) {
+  var classes = node.className;
+  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
+  var found = false;
+  for (var i = 0; i < list.length; i++) {
+    if (list[i] == cls) {
+      list.splice(i, 1);
+      i--;
+      found = true;
+    }
+  }
+  if (typeof enabled == "undefined") {
+    if (!found) list.push(cls);
+  } else {
+    if (enabled) list.push(cls);
+  }
+  node.className = list.join(" ");
+}
+
+/*
+ * find_child
+ *
+ * Searches child nodes in depth first order and returns the first it finds
+ * with the className specified.
+ * TODO replace with querySelector
+ */
+function find_child(node, className) {
+  var pattern;
+  if (node == null || typeof node !== "object") {
+    return null;
+  }
+  if (typeof className === "string") {
+    pattern = new RegExp("\\b" + className + "\\b");
+  } else {
+    pattern = className;
+  }
+  if (node.nodeType == Node.ELEMENT_NODE && 
+      pattern.test(node.className)) {
+    return node;
+  } else {
+    var result = null;
+    for (var i = 0; i < node.childNodes.length; i++) {
+      result = find_child(node.childNodes[i], pattern);
+      if (result != null) break;
+    }
+    return result;
+  }
+}
+
+/*
+ * find_parent
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the className specified.
+ */
+function find_parent(node, className) {
+  var pattern;
+  pattern = new RegExp("\\b" + className + "\\b");
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && 
+        pattern.test(node.className)) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * find_parent_tag
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the tag name specified. HTML tags should be specified in upper case.
+ */
+function find_parent_tag(node, tag_name) {
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * __toggle_help
+ *
+ * Uses the 'topic' property of the this object to
+ * toggle display of a help topic.
+ *
+ * This function is not intended to be called directly.
+ */
+function __toggle_help(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+
+  help_popup(this, this.getAttribute("data-topic"));
+}
+
+function setup_help_button(button) {
+  "use strict";
+  var topic;
+  if (button.hasAttribute("data-topic")) {
+    topic = button.getAttribute("data-topic");
+    if (document.getElementById(topic) != null) {
+      button.tabIndex = "0"; // make keyboard selectable
+      button.addEventListener("click", function() {
+        help_popup(button, topic);
+      }, false);
+      button.addEventListener("keydown", function(e) {
+        // toggle only on Enter or Spacebar, let other keys do their thing
+        if (e.keyCode !== 13 && e.keyCode !== 32) return;
+        // stop a submit or something like that
+        e.preventDefault();
+        help_popup(button, topic);
+      }, false);
+    } else {
+      button.style.visibility = "hidden";
+    }
+  }
+  button.className += " active";
+}
+
+/*
+ * help_button
+ *
+ * Makes a help button for the passed topic.
+ */
+function help_button(topic) {
+  var btn = document.createElement("div");
+  btn.className = "help";
+  btn.setAttribute("data-topic", topic);
+  setup_help_button(btn);
+  return btn;
+}
+
+/*
+ * prepare_download
+ *
+ * Sets the attributes of a link to setup a file download using the given content.
+ * If no link is provided then create one and click it.
+ */
+function prepare_download(content, mimetype, filename, link) {
+  "use strict";
+  // if no link is provided then create one and click it
+  var click_link = false;
+  if (!link) {
+    link = document.createElement("a");
+    click_link = true;
+  }
+  try {
+    // Use a BLOB to convert the text into a data URL.
+    // We could do this manually with a base 64 conversion.
+    // This will only be supported on modern browsers,
+    // hence the try block.
+    var blob = new Blob([content], {type: mimetype});
+    var reader = new FileReader();
+    reader.onloadend = function() {
+      // If we're lucky the browser will also support the download
+      // attribute which will let us suggest a file name to save the link.
+      // Otherwise it is likely that the filename will be unintelligible. 
+      link.setAttribute("download", filename);
+      link.href = reader.result;
+      if (click_link) {
+        // must add the link to click it
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      }
+    }
+    reader.readAsDataURL(blob);
+  } catch (error) {
+    if (console && console.log) console.log(error);
+    // probably an old browser
+    link.href = "";
+    link.visible = false;
+  }
+}
+
+/*
+ * add_cell
+ *
+ * Add a cell to the table row.
+ */
+function add_cell(row, node, cls, click_action) {
+  var cell = row.insertCell(row.cells.length);
+  if (node) cell.appendChild(node);
+  if (cls && cls !== "") cell.className = cls;
+  if (click_action) cell.addEventListener("click", click_action, false);
+}
+
+/*
+ * add_header_cell
+ *
+ * Add a header cell to the table row.
+ */
+function add_header_cell(row, node, help_topic, cls, colspan) {
+  var th = document.createElement("th");
+  if (node) th.appendChild(node);
+  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
+  if (cls && cls !== "") th.className = cls;
+  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
+  row.appendChild(th);
+}
+
+/*
+ * add_text_cell
+ *
+ * Add a text cell to the table row.
+ */
+function add_text_cell(row, text, cls, action) {
+  var node = null;
+  if (typeof(text) != 'undefined') node = document.createTextNode(text);
+  add_cell(row, node, cls, action);
+}
+
+/*
+ * add_text_header_cell
+ *
+ * Add a text header cell to the table row.
+ */
+function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
+  var node = null;
+  if (typeof(text) != 'undefined') {
+    var nbsp = (help_topic ? "\u00A0" : "");
+    var str = "" + text;
+    var parts = str.split(/\n/);
+    if (parts.length === 1) {
+      if (action) {
+        node = document.createElement("span");
+        node.appendChild(document.createTextNode(str + nbsp));
+      } else {
+        node = document.createTextNode(str + nbsp);
+      }
+    } else {
+      node = document.createElement("span");
+      for (var i = 0; i < parts.length; i++) {
+        if (i !== 0) {
+          node.appendChild(document.createElement("br"));
+        }
+        node.appendChild(document.createTextNode(parts[i]));
+      }
+    }
+    if (action) {
+      node.addEventListener("click", action, false);
+      node.style.cursor = "pointer";
+    }
+  }
+  add_header_cell(row, node, help_topic, cls, colspan);
+}
+
+function setup_help() {
+  "use strict";
+  var help_buttons, i;
+  help_buttons = document.querySelectorAll(".help:not(.active)");
+  for (i = 0; i < help_buttons.length; i++) {
+    setup_help_button(help_buttons[i]);
+  }
+}
+
+function setup_scrollpad() {
+  "use strict";
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
+    window.addEventListener("resize", update_scroll_pad, false);
+    update_scroll_pad();
+  }
+}
+
+// anon function to avoid polluting global scope
+(function() {
+  "use strict";
+  window.addEventListener("load", function load(evt) {
+    window.removeEventListener("load", load, false);
+    setup_help();
+    setup_scrollpad();
+  }, false);
+})();
+
+/*
+ *  make_link
+ *
+ *  Creates a text node and if a URL is specified it surrounds it with a link.
+ *  If the URL doesn't begin with "http://" it automatically adds it, as
+ *  relative links don't make much sense in this context.
+ */
+function make_link(text, url) {
+  var textNode = null;
+  var link = null;
+  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
+  if (typeof url === "string") {
+    if (url.indexOf("//") == -1) {
+      url = "http://" + url;
+    }
+    link = document.createElement('a');
+    link.href = url;
+    if (textNode) link.appendChild(textNode);
+    return link;
+  }
+  return textNode;
+}
+</script>
+    <script>
+      // 
+      // return true if any part of the passed element is visible in the viewport
+      //
+      function element_in_viewport(elem) {
+        var rect;
+        try {
+          rect = elem.getBoundingClientRect();
+        } catch (e) {
+          return false;
+        }
+        return (
+            rect.top < (window.innerHeight || document.body.clientHeight) &&
+            rect.bottom > 0 &&
+            rect.left < (window.innerWidth || document.body.clientWidth) &&
+            rect.right > 0
+            );
+      }
+
+      //
+      // Functions to delay a drawing task until it is required or it would not lag the display to do so
+      //
+
+      // a list of items still to be drawn
+      var drawable_list = [];
+      // the delay between drawing objects that are not currently visible
+      var draw_delay = 1;
+      // the delay after a user interaction
+      var user_delay = 300;
+      // the delay after a user has stopped scrolling and is viewing the stuff drawn on the current page
+      var stop_delay = 300;
+      // the timer handle; allows resetting of the timer after user interactions
+      var draw_timer = null;
+
+      //
+      // Drawable
+      //
+      // elem - a page element which defines the position on the page that drawing is to be done
+      // task - an object with the method run which takes care of painting the object
+      //
+      var Drawable = function(elem, task) {
+        this.elem = elem;
+        this.task = task;
+      }
+
+      //
+      // Drawable.is_visible
+      //
+      // Determines if the element is visible in the viewport
+      //
+      Drawable.prototype.is_visible = function() {
+        return element_in_viewport(this.elem);
+      }
+
+      //
+      // Drawable.run
+      //
+      // Run the task held by the drawable
+      Drawable.prototype.run = function() {
+        if (this.task) this.task.run();
+        this.task = null;
+      }
+
+      //
+      // Drawable.run
+      //
+      // Run the task iff visible
+      // returns true if the task ran or has already run
+      Drawable.prototype.run_visible = function() {
+        if (this.task) {
+          if (element_in_viewport(this.elem)) {
+            this.task.run();
+            this.task = null;
+            return true;
+          }
+          return false;
+        } else {
+          return true;
+        }
+      }
+
+      //
+      // draw_on_screen
+      //
+      // Checks each drawable object and draws those on screen.
+      //
+      function draw_on_screen() {
+        var found = false;
+        for (var i = 0; i < drawable_list.length; i++) {
+          if (drawable_list[i].run_visible()) {
+            drawable_list.splice(i--, 1);
+            found = true;
+          }
+        }
+        return found;
+      }
+
+      //
+      // process_draw_tasks
+      //
+      // Called on a delay to process the next avaliable
+      // draw task.
+      //
+      function process_draw_tasks() {
+        var delay = draw_delay;
+        draw_timer = null;
+        if (drawable_list.length == 0) return; //no more tasks
+        if (draw_on_screen()) {
+          delay = stop_delay; //give the user a chance to scroll
+        } else {
+          //get next task
+          var drawable = drawable_list.shift();
+          drawable.task.run();
+        }
+        //allow UI updates between tasks
+        draw_timer = window.setTimeout("process_draw_tasks()", delay);
+      }
+
+      //
+      // delayed_process_draw_tasks
+      //
+      // Call process_draw_tasks after a short delay.
+      // The delay serves to group multiple redundant events.       
+      // Should be set as event handler for onscroll and onresize.
+      //
+      function delayed_process_draw_tasks() {
+        //reset the timer
+        if (drawable_list.length > 0) { 
+          if (draw_timer != null) clearTimeout(draw_timer);
+          draw_timer = window.setTimeout("process_draw_tasks()", user_delay);
+        }
+      }
+
+      //
+      // add_draw_task
+      //
+      // Add a drawing task to be called immediately if it is
+      // visible, or to be called on a delay to reduce stuttering
+      // effect on the web browser.
+      function add_draw_task(elem, task) {
+        drawable = new Drawable(elem, task);
+        if (drawable.is_visible()) {
+          task.run();
+        } else {
+          drawable_list.push(drawable);
+          //reset timer
+          if (draw_timer != null) clearTimeout(draw_timer);
+          draw_timer = window.setTimeout("process_draw_tasks()", user_delay);
+        }
+      }
+
+</script>
+    <script>
+//======================================================================
+// start Alphabet object
+//======================================================================
+var Alphabet = function(alphabet, background) {
+  "use strict";
+  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
+  generate_background = (background == null);
+  if (generate_background) {
+    background = [];
+    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
+  } else if (alphabet.ncore != background.length) {
+    throw new Error("The background length does not match the alphabet length.");
+  }
+  this.name = alphabet.name;
+  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
+  this.ncore = alphabet.ncore;
+  this.symbols = alphabet.symbols;
+  this.background = background;
+  this.genbg = generate_background;
+  this.encode = {};
+  this.encode2core = {};
+  this.complement = {};
+  // check if all symbols are same case
+  var seen_uc = false;
+  var seen_lc = false;
+  var check_case = function (syms) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        if (sym >= 'a' && sym <= 'z') seen_lc = true;
+        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
+      }
+    }
+  };
+  for (i = 0; i < this.symbols.length; i++) {
+    check_case(this.symbols[i].symbol);
+    check_case(this.symbols[i].aliases);
+  }
+  // now map symbols to indexes
+  var update_array = function(array, syms, index) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        array[sym] = index;
+        // when only a single case is used, then encode as case insensitive
+        if (seen_uc != seen_lc) {
+          if (sym >= 'a' && sym <= 'z') {
+            array[sym.toUpperCase()] = index;
+          } else if (sym >= 'A' && sym <= 'Z') {
+            array[sym.toLowerCase()] = index;
+          }
+        }
+      }
+    }
+  }
+  // map core symbols to index
+  for (i = 0; i < this.ncore; i++) {
+    update_array(this.encode2core, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode2core, this.symbols[i].aliases, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+  }
+  // map ambigous symbols to index
+  ambigs = {};
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+    ambigs[this.symbols[i].equals] = i;
+  }
+  // determine complements
+  for (i = 0; i < this.ncore; i++) {
+    complement = this.symbols[i].complement;
+    if (typeof complement === "string") {
+      this.complement[i] = this.encode2core[complement];
+    }
+  }
+  next_symbol:
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    complement = "";
+    for (j = 0; j < this.symbols[i].equals.length; j++) {
+      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
+      if (typeof comp_e_sym !== "number") continue next_symbol;
+      complement += this.symbols[comp_e_sym].symbol;
+    }
+    complement = complement.split("").sort().join("");
+    if (typeof ambigs[complement] === "number") {
+      this.complement[i] = ambigs[complement];
+    }
+  }
+  // determine case insensitivity
+  this.case_insensitive = true;
+  if (seen_uc == seen_lc) {
+    // when there is a mixture of cases it probably won't
+    // be case insensitive but we still need to check
+    loop:
+    for (i = 0; i < this.symbols.length; i++) {
+      sym = this.symbols[i].symbol;
+      if (sym >= 'A' && sym <= 'Z') {
+        if (this.encode[sym.toLowerCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      } else if (sym >= 'a' && sym <= 'z') {
+        if (this.encode[sym.toUpperCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      }
+      aliases = this.symbols[i].aliases;
+      if (aliases != null) {
+        for (j = 0; j < aliases.length; j++) {
+          sym = aliases.charAt(j);
+          if (sym >= 'A' && sym <= 'Z') {
+            if (this.encode[sym.toLowerCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          } else if (sym >= 'a' && sym <= 'z') {
+            if (this.encode[sym.toUpperCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          }
+        }
+      }
+    }
+  }
+  // normalise aliases to remove the prime symbol and eliminate
+  // the alternate cases when the alphabet is case insensitive
+  var seen, out;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym = this.symbols[i].symbol;
+    aliases = this.symbols[i].aliases;
+    if (typeof aliases != "string") aliases = "";
+    seen = {};
+    out = [];
+    if (this.case_insensitive) {
+      sym = sym.toUpperCase();
+      aliases = aliases.toUpperCase();
+    }
+    seen[sym] = true;
+    for (j = 0; j < aliases.length; j++) {
+      if (!seen[aliases.charAt(j)]) {
+        seen[aliases.charAt(j)] = true;
+        out.push(aliases.charAt(j));
+      }
+    }
+    this.symbols[i].aliases = out.sort().join("");
+  }
+};
+// return the name of the alphabet
+Alphabet.prototype.get_alphabet_name = function() {
+  return this.name;
+};
+// return if the alphabet can be complemented
+Alphabet.prototype.has_complement = function() {
+  return (typeof this.symbols[0].complement === "string");
+};
+// return true if an uppercase letter has the same meaning as the lowercase form
+Alphabet.prototype.is_case_insensitive = function() {
+  return this.case_insensitive;
+};
+// return the information content of an alphabet letter
+Alphabet.prototype.get_ic = function() {
+  return Math.log(this.ncore) / Math.LN2;
+};
+// return the count of the core alphabet symbols
+Alphabet.prototype.get_size_core = function() {
+  return this.ncore;
+};
+// return the count of all alphabet symbols
+Alphabet.prototype.get_size_full = function() {
+  return this.symbols.length;
+};
+// return the symbol for the given alphabet index
+Alphabet.prototype.get_symbol = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  return this.symbols[alph_index].symbol;
+};
+// return the aliases for the given alphabet index
+Alphabet.prototype.get_aliases = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  var sym_obj = this.symbols[alph_index];
+  return (sym_obj.aliases != null ? sym_obj.aliases : "");
+};
+// return the name for the given alphabet index
+Alphabet.prototype.get_name = function(alph_index) {
+  "use strict";
+  var sym;
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  sym = this.symbols[alph_index];
+  return (typeof sym.name === "string" ? sym.name : sym.symbol);
+};
+// return the alphabet it is like or null
+Alphabet.prototype.get_like = function() {
+  "use strict";
+  return this.like;
+};
+// return the index of the complement for the given alphabet index
+Alphabet.prototype.get_complement = function(alph_index) {
+  var comp_e_sym = this.complement[alph_index];
+  if (typeof comp_e_sym === "number") {
+    return comp_e_sym;
+  } else {
+    return -1;
+  }
+};
+// return a string containing the core symbols
+Alphabet.prototype.get_symbols = function() {
+  "use strict";
+  var i, core_symbols;
+  core_symbols = "";
+  for (i = 0; i < this.ncore; i++) {
+    core_symbols += this.symbols[i].symbol;
+  }
+  return core_symbols;
+};
+// return if the background was not a uniform generated background
+Alphabet.prototype.has_bg = function() {
+  "use strict";
+  return !this.genbg;
+};
+// get the background frequency for the index
+Alphabet.prototype.get_bg_freq = function(alph_index) {
+  "use strict";
+  var freq, i, symbols;
+  if (alph_index >= 0) {
+    if (alph_index < this.ncore) {
+      return this.background[alph_index];
+    } else if (alph_index < this.symbols.length) {
+      freq = 0;
+      symbols = this.symbols[alph_index].equals;
+      for (i = 0; i < symbols.length; i++) {
+        freq += this.background[this.encode2core[symbols.charAt(i)]];
+      }
+      return freq;
+    } 
+  }
+  throw new Error("The alphabet index is out of range.");
+};
+// get the colour of the index
+Alphabet.prototype.get_colour = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return "black";
+  }
+  return "#" + this.symbols[alph_index].colour;
+};
+// get the rgb componets of the colour at the index
+Alphabet.prototype.get_rgb = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return {"red": 0, "green": 0, "blue": 0};
+  }
+  var colour = this.symbols[alph_index].colour;
+  var red = parseInt(colour.substr(0, 2), 16) / 255;
+  var green = parseInt(colour.substr(2, 2), 16) / 255;
+  var blue = parseInt(colour.substr(4, 2), 16) / 255;
+  return {"red": red, "green": green, "blue": blue};
+};
+// convert a symbol into the index
+Alphabet.prototype.get_index = function(letter) {
+  "use strict";
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    return -1;
+  }
+  return alph_index;
+};
+// convert a symbol into the list of core indexes that it equals
+Alphabet.prototype.get_indexes = function(letter) {
+  "use strict";
+  var alph_index, comprise_str, i, comprise_list;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    throw new Error("Unknown letter");
+  }
+  comprise_str = this.symbols[alph_index].equals;
+  comprise_list = [];
+  if (typeof comprise_str == "string") {
+    for (i = 0; i < comprise_str.length; i++) {
+      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
+    }
+  } else {
+    comprise_list.push(alph_index);
+  }
+  return comprise_list;
+};
+// check if a symbol is the primary way of representing the symbol in the alphabet
+Alphabet.prototype.is_prime_symbol = function(letter) {
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (alph_index == null) return false;
+  if (this.is_case_insensitive()) {
+    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
+  } else {
+    return (this.symbols[alph_index].symbol == letter);
+  }
+};
+// compare 2 alphabets
+Alphabet.prototype.equals = function(other) {
+  "use strict";
+  var i, sym1, sym2;
+  // first check that it's actually an alphabet object
+  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
+    return false;
+  }
+  // second shortcircuit if it's the same object
+  if (this === other) return true;
+  // compare
+  if (this.name !== other.name) return false;
+  if (this.ncore !== other.ncore) return false;
+  if (this.symbols.length !== other.symbols.length) return false;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym1 = this.symbols[i];
+    sym2 = other.symbols[i];
+    if (sym1.symbol !== sym2.symbol) return false;
+    if (sym1.aliases !== sym2.aliases) return false;
+    if (sym1.name !== sym2.name) return false;
+    if (typeof sym1.colour !== typeof sym2.colour || 
+        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
+         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
+      return false;
+    }
+    if (sym1.complement !== sym2.complement) return false;
+    if (sym1.equals !== sym2.equals) return false;
+  }
+  return true;
+};
+Alphabet.prototype.check_core_subset = function(super_alph) {
+  var complement_same = true;
+  var seen_set = {};
+  var sub_i, sub_symbol, super_i, super_symbol;
+  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
+    sub_symbol = this.symbols[sub_i];
+    super_i = super_alph.encode[sub_symbol.symbol]; 
+    if (super_i == null) return 0;
+    super_symbol = super_alph.symbols[super_i];
+    if (seen_set[super_i]) return 0;
+    seen_set[super_i] = true;
+    // check complement
+    if (sub_symbol.complement != null && super_symbol.complement != null) {
+      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
+        complement_same = false;
+      }
+    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
+      complement_same = false;
+    }
+  }
+  return (complement_same ? 1 : -1);
+};
+// convert a sequence to its reverse complement
+Alphabet.prototype.invcomp_seq = function(seq) {
+  "use strict";
+  var syms, i, e_sym, comp_e_sym;
+  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
+  syms = seq.split("");
+  for (i = 0; i < syms.length; i++) {
+    e_sym = this.encode[syms[i]];
+    if (typeof e_sym === "undefined") {
+      e_sym = this.ncore; // wildcard
+    }
+    comp_e_sym = this.complement[e_sym];
+    if (typeof comp_e_sym === "undefined") {
+      comp_e_sym = e_sym; // not complementable
+    }
+    syms[i] = this.symbols[comp_e_sym].symbol;
+  }
+  return syms.reverse().join("");
+};
+// convert the alphabet to the text version
+Alphabet.prototype.as_text = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  function symbol_as_text(sym) {
+    var out;
+    out = sym.symbol;
+    if (typeof sym.name === "string" && sym.name != sym.symbol) {
+      out += " " + name_as_text(sym.name);
+    }
+    if (typeof sym.colour === "string") {
+      out += " " + sym.colour;
+    }
+    return out;
+  }
+  var out, i, j, c, sym;
+  out = "";
+  // output core symbols with 2 way complements
+  for (i = 0; i < this.ncore; i++) {
+    c = this.complement[i];
+    if (typeof c === "number" && i < c && this.complement[c] === i) {
+      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
+    }
+  }
+  // output core symbols with no complement
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.complement[i] === "undefined") {
+      out += symbol_as_text(this.symbols[i]) + "\n";
+    }
+  }
+  // output ambiguous symbols that have comprising characters
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    if (this.symbols[i].equals.length == 0) break;
+    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
+      }
+    }
+  }
+  // output aliases of core symbols
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
+      }
+    }
+  }
+  // output gap symbols
+  i = this.symbols.length - 1;
+  if (this.symbols[i].equals.length == 0) {
+    out += symbol_as_text(this.symbols[i]) + " =\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " =\n";
+      }
+    }
+  }
+  return out;
+};
+// output the alphabet as it appears in minimal MEME format
+Alphabet.prototype.as_meme = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  if (this.equals(AlphStd.DNA)) {
+    return "ALPHABET= ACGT\n";
+  } else if (this.equals(AlphStd.PROTEIN)) {
+    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
+  } else {
+    return "ALPHABET" + 
+      (this.name != null ? " " + name_as_text(this.name) : "") + 
+      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
+      this.as_text() + "END ALPHABET\n";
+  }
+};
+
+// Returns a table showing all the letters in the alphabet
+Alphabet.prototype.as_table = function() {
+  "use strict";
+  var i, j, row, th, td, aliases, equals, sym;
+  var table = document.createElement("table");
+  // create the core symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  if (this.has_complement()) {
+    th.appendChild(document.createTextNode("Complement"));
+  }
+  row.appendChild(th);
+  // list the core symbols
+  for (i = 0; i < this.ncore; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].complement != null) {
+      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
+      td.appendChild(document.createTextNode(this.symbols[i].complement));
+    }
+    row.appendChild(td);
+  }
+  // create the ambiguous symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Matches"));
+  row.appendChild(th);
+  // list the ambiguous symbols
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    equals = this.symbols[i].equals.split('');
+    for (j = 0; j < equals.length; j++) {
+      if (j != 0) td.appendChild(document.createTextNode(' '));
+      sym = document.createElement("span");
+      sym.style.color = this.get_colour(this.get_index(equals[j]));
+      sym.appendChild(document.createTextNode(equals[j]));
+      td.appendChild(sym);
+    }
+    row.appendChild(td);
+  }
+  return table;
+};
+
+// returns a dictionary of the colours for EPS
+Alphabet.prototype._as_eps_dict = function() {
+  "use strict";
+  var i, sym, rgb;
+  var out = "/fullColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = this.get_rgb(i);
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  out += "/mutedColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = Alphabet.lighten_colour(this.get_rgb(i));
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  return out;
+};
+
+// return the alphabet name or a list of primary symbols
+Alphabet.prototype.toString = function() {
+  "use strict";
+  if (this.name != null) {
+    return this.name;
+  } else {
+    return this.get_symbols();
+  }
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Helper functions
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+// Convert a colour specified in RGB colourspace values into LAB colourspace
+Alphabet.rgb2lab = function(rgb) {
+  "use strict";
+  var xyzHelper, labHelper;
+  // XYZ helper
+  xyzHelper = function(value) {
+    if (value > 0.0445) {
+      value = (value + 0.055) / 1.055;
+      value = Math.pow(value, 2.4);
+    } else {
+      value /= 12.92;
+    }
+    value *= 100;
+    return value;
+  };
+  // lab helper
+  labHelper = function(value) {
+    if (value > 0.008856) {
+      value = Math.pow(value, 1.0 / 3.0);
+    } else {
+      value = (7.787 * value) + (16.0 / 116.0);
+    }
+    return value;
+  };
+  // convert into XYZ colourspace
+  var c1, c2, c3;
+  if (typeof rgb == "number") {
+    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
+    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
+    c3 = xyzHelper((rgb & 0xFF) / 255.0);
+  } else {
+    c1 = xyzHelper(rgb.red);
+    c2 = xyzHelper(rgb.green);
+    c3 = xyzHelper(rgb.blue);
+  }
+  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
+  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
+  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
+  // convert into Lab colourspace
+  c1 = labHelper(x / 95.047);
+  c2 = labHelper(y / 100.0);
+  c3 = labHelper(z / 108.883);
+  var l = (116.0 * c2) - 16;
+  var a = 500.0 * (c1 - c2);
+  var b = 200.0 * (c2 - c3);
+  return {"l": l, "a": a, "b": b};
+};
+
+// Convert a colour specified in HSV colourspace into RGB colourspace
+Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
+  // achromatic (grey)
+  var r = value;
+  var g = value;
+  var b = value;
+  if (sat != 0) {
+    var h = hue / 60.0;
+    var i = Math.floor(h);
+    var f = h - i;
+    var p = value * (1.0 - sat);
+    var q = value * (1.0 - (sat * f));
+    var t = value * (1.0 - (sat * (1.0 - f)));
+    if (i == 0) {
+      r = value;
+      g = t;
+      b = p;
+    } else if (i == 1) {
+      r = q;
+      g = value;
+      b = p;
+    } else if (i == 2) {
+      r = p;
+      g = value;
+      b = t;
+    } else if (i == 3) {
+      r = p;
+      g = q;
+      b = value;
+    } else if (i == 4) {
+      r = t;
+      g = p;
+      b = value;
+    } else {
+      r = value;
+      g = p;
+      b = q;
+    }
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+// Calculate a distance score between two colours in LAB colourspace
+Alphabet.lab_dist = function(lab1, lab2) {
+  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
+  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
+  var dc = c1 - c2;
+  var dl = lab1.l - lab2.l;
+  var da = lab1.a - lab2.a;
+  var db = lab1.b - lab2.b;
+  // we don't want NaN due to rounding errors so fudge things a bit...
+  var dh = 0;
+  var dh_squared = (da * da) + (db * db) - (dc * dc);
+  if (dh_squared > 0) {
+    dh = Math.sqrt(dh_squared);
+  }
+  var first = dl;
+  var second = dc / (1.0 + (0.045 * c1));
+  var third = dh / (1.0 + (0.015 * c1));
+  return Math.sqrt((first * first) + (second * second) + (third * third));
+};
+
+// convert an RGB value into a HSL value
+Alphabet.rgb2hsl = function(rgb) {
+  "use strict";
+  var min, max, delta, h, s, l, r, g, b;
+  if (typeof rgb == "number") {
+    r = ((rgb >> 16) & 0xFF) / 255.0;
+    g = ((rgb >> 8) & 0xFF) / 255.0;
+    b = (rgb & 0xFF) / 255.0;
+  } else {
+    r = rgb.red;
+    g = rgb.green;
+    b = rgb.blue;
+  }
+  min = Math.min(r, g, b);
+  max = Math.max(r, g, b);
+  delta = max - min;
+  l = min + (delta / 2);
+  if (max == min) {
+    h = 0; // achromatic (grayscale)
+    s = 0;
+  } else {
+    if (l > 0.5) {
+      s = delta / (2 - max - min);
+    } else {
+      s = delta / (max + min);
+    }
+    if (max == r) {
+      h = (g - b) / delta;
+      if (g < b) h += 6;
+    } else if (max == g) {
+      h = ((b - r) / delta) + 2;
+    } else {
+      h = ((r - g) / delta) + 4;
+    }
+    h /= 6;
+  }
+  return {"h": h, "s": s, "l": l};
+};
+
+// convert a HSL value into an RGB value
+Alphabet.hsl2rgb = function(hsl, output_object) {
+  "use strict";
+  function _hue(p, q, t) {
+    "use strict";
+    if (t < 0) t += 1;
+    else if (t > 1) t -= 1;
+    if (t < (1.0 / 6.0)) {
+      return p + ((q - p) * 6.0 * t);
+    } else if (t < 0.5) {
+      return q;
+    } else if (t < (2.0 / 3.0)) {
+      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+    } else {
+      return p;
+    }
+  }
+  var r, g, b, p, q;
+  if (hsl.s == 0) {
+    // achromatic (grayscale)
+    r = hsl.l;
+    g = hsl.l;
+    b = hsl.l;
+  } else {
+    if (hsl.l < 0.5) {
+      q = hsl.l * (1 + hsl.s);
+    } else {
+      q = hsl.l + hsl.s - (hsl.l * hsl.s);
+    }
+    p = (2 * hsl.l) - q;
+    r = _hue(p, q, hsl.h + (1.0 / 3.0));
+    g = _hue(p, q, hsl.h);
+    b = _hue(p, q, hsl.h - (1.0 / 3.0));
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+Alphabet.lighten_colour = function(rgb) {
+  "use strict";
+  var hsl = Alphabet.rgb2hsl(rgb);
+  hsl.l += (1.0 - hsl.l) * 2 / 3;
+  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
+};
+
+//======================================================================
+// end Alphabet object
+//======================================================================
+
+//======================================================================
+// start StandardAlphabet object
+//======================================================================
+
+// an extension of the alphabet object to support some additional fields 
+// only present in standard alphabets.
+var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
+  Alphabet.apply(this, [alphabet_data]);
+  this.enum_code = enum_code;
+  this.enum_name = enum_name;
+};
+StandardAlphabet.prototype = Alphabet.prototype;
+StandardAlphabet.prototype.constructor = StandardAlphabet;
+
+// A unique code for this standard alphabet.
+// This code will be a power of 2 to enable creation of bitsets for
+// a selection of standard alphabets.
+StandardAlphabet.prototype.get_code = function() {
+  return this.enum_code;
+};
+
+// A unique name for this standard alphabet.
+// this name will be all upper case and the same as the property that
+// refers to this alphabet in the AlphStd collection.
+StandardAlphabet.prototype.get_enum = function() {
+  return this.enum_name;
+};
+
+//======================================================================
+// end StandardAlphabet object
+//======================================================================
+
+// A collection of standard alphabets.
+var AlphStd = {
+  RNA: new StandardAlphabet(1, "RNA", {
+    "name": "RNA",
+    "like": "RNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
+      {"symbol": "U", "name": "Uracil", "colour": "008000",
+        "aliases": "T"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
+      {"symbol": "V", "name": "Not U", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACU"},
+      {"symbol": "D", "name": "Not C", "equals": "AGU"},
+      {"symbol": "B", "name": "Not A", "equals": "CGU"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
+      {"symbol": "K", "name": "Keto", "equals": "GU"}
+    ]
+  }), 
+  DNA: new StandardAlphabet(2, "DNA", {
+    "name": "DNA",
+    "like": "DNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
+      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
+        "aliases": "U"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
+      {"symbol": "V", "name": "Not T", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACT"},
+      {"symbol": "D", "name": "Not C", "equals": "AGT"},
+      {"symbol": "B", "name": "Not A", "equals": "CGT"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
+      {"symbol": "K", "name": "Keto", "equals": "GT"}
+    ]
+  }), 
+  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
+    "name": "Protein",
+    "like": "PROTEIN",
+    "ncore": 20,
+    "symbols": [
+      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
+      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
+      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
+      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
+      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
+      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
+      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
+      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
+      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
+      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
+      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
+      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
+      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
+      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
+      {"symbol": "S", "name": "Serine", "colour": "008000"},
+      {"symbol": "T", "name": "Threonine", "colour": "008000"},
+      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
+      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
+      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
+      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
+      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
+      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
+      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
+    ]
+  })
+};
+
+//======================================================================
+// start Symbol object
+//======================================================================
+var Symbol = function(alph_index, scale, alphabet) {
+  "use strict";
+  //variable prototype
+  this.symbol = alphabet.get_symbol(alph_index);
+  this.scale = scale;
+  this.colour = alphabet.get_colour(alph_index);
+};
+
+Symbol.prototype.get_symbol = function() {
+  "use strict";
+  return this.symbol;
+};
+
+Symbol.prototype.get_scale = function() {
+  "use strict";
+  return this.scale;
+};
+
+Symbol.prototype.get_colour = function() {
+  "use strict";
+  return this.colour;
+};
+
+Symbol.prototype.toString = function() {
+  "use strict";
+  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
+};
+
+function compare_symbol(sym1, sym2) {
+  "use strict";
+  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
+//======================================================================
+var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
+  "use strict";
+  var row, col, data, row_sum, delta, evalue_re;
+  if (typeof name !== "string") {
+    name = "";
+  }
+  this.name = name;
+  //construct
+  if (matrix instanceof Pspm) {
+    // copy constructor
+    this.alph_length = matrix.alph_length;
+    this.motif_length = matrix.motif_length;
+    this.name = matrix.name;
+    this.alt = matrix.alt;
+    this.nsites = matrix.nsites;
+    this.evalue = matrix.evalue;
+    this.ltrim = matrix.ltrim;
+    this.rtrim = matrix.rtrim;
+    this.pspm = [];
+    for (row = 0; row < matrix.motif_length; row++) {
+      this.pspm[row] = [];
+      for (col = 0; col < matrix.alph_length; col++) {
+        this.pspm[row][col] = matrix.pspm[row][col];
+      }
+    }
+    if (matrix.pssm != null) {
+      this.pssm = [];
+      for (row = 0; row < matrix.motif_length; row++) {
+        this.pspm[row] = [];
+        for (col = 0; col < matrix.alph_length; col++) {
+          this.pssm[row][col] = matrix.pssm[row][col];
+        }
+      }
+    }
+  } else {
+    // check parameters
+    if (ltrim == null) {
+      ltrim = 0;
+    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
+      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
+    }
+    if (rtrim == null) {
+      rtrim = 0;
+    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
+      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
+    }
+    if (nsites != null) {
+      if (typeof nsites !== "number" || nsites < 0) {
+        throw new Error("nsites must be a positive number, got: " + nsites);
+      } else if (nsites == 0) {
+        nsites = null;
+      }
+    }
+    if (evalue != null) {
+      if (typeof evalue === "number") {
+        if (evalue < 0) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else if (typeof evalue === "string") {
+        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+        if (!evalue_re.test(evalue)) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else {
+        throw new Error("evalue must be a non-negative number, got: " + evalue);
+      }
+    }
+    // set properties
+    this.name = name;
+    this.alt = alt;
+    this.nsites = nsites;
+    this.evalue = evalue;
+    this.ltrim = ltrim;
+    this.rtrim = rtrim;
+    if (typeof matrix === "string") {
+      // string constructor
+      data = parse_pspm_string(matrix);
+      this.alph_length = data["alph_length"];
+      this.motif_length = data["motif_length"];
+      this.pspm = data["pspm"];
+      if (this.evalue == null) {
+        if (data["evalue"] != null) {
+          this.evalue = data["evalue"];
+        } else {
+          this.evalue = 0;
+        }
+      }
+      if (this.nsites == null) {
+        if (typeof data["nsites"] === "number") {
+          this.nsites = data["nsites"];
+        } else {
+          this.nsites = 20;
+        }
+      }
+    } else {
+      // assume pspm is a nested array
+      this.motif_length = matrix.length;
+      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
+      if (this.nsites == null) {
+        this.nsites = 20;
+      }
+      if (this.evalue == null) {
+        this.evalue = 0;
+      }
+      this.pspm = [];
+      // copy pspm and check
+      for (row = 0; row < this.motif_length; row++) {
+        if (this.alph_length != matrix[row].length) {
+          throw new Error("COLUMN_MISMATCH");
+        }
+        this.pspm[row] = [];
+        row_sum = 0;
+        for (col = 0; col < this.alph_length; col++) {
+          this.pspm[row][col] = matrix[row][col];
+          row_sum += this.pspm[row][col];
+        }
+        delta = 0.1;
+        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
+            (row_sum < 1 && (1 - row_sum) > delta)) {
+          throw new Error("INVALID_SUM");
+        }
+      }
+      // copy pssm
+      if (pssm != null) {
+        this.pssm = [];
+        for (row = 0; row < this.motif_length; row++) {
+          this.pssm[row] = [];
+          for (col = 0; col < this.alph_length; col++) {
+            this.pssm[row][col] = pssm[row][col];
+          }
+        }
+      }
+    }
+  }
+};
+
+Pspm.prototype.copy = function() {
+  "use strict";
+  return new Pspm(this);
+};
+
+Pspm.prototype.reverse = function() {
+  "use strict";
+  var x, y, temp, temp_trim;
+  //reverse
+  x = 0;
+  y = this.motif_length-1;
+  while (x < y) {
+    temp = this.pspm[x];
+    this.pspm[x] = this.pspm[y];
+    this.pspm[y] = temp;
+    x++;
+    y--;
+  }
+  // reverse pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //reverse
+    x = 0;
+    y = this.motif_length-1;
+    while (x < y) {
+      temp = this.pssm[x];
+      this.pspm[x] = this.pssm[y];
+      this.pssm[y] = temp;
+      x++;
+      y--;
+    }
+  }
+  //swap triming
+  temp_trim = this.ltrim;
+  this.ltrim = this.rtrim;
+  this.rtrim = temp_trim;
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.reverse_complement = function(alphabet) {
+  "use strict";
+  var x, y, temp, i, row, c, temp_trim;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  if (!alphabet.has_complement()) {
+    throw new Error("The specified alphabet can not be complemented.");
+  }
+  // reverse motif
+  this.reverse();
+  //complement
+  for (x = 0; x < this.motif_length; x++) {
+    row = this.pspm[x];
+    for (i = 0; i < row.length; i++) {
+      c = alphabet.get_complement(i);
+      if (c < i) continue;
+      temp = row[i];
+      row[i] = row[c];
+      row[c] = temp;
+    }
+  }
+  // complement pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //complement
+    for (x = 0; x < this.motif_length; x++) {
+      row = this.pssm[x];
+      for (i = 0; i < row.length; i++) {
+        c = alphabet.get_complement(i);
+        if (c < i) continue;
+        temp = row[i];
+        row[i] = row[c];
+        row[c] = temp;
+      }
+    }
+  }
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.get_stack = function(position, alphabet, ssc) {
+  "use strict";
+  var row, stack_ic, alphabet_ic, stack, i, sym;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  row = this.pspm[position];
+  stack_ic = this.get_stack_ic(position, alphabet);
+  if (ssc) stack_ic -= this.get_error(alphabet);
+  alphabet_ic = alphabet.get_ic();
+  stack = [];
+  for (i = 0; i < this.alph_length; i++) {
+    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;
+};
+
+Pspm.prototype.get_stack_ic = function(position, alphabet) {
+  "use strict";
+  var row, H, i;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size fo the pspm.");
+  }
+  row = this.pspm[position];
+  H = 0;
+  for (i = 0; i < this.alph_length; i++) {
+    if (row[i] === 0) {
+      continue;
+    }
+    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
+  }
+  return alphabet.get_ic() - H;
+};
+
+Pspm.prototype.get_error = function(alphabet) {
+  "use strict";
+  if (this.nsites === 0) {
+    return 0;
+  }
+  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
+};
+
+Pspm.prototype.get_motif_length = function() {
+  "use strict";
+  return this.motif_length;
+};
+
+Pspm.prototype.get_alph_length = function() {
+  "use strict";
+  return this.alph_length;
+};
+
+Pspm.prototype.get_left_trim = function() {
+  "use strict";
+  return this.ltrim;
+};
+
+Pspm.prototype.get_right_trim = function() {
+  "use strict";
+  return this.rtrim;
+};
+
+Pspm.prototype.as_best_match = function(alphabet) {
+  "use strict";
+  var match, odds, best_odds, best_index;
+  var i, j;
+  match = "";
+  for (i = 0; i < this.motif_length; i++) {
+    best_index = 0;
+    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
+    for (j = 1; j < this.alph_length; j++) {
+      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
+      if (odds > best_odds) {
+        best_odds = odds;
+        best_index = j;
+      }
+    }
+    match += alphabet.get_symbol(best_index);
+  }
+  return match;
+};
+
+Pspm.prototype.as_count_matrix = function() {
+  "use strict";
+  var count, count_text, text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      count = Math.round(this.nsites * this.pspm[i][j]);
+      count_text = "" + count;
+      // pad up to length of 4
+      if (count_text.length < 4) {
+        text += (new Array(5 - count_text.length)).join(" ") + count_text;
+      } else {
+        text += count_text;
+      }
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_probability_matrix = function() {
+  "use strict";
+  var text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      text += this.pspm[i][j].toFixed(6);
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
+  "use strict";
+  var me, score, out, row, col, score_text;
+  me = this;
+  if (typeof this.pssm === "undefined") {
+    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
+      throw new Error("The alphabet is required to generate the pssm.");
+    }
+    if (typeof pseudo === "undefined") {
+      pseudo = 0.01;
+    } else if (typeof pseudo !== "number" || pseudo < 0) {
+      throw new Error("Expected positive number for pseudocount");
+    }
+    score = function(row, col) {
+      "use strict";
+      var p, bg, p2;
+      p = me.pspm[row][col];
+      bg = alphabet.get_bg_freq(col);
+      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
+      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
+    };
+  } else {
+    score = function(row, col) {
+      "use strict";
+      return me.pssm[row][col];
+    };
+  }
+  out = "";
+  for (row = 0; row < this.motif_length; row++) {
+    for (col = 0; col < this.alph_length; col++) {
+      if (col !== 0) {
+        out += " ";
+      }
+      score_text = "" + score(row, col);
+      // pad out to 6 characters
+      if (score_text.length < 6) {
+        out += (new Array(7 - score_text.length)).join(" ") + score_text;
+      } else {
+        out += score_text;
+      }
+    }
+    out += "\n";
+  }
+  return out;
+}
+
+Pspm.prototype.as_pspm = function() {
+  "use strict";
+  return "letter-probability matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + " nsites= " + this.nsites + 
+      " E= " + (typeof this.evalue === "number" ? 
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_probability_matrix();
+};
+
+Pspm.prototype.as_pssm = function(alphabet, pseudo) {
+  "use strict";
+  return "log-odds matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + 
+      " E= " + (typeof this.evalue == "number" ?
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_score_matrix(alphabet, pseudo);
+};
+
+Pspm.prototype.as_meme = function(options) {
+  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
+  var out, alen, i;
+  // get the options
+  if (typeof options !== "object" || options === null) {
+    options = {};
+  }
+  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
+  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
+  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
+  if (!with_pspm && !with_pssm) with_pspm = true;
+  if (with_header) {
+    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
+      version = options["version"];
+    } else if (typeof options["version"] === "number") {
+      version = options["version"].toFixed(0);
+    } else {
+      version = "4";
+    }
+    if (typeof options["strands"] === "number" && options["strands"] === 1) {
+      strands = 1;
+    } else {
+      strands = 2;
+    }
+    if (typeof options["bg_source"] === "string") {
+      bg_source = options["bg_source"];
+    } else {
+      bg_source = "unknown source";
+    }
+    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
+        && options["alphabet"] instanceof Alphabet) {
+      alphabet = options["alphabet"];
+    } else {
+      throw new Error("The alphabet is required to generate the header.");
+    }
+  }
+  // now create the output
+  out = "";
+  if (with_header) {
+    out = "MEME version " + version + "\n\n";
+    out += alphabet.as_meme() + "\n";
+    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
+      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
+    }
+    out += "Background letter frequencies (from " + bg_source + "):\n";
+    alen = alphabet.get_size_core();
+    for (i = 0; i < alen; i++) {
+      if (i !== 0) {
+        if (i % 9 === 0) { // maximum of nine entries per line
+          out += "\n";
+        } else {
+          out += " ";
+        }
+      }
+      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
+    }
+  }
+  out += "\n\n";
+  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
+  if (with_pssm) {
+    out += "\n\n";
+    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
+  }
+  if (with_pspm) {
+    out += "\n\n";
+    out += this.as_pspm();
+  }
+  return out;
+}
+
+Pspm.prototype.toString = function() {
+  "use strict";
+  var str, i, row;
+  str = "";
+  for (i = 0; i < this.pspm.length; i++) {
+    row = this.pspm[i];
+    str += row.join("\t") + "\n";
+  }
+  return str;
+};
+
+function parse_pspm_properties(str) {
+  "use strict";
+  var parts, i, eqpos, before, after, properties, prop, num, num_re;
+  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+  parts = trim(str).split(/\s+/);
+  // split up words containing =
+  for (i = 0; i < parts.length;) {
+    eqpos = parts[i].indexOf("=");
+    if (eqpos != -1) {
+      before = parts[i].substr(0, eqpos);
+      after = parts[i].substr(eqpos+1);
+      if (before.length > 0 && after.length > 0) {
+        parts.splice(i, 1, before, "=", after);
+        i += 3;
+      } else if (before.length > 0) {
+        parts.splice(i, 1, before, "=");
+        i += 2;
+      } else if (after.length > 0) {
+        parts.splice(i, 1, "=", after);
+        i += 2;
+      } else {
+        parts.splice(i, 1, "=");
+        i++;
+      }
+    } else {
+      i++;
+    }
+  }
+  properties = {};
+  for (i = 0; i < parts.length; i += 3) {
+    if (parts.length - i < 3) {
+      throw new Error("Expected PSPM property was incomplete. "+
+          "Remaing parts are: " + parts.slice(i).join(" "));
+    }
+    if (parts[i+1] !== "=") {
+      throw new Error("Expected '=' in PSPM property between key and " +
+          "value but got " + parts[i+1]); 
+    }
+    prop = parts[i].toLowerCase();
+    num = parts[i+2];
+    if (!num_re.test(num)) {
+      throw new Error("Expected numeric value for PSPM property '" + 
+          prop + "' but got '" + num + "'");
+    }
+    properties[prop] = num;
+  }
+  return properties;
+}
+
+function parse_pspm_string(pspm_string) {
+  "use strict";
+  var header_re, lines, first_line, line_num, col_num, alph_length, 
+      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
+      j, prob;
+  header_re = /^letter-probability\s+matrix:(.*)$/i;
+  lines = pspm_string.split(/\n/);
+  first_line = true;
+  line_num = 0;
+  col_num = 0;
+  alph_length;
+  motif_length;
+  nsites;
+  evalue;
+  pspm = [];
+  for (i = 0; i < lines.length; i++) {
+    line = trim(lines[i]);
+    if (line.length === 0) { 
+      continue;
+    }
+    // check the first line for a header though allow matrices without it
+    if (first_line) {
+      first_line = false;
+      match = header_re.exec(line);
+      if (match !== null) {
+        props = parse_pspm_properties(match[1]);
+        if (props.hasOwnProperty("alength")) {
+          alph_length = parseFloat(props["alength"]);
+          if (alph_length != 4 && alph_length != 20) {
+            throw new Error("PSPM property alength should be 4 or 20" +
+                " but got " + alph_length);
+          }
+        }
+        if (props.hasOwnProperty("w")) {
+          motif_length = parseFloat(props["w"]);
+          if (motif_length % 1 !== 0 || motif_length < 1) {
+            throw new Error("PSPM property w should be an integer larger " +
+                "than zero but got " + motif_length);
+          }
+        }
+        if (props.hasOwnProperty("nsites")) {
+          nsites = parseFloat(props["nsites"]);
+          if (nsites <= 0) {
+            throw new Error("PSPM property nsites should be larger than " +
+                "zero but got " + nsites);
+          }
+        }
+        if (props.hasOwnProperty("e")) {
+          evalue = props["e"];
+          if (evalue < 0) {
+            throw new Error("PSPM property evalue should be " +
+                "non-negative but got " + evalue);
+          }
+        }
+        continue;
+      }
+    }
+    pspm[line_num] = [];
+    col_num = 0;
+    parts = line.split(/\s+/);
+    for (j = 0; j < parts.length; j++) {
+      prob = parseFloat(parts[j]);
+      if (prob != parts[j] || prob < 0 || prob > 1) {
+        throw new Error("Expected probability but got '" + parts[j] + "'"); 
+      }
+      pspm[line_num][col_num] = prob;
+      col_num++;
+    }
+    line_num++;
+  }
+  if (typeof motif_length === "number") {
+    if (pspm.length != motif_length) {
+      throw new Error("Expected PSPM to have a motif length of " + 
+          motif_length + " but it was actually " + pspm.length);
+    }
+  } else {
+    motif_length = pspm.length;
+  }
+  if (typeof alph_length !== "number") {
+    alph_length = pspm[0].length;
+    if (alph_length != 4 && alph_length != 20) {
+      throw new Error("Expected length of first row in the PSPM to be " +
+          "either 4 or 20 but got " + alph_length);
+    }
+  }
+  for (i = 0; i < pspm.length; i++) {
+    if (pspm[i].length != alph_length) {
+      throw new Error("Expected PSPM row " + i + " to have a length of " + 
+          alph_length + " but the length was " + pspm[i].length);
+    }
+  }
+  return {"pspm": pspm, "motif_length": motif_length, 
+    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
+}
+//======================================================================
+// end Pspm object
+//======================================================================
+
+//======================================================================
+// start Logo object
+//======================================================================
+
+var Logo = function(alphabet, options) {
+  "use strict";
+  this.alphabet = alphabet;
+  this.fine_text = "";
+  this.x_axis = 1;
+  this.y_axis = true;
+  this.xlate_nsyms = 1;
+  this.xlate_start = null;
+  this.xlate_end = null;
+  this.pspm_list = [];
+  this.pspm_column = [];
+  this.rows = 0;
+  this.columns = 0;
+  if (typeof options === "string") {
+    // the old method signature had fine_text here so we support that
+    this.fine_text = options;
+  } else if (typeof options === "object" && options != null) {
+    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
+    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
+    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
+    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
+    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
+    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
+    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
+  }
+};
+
+Logo.prototype.add_pspm = function(pspm, column) {
+  "use strict";
+  var col;
+  if (typeof column === "undefined") {
+    column = 0;
+  } else if (column < 0) {
+    throw new Error("Column index out of bounds.");
+  }
+  this.pspm_list[this.rows] = pspm;
+  this.pspm_column[this.rows] = column;
+  this.rows++;
+  col = column + pspm.get_motif_length();
+  if (col > this.columns) {
+    this.columns = col;
+  }
+};
+
+Logo.prototype.get_columns = function() {
+  "use strict";
+  return this.columns;
+};
+
+Logo.prototype.get_xlate_nsyms = function() {
+  "use strict";
+  return this.xlate_nsyms;
+};
+
+Logo.prototype.get_xlate_start = function() {
+  "use strict";
+  return (this.xlate_start != null ? this.xlate_start : 0);
+};
+
+Logo.prototype.get_xlate_end = function() {
+  "use strict";
+  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
+};
+
+Logo.prototype.get_xlate_columns = function() {
+  "use strict";
+  return this.get_xlate_end() - this.get_xlate_start();
+};
+
+Logo.prototype.get_rows = function() {
+  "use strict";
+  return this.rows;
+};
+
+Logo.prototype.get_pspm = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_list[row_index];
+};
+
+Logo.prototype.get_offset = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_column[row_index];
+};
+
+Logo.prototype._as_eps_data = function(ssc, errbars) {
+  var i, j, pos, stack_pos, pspm, stack, sym, out;
+  out = "";
+  for (i = 0; i < this.rows; i++) {
+    out += "\nStartLine\n";
+    // Indent
+    for (j = 0; j < this.pspm_column[i]; j++) {
+      out += "() startstack\nendstack\n\n";
+    }
+    pspm = this.pspm_list[i];
+    if (pspm.get_left_trim() > 0) {
+      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
+    }
+    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
+      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
+        out += "DrawTrimEdge\nRestoreColour\n";
+      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
+        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
+      }
+      out += "(" + (pos + 1) + ") startstack\n";
+      stack = pspm.get_stack(pos, this.alphabet, ssc);
+      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
+        sym = stack[stack_pos];
+        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
+      }
+      if (errbars) {
+        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
+      }
+      out += "endstack\n\n";
+    }
+    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
+      out += "RestoreColour\n";
+    }
+    out += "EndLine\n";
+  }
+  return out;
+};
+
+Logo.prototype.as_eps = function(options) {
+  "use strict";
+  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
+  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
+  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
+
+  var LOGOHEIGHT = 7.5; // default height of line in cm
+  var cm2pts, height, width, now, ssc, errbars;
+  if (typeof options === "undefined") {
+    options = {};
+  }
+  cm2pts = 72 / 2.54;
+  if (typeof options.logo_height == "number") {
+    height = options.logo_height;
+  } else {
+    height = LOGOHEIGHT * this.rows;
+  }
+  if (typeof options.logo_width == "number") {
+    width = options.logo_width;
+  } else {
+    width = this.columns + 2;
+  }
+  now = new Date();
+  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
+  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
+  var values = {
+    "LOGOHEIGHT": height,
+    "LOGOWIDTH": width,
+    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
+    "BOUNDINGWIDTH": Math.round(width * cm2pts),
+    "LOGOLINEHEIGHT": (height / this.rows),
+    "CHARSPERLINE": this.columns,
+    "BARBITS": this.alphabet.get_ic(),
+    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
+    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
+    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
+    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
+    "TITLE": (typeof options.title == "string" ? options.title : ""),
+    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
+    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
+    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
+    "SSC": ssc,
+    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
+    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
+    "ERRBAR": errbars,
+    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
+    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
+    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
+    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
+    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
+    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
+    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
+    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
+    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
+    "COLORDICT": this.alphabet._as_eps_dict(),
+    "DATA": this._as_eps_data(ssc, errbars)
+  };
+  // now this requires that the script containing the template has been imported!
+  return motif_logo_template(values);
+};
+
+//======================================================================
+// end Logo object
+//======================================================================
+
+// calculate the exact size (in pixels) of an object drawn on the
+// canvas assuming that the background of the canvas is transparent.
+function canvas_bounds(ctx, cwidth, cheight) {
+  "use strict";
+  var data, r, c, top_line, bottom_line, left_line, right_line, 
+      txt_width, txt_height;
+
+  // extract the image data
+  data = ctx.getImageData(0, 0, cwidth, cheight).data;
+
+  // set initial values
+  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
+  txt_width = 0; txt_height = 0;
+
+  // Find the top-most line with a non-transparent 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;
+    }
+  }
+  
+  // Only bother looking if we found at least one set pixel... 
+  if (top_line != -1) {
+
+    //find the last line with a non-transparent pixel
+    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;
+      }
+    }
+    // calculate height
+    txt_height = bottom_line - top_line + 1;
+
+    // Find the left-most line with a non-transparent pixel
+    for (c = 0; c < cwidth; c++) {
+      for (r = top_line; r <= bottom_line; 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-transparent pixel
+    for (c = cwidth-1; c >= left_line; c--) {
+      for(r = top_line; r <= bottom_line; 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};
+}
+
+//======================================================================
+// 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).
+var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
+  "use strict";
+  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
+      i, sym, size, tenpercent, avg_width, scale, 
+      target_width, target_height;
+  //variable prototypes
+  this.alphabet = alphabet;
+  this.scale = logo_scale;
+  this.sym_cache = {};
+  this.stack_num_cache = [];
+  this.scale_num_cache = [];
+  // size of canvas
+  default_size = 60; // size of measuring canvas
+  safety_pad = 20; // pixels to pad around so we don't miss the edges
+  // create a canvas to do our measuring
+  canvas = document.createElement("canvas");
+  if (!canvas.getContext) throw new Error("No canvas support");
+  canvas.width = default_size + 2 * safety_pad;
+  canvas.height = default_size + 2 * safety_pad;
+  middle = Math.round(canvas.width / 2);
+  baseline = Math.round(canvas.height - safety_pad);
+  ctx = canvas.getContext('2d');
+  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
+  ctx.font = font;
+  ctx.textAlign = "center";
+  ctx.translate(middle, baseline);
+  // list of widths
+  widths = [];
+  sizes = [];
+  //now measure each letter in the alphabet
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    // reset the canvas
+    ctx.clearRect(0, 0, canvas.width, canvas.height);
+    ctx.fillStyle = alphabet.get_colour(i);
+    // draw the test text
+    ctx.fillText(alphabet.get_symbol(i), 0, 0);
+    //measure
+    size = canvas_bounds(ctx, canvas.width, canvas.height);
+    if (size.width === 0) throw new Error("Invisible symbol!");
+    widths.push(size.width);
+    sizes[i] = size;
+  }
+  //sort the widths
+  widths.sort(function(a,b) {return a - b;});
+  //drop 10% of the items off each end
+  tenpercent = Math.floor(widths.length / 10);
+  for (i = 0; i < tenpercent; ++i) {
+    widths.pop();
+    widths.shift();
+  }
+  //calculate average width
+  avg_width = 0;
+  for (i = 0; i < widths.length; ++i) {
+    avg_width += widths[i];
+  }
+  avg_width /= widths.length;
+  // calculate the target width
+  target_width = width * this.scale * 2;
+  // calculate scales
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    sym = alphabet.get_symbol(i);
+    size = sizes[i];
+    // calculate scale
+    scale = target_width / Math.max(avg_width, size.width);
+    // estimate scaled height
+    target_height = size.height * scale;
+    // create an appropriately sized canvas
+    canvas = document.createElement("canvas");
+    canvas.width = target_width;
+    canvas.height = target_height + safety_pad * 2;
+    // calculate the middle
+    middle = Math.round(canvas.width / 2);
+    // calculate the baseline
+    baseline = Math.round(canvas.height - safety_pad);
+    // get the context and prepare to draw the rasterized text
+    ctx = canvas.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 text
+    ctx.fillText(sym, 0, 0);
+    ctx.restore();
+    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
+  }
+};
+
+RasterizedAlphabet.prototype.get_alphabet = function() {
+  return this.alphabet;
+};
+
+RasterizedAlphabet.prototype.get_scale = function() {
+  return this.scale;
+};
+
+RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
+  "use strict";
+  var entry, image, size;
+  entry = this.sym_cache[letter];
+  image = entry.image;
+  size = entry.size;
+  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
+};
+
+RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
+  var image, image_ctx, text_length;
+  if (index >= this.stack_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.save();
+    image_ctx.font = font;
+    text_length = image_ctx.measureText("" + (index + 1)).width;
+    image_ctx.restore();
+    // resize the canvas to fit
+    image.width = Math.ceil(stack_width);
+    image.height = Math.ceil(text_length);
+    // draw the text
+    image_ctx = image.getContext('2d');
+    image_ctx.translate(Math.round(stack_width / 2), 0);
+    image_ctx.font = font;
+    image_ctx.textBaseline = "middle";
+    image_ctx.textAlign = "right";
+    image_ctx.rotate(-(Math.PI / 2));
+    image_ctx.fillText("" + (index + 1), 0, 0);
+    this.stack_num_cache[index] = image;
+  } else {
+    image = this.stack_num_cache[index];
+  }
+  ctx.drawImage(image, 0, 0);
+}
+
+RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
+  var image, image_ctx, text_size, m_length;
+  if (num >= this.scale_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.font = font;
+    text_size = image_ctx.measureText("" + num);
+    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
+    } else {
+      // measure width of 'm' to approximate height, we double it later anyway
+      m_length = image_ctx.measureText("m").width;
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(2 * m_length);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.textBaseline = "middle";
+      image_ctx.fillText("" + num, image.width, m_length);
+    }
+    this.scale_num_cache[num] = image;
+  } else {
+    image = this.scale_num_cache[num];
+  }
+  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
+}
+
+//======================================================================
+// end RasterizedAlphabet
+//======================================================================
+
+//======================================================================
+// start LogoMetrics object
+//======================================================================
+
+var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
+  "use strict";
+  var i, row_height;
+  //variable prototypes
+  this.pad_top = (has_names ? 5 : 0);
+  this.pad_left = (y_axis ? 10 : 0);
+  this.pad_right = (has_finetext ? 15 : 0);
+  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_axis = y_axis;
+  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_axis = x_axis;
+  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;
+  //calculate the width of the y axis numbers
+  ctx.font = this.y_num_font;
+  for (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)
+  if (x_axis == 1) {
+    ctx.font = this.x_num_font;
+    for (i = 1; i <= logo_columns; i++) {
+      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
+    }
+  } else if (x_axis == 0) {
+    this.x_num_height = 4;
+    this.x_num_width = 4;
+  } else {
+    this.x_num_height = 0;
+    this.x_num_width = 0;
+  }
+  
+  //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) {
+    row_height = this.stack_height + this.pad_middle;
+    if (has_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_axis ? this.y_num_height/2 : 0);
+
+  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
+  if (has_names) {
+    this.summed_height += fine_txt_total + this.name_height;
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + this.name_spacer);
+  } else {
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + fine_txt_total);
+  }
+
+  //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;
+  if (this.y_axis) {
+    //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;
+
+};
+
+//======================================================================
+// end LogoMetrics object
+//======================================================================
+
+//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
+function image_ok(img) {
+  "use strict";
+  // 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) {
+  "use strict";
+  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, raster) {
+  "use strict";
+  var tic_height, i;
+  tic_height = metrics.stack_height / alphabet_ic;
+  ctx.save();
+  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.rotate(-(Math.PI / 2));
+  ctx.textAlign = "center";
+  ctx.fillText("bits", 0, 0);
+  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);
+  for (i = 0; i <= alphabet_ic; i++) {
+    //draw the number
+    ctx.save();
+    ctx.translate(-1, 0);
+    raster.draw_scale_num(ctx, metrics.y_num_font, i);
+    ctx.restore();
+    //draw the tic
+    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
+    //prepare for next tic
+    ctx.translate(0, -tic_height);
+  }
+  ctx.restore();
+
+  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
+
+  ctx.restore();
+}
+
+function draw_stack_num(ctx, metrics, row_index, raster) {
+  "use strict";
+  ctx.save();
+  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
+  if (metrics.x_axis == 1) {
+    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
+  } else if (metrics.x_axis == 0) {
+    // draw dots instead of the numbers (good for small logos)
+    ctx.beginPath();
+    var radius = Math.round(metrics.x_num_height / 2);
+    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
+    ctx.fill();
+  }
+  ctx.restore();
+}
+
+function draw_stack(ctx, metrics, symbols, raster) {
+  "use strict";
+  var preferred_pad, sym_min, i, sym, sym_height, pad;
+  preferred_pad = 0;
+  sym_min = 5;
+
+  ctx.save();//1
+  ctx.translate(0, metrics.stack_height);
+  for (i = 0; i < symbols.length; i++) {
+    sym = symbols[i];
+    sym_height = metrics.stack_height * sym.get_scale();
+    
+    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
+    //translate past the padding
+    ctx.translate(0, -(pad/2));
+  }
+  ctx.restore();//1
+}
+
+function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
+  "use strict";
+  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
+  dx = x2 - x1;
+  dy = y2 - y1;
+  tlen = Math.pow(dx*dx + dy*dy, 0.5);
+  theta = Math.atan2(dy,dx);
+  mulx = Math.cos(theta);
+  muly = Math.sin(theta);
+  lx = [];
+  ly = [];
+  for (i = 0; i < pattern; ++i) {
+    lx.push(pattern[i] * mulx);
+    ly.push(pattern[i] * muly);
+  }
+  i = start;
+  x = x1;
+  y = y1;
+  len = 0;
+  ctx.beginPath();
+  while (len + pattern[i] < tlen) {
+    ctx.moveTo(x, y);
+    x += lx[i];
+    y += ly[i];
+    ctx.lineTo(x, y);
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+    x += lx[i];
+    y += ly[i];
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+  }
+  if (len < tlen) {
+    ctx.moveTo(x, y);
+    x += mulx * (tlen - len);
+    y += muly * (tlen - len);
+    ctx.lineTo(x, y);
+  }
+  ctx.stroke();
+}
+
+function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
+  "use strict";
+  var left_size = left_end - left_start;
+  var right_size = right_end - right_start;
+  var line_x;
+
+  ctx.save();//s8
+  ctx.fillStyle = "rgb(240, 240, 240)";
+  if (left_size > 0) {
+    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
+  }
+  if (right_size > 0) {
+    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
+  }
+  ctx.fillStyle = "rgb(51, 51, 51)";
+  if (left_size > 0 && left_divider) {
+    line_x = (left_end * metrics.stack_width) - 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  if (right_size > 0 && right_divider) {
+    line_x = (right_start * metrics.stack_width) + 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  ctx.restore();//s8
+}
+
+function size_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var draw_name, draw_finetext, metrics;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  if (canvas.width !== 0 && canvas.height !== 0) {
+    return;
+  }
+  metrics = new LogoMetrics(canvas.getContext('2d'), 
+      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
+    } else if (canvas.height === 0) {
+      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
+    }
+  }
+}
+
+function draw_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
+      offset, col_index, motif_position, ssc;
+  ssc = false;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  ctx = canvas.getContext('2d');
+  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
+  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      scale = 1;
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      scale = canvas.height / metrics.summed_height;
+      canvas.width = metrics.summed_width * scale;
+    } else if (canvas.height === 0) {
+      scale = canvas.width / metrics.summed_width;
+      canvas.height = metrics.summed_height * scale;
+    } else {
+      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
+    }
+  }
+  // cache the raster based on the assumption that we will be drawing a lot
+  // of logos the same size and alphabet
+  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
+    draw_logo_on_canvas.raster_cache = [];
+  }
+  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
+    raster = draw_logo_on_canvas.raster_cache[i];
+    if (raster.get_alphabet().equals(logo.alphabet) &&
+        Math.abs(raster.get_scale() - scale) < 0.1) break;
+    raster = null;
+  }
+  if (raster == null) {
+    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
+    draw_logo_on_canvas.raster_cache.push(raster);
+  }
+  ctx = canvas.getContext('2d');
+  ctx.save();//s1
+  ctx.scale(scale, scale);
+  ctx.save();//s2
+  ctx.save();//s7
+  //create margin
+  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
+  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
+    pspm = logo.get_pspm(pspm_i);
+    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
+      ctx.font = metrics.name_font;
+      ctx.textAlign = "center";
+      ctx.fillText(pspm.name, 0, 0);
+      ctx.restore();//s4
+      ctx.translate(0, Math.round(metrics.name_height + 
+          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
+    }
+    //draw scale
+    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
+    ctx.save();//s5
+    //translate across past the scale
+    if (logo.y_axis) {
+      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
+        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
+    }
+    //draw the trimming background
+    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
+      var left_start = offset * logo.get_xlate_nsyms();
+      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
+      var left_divider = true;
+      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
+        // no overlap
+        left_start = 0;
+        left_end = 0;
+        left_divider = false;
+      } else {
+        if (left_start < logo.get_xlate_start()) {
+          left_start = logo.get_xlate_start();
+        }
+        if (left_end > logo.get_xlate_end()) {
+          left_end = logo.get_xlate_end();
+          left_divider = false;
+        }
+        left_start -= logo.get_xlate_start();
+        left_end -= logo.get_xlate_start();
+        if (left_end < left_start) {
+          left_start = 0;
+          left_end = 0;
+          left_divider = false;
+        }
+      }
+      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
+      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
+      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
+      var right_divider = true;
+      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
+        // no overlap
+        right_start = 0;
+        right_end = 0;
+        right_divider = false;
+      } else {
+        if (right_start < logo.get_xlate_start()) {
+          right_start = logo.get_xlate_start();
+          right_divider = false;
+        }
+        if (right_end > logo.get_xlate_end()) {
+          right_end = logo.get_xlate_end();
+        }
+        right_start -= logo.get_xlate_start();
+        right_end -= logo.get_xlate_start();
+        if (right_end < right_start) {
+          right_start = 0;
+          right_end = 0;
+          right_divider = false;
+        }
+      }
+      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
+    }
+    //draw letters
+    var xlate_col;
+    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
+      ctx.translate(metrics.stack_pad_left,0);
+      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
+      if (xlate_col % logo.get_xlate_nsyms() == 0) {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          motif_position = col_index - offset;
+          draw_stack_num(ctx, metrics, motif_position, raster);
+          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
+        }
+      } else {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          ctx.save();// s5.1
+          ctx.translate(0, Math.round(metrics.stack_height));
+          // TODO draw a dot or dash or something to indicate continuity of the motif
+          ctx.restore(); //s5.1
+        }
+      }
+      ctx.translate(Math.round(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
+  if (logo.fine_text.length > 0) {
+    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) {
+  "use strict";
+  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) {
+  "use strict";
+  var logo = new Logo(alphabet, fine_text);
+  logo.add_pspm(pspm);
+  return logo;
+}
+
+function logo_2(alphabet, fine_text, target, query, query_offset) {
+  "use strict";
+  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) {
+  "use strict";
+  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, null, 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) {
+  "use strict";
+  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, null, scale);
+  //replace the element with the canvas
+  element.parentNode.replaceChild(canvas, element);
+}
+
+/*
+ * Fast string trimming implementation found at
+ * http://blog.stevenlevithan.com/archives/faster-trim-javascript
+ *
+ * Note that regex is good at removing leading space but
+ * bad at removing trailing space as it has to first go through
+ * the whole string.
+ */
+function trim (str) {
+  "use strict";
+  var ws, i;
+  str = str.replace(/^\s\s*/, '');
+  ws = /\s/; i = str.length;
+  while (ws.test(str.charAt(--i)));
+  return str.slice(0, i + 1);
+}
+</script>
+    <script>
+
+// PRIVATE GLOBAL (uhoh)
+var _block_colour_lookup = {};
+
+function block_colour(index) {
+  function hsl2rgb(hue, saturation, lightness) {
+    "use strict";
+    function _hue(p, q, t) {
+      "use strict";
+      if (t < 0) t += 1;
+      else if (t > 1) t -= 1;
+      if (t < (1.0 / 6.0)) {
+        return p + ((q - p) * 6.0 * t);
+      } else if (t < 0.5) {
+        return q;
+      } else if (t < (2.0 / 3.0)) {
+        return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+      } else {
+        return p;
+      }
+    }
+    function _pad_hex(value) {
+      var hex = Math.round(value * 255).toString(16);
+      if (hex.length < 2) hex = "0" + hex;
+      return hex;
+    }
+    var r, g, b, p, q;
+    if (saturation == 0) {
+      // achromatic (grayscale)
+      r = lightness;
+      g = lightness;
+      b = lightness;
+    } else {
+      if (lightness < 0.5) {
+        q = lightness * (1 + saturation);
+      } else {
+        q = lightness + saturation - (lightness * saturation);
+      }
+      p = (2 * lightness) - q;
+      r = _hue(p, q, hue + (1.0 / 3.0));
+      g = _hue(p, q, hue);
+      b = _hue(p, q, hue - (1.0 / 3.0));
+    }
+    return "#" + _pad_hex(r) + _pad_hex(g) + _pad_hex(b);
+  }
+  if (typeof index !== "number" || index % 1 !== 0 || index < 0) return "#000000";
+  // check for override
+  if (_block_colour_lookup[index] == null) {
+    var start = 0; //red
+    var sat = 100;
+    var light = 50;
+    var divisions = 1 << Math.ceil(Math.log(index + 1) / Math.LN2);
+    hue = start + (360 / divisions) * ((index - (divisions >> 1)) * 2 + 1);
+    // colour input fields only support values in the form #RRGGBB
+    _block_colour_lookup[index] = hsl2rgb(hue / 360, sat / 100, light / 100);
+  }
+  return _block_colour_lookup[index];
+}
+
+function set_block_colour(index, new_colour) {
+  _block_colour_lookup[index] = new_colour;
+  var blocks = document.querySelectorAll("div.block_motif[data-colour-index=\"" + index + "\"]");
+  var i;
+  for (i = 0; i < blocks.length; i++) {
+    blocks[i].style.backgroundColor = new_colour;
+  }
+  var swatches = document.querySelectorAll("div.legend_swatch[data-colour-index=\"" + index + "\"]");
+  var picker;
+  for (i = 0; i < swatches.length; i++) {
+    swatches[i].style.backgroundColor = new_colour;
+    picker = swatches[i].querySelector("input[type=\"color\"]");
+    if (picker != null) picker.value = new_colour;
+  }
+}
+
+function make_block_legend_entry(motif_name, motif_colour_index) {
+  if (typeof make_block_legend_entry.has_colour_picker !== "boolean") {
+    // test if colour picker is supported, based off Modernizer
+    // see http://stackoverflow.com/a/7787648/66387
+    make_block_legend_entry.has_colour_picker = (function() {
+      var doc_ele = document.documentElement;
+      // We first check to see if the type we give it sticks..
+      var input_ele = document.createElement('input');
+      input_ele.setAttribute('type', 'color');
+      var value_ok = input_ele.type !== 'text';
+      if (value_ok) {
+        // If the type does, we feed it a textual value, which shouldn't be valid.
+        // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+        var smile = ':)';
+        input_ele.value = smile;
+        input_ele.style.cssText = 'position:absolute;visibility:hidden;';
+        // chuck into DOM and force reflow for Opera bug in 11.00
+        // github.com/Modernizr/Modernizr/issues#issue/159
+        doc_ele.appendChild(input_ele);
+        doc_ele.offsetWidth;
+        value_ok = input_ele.value != smile;
+        doc_ele.removeChild(input_ele);
+      }
+      return value_ok;
+    })();
+  }
+  var entry = document.createElement("div");
+  entry.className = "legend_entry";
+  var swatch;
+  swatch = document.createElement("div");
+  swatch.className = "legend_swatch";
+  swatch.setAttribute("data-colour-index", motif_colour_index);
+  swatch.style.backgroundColor = block_colour(motif_colour_index);
+  if (make_block_legend_entry.has_colour_picker) {
+    var picker = document.createElement("input");
+    picker.type = "color";
+    picker.value = block_colour(motif_colour_index);
+    picker.addEventListener("change", function(e) {
+      set_block_colour(motif_colour_index, picker.value);
+    }, false);
+    swatch.addEventListener("click", function(e) {
+      picker.click();
+    }, false);
+    swatch.appendChild(picker);
+  }
+  entry.appendChild(swatch);
+  var name = document.createElement("div");
+  name.className = "legend_text";
+  name.appendChild(document.createTextNode(motif_name));
+  entry.appendChild(name);
+  return entry;
+}
+
+function make_block_ruler(max_len) {
+  var container = document.createElement("div");
+  container.className = "block_container";
+  var step;
+  if (max_len < 50) {
+    step = 1;
+  } else if (max_len < 100) {
+    step = 2;
+  } else if (max_len < 200) {
+    step = 4;
+  } else if (max_len < 500) {
+    step = 10;
+  } else if (max_len < 1000) {
+    step = 20;
+  } else if (max_len < 2000) {
+    step = 40;
+  } else if (max_len < 5000) {
+    step = 100;
+  } else if (max_len < 10000) {
+    step = 200;
+  } else if (max_len < 20000) {
+    step = 400;
+  } else {
+    step = Math.floor(max_len / 20000) * 400;
+  }
+  var peroid;
+  if (max_len < 10) {
+    peroid = 1;
+  } else if (max_len < 20) {
+    peroid = 2;
+  } else {
+    peroid = 5;
+  }
+  var i, cycle, offset, tic, label;
+  for (i = 0, cycle = 0; i < max_len; i += step, cycle = (cycle + 1) % peroid) {
+    offset = "" + ((i / max_len) * 100) + "%";
+    tic = document.createElement("div");
+    tic.style.left = offset;
+    tic.className = (cycle == 0 ? "tic_major" : "tic_minor");
+    container.appendChild(tic);
+    if (cycle == 0) {
+      label = document.createElement("div");
+      label.className = "tic_label";
+      label.style.left = offset;
+      label.appendChild(document.createTextNode(i));
+      container.appendChild(label);
+    }
+  }
+  return container;
+}
+
+function _calculate_block_needle_drag_pos(e, data) {
+  var mouse;
+  e = e || window.event;
+  if (e.pageX || ev.pageY) {
+    mouse = {"x": e.pageX, "y": e.pageY};
+  } else {
+    mouse = {
+      x:e.clientX + document.body.scrollLeft - document.body.clientLeft, 
+      y:e.clientY + document.body.scrollTop  - document.body.clientTop 
+    };
+  }
+  var cont = data.container;
+  var dragable_length = cont.clientWidth - 
+    (cont.style.paddingLeft ? cont.style.paddingLeft : 0) -
+    (cont.style.paddingRight ? cont.style.paddingRight : 0);
+  //I believe that the offset parent is the body
+  //otherwise I would need to make this recursive
+  //maybe clientLeft would work, but the explanation of
+  //it is hard to understand and it apparently doesn't work
+  //in firefox 2.
+  var diff = mouse.x - cont.offsetLeft;
+  if (diff < 0) diff = 0;
+  if (diff > dragable_length) diff = dragable_length;
+  var pos = Math.round(diff / dragable_length * data.max);
+  if (pos > data.len) pos = data.len;
+  return pos;
+}
+
+function _update_block_needle_drag(e, data, done) {
+  "use strict";
+  var pos = _calculate_block_needle_drag_pos(e, data);
+  // read the needle positions
+  var left = parseInt(data.llabel.textContent, 10) - data.off - 1;
+  var right = parseInt(data.rlabel.textContent, 10) - data.off;
+  // validate needle positions
+  if (left >= data.len) left = data.len - 1;
+  if (left < 0) left = 0;
+  if (right > data.len) right = data.len;
+  if (right <= left) right = left + 1;
+  // calculate the new needle positions
+  if (data.moveboth) {
+    var size = right - left;
+    if (data.isleft) {
+      if ((pos + size) > data.len) pos = data.len - size;
+      left = pos;
+      right = pos + size;
+    } else {
+      if ((pos - size) < 0) pos = size;
+      left = pos - size;
+      right = pos;
+    }
+  } else {
+    if (data.isleft) {
+      if (pos >= right) pos = right - 1;
+      left = pos;
+    } else {
+      if (pos <= left) pos = left + 1;
+      right = pos;
+    }
+  }
+  // update the needle positions
+  data.lneedle.style.left = "" + (left / data.max * 100) + "%";
+  data.llabel.textContent = "" + (left + data.off + 1);
+  data.rneedle.style.left = "" + (right / data.max * 100) + "%";
+  data.rlabel.textContent = "" + (right + data.off);
+  data.handler(left, right, done);
+}
+
+function _make_block_needle_drag_start_handler(isleft, data) {
+  return function (e) {
+    data.isleft = isleft;
+    data.moveboth = !(e.shiftKey);
+    document.addEventListener("mousemove", data.drag_during, false);
+    document.addEventListener("mouseup", data.drag_end, false);
+  };
+}
+
+function _make_block_needle_drag_end_handler(data) {
+  return function (e) {
+    document.removeEventListener("mousemove", data.drag_during, false);
+    document.removeEventListener("mouseup", data.drag_end, false);
+    _update_block_needle_drag(e, data, true);
+  };
+}
+
+function _make_block_needle_drag_during_handler(data) {
+  return function (e) {
+    _update_block_needle_drag(e, data, false);
+  };
+}
+
+// private function used by make_block_container
+function _make_block_needle(isleft, value, data) {
+  var vbar = document.createElement('div');
+  vbar.className = "block_needle " + (isleft ? "left" : "right");
+  vbar.style.left = "" + (value / data.max * 100)+ "%";
+  var label = document.createElement('div');
+  label.className = "block_handle " + (isleft ? "left" : "right");
+  // The needles sit between the sequence positions, so the left one sits at the
+  // start and the right at the end. This is why 1 is added to the displayed
+  // value for a left handle as the user doesn't need to know about this detail
+  label.textContent = "" + (isleft ? value + data.off + 1 : value + data.off);
+  label.unselectable = "on"; // so IE and Opera don't select the text, others are done in css
+  label.title = "Drag to move the displayed range. Hold shift and drag to change " + (isleft ? "lower" : "upper") + " bound of the range.";
+  vbar.appendChild(label);
+  if (isleft) {
+    data.lneedle = vbar;
+    data.llabel = label;
+  } else {
+    data.rneedle = vbar;
+    data.rlabel = label;
+  }
+  label.addEventListener("mousedown", _make_block_needle_drag_start_handler(isleft, data), false);
+  return vbar;
+}
+
+function make_block_container(is_stranded, has_both_strands, max_len, show_len, offset, range_handler) {
+  offset = (offset != null ? offset : 0);
+  // make the container for the block diagram
+  var container = document.createElement("div");
+  container.className = "block_container";
+  container.setAttribute("data-max", max_len);
+  container.setAttribute("data-off", offset);
+  if (is_stranded) {
+    var plus = document.createElement("div");
+    plus.appendChild(document.createTextNode("+"));
+    plus.className = "block_plus_sym";
+    container.appendChild(plus);
+    if (has_both_strands) {
+      var minus = document.createElement("div");
+      minus.appendChild(document.createTextNode("-"));
+      minus.className = "block_minus_sym";
+      container.appendChild(minus);
+    }
+  }
+  var rule = document.createElement("div");
+  rule.className = "block_rule";
+  rule.style.width = ((show_len / max_len) * 100) + "%";
+  container.appendChild(rule);
+  if (range_handler != null) {
+    var range_data = {
+      "max": max_len,
+      "len": show_len,
+      "off": offset,
+      "handler": range_handler,
+      "container": container,
+      "lneedle": null, "llabel": null,
+      "rneedle": null, "rlabel": null,
+      "isleft": false, "moveboth" : false
+    };
+    range_data.drag_during = _make_block_needle_drag_during_handler(range_data);
+    range_data.drag_end = _make_block_needle_drag_end_handler(range_data);
+    container.appendChild(_make_block_needle(false, 1, range_data)); // add right first so z-index works
+    container.appendChild(_make_block_needle(true, 0, range_data));
+  }
+  return container;
+}
+
+function make_block_label(container, max_len, pos, length, message) {
+  "use strict";
+  var label = document.createElement("div");
+  label.className = "block_label";
+  label.style.left = (((pos + (length / 2)) / max_len) * 100) + "%";
+  label.appendChild(document.createTextNode(message));
+  container.appendChild(label);
+}
+
+function make_block(container, max_len,
+    site_pos, site_len, site_pvalue, site_rc, site_colour_index, site_secondary) {
+  "use strict";
+  var block_height, block, block_region1, block_region2;
+  var max_block_height = 12;
+  var max_pvalue = 1e-10;
+  // calculate the height of the block
+  block_height = (site_pvalue < max_pvalue ? max_block_height : 
+      (Math.log(site_pvalue) / Math.log(max_pvalue)) * max_block_height);
+  if (block_height < 1) block_height = 1;
+  // create a block to represent the motif
+  block = document.createElement("div");
+  block.className = "block_motif" + (site_secondary ? " scanned_site" : "") + (site_rc ? " bottom" : " top");
+  block.style.left = ((site_pos / max_len) * 100) + "%";
+  block.style.top = (!site_rc ? max_block_height - block_height : 
+      max_block_height + 1) + "px";
+  block.style.width = ((site_len / max_len) * 100) + "%";
+  block.style.height = block_height + "px";
+  block.style.backgroundColor = block_colour(site_colour_index);
+  block.setAttribute("data-colour-index", site_colour_index);
+  // add to container
+  container.appendChild(block);
+  var activator = function (e) {
+    toggle_class(block, "active", true);
+    var new_e = new e.constructor(e.type, e);
+    block.dispatchEvent(new_e);
+  };
+  var deactivator = function (e) {
+    toggle_class(block, "active", false);
+    var new_e = new e.constructor(e.type, e);
+    block.dispatchEvent(new_e);
+  }
+  // create a larger region to detect mouseover for the block
+  block_region1 = document.createElement("div");
+  block_region1.className = "block_region top" + 
+    (site_secondary ? " scanned_site" : "") + (site_rc ? "" : " main");
+  block_region1.style.left = block.style.left;
+  block_region1.style.width = block.style.width;
+  block_region1.addEventListener('mouseover', activator, false);
+  block_region1.addEventListener('mouseout', deactivator, false);
+  container.appendChild(block_region1);
+  block_region2 = document.createElement("div");
+  block_region2.className = "block_region bottom" + 
+    (site_secondary ? " scanned_site" : "") + (site_rc ? " main" : "");
+  block_region2.style.left = block.style.left;
+  block_region2.style.width = block.style.width;
+  block_region2.addEventListener('mouseover', activator, false);
+  block_region2.addEventListener('mouseout', deactivator, false);
+  container.appendChild(block_region2);
+  return block;
+}
+
+function set_block_needle_positions(containingNode, start, end) {
+  var container, lneedle, llabel, rneedle, rlabel, max, off, left, right;
+  container = (/\bblock_container\b/.test(containingNode.className) ? containingNode : containingNode.querySelector(".block_container"));
+  max = parseInt(container.getAttribute("data-max"), 10);
+  off = parseInt(container.getAttribute("data-off"), 10);
+  left = start - off;
+  right = end - off;
+  lneedle = containingNode.querySelector(".block_needle.left");
+  llabel = lneedle.querySelector(".block_handle.left");
+  rneedle = containingNode.querySelector(".block_needle.right");
+  rlabel = rneedle.querySelector(".block_handle.right");
+  // update the needle positions
+  lneedle.style.left = "" + (left / max * 100) + "%";
+  llabel.textContent = "" + (left + off + 1);
+  rneedle.style.left = "" + (right / max * 100) + "%";
+  rlabel.textContent = "" + (right + off);
+}
+
+function get_block_needle_positions(containingNode) {
+  var container, llabel, rlabel, max, off, left, right;
+  container = (/\bblock_container\b/.test(containingNode.className) ? containingNode : containingNode.querySelector(".block_container"));
+  max = parseInt(container.getAttribute("data-max"), 10);
+  off = parseInt(container.getAttribute("data-off"), 10);
+  llabel = containingNode.querySelector(".block_needle.left > .block_handle.left");
+  rlabel = containingNode.querySelector(".block_needle.right > .block_handle.right");
+  left = parseInt(llabel.textContent, 10) - off - 1;
+  right = parseInt(rlabel.textContent, 10) - off;
+  return {"start": left + off, "end": right + off};
+}
+</script>
+    <script>
+function make_alpha_bg_table(alph, freqs) {
+  function colour_symbol(index) {
+    var span = document.createElement("span");
+    span.appendChild(document.createTextNode(alph.get_symbol(index)));
+    span.style.color = alph.get_colour(index);
+    span.className = "alpha_symbol";
+    return span;
+  }
+  var table, thead, tbody, row, th, span, i;
+  // create table
+  table = document.createElement("table");
+  table.className = "alpha_bg_table";
+  // create header
+  thead = document.createElement("thead");
+  table.appendChild(thead);
+  row = thead.insertRow(thead.rows.length);
+  if (alph.has_complement()) {
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+  } else {
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+  }
+  // add alphabet entries
+  tbody = document.createElement("tbody");
+  table.appendChild(tbody);
+  if (alph.has_complement()) {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      var c = alph.get_complement(i);
+      if (i > c) continue;
+      row = tbody.insertRow(tbody.rows.length);
+      add_text_cell(row, alph.get_name(i));
+      if (freqs != null) add_text_cell(row, "" + freqs[i].toFixed(3));
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(i).toFixed(3));
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, "~");
+      add_cell(row, colour_symbol(c)); 
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(c).toFixed(3));
+      if (freqs != null) add_text_cell(row, "" + freqs[c].toFixed(3));
+      add_text_cell(row, alph.get_name(c));
+    }
+  } else {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      row = tbody.insertRow(tbody.rows.length);
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, alph.get_name(i));
+      if (freqs != null) add_text_cell(row, "" + freqs[i].toFixed(3));
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(i).toFixed(3));
+    }
+  }
+  return table;
+}
+
+</script>
+    <script>
+var current_motif = 0;
+var meme_alphabet = new Alphabet(data.alphabet, data.background.freqs);
+
+var DelayLogoTask = function(logo, canvas) {
+  this.logo = logo;
+  this.canvas = canvas;
+};
+
+DelayLogoTask.prototype.run = function () {
+  draw_logo_on_canvas(this.logo, this.canvas, false);
+};
+
+function motif_pspm(index) {
+  var motif, pwm, psm, name, ltrim, rtrim, nsites, evalue;
+  // get motif
+  motif = data["motifs"][index];
+  // get motif paramters
+  pwm = motif["pwm"]; 
+  psm = motif["psm"];
+  name = "" + (index + 1); ltrim = 0; rtrim = 0; 
+  nsites = motif["nsites"]; evalue = motif["evalue"];
+  // make pspm
+  return new Pspm(pwm, name, ltrim, rtrim, nsites, evalue, psm);
+}
+
+function motif_count_matrix(index) {
+  return motif_pspm(index).as_count_matrix();
+}
+
+function motif_prob_matrix(index) {
+  return motif_pspm(index).as_probability_matrix();
+}
+
+function motif_minimal_meme(index) {
+  return motif_pspm(index).as_meme({
+    "with_header": true, 
+    "with_pspm": true,
+    "with_pssm": true,
+    "version": data["version"],
+    "alphabet": meme_alphabet,
+    "strands": (meme_alphabet.has_complement() && data.options.revcomp ? 2 : 1)
+  });
+}
+
+function motif_fasta(index) {
+  "use strict";
+  var motif, sites, site, seq, sequences, sequence, i, num, counter, out;
+  counter = {};
+  sequences = data["sequence_db"]["sequences"];
+  motif = data["motifs"][index];
+  sites = motif["sites"];
+  out = "";
+  for (i = 0; i < sites.length; i++) {
+    site = sites[i];
+    seq = site["seq"];
+    sequence = sequences[seq];
+    counter[seq] = (num = counter[seq]) ? (++num) : (num = 1); // inc counter
+    if (i !== 0) {out += "\n";}
+    out += ">" + sequence["name"] + "_site_" + num + " offset= " + site["pos"] + 
+      (site["rc"] ? " RC\n" : "\n");
+    out += site["match"];
+  }
+  return out;
+}
+
+function motif_raw(index) {
+  "use strict";
+  var sites, i, out;
+  sites = data["motifs"][index]["sites"];
+  out = "";
+  for (i = 0; i < sites.length; i++) {
+    if (i !== 0) {out += "\n";}
+    out += sites[i]["match"];
+  }
+  return out;
+}
+
+function clone_template(template) {
+  "use strict";
+  var node, help_btns, i, button;
+  node = $(template).cloneNode(true);
+  toggle_class(node, "template", false);
+  node.id = "";
+  help_btns = node.querySelectorAll(".help");
+  for (i = 0; i < help_btns.length; i++) {
+    button = help_btns[i];
+    if (button.hasAttribute("data-topic")) {
+      button.tabIndex = "0";
+      button.addEventListener("click", __toggle_help, false);
+      button.addEventListener("keydown", __toggle_help, false);
+    }
+  }
+  return node;
+}
+
+function set_tvar(template, tvar, value) {
+  var node;
+  node = find_child(template, tvar);
+  if (node === null) {
+    throw new Error("Template does not contain variable " + tvar);
+  }
+  node.innerHTML = "";
+  if (typeof value !== "object") {
+    node.appendChild(document.createTextNode(value));
+  } else {
+    node.appendChild(value);
+  }
+}
+
+function make_logo(alphabet, pspm, rc, offset, className) {
+  if (rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, "");
+  logo.add_pspm(pspm, offset);
+  var canvas = document.createElement('canvas');
+  canvas.height = 50;
+  canvas.width = 0;
+  canvas.className = className;
+  size_logo_on_canvas(logo, canvas, false);
+  add_draw_task(canvas, new DelayLogoTask(logo, canvas));
+  return canvas;
+}
+
+function make_small_logo(alphabet, pspm, options) {
+  if (typeof options === "undefined") options = {};
+  if (options.rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, {x_axis: false, y_axis: false});
+  logo.add_pspm(pspm, (typeof options.offset === "number" ? options.offset : 0));
+  var canvas = document.createElement('canvas');
+  if (typeof options.className === "string") canvas.className = options.className;
+  if (typeof options.width === "number" && options.width > 0) {
+    canvas.height = 0;
+    canvas.width = options.width;
+    draw_logo_on_canvas(logo, canvas, false);
+  } else {
+    draw_logo_on_canvas(logo, canvas, false, 1/3);
+  }
+  return canvas;
+}
+
+function make_large_logo(alphabet, pspm, rc, offset, className) {
+  if (rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, "");
+  logo.add_pspm(pspm, offset);
+  var canvas = document.createElement('canvas');
+  canvas.height = 200;
+  canvas.width = 0;
+  canvas.className = className;
+  size_logo_on_canvas(logo, canvas, false);
+  add_draw_task(canvas, new DelayLogoTask(logo, canvas));
+  return canvas;
+}
+
+function make_sym_btn(symbol, title, action) {
+  var box;
+  box = document.createElement("div");
+  box.tabIndex = 0;
+  box.className = "sym_btn";
+  box.appendChild(document.createTextNode(symbol));
+  box.title = title;
+  box.addEventListener('click', action, false);
+  box.addEventListener('keydown', action, false);
+  return box;
+}
+
+function make_seq(alphabet, seq) {
+  var i, j, letter, lbox, sbox;
+  sbox = document.createElement("span");
+  for (i = 0; i < seq.length; i = j) {
+    letter = seq.charAt(i);
+    for (j = i+1; j < seq.length; j++) {
+      if (seq.charAt(j) !== letter) {
+        break;
+      }
+    }
+    lbox = document.createElement("span");
+    lbox.style.color = alphabet.get_colour(alphabet.get_index(letter));
+    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
+    sbox.appendChild(lbox);
+  }
+  return sbox;
+}
+
+//
+// make_pv_text
+//
+// Returns the string p-value, with the p italicised.
+///
+function make_pv_text() {
+  var pv_text = document.createElement("span");
+  var pv_italic_text = document.createElement("span");
+  pv_italic_text.appendChild(document.createTextNode("p"));
+  pv_italic_text.style.fontStyle = "italic";
+  pv_text.appendChild(pv_italic_text);
+  pv_text.appendChild(document.createTextNode("-value"));
+  return pv_text;
+}
+
+function append_site_entries(tbody, motif, site_index, count) {
+  "use strict";
+  var i, end;
+  var sites, site, sequences, sequence;
+  var rbody;
+  if (typeof count !== "number") {
+    count = 20;
+  }
+  sequences = data["sequence_db"]["sequences"];
+  sites = motif["sites"];
+  end = Math.min(site_index + count, sites.length);
+  for (i = site_index; i < end; i++) {
+    site = sites[i];
+    sequence = sequences[site["seq"]];
+
+    rbody = tbody.insertRow(tbody.rows.length);
+    add_text_cell(rbody, "" + (site["seq"] + 1) + ".", "site_num");
+    add_text_cell(rbody, sequence["name"], "site_name");
+    add_text_cell(rbody, site["rc"] ? "-" : "+", "site_strand");
+    add_text_cell(rbody, site["pos"] + 1, "site_start");
+    add_text_cell(rbody, site["pvalue"].toExponential(2), "site_pvalue");
+    add_text_cell(rbody, site["lflank"], "site lflank");
+    add_cell(rbody, make_seq(meme_alphabet, site["match"]), "site match");
+    add_text_cell(rbody, site["rflank"], "site rflank");
+  }
+  return i;
+}
+
+function make_site_entries() {
+  "use strict";
+  var region;
+  region = this;
+  if (region.data_site_index >= region.data_motif["sites"].length) {
+    // all sites created
+    region.removeEventListener('scroll', make_site_entries, false);
+    return;
+  }
+  // if there's still 100 pixels to scroll than don't do anything yet
+  if (region.scrollHeight - (region.scrollTop + region.offsetHeight) > 100) {
+    return;
+  }
+
+  region.data_site_index = append_site_entries(
+      find_child(region, "sites_tbl").tBodies[0], 
+      region.data_motif, region.data_site_index, 20
+    ); 
+}
+
+function make_sites(motif) {
+  "use strict";
+  function add_site_header(row, title, nopad, help_topic, tag_class) {
+    var div, divcp, th;
+    th = document.createElement("th");
+    div = document.createElement("div");
+    div.className = "sites_th_inner";
+    if (typeof title !== "object") {
+      title = document.createTextNode("" + title);
+    }
+    div.appendChild(title);
+    if (help_topic) {
+      div.appendChild(document.createTextNode("\xA0"));
+      div.appendChild(help_button(help_topic));
+    }
+    divcp = div.cloneNode(true);
+    divcp.className = "sites_th_hidden";
+    th.appendChild(div);
+    th.appendChild(divcp);
+    if (nopad) {
+      th.className = "nopad";
+    }
+    if (tag_class) {
+      th.className += " " + tag_class;
+    }
+    row.appendChild(th);
+  }
+  var outer_tbl, inner_tbl, tbl, thead, tbody, rhead;
+
+  outer_tbl = document.createElement("div");
+  outer_tbl.className = "sites_outer";
+
+  inner_tbl = document.createElement("div");
+  inner_tbl.className = "sites_inner";
+  outer_tbl.appendChild(inner_tbl);
+
+  tbl = document.createElement("table");
+  tbl.className = "sites_tbl";
+  inner_tbl.appendChild(tbl);
+
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+
+  rhead = thead.insertRow(thead.rows.length);
+  add_site_header(rhead, "", true);
+  add_site_header(rhead, "Name", false, "pop_seq_name");
+  add_site_header(rhead, "Strand", false, "pop_site_strand", "site_strand_title");
+  add_site_header(rhead, "Start", false, "pop_site_start");
+  add_site_header(rhead, make_pv_text(), false, "pop_site_pvalue");
+  add_site_header(rhead, "", false);
+  add_site_header(rhead, "Sites", true, "pop_site_match");
+  add_site_header(rhead, "", false);
+
+  inner_tbl.data_motif = motif;
+  inner_tbl.data_site_index = append_site_entries(tbody, motif, 0, 20);
+  if (inner_tbl.data_site_index < motif["sites"].length) {
+    inner_tbl.addEventListener('scroll', make_site_entries, false);
+  }
+  return outer_tbl;
+}
+
+function make_motif_table_entry(row, alphabet, ordinal, motif, colw) {
+  "use strict";
+  function ev_sig(evalue_str) {
+    "use strict";
+    var ev_re, match, sig, exp, num;
+    ev_re = /^(.*)e(.*)$/;
+    if (match = ev_re.exec(evalue_str)) {
+      sig = parseFloat(match[1]);
+      exp = parseInt(match[2]);
+      if (exp >= 0) {
+        return false;
+      } else if (exp <= -3) {
+        return true;
+      } else {
+        return sig * Math.pow(10, exp) <= 0.05;
+      }
+    }
+    return true;
+  }
+  function make_preview(alphabet, motif) {
+    "use strict";
+    var pspm, preview, preview_rc;
+    var box, btn_box, logo_box, btn_plus, btn_minus;
+    if (motif["preview_logo"]) {
+      preview = motif["preview_logo"];
+      preview_rc = motif["preview_logo_rc"];
+    } else {
+      pspm = new Pspm(motif["pwm"]);
+      preview = make_logo(alphabet, pspm);
+      motif["preview_logo"] = preview;
+      if (alphabet.has_complement()) {
+        preview_rc = make_logo(alphabet, pspm, true, 0, "logo_rc");
+        motif["preview_logo_rc"] = preview_rc;
+      }
+    }
+    if (preview_rc) {
+      btn_plus = document.createElement("div");
+      btn_plus.appendChild(document.createTextNode("+"));
+      btn_plus.className = "preview_btn plus";
+      btn_plus.tabIndex = "0";
+      btn_plus.addEventListener("click", action_btn_rc, false);
+      btn_plus.addEventListener("keydown", action_btn_rc, false);
+      btn_minus = document.createElement("div");
+      btn_minus.appendChild(document.createTextNode("-"));
+      btn_minus.className = "preview_btn minus";
+      btn_minus.tabIndex = "0";
+      btn_minus.addEventListener("click", action_btn_rc, false);
+      btn_minus.addEventListener("keydown", action_btn_rc, false);
+      btn_box = document.createElement("div");
+      btn_box.className = "preview_btn_box";
+      btn_box.appendChild(btn_plus);
+      btn_box.appendChild(btn_minus);
+    }
+    logo_box = document.createElement("div");
+    logo_box.className = "preview_logo_box";
+    logo_box.appendChild(preview);
+    if (preview_rc) logo_box.appendChild(preview_rc);
+    box = document.createElement("div");
+    box.className = "preview_box";
+    if (preview_rc) box.appendChild(btn_box);
+    box.appendChild(logo_box);
+    if (preview_rc) {
+      if (motif["rc"]) {
+        btn_minus.className += " active";
+        logo_box.className += " show_rc_logo";
+      } else {
+        btn_plus.className += " active";
+      }
+    }
+    return box;
+  }
+  var pspm, preview, preview_rc, c;
+  row.data_motif = motif;
+  row.data_ordinal = ordinal;
+  if (!ev_sig(motif["evalue"])) {
+    row.style.opacity = 0.4;
+  }
+  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
+  add_cell(row, make_preview(alphabet, motif), "motif_logo");
+  add_text_cell(row, motif["evalue"], "motif_evalue");
+  add_text_cell(row, motif["nsites"], "motif_nsites");
+  add_text_cell(row, motif["len"], "motif_width");
+  add_cell(row, make_sym_btn("\u21A7", "Show more information.", 
+        action_show_more), "motif_more");
+  add_cell(row, 
+      make_sym_btn("\u21E2", 
+        "Submit the motif to another MEME Suite program or download it.",
+        action_show_outpop), 
+      "motif_submit");
+  if (colw) {
+    for (c = 0; c < row.cells.length; c++) {
+      row.cells[c].style.minWidth = colw[c] + "px";
+    }
+  }
+}
+
+function make_motifs_table(alphabet, start_ordinal, motifs, colw, stop_reason) {
+  var i, j;
+  var tbl, thead, tbody, tfoot, row, preview;
+  var motif, pspm;
+
+  tbl = document.createElement("table");
+  
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+  tfoot = document.createElement("tfoot");
+  tbl.appendChild(tfoot);
+
+  row = thead.insertRow(thead.rows.length);
+  add_text_header_cell(row, "", "", "motif_ordinal");
+  add_text_header_cell(row, "Logo", "", "motif_logo");
+  add_text_header_cell(row, "E-value", "pop_ev", "motif_evalue");
+  add_text_header_cell(row, "Sites", "pop_sites", "motif_nsites");
+  add_text_header_cell(row, "Width", "pop_width", "motif_width");
+  add_text_header_cell(row, "More", "pop_more", "motif_more");
+  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
+
+  for (i = 0; i < motifs.length; i++) {
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, alphabet, start_ordinal + i, motifs[i], colw);
+  }
+
+  row = tfoot.insertRow(tfoot.rows.length);
+  add_text_header_cell(row, stop_reason, "", "stop_reason", "", 6);
+
+  return tbl;
+}
+
+function make_expanded_motif(alphabet, ordinal, motif, less_x, submit_x) {
+  "use strict";
+  var box, pspm, logo_box, large_logo, large_logo_rc, tab_logo, tab_logo_rc;
+  var btn, offset, norc;
+
+  box = clone_template("tmpl_motif_expanded");
+  box.data_motif = motif;
+  box.data_ordinal = ordinal;
+
+  pspm = new Pspm(motif["pwm"]);
+  if (typeof motif["rc"] !== "boolean") {
+    motif["rc"] = false;
+  }
+  if (motif["large_logo"]) {
+    large_logo = motif["large_logo"];
+    large_logo_rc = motif["large_logo_rc"];
+  } else {
+    large_logo = make_large_logo(alphabet, pspm, false, 0);
+    motif["large_logo"] = large_logo;
+    if (alphabet.has_complement()) {
+      large_logo_rc = make_large_logo(alphabet, pspm, true, 0, "logo_rc");
+      motif["large_logo_rc"] = large_logo_rc;
+    }
+  }
+  norc = (large_logo_rc == null);
+  toggle_class(box, "norc", norc);
+
+  logo_box = find_child(box, "tvar_logo");
+  logo_box.appendChild(large_logo);
+  if (large_logo_rc) logo_box.appendChild(large_logo_rc);
+  toggle_class(logo_box, "show_rc_logo", motif["rc"]);
+
+  tab_logo = find_child(box, "tvar_tab");
+  tab_logo_rc = find_child(box, "tvar_tab_rc");
+
+  toggle_class(tab_logo, "activeTab", !motif["rc"]);
+  toggle_class(tab_logo_rc, "activeTab", motif["rc"]);
+
+  tab_logo.addEventListener('click', action_rc_tab, false);
+  tab_logo.addEventListener('keydown', action_rc_tab, false);
+  tab_logo_rc.addEventListener('click', action_rc_tab, false);
+  tab_logo_rc.addEventListener('keydown', action_rc_tab, false);
+
+  set_tvar(box, "tvar_ordinal", ordinal); 
+  set_tvar(box, "tvar_evalue", motif["evalue"]);
+  set_tvar(box, "tvar_width", motif["len"]);
+  set_tvar(box, "tvar_site_count", motif["nsites"]);
+  set_tvar(box, "tvar_llr", motif["llr"]);
+  set_tvar(box, "tvar_ic", motif["ic"]);
+  set_tvar(box, "tvar_re", motif["re"]);
+  set_tvar(box, "tvar_bt", motif["bt"]);
+  set_tvar(box, "tvar_sites", make_sites(motif));
+
+  offset = 32; // 1* 5px padding + 2 * 10px padding + 2 * 2px border + 3px ??
+
+  btn = find_child(box, "tvar_less");
+  btn.style.left = (less_x - offset) + "px";
+  btn.addEventListener('click', action_show_less, false);
+  btn.addEventListener('keydown', action_show_less, false);
+  btn = find_child(box, "tvar_submit");
+  btn.style.left = (submit_x - offset) + "px";
+  btn.addEventListener('click', action_show_outpop, false);
+  btn.addEventListener('keydown', action_show_outpop, false);
+  return box;
+}
+
+
+//
+//
+///
+function make_motifs() {
+  "use strict";
+  function pixel_value(str_in) {
+    "use strict";
+    var px_re, match;
+    px_re = /^(\d+)px$/;
+    if (match = px_re.exec(str_in)) {
+      return parseInt(match[1], 10);
+    }
+    return 0;
+  }
+  var container, tbl;
+  var colw, r, row, c, cell, cell_style, pad_left, pad_right;
+
+  // make the motifs table
+  container = $("motifs");
+  container.innerHTML = ""; // clear content
+
+  tbl = make_motifs_table(meme_alphabet, 1, data["motifs"], colw, data["stop_reason"]);
+  container.appendChild(tbl);
+
+  // measure table column widths
+  colw = [];
+  row = tbl.tBodies[0].rows[0];
+  for (c = 0; c < row.cells.length; c++) {
+    var padLeft, padRight;
+    cell = row.cells[c];
+    cell_style = window.getComputedStyle(cell, null);
+    pad_left = pixel_value(cell_style.getPropertyValue("padding-left"));
+    pad_right = pixel_value(cell_style.getPropertyValue("padding-right"));
+    colw[c] = cell.clientWidth - pad_left - pad_right;
+    if (typeof colw[c] !== "number" || colw[c] < 0) {
+      colw[c] = 1;
+    }
+  }
+
+  // set minimum table column widths on each row so later when we remove rows it still aligns
+  for (r = 0; r < tbl.tBodies[0].rows.length; r++) {
+    row = tbl.tBodies[0].rows[r];
+    for (c = 0; c < row.cells.length; c++) {
+      row.cells[c].style.minWidth = colw[c] + "px";
+    }
+  }
+
+  // store the table column widths so we can create rows latter with the same minimums
+  container.data_colw = colw;
+
+  // calculate the x offset for the buttons
+  row = tbl.tBodies[0].rows[0];
+  container.data_more_x = coords(find_child(find_child(row, "motif_more"), "sym_btn"))[0];
+  container.data_submit_x = coords(find_child(find_child(row, "motif_submit"), "sym_btn"))[0];
+
+  draw_on_screen();
+}
+
+function make_meme_block(container, max_seq_len, is_scan, site) {
+  "use strict";
+  var motif = data.motifs[site.motif];
+  var block = make_block(container, max_seq_len, site.pos, motif.len,
+      site.pvalue, site.rc, site.motif, is_scan);
+  var handler = (is_scan ?
+      make_scan_popup(site, motif, block) :
+      make_block_popup(site, motif, block));
+  block.addEventListener("mouseover", handler, false);
+  block.addEventListener("mouseout", handler, false);
+}
+
+function append_blocks_entries(tbody, seq_index, count) {
+  "use strict";
+  var i, end, j;
+  var max_pvalue, max_block_height, max_seq_len, sequences;
+  var sequence, sites, scans, scan;
+  var container, plus, minus, rule, row;
+  // define some constants
+  max_seq_len = data.sequence_db.max_length;
+  // determine how many to load
+  end = Math.min(seq_index + count, data.sequence_db.sequences.length);
+  for (i = seq_index; i < end; i++) {
+    // get the sequence
+    sequence = data.sequence_db.sequences[i];
+    // make the containers for the block diagram
+    container = make_block_container(meme_alphabet.has_complement(),
+        data.options.revcomp, max_seq_len, sequence.length);
+    // create blocks for the motif sites
+    sites = sequence["sites"];
+    for (j = 0; j < sites.length; j++)
+      make_meme_block(container, max_seq_len, false, sites[j]);
+    // create blocks for the scanned sites
+    scan = data.scan[i];
+    for (j = 0; j < scan.sites.length; j++)
+      make_meme_block(container, max_seq_len, true, scan.sites[j]);
+    // create a row for the sequence
+    row = tbody.insertRow(tbody.rows.length);
+    toggle_class(row, "empty_seq", sites.length == 0 && scan.sites.length == 0);
+    toggle_class(row, "only_scan", sites.length == 0 && scan.sites.length > 0);
+    add_text_cell(row, (i + 1) + ".", "blockdiag_num");
+    add_text_cell(row, sequence["name"], "blockdiag_name");
+    add_text_cell(row, scan["pvalue"].toExponential(2), "blockdiag_pvalue");
+    add_cell(row, container, "block_td"); 
+  }
+  return end;
+}
+
+function make_blocks_entries() {
+  "use strict";
+  var region;
+  region = this;
+  if (region.data_blocks_index >= data["sequence_db"]["sequences"].length) {
+    // all sites created
+    region.removeEventListener('scroll', make_blocks_entries, false);
+    return;
+  }
+  // if there's still 100 pixels to scroll than don't do anything yet
+  if (region.scrollHeight - (region.scrollTop + region.offsetHeight) > 100) {
+    return;
+  }
+
+  region.data_blocks_index = append_blocks_entries(
+      find_child(region, "blocks_tbl").tBodies[0], 
+      region.data_blocks_index, 20
+    ); 
+}
+
+function make_blocks() {
+  "use strict";
+  function add_seqs_filter(container, id, checked, label_text, help_topic) {
+    "use strict";
+    var label, radio;
+    radio = document.createElement("input");
+    radio.type = "radio";
+    radio.name = "seqs_display";
+    radio.id = id;
+    radio.checked = checked;
+    radio.addEventListener('click', action_seqs_filter, false);
+    label = document.createElement("label");
+    label.appendChild(document.createTextNode(label_text));
+    label.htmlFor = id;
+    container.appendChild(radio);
+    container.appendChild(label);
+    if (help_topic) {
+      container.appendChild(document.createTextNode("\xA0"));
+      container.appendChild(help_button(help_topic));
+    }
+  }
+  function add_blocks_header(row, title, nopad, help_topic) {
+    "use strict";
+    var div, divcp, th;
+    th = document.createElement("th");
+    div = document.createElement("div");
+    div.className = "blocks_th_inner";
+    if (typeof title !== "object") {
+      title = document.createTextNode("" + title);
+    }
+    div.appendChild(title);
+    if (help_topic) {
+      div.appendChild(document.createTextNode("\xA0"));
+      div.appendChild(help_button(help_topic));
+    }
+    divcp = div.cloneNode(true);
+    divcp.className = "blocks_th_hidden";
+    th.appendChild(div);
+    th.appendChild(divcp);
+    if (nopad) {
+      th.className = "nopad";
+    }
+    row.appendChild(th);
+  }
+  var container;
+  var page, view_height, outer_tbl, inner_tbl, tbl, thead, tbody, rhead;
+  var in_view, i, seq_count;
+  
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  view_height = Math.max(page.clientHeight - 300, 300);
+
+  container = $("blocks");
+  toggle_class(container, "hide_empty_seqs", true);
+  toggle_class(container, "hide_only_scan", true);
+  container.innerHTML = "";
+  add_seqs_filter(container, "rdo_sites_only", true, "Only Motif Sites", "pop_motif_sites");
+  add_seqs_filter(container, "rdo_sites_and_scan", false, "Motif Sites+Scanned Sites", "pop_scanned_sites");
+  add_seqs_filter(container, "rdo_all_seqs", false, "All Sequences", "pop_all_sequences");
+
+  outer_tbl = document.createElement("div");
+  outer_tbl.className = "blocks_outer";
+
+  inner_tbl = document.createElement("div");
+  inner_tbl.id = "blocks_scroll";
+  inner_tbl.className = "blocks_inner";
+  inner_tbl.style.maxHeight = view_height + "px";
+  outer_tbl.appendChild(inner_tbl);
+
+  tbl = document.createElement("table");
+  tbl.className = "blocks_tbl";
+  inner_tbl.appendChild(tbl);
+
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+
+  rhead = thead.insertRow(thead.rows.length);
+  add_blocks_header(rhead, "", true);
+  add_blocks_header(rhead, "Name", false, "pop_seq_name");
+  add_blocks_header(rhead, make_pv_text(), false, "pop_seq_pvalue");
+  add_blocks_header(rhead, "Motif Location", false, "pop_motif_location");
+
+  container.appendChild(outer_tbl);
+
+  
+  seq_count = data["sequence_db"]["sequences"].length;
+  in_view = Math.max(Math.ceil(view_height / 25), 1);
+  i = append_blocks_entries(tbody, 0, in_view);
+
+  while (i < seq_count && inner_tbl.scrollHeight - (inner_tbl.scrollTop + inner_tbl.offsetHeight) < 400) {
+    i = append_blocks_entries(tbody, i, 20);
+  }
+  inner_tbl.data_blocks_index = i;
+  if (i < seq_count) {
+    inner_tbl.addEventListener('scroll', make_blocks_entries, false);
+  }
+}
+
+function make_scan_popup(site, motif) {
+  return function (e) {
+    "use strict";
+    var pop, xy, padding, edge_padding, pop_left, pop_top, page_width;
+    var lflank, match, rflank, pspm;
+    if (!e) var e = window.event;
+    pop = make_scan_popup.pop;
+    if (e.type === "mouseover") {
+      if (pop) return;
+      pop = clone_template("tmpl_scan_info");
+      pspm = new Pspm(motif.pwm);
+      if (site.rc) pspm.reverse_complement(meme_alphabet);
+      set_tvar(pop, "tvar_logo", make_small_logo(meme_alphabet, pspm, {"className": "scan_logo"}));
+      set_tvar(pop, "tvar_motif", motif.id);
+      set_tvar(pop, "tvar_pvalue", site.pvalue.toExponential(2));
+      set_tvar(pop, "tvar_start", site.pos + 1);
+      set_tvar(pop, "tvar_end", site.pos + motif.len);
+
+      document.body.appendChild(pop);
+      position_popup(this, pop);
+      make_scan_popup.pop = pop;
+    } else if (e.type === "mouseout") {
+      if (pop) {
+        pop.parentNode.removeChild(pop);
+        make_scan_popup.pop = null;
+      }
+    }
+  };
+}
+
+function make_block_popup(site, motif, block) {
+  return function (e) {
+    "use strict";
+    var pop;
+    var lflank, match, rflank, pspm, ruler, match_seq, match_width;
+    if (!e) var e = window.event;
+    pop = make_block_popup.pop;
+    if (e.type === "mouseover") {
+      if (pop) return;
+      pop = clone_template("tmpl_block_info");
+      pspm = new Pspm(motif.pwm);
+      if (site.rc) { // must be dna
+        pspm.reverse_complement(meme_alphabet);
+        lflank = meme_alphabet.invcomp_seq(site.rflank);
+        match = meme_alphabet.invcomp_seq(site.match);
+        rflank = meme_alphabet.invcomp_seq(site.lflank);
+      } else {
+        lflank = site.lflank;
+        match = site.match;
+        rflank = site.rflank;
+      }
+      ruler = document.getElementById("measure_match");
+      match_seq = make_seq(meme_alphabet, match);
+      ruler.innerHTML = "";
+      ruler.appendChild(match_seq);
+      match_width = ruler.clientWidth;
+      ruler.removeChild(match_seq);
+      set_tvar(pop, "tvar_lflank", lflank);
+      set_tvar(pop, "tvar_match", match_seq);
+      set_tvar(pop, "tvar_rflank", rflank);
+      set_tvar(pop, "tvar_logo_pad", lflank);
+      set_tvar(pop, "tvar_logo", make_small_logo(meme_alphabet, pspm, {"width": match_width}));
+      set_tvar(pop, "tvar_motif", motif.id);
+      set_tvar(pop, "tvar_pvalue", site.pvalue.toExponential(2));
+      set_tvar(pop, "tvar_start", site.pos + 1);
+      set_tvar(pop, "tvar_end", site.pos + motif.len);
+
+      document.body.appendChild(pop);
+      position_popup(block, pop);
+      make_block_popup.pop = pop;
+    } else if (e.type === "mouseout") {
+      if (pop) {
+        pop.parentNode.removeChild(pop);
+        make_block_popup.pop = null;
+      }
+    }
+  };
+}
+
+function update_outpop_format(index) {
+  switch(parseInt($("text_format").value)) {
+    case 0: // count matrix
+      $("outpop_text").value = motif_count_matrix(index);
+      $("text_name").value = "motif_" + (index + 1) + "_counts.txt";
+      break;
+    case 1: // prob matrix
+      $("outpop_text").value = motif_prob_matrix(index);
+      $("text_name").value = "motif_" + (index + 1) + "_freqs.txt";
+      break;
+    case 2: // minimal meme
+      $("outpop_text").value = motif_minimal_meme(index);
+      $("text_name").value = "motif_" + (index + 1) + ".txt";
+      break;
+    case 3: // fasta
+      $("outpop_text").value = motif_fasta(index);
+      $("text_name").value = "motif_" + (index + 1) + "_fasta.txt";
+      break;
+    case 4: // raw
+      $("outpop_text").value = motif_raw(index);
+      $("text_name").value = "motif_" + (index + 1) + "_raw.txt";
+      break;
+    default:
+      throw new Error("Unknown motif format");
+  }
+}
+
+function update_outpop_motif(index) {
+  "use strict";
+  var motifs, motif, pspm, logo, canvas, num;
+  motifs = data["motifs"];
+  if (index < 0 || index >= motifs.length) {return;}
+  current_motif = index;
+  motif = motifs[index];
+  pspm = new Pspm(motif["pwm"]);
+  logo = new Logo(meme_alphabet, "");
+  logo.add_pspm(pspm, 0);
+  canvas = $("outpop_logo");
+  canvas.width = canvas.width; // clear canvas
+  draw_logo_on_canvas(logo, canvas, false);
+  if (meme_alphabet.has_complement()) {
+    pspm.reverse_complement(meme_alphabet);
+    logo = new Logo(meme_alphabet, "");
+    canvas = $("outpop_logo_rc");
+    canvas.width = canvas.width; // clear canvas
+    draw_logo_on_canvas(logo, canvas, false);
+  }
+  num = $("outpop_num");
+  num.innerHTML = "";
+  num.appendChild(document.createTextNode("" + (index + 1)));
+  update_outpop_format(index);
+}
+
+//
+// action_show_more
+//
+// Show more information on the motif.
+///
+function action_show_more(e) {
+  var node, tr, tbody, table, container, motif, ordinal;
+  var expanded_motif;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // find the row that contains the cell
+  node = this;
+  do {
+    if (node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find row!?");
+  tr = node;
+  // get info
+  motif = tr.data_motif;
+  ordinal = tr.data_ordinal;
+  // find tbody
+  do {
+    if (node.tagName === "TBODY") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find tbody!?");
+  tbody = node;
+  // find table
+  do {
+    if (node.tagName === "TABLE") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find table!?");
+  table = node;
+  // find container
+  container = node.parentNode;
+  // make a expanded motif
+  motif["expanded"] = true;
+  expanded_motif = make_expanded_motif(meme_alphabet, ordinal, motif, 
+      container.data_more_x, container.data_submit_x);
+  // now determine how to place it
+  if (tbody.rows.length === 1) {
+    // only us in the table so the table can be replaced
+    container.replaceChild(expanded_motif, table);
+  } else if (tbody.rows[0] === tr) {
+    // first row, so remove and insert an expanded motif before
+    table.deleteRow(tr.rowIndex);
+    container.insertBefore(expanded_motif, table);
+  } else if (tbody.rows[tbody.rows.length -1] === tr) {
+    // last row, so remove and insert an expanded motif after
+    table.deleteRow(tr.rowIndex);
+    container.insertBefore(expanded_motif, table.nextSibling);
+  } else {
+    var table2, tbody2;
+    table2 = table.cloneNode(false);
+    table2.appendChild(table.tHead.cloneNode(true));
+    tbody2 = table.tBodies[0].cloneNode(false);
+    table2.appendChild(tbody2);
+    container.insertBefore(table2, table.nextSibling);
+    for (i = tbody.rows.length - 1; i >= 0; i--) {
+      row = tbody.rows[i];
+      row.parentNode.removeChild(row);
+      if (row === tr) {
+        break;
+      }
+      tbody2.insertBefore(row, tbody2.rows[0]);
+    }
+    container.insertBefore(expanded_motif, table2);
+  }
+  find_child(expanded_motif, "tvar_less").focus();
+}
+
+//
+// action_show_less
+//
+// Show less information on the motif.
+///
+function action_show_less(e) {
+  var btn;
+  var expanded_motif, container, motif, ordinal, colw, focus_target;
+  var table, tbody, tbody2, row, table_before, table_after;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  btn = this;
+  // find expanded motif
+  expanded_motif = find_parent(btn, "expanded_motif");
+  if (!expanded_motif) throw new Error("Expected expanded motif.");
+  // find the container
+  container = expanded_motif.parentNode;
+  // get data
+  motif = expanded_motif.data_motif;
+  ordinal = expanded_motif.data_ordinal;
+  colw = container.data_colw;
+  // get the table before
+  table_before = expanded_motif.previousSibling;
+  if (table_before && table_before.tagName !== "TABLE") {
+    table_before = null;
+  }
+  // get the table after
+  table_after = expanded_motif.nextSibling;
+  if (table_after && table_after.tagName !== "TABLE") {
+    table_after = null;
+  }
+  // see if there is a table below or above that we can put this in.
+  // if there is a table both below and above then add this motif and
+  // all ones below to the above table
+  motif["expanded"] = false;
+  if (table_before && table_after) {
+    tbody = table_before.tBodies[0];
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+    tbody2 = table_after.tBodies[0];
+    while (tbody2.rows.length > 0) {
+      row = tbody2.rows[0];
+      row.parentNode.removeChild(row);
+      tbody.appendChild(row);
+    }
+    container.removeChild(table_after);
+  } else if (table_before) {
+    tbody = table_before.tBodies[0];
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+  } else if (table_after) {
+    tbody = table_after.tBodies[0];
+    row = tbody.insertRow(0);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+  } else {
+    //no table above or below!
+    // make a new table
+    table = make_motifs_table(meme_alphabet, ordinal, [motif], colw, data["stop_reason"]);
+    focus_target = find_child(table.tBodies[0].rows[0].cells[5], "sym_btn");
+    container.replaceChild(table, expanded_motif);
+  }
+  focus_target.focus();
+}
+
+function action_show_outpop(e) {
+  "use strict";
+  function init() {
+    "use strict";
+    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
+    var tab1, tab2, tab3;
+    var pnl1, pnl2, pnl3;
+    var format_list;
+    var tbl_submit, inputs, i, default_prog;
+    close_btn = $("outpop_close");
+    close_btn.addEventListener("click", action_hide_outpop, false);
+    close_btn.addEventListener("keydown", action_hide_outpop, false);
+    next_btn = $("outpop_next");
+    next_btn.addEventListener("click", action_outpop_next, false);
+    next_btn.addEventListener("keydown", action_outpop_next, false);
+    prev_btn = $("outpop_prev");
+    prev_btn.addEventListener("click", action_outpop_prev, false);
+    prev_btn.addEventListener("keydown", action_outpop_prev, false);
+    cancel_btn = $("outpop_cancel");
+    cancel_btn.addEventListener("click", action_hide_outpop, false);
+    do_btn = $("outpop_do");
+    do_btn.addEventListener("click", action_outpop_submit, false);
+    tab1 = $("outpop_tab_1");
+    tab1.tabIndex = 0;
+    tab1.addEventListener("click", action_outpop_tab, false);
+    tab1.addEventListener("keydown", action_outpop_tab, false);
+    tab2 = $("outpop_tab_2");
+    tab2.tabIndex = 0;
+    tab2.addEventListener("click", action_outpop_tab, false);
+    tab2.addEventListener("keydown", action_outpop_tab, false);
+    tab3 = $("outpop_tab_3");
+    tab3.tabIndex = 0;
+    tab3.addEventListener("click", action_outpop_tab, false);
+    tab3.addEventListener("keydown", action_outpop_tab, false);
+    pnl1 = $("outpop_pnl_1");
+    pnl2 = $("outpop_pnl_2");
+    pnl3 = $("outpop_pnl_3");
+    toggle_class(tab1, "activeTab", true);
+    toggle_class(tab2, "activeTab", false);
+    toggle_class(tab3, "activeTab", false);
+    pnl1.style.display = "block";
+    pnl2.style.display = "none";
+    pnl3.style.display = "none";
+    format_list = $("text_format");
+    format_list.addEventListener("change", action_outpop_format, false);
+    // setup program selection
+    tbl_submit = $("programs");
+    // when not dna, hide the inputs for programs that require dna motifs
+    toggle_class(tbl_submit, "alphabet_dna", meme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
+    // add a click listener for the radio buttons
+    inputs = tbl_submit.querySelectorAll("input[type='radio']");
+    for (i = 0; i < inputs.length; i++) {
+      inputs[i].addEventListener("click", action_outpop_program, false);
+    }
+    // ensure that a default program option is selected for DNA and Protein
+    default_prog = document.getElementById(meme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo"); //TODO FIXME Tomtom might require a more strict definition of DNA
+    default_prog.checked = true;
+    action_outpop_program.call(default_prog);
+    // disable reverse-complement when not DNA
+    $("logo_rc_option").disabled = !meme_alphabet.has_complement(); 
+    // set errorbars on when ssc is on
+    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
+  }
+  var node;
+  // store the focused element
+  action_hide_outpop.last_active = document.activeElement;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // hide the help popup
+  help_popup();
+  // on first load initilize the popup
+  if (!action_show_outpop.ready) {
+    init();
+    action_show_outpop.ready = true;
+  }
+  // load the motif logo
+  node = this;
+  do {
+    if (/\bexpanded_motif\b/.test(node.className) || node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (node === null) throw new Error("Expected node!");
+  update_outpop_motif(node.data_ordinal - 1);
+  // display the download popup
+  $("grey_out_page").style.display = "block";
+  $("download").style.display = "block";
+  $("outpop_close").focus();
+}
+
+function action_hide_outpop(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  $("download").style.display = "none";
+  $("grey_out_page").style.display = "none";
+  if (typeof action_hide_outpop.last_active !== "undefined") {
+    action_hide_outpop.last_active.focus();
+  }
+}
+
+function action_outpop_next(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif + 1);
+}
+
+function action_outpop_prev(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif - 1);
+}
+
+function action_outpop_program() {
+  "use strict";
+  var table, tr, rows, i;
+  tr = find_parent_tag(this, "TR");
+  table = find_parent_tag(tr, "TABLE");
+  rows = table.querySelectorAll("tr");
+  for (i = 0; i < rows.length; i++) {
+    toggle_class(rows[i], "selected", rows[i] === tr);
+  }
+}
+
+function action_outpop_ssc() {
+  "use strict";
+  $("logo_err").value = $("logo_ssc").value;
+}
+
+function action_outpop_submit(e) {
+  "use strict";
+  var form, input, program, motifs;
+  // find out which program is selected
+  var radios, i;
+  radios = document.getElementsByName("program");
+  program = "fimo"; // default to fimo, since it works with all alphabet types
+  for (i = 0; i < radios.length; i++) {
+    if (radios[i].checked) program = radios[i].value;
+  }
+
+  motifs = motif_minimal_meme(current_motif);
+  form = document.createElement("form");
+  form.setAttribute("method", "post");
+  form.setAttribute("action", site_url + "/tools/" + program);
+  
+  input = document.createElement("input");
+  input.setAttribute("type", "hidden");
+  input.setAttribute("name", "motifs_embed");
+  input.setAttribute("value", motifs);
+  form.appendChild(input);
+
+  document.body.appendChild(form);
+  form.submit();
+  document.body.removeChild(form);
+}
+
+function action_outpop_download_motif(e) {
+  $("text_form").submit();
+}
+
+function action_outpop_download_logo(e) {
+  "use strict";
+  $("logo_motifs").value = motif_minimal_meme(current_motif);
+  $("logo_form").submit();
+}
+
+function action_btn_rc(e) {
+  "use strict";
+  var node, tr, motif, box, logo_box, tab_st, tab_rc, rc;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  node = this;
+  do {
+    if (node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find row!?");
+  tr = node;
+  // get info
+  motif = tr.data_motif;
+  box = find_parent(this, "preview_box");
+  logo_box = find_child(box, "preview_logo_box");
+  tab_st = find_child(box, "plus");
+  tab_rc = find_child(box, "minus");
+  rc = (this === tab_rc);
+  motif["rc"] = rc;
+  toggle_class(logo_box, "show_rc_logo", rc);
+  toggle_class(tab_st, "active", !rc);
+  toggle_class(tab_rc, "active", rc);
+}
+
+function action_rc_tab(e) {
+  "use strict";
+  var box, logo_box, tab_st, tab_rc, rc;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  box = find_parent(this, "expanded_motif");
+  logo_box = find_child(box, "tvar_logo");
+  tab_st = find_child(box, "tvar_tab");
+  tab_rc = find_child(box, "tvar_tab_rc");
+  rc = (this === tab_rc);
+  box.data_motif["rc"] = rc;
+  toggle_class(logo_box, "show_rc_logo", rc);
+  toggle_class(tab_st, "activeTab", !rc);
+  toggle_class(tab_rc, "activeTab", rc);
+}
+
+function action_outpop_tab(e) {
+  "use strict";
+  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  tab1 = $("outpop_tab_1");
+  tab2 = $("outpop_tab_2");
+  tab3 = $("outpop_tab_3");
+  pnl1 = $("outpop_pnl_1");
+  pnl2 = $("outpop_pnl_2");
+  pnl3 = $("outpop_pnl_3");
+  do_btn = $("outpop_do");
+
+  toggle_class(tab1, "activeTab", (this === tab1));
+  toggle_class(tab2, "activeTab", (this === tab2));
+  toggle_class(tab3, "activeTab", (this === tab3));
+  pnl1.style.display = ((this === tab1) ? "block" : "none");
+  pnl2.style.display = ((this === tab2) ? "block" : "none");
+  pnl3.style.display = ((this === tab3) ? "block" : "none");
+  do_btn.value = ((this === tab1) ? "Submit" : "Download");
+  do_btn.removeEventListener("click", action_outpop_submit, false);
+  do_btn.removeEventListener("click", action_outpop_download_logo, false);
+  do_btn.removeEventListener("click", action_outpop_download_motif, false);
+  if (this === tab1) {
+    do_btn.addEventListener("click", action_outpop_submit, false);
+  } else if (this === tab2) {
+    do_btn.addEventListener("click", action_outpop_download_motif, false);
+  } else {
+    do_btn.addEventListener("click", action_outpop_download_logo, false);
+  }
+}
+
+function action_seqs_filter() {
+  "use strict";
+  var block_container;
+  block_container = $("blocks");
+  if ($("rdo_all_seqs").checked) {
+    toggle_class(block_container, "hide_empty_seqs", false);
+    toggle_class(block_container, "hide_only_scan", false);
+  } else if ($("rdo_sites_and_scan").checked) {
+    toggle_class(block_container, "hide_empty_seqs", true);
+    toggle_class(block_container, "hide_only_scan", false);
+  } else if ($("rdo_sites_only").checked) {
+    toggle_class(block_container, "hide_empty_seqs", true);
+    toggle_class(block_container, "hide_only_scan", true);
+  }
+}
+
+function action_outpop_format() {
+  update_outpop_format(current_motif);
+}
+
+//
+// page_loaded
+//
+// Called when the page has loaded for the first time.
+///
+function page_loaded() {
+  post_load_setup();
+}
+
+//
+// page_loaded
+//
+// Called when a cached page is reshown.
+///
+function page_shown(e) {
+  if (e.persisted) post_load_setup();
+}
+
+//
+// page_loaded
+//
+// Called when the page is resized
+///
+function page_resized() {
+  var page, blocks_scroll;
+  update_scroll_pad();
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  blocks_scroll = $("blocks_scroll");
+  if (blocks_scroll) {
+    blocks_scroll.style.maxHeight = Math.max(page.clientHeight - 300, 300) + "px";
+  }
+}
+
+//
+// pre_load_setup
+//
+// Run before the page is displayed
+///
+function pre_load_setup() {
+  var start, hue, sat, light, divisions;
+  var i, j, motifs, motif, sites, site, sequences, sequence;
+  var max_seq_len;
+  motifs = data["motifs"];
+  sequences = data["sequence_db"]["sequences"];
+  max_seq_len = 1;
+  for (i = 0; i < sequences.length; i++) {
+    sequence = sequences[i];
+    sequence["sites"] = [];
+    if (sequence["length"] > max_seq_len) {
+      max_seq_len = sequence["length"];
+    }
+  }
+  data["sequence_db"]["max_length"] = max_seq_len;
+  // use hsl colours
+  start = 0; //red
+  sat = 100;
+  light = 50;
+  for (i = 0; i < motifs.length; i++) {
+    motif = motifs[i];
+    // give the motif a colour
+    divisions = 1 << Math.ceil(Math.log(i + 1) / Math.LN2);
+    hue = start + (360 / divisions) * ((i - (divisions >> 1)) * 2 + 1);
+    motif["colour"] = "hsl(" + hue + ", " + sat + "%, " + light + "%)";
+    // associate sites with sequences as well 
+    // to make generating the block diagram easier
+    sites = motif["sites"];
+    for (j = 0; j < sites.length; j++) {
+      site = sites[j];
+      sequence = sequences[site["seq"]];
+      // record the motif index
+      site["motif"] = i;
+      // add the site to the sequence
+      sequence["sites"].push(site);
+    }
+  }
+}
+
+//
+// post_load_setup
+//
+// Run when the page has loaded, or been reloaded.
+//
+function post_load_setup() {
+  update_scroll_pad();
+  if (data["motifs"].length > 0) {
+    make_motifs();
+    make_blocks();
+  } else {
+    $("motifs").innerHTML = "<p>No significant motifs found!</p>"; // clear content
+    $("motifs").innerHTML += "<p><b>" + data["stop_reason"] + "</b></p>";
+    $("blocks").innerHTML = "<p>No significant motifs found!</p>";
+  }
+}
+
+pre_load_setup();
+</script>
+    <style>
+/* 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;
+  cursor: pointer;
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
+}
+
+div.help:hover {
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
+}
+
+p.spaced { line-height: 1.8em;}
+
+span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
+
+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; overflow: hidden;}
+
+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;}
+
+.explain h5 {font-size:1em; margin-left: 1em;}
+
+div.doc {margin-left: 2em; margin-bottom: 3em;}
+
+th.trainingset {
+  border-bottom: thin dashed black; 
+  font-weight:normal; 
+  padding:0px 10px;
+}
+div.pop_content {
+  position:absolute;
+  z-index:50;
+  width:300px;
+  padding: 5px;
+  background: #E4ECEC;
+  font-size: 12px;
+  font-family: Arial;
+  border-style: double;
+  border-width: 3px;
+  border-color: #AA2244;
+  display:none;
+}
+
+div.pop_content > *:first-child {
+  margin-top: 0px;
+}
+
+div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
+div.pop_content h5, div.pop_content h6, div.pop_content p {
+  margin: 0px;
+}
+
+div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
+div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
+  margin-top: 5px;
+}
+
+div.pop_content p + p {
+  margin-top: 5px;
+}
+
+div.pop_content > *:last-child {
+  margin-bottom: 0px;
+}
+
+div.pop_content div.pop_close {
+  /* old definition */
+  float:right;
+  bottom: 0;
+}
+
+div.pop_content span.pop_close, div.pop_content span.pop_back {
+  display: inline-block;
+  border: 2px outset #661429;
+  background-color: #CCC;
+  padding-left: 1px;
+  padding-right: 1px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  cursor: pointer;
+  color: #AA2244; /*#661429;*/
+  font-weight: bold;
+}
+
+div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
+  border-style: inset;
+}
+
+div.pop_content span.pop_close {
+  float:right;
+  /*border: 2px outset #AA002B;*/
+  /*color: #AA2244;*/
+}
+
+div.pop_content:not(.nested) .nested_only {
+  display: none;
+}
+
+div.pop_back_sec {
+  margin-bottom: 5px;
+}
+
+div.pop_close_sec {
+  margin-top: 5px;
+}
+
+table.hide_advanced tr.advanced {
+  display: none;
+}
+span.show_more {
+  display: none;
+}
+table.hide_advanced span.show_more {
+  display: inline;
+}
+table.hide_advanced span.show_less {
+  display: none;
+}
+
+
+/*****************************************************************************
+ * Program logo styling
+ ****************************************************************************/
+div.prog_logo {
+  border-bottom: 0.25em solid #0f5f60;
+  height: 4.5em;
+  width: 24em;
+  display:inline-block;
+}
+div.prog_logo img {
+  float:left;
+  width: 4em;
+  border-style: none;
+  margin-right: 0.2em;
+}
+div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
+  margin:0;
+  padding:0;
+  font-family: Arial, Helvetica,  sans-serif;
+  font-size: 3.2em;
+  line-height: 1em;
+  vertical-align: top;
+  display: block;
+  color: #026666;
+  letter-spacing: -0.06em;
+  text-shadow: 0.04em 0.06em 0.05em #666;
+}
+div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
+  display: block;
+  margin:0;
+  padding:0;
+  font-family: Helvetica, sans-serif;
+  font-size: 0.9em;
+  line-height: 1em;
+  letter-spacing: -0.06em;
+  color: black;
+}
+
+div.big.prog_logo {
+  font-size: 18px;
+}
+
+</style>
+    <style>
+.block_td {
+  height:25px;
+}
+.block_container {
+  position:relative;
+  box-sizing: border-box;
+  height: 25px;
+  padding: 0px;
+  margin: 0px;
+  margin-left: 1em;
+}
+.block_label {
+  position: absolute; 
+  display: inline-block;
+  padding: 3px;
+  z-index: 4;
+  top: 6px;
+  height: 12px;
+  line-height: 12px;
+  font-size: 12px;
+  background-color: white;
+  border: 1px solid black;
+  -moz-border-radius: 12px;
+  -webkit-border-radius: 12px;
+  border-radius: 12px;
+  transform: translateX(-50%);
+}
+.block_motif {
+  position: absolute; 
+  z-index: 3;
+  top: 0px;
+  box-sizing: border-box;
+  border: 1px solid black;
+  height: 12px;
+  background-color: cyan;
+}
+.block_motif.top {
+  border-bottom-width: 0;
+}
+.block_motif.bottom {
+  border-top-width: 0;
+}
+.block_motif.scanned_site {
+  opacity: 0.3;
+}
+.block_motif.scanned_site.active {
+  opacity: 0.9;
+}
+.block_region {
+  position:absolute; 
+  z-index:6; 
+  height:25px; 
+  top:0px; 
+}
+.block_region.main {
+  z-index:8;
+}
+.block_region.scanned_site {
+  z-index:5;
+}
+.block_region.scanned_site.main {
+  z-index:7;
+}
+.block_region.top {
+  height:13px;
+}
+.block_region.bottom {
+  height:13px;
+  top:12px;
+}
+.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;
+  line-height:12px;
+  top:0px;
+  left:-1em;
+}
+.block_minus_sym {
+  position:absolute;
+  z-index:4;
+  line-height:12px;
+  top:13px;
+  left:-1em;
+}
+
+.tic_major {
+  position:absolute;
+  top:0em;
+  height:0.5em;
+  width: 2px;
+  margin-left: -1px;
+  background-color: blue;
+}
+.tic_minor {
+  position:absolute;
+  top:0em;
+  height:0.2em;
+  width: 1px;
+  margin-left: -0.5px;
+  background-color: blue;
+}
+.tic_label {
+  position:absolute;
+  display: inline-block;
+  top:0.5em;
+  height: 1em;
+  color: blue;
+  transform: translateX(-50%);
+}
+
+.block_needle {
+  position:absolute;
+  z-index:4;
+  height:30px; 
+  width:1px; 
+  top:-2px; 
+  background-color:gray;
+}
+.block_needle.right {
+  height: 60px;
+}
+.block_handle {
+  position: absolute; 
+  display: inline-block;
+  z-index: 5; 
+  top: 27px; 
+  min-width: 3ex;
+  text-align: center;
+  font-size: 12px;
+  line-height: 12px;
+  transform: translateX(-50%);
+  background-color: LightGrey; 
+  border:3px outset grey;
+  cursor: pointer;
+  -webkit-user-select: none; /* Chrome/Safari */        
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
+  /* Rules below not implemented in browsers yet */
+  -o-user-select: none;
+  user-select: none;
+}
+.block_handle.right {
+  top: 47px;
+}
+
+.legend_container {
+  text-align: right;
+}
+.legend_entry {
+  display: inline-block;
+  padding: 5px;
+}
+div.legend_swatch {
+  box-sizing: border-box;
+  width: 15px;
+  height: 15px;
+  border: 1px solid black;
+  background-color: cyan;
+  float: left;
+}
+div.legend_swatch input {
+  display: none;
+}
+.legend_text {
+  line-height: 15px;
+  margin-left: 20px;
+}
+</style>
+    <style>
+/* meme output specific css */
+
+div.pop_block {
+  position:absolute;
+  z-index:5;
+  padding: 5px;
+  border: 1px solid black;
+  display: inline-block;
+  background-color: white;
+}
+
+#measure_match {
+  position: absolute;
+  visibility: hidden;
+  height: auto;
+  width: auto;
+  white-space: nowrap;
+}
+
+div.template {
+  position: absolute;
+  z-index: 1;
+  left: 0;
+  top: 0;
+  visibility: hidden;
+}
+
+table.block_information {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+table.block_information * th {
+  text-align: right;
+}
+
+*.hide_empty_seqs * tr.empty_seq {
+  display: none;
+}
+
+*.hide_only_scan * tr.only_scan {
+  display: none;
+}
+
+*.hide_only_scan * div.scanned_site {
+  display: none;
+}
+
+td.symaction {
+  text-align: center;
+  text-decoration: underline;
+  font-size: 20px;
+  cursor: pointer;
+}
+div.sym_btn {
+  display:inline-block;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 20px;
+  line-height:20px; 
+  text-align: center;
+  width: 20px;
+  height: 20px;
+  color: blue;
+}
+div.sym_btn:hover {
+  color: white;
+  background-color: blue;
+}
+
+div.sym_btn.positioned {
+  position: absolute;
+  top: 0px;
+}
+
+div.actionbutton { 
+  display:inline-block;
+  cursor: pointer;
+  font-size: 18px;
+  line-height:20px; 
+  padding: 5px; 
+  margin: 10px 0; 
+  border: 1px solid black;
+}
+
+div.actionbutton:hover {
+  color:#FFF;
+  background-color:#000;
+}
+
+div.param_box {
+  display: inline-block;
+  margin-right: 20px;
+}
+
+span.param {
+  font-weight: bold;
+}
+
+div.box + div.box {
+  margin-top: 5px;
+}
+
+div.sites_outer {
+  position: relative;
+  padding-top: 20px; /* height of header */
+  display: inline-block;
+}
+
+div.sites_inner {
+  overflow-x: hidden;
+  overflow-y: auto;
+  max-height: 200px;
+}
+table.sites_tbl {
+  border-collapse: collapse;
+}
+
+div.sites_th_inner {
+  position: absolute;
+  top: 0;
+  line-height: 20px; /* height of header */
+  text-align: left;
+  padding-left: 5px;
+}
+th.nopad div.sites_th_inner {
+  padding-left: 0;
+}
+div.sites_th_hidden {
+  visibility: hidden;
+  height: 0;
+  padding: 0 10px;
+}
+th.nopad div.sites_th_hidden {
+  padding: 0;
+}
+div.sites_inner * th {
+  height: 0;
+}
+
+table.sites_tbl {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+.site_num {
+  text-align: right;
+}
+.site_name {
+  padding:0px 5px; 
+  text-align:left;
+}
+.site_strand {
+  padding:0px 5px; 
+  text-align:center;
+}
+.norc .site_strand, .norc .site_strand_title {
+  display: none;
+}
+.site_start {
+  padding:0px 15px; 
+  text-align: right;
+}
+.site_pvalue {
+  text-align:center; 
+  padding:0px 15px; 
+  text-align:right;
+  white-space: nowrap;
+}
+.lflank, .rflank, .match, .alpha_symbol {
+  font-weight:bold; 
+  font-size:15px; 
+  font-family: 'Courier New', Courier, monospace;
+  color:gray; 
+}
+
+.site.lflank {
+  text-align:right; 
+  padding-right:5px; 
+  color:gray;
+}
+.site.match {
+  text-align:center; 
+}
+.site.rflank {
+  text-align:left; 
+  padding-left:5px; 
+  padding-right: 20px;
+}
+
+th.stop_reason {
+  text-align: left;
+  padding-right: 10px;
+}
+
+th.motif_ordinal {
+
+}
+td.motif_ordinal {
+  text-align: right;
+  padding-right: 10px;
+}
+th.motif_logo {
+  padding-right: 10px;
+}
+td.motif_logo {
+  padding-right: 10px;
+}
+th.motif_evalue {
+  text-align:right;
+  padding-right: 10px;
+}
+td.motif_evalue {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+th.motif_nsites {
+  text-align: right;
+  padding-right: 10px;
+}
+td.motif_nsites {
+  text-align: right;
+  padding-right: 20px;
+}
+th.motif_width {
+  text-align: right;
+  padding-right: 5px;
+}
+td.motif_width {
+  text-align: right;
+  padding-right: 15px;
+}
+th.motif_more {
+  padding: 0 5px;
+}
+td.motif_more {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_submit {
+  padding: 0 5px;
+}
+td.motif_submit {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_download {
+  padding-left: 5px;
+}
+td.motif_download {
+  text-align: center;
+  padding-left: 5px;
+}
+
+
+div.tabArea {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+.norc div.tabArea {
+  display: none;
+}
+
+span.tab, span.tab:visited {
+  cursor: pointer;
+  color: #888;
+  background-color: #ddd;
+  border: 2px solid #ccc;
+  padding: 2px 1em;
+  text-decoration: none;
+}
+span.tab.middle {
+  border-left-width: 0px;
+}
+div.tabArea.base span.tab {
+  border-top-width: 0px;
+}
+div.tabArea.top span.tab {
+  border-bottom-width: 0px;
+}
+
+span.tab:hover {
+  background-color: #bbb;
+  border-color: #bbb;
+  color: #666;
+}
+span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
+  background-color: white;
+  color: black;
+  cursor: default;
+}
+div.tabMain {
+  border: 2px solid #ccc;
+  background-color: white;
+  padding: 10px;
+}
+div.tabMain.base {
+  margin-top: 5px;
+  display: inline-block;
+  max-width: 98%;
+}
+
+div.tabMain.top {
+  margin-bottom: 5px;
+}
+
+div.tabCenter {
+  max-width: 100%;
+  overflow-x: auto;
+  height: 200px;
+  overflow-y: hidden;
+}
+
+canvas.logo_rc {
+  display:none;
+}
+.show_rc_logo > canvas {
+  display: none;
+}
+.show_rc_logo > canvas.logo_rc {
+  display: block;
+}
+
+canvas.scan_logo {
+  margin-left: 10px;
+}
+
+div.blocks_outer {
+  position: relative;
+  padding-top: 20px; /* height of header */
+}
+
+div.blocks_inner {
+  overflow-x: hidden;
+  overflow-y: auto;
+  max-height: 200px;
+}
+table.blocks_tbl {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+div.blocks_th_inner {
+  position: absolute;
+  top: 0;
+  line-height: 20px; /* height of header */
+  text-align: left;
+  padding-left: 5px;
+}
+th.nopad div.blocks_th_inner {
+  padding-left: 0;
+}
+div.blocks_th_hidden {
+  visibility: hidden;
+  height: 0;
+  padding: 0 10px;
+}
+th.nopad div.blocks_th_hidden {
+  padding: 0;
+}
+div.blocks_inner * th {
+  height: 0;
+}
+
+table.blocks_tbl {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+td.block_td {
+  width: 99%;
+}
+
+*.blockdiag_num {
+  text-align: right;
+}
+
+td.blockdiag_name {
+  text-align: left;
+  padding:0px 10px; 
+}
+
+td.blockdiag_pvalue {
+  padding:0px 10px; 
+  text-align:right;
+  white-space: nowrap;
+}
+
+div.preview_btn {
+  border: 2px solid white;
+  height: 16px;
+  width: 16px;
+  font-size: 12px;
+  line-height: 16px;
+  text-align: center;
+  cursor: pointer;
+}
+div.preview_btn + div.preview_btn {
+  margin-top: 3px;
+}
+
+div.preview_btn.active {
+  border: 2px solid black;
+  cursor: default;
+}
+
+div.preview_btn:hover {
+  background-color: black;
+  color: white;
+  border-color: black;
+}
+
+div.preview_btn.active:hover {
+  background-color: white;
+  color: black;
+  border-color: black;
+}
+
+
+div.preview_btn_box {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  padding: 3px;
+}
+
+div.preview_logo_box {
+  height: 50px;
+  overflow-y: hidden;
+}
+
+div.preview_btn_box + div.preview_logo_box {
+  margin-left: 25px;
+}
+
+div.preview_box {
+  position: relative;
+}
+
+div.grey_background {
+  position:fixed; 
+  z-index: 8;
+  background-color: #000;
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+  opacity: 0.5;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+}
+
+div.popup_wrapper {
+  position:fixed; 
+  z-index:9;
+  width:100%; 
+  height:0; 
+  top:50%; 
+  left:0;
+}
+
+div.popup {
+  width: 600px; 
+  z-index:9;
+  margin-left: auto;
+  margin-right: auto;
+  padding: 5px;
+  background-color: #FFF;
+  border-style: double;
+  border-width: 5px;
+  border-color: #00666a;
+  position:relative; 
+}
+div.close {
+  cursor: pointer;
+  border: 1px solid black; 
+  width:15px; 
+  height:15px; 
+  line-height:15px; /* this causes vertical centering */
+  text-align:center; 
+  background-color:#FFF; 
+  color:#000; 
+  font-size:15px;
+  font-family:monospace;
+}
+
+div.close:hover {
+  color:#FFF;
+  background-color:#000; 
+}
+
+div.navnum {
+  width:100%; 
+  height:20px; 
+  line-height:20px; 
+  text-align:center; 
+  font-size:medium;
+}
+
+div.navarrow {
+  font-size: 30px;
+  text-decoration:none;
+  cursor: pointer;
+  -moz-user-select: none;  
+  -webkit-user-select: none;  
+  -ms-user-select: none;
+}
+
+div.navarrow > span.inactive {
+  display: inline;
+}
+div.navarrow > span.active {
+  display: none;
+}
+
+div.navarrow:hover > span.active {
+  display: inline;
+}
+div.navarrow:hover > span.inactive {
+  display: none;
+}
+
+table.programs {
+  width: 100%;
+}
+
+table.programs tr {
+  background-color: #EFE;
+}
+
+table.programs tr.selected {
+  background-color: #262;
+  color: #FFF;
+}
+
+table.programs tr.dna_only {
+  display: none;
+}
+
+table.programs.alphabet_dna tr.dna_only {
+  display: table-row;
+}
+
+div.programs_scroll {
+  width: 100%; 
+  height: 90px; 
+  overflow-y: auto; 
+  overflow-x: hidden;
+  margin: 0 auto; 
+}
+table.inputs, table.alpha_bg_table {
+  margin-top: 20px;
+  border-collapse:collapse;
+}
+table.inputs * td, table.inputs * th, table.alpha_bg_table * td, table.alpha_bg_table * th {
+  padding-left: 15px;
+  padding-right: 15px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+table.hide_psp td.col_psp, table.hide_psp th.col_psp {
+  display: none;
+}
+
+/* program settings */
+span.mod_oops, span.mod_zoops, span.mod_anr {
+  display: none;
+}
+td.oops span.mod_oops,td.zoops span.mod_zoops, td.anr span.mod_anr  {
+  display: inline;
+}
+span.strand_none, span.strand_given, span.strand_both {
+  display: none;
+}
+td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
+  display: inline;
+}
+span.spmap_uni, span.spmap_pam {
+  display: none;
+}
+td.uni span.spmap_uni, td.pam span.spmap_pam {
+  display: inline;
+}
+span.prior_dirichlet, span.prior_dmix, span.prior_mega, span.prior_megap, span.prior_addone {
+  display: none;
+}
+td.dirichlet span.prior_dirichlet, td.dmix span.prior_dmix, td.mega span.prior_mega,
+td.megap span.prior_megap, td.addone span.prior_addone {
+  display: inline;
+}
+span.noendgaps_on, span.noendgaps_off {
+  display: none;
+}
+td.on span.noendgaps_on, td.off span.noendgaps_off {
+  display: inline;
+}
+span.substring_on, span.substring_off {
+  display: none;
+}
+td.on span.substring_on, td.off span.substring_off {
+  display: inline;
+}
+</style>
+  </head>
+  <body onload="page_loaded()" onpageshow="page_shown(event)" onresize="page_resized()">
+    <!--  -->
+    <div id="grey_out_page" class="grey_background" style="display:none;">
+    </div>
+    <!-- Help popups -->
+    <div class="pop_content" id="pop_">
+      <p>Help poup.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_ev">
+      <p>The statistical significance of the motif. MEME usually finds the most
+      statistically significant (low E-value) motifs first. It is unusual to
+      consider a motif with an E-value larger than 0.05 significant so, as an
+      additional indicator, MEME displays these partially transparent.</p> 
+      <p>The E-value of a motif is based on its log likelihood ratio, width,
+      sites, the background letter frequencies (given in the command line
+      summary), and the size of the training set.</p>
+      <p>The E-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 (sequences where each position is independent and letters are
+      chosen according to the background letter frequencies).</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_sites">
+      <p>The number of sites contributing to the construction of the motif.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_width">
+      <p>The width of the motif. Each motif describes a pattern of a fixed
+      width, as no gaps are allowed in MEME motifs.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_more">
+      <p>Click on the blue symbol below to reveal more information about this motif.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_submit_dl">
+      <p>Click on the blue symbol below to reveal options allowing you
+      to submit this motif to another MEME Suite motif analysis program, to download this
+      motif in various text formats, or to download a sequence "logo" of
+      this motif PNG or EPS format.</p>
+      <h5>Supported Programs</h5>
+      <dl>
+        <dt>Tomtom</dt>
+        <dd>Tomtom is a tool for searching for similar known motifs. 
+          [<a href="http://meme-suite.org/doc/tomtom.html?man_type=web">manual</a>]</dd>
+        <dt>MAST</dt>
+        <dd>MAST is a tool for searching biological sequence databases for 
+          sequences that contain one or more of a group of known motifs.
+          [<a href="http://meme-suite.org/doc/mast.html?man_type=web">manual</a>]</dd>
+        <dt>FIMO</dt>
+        <dd>FIMO is a tool for searching biological sequence databases for 
+          sequences that contain one or more known motifs.
+          [<a href="http://meme-suite.org/doc/fimo.html?man_type=web">manual</a>]</dd>
+        <dt>GOMO</dt>
+        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
+          terms) for DNA binding motifs.
+          [<a href="http://meme-suite.org/doc/gomo.html?man_type=web">manual</a>]</dd>
+        <dt>SpaMo</dt>
+        <dd>SpaMo is a tool for inferring possible transcription factor
+          complexes by finding motifs with enriched spacings.
+          [<a href="http://meme-suite.org/doc/spamo.html?man_type=web">manual</a>]</dd>
+      </dl>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_llr">
+      <p>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 -bfile option to MEME.).</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_ic">
+      <p>The information content of the motif in bits. It is equal to the sum
+      of the uncorrected information content, R(), in the columns of the pwm.
+      This is equal relative entropy of the motif relative to a uniform
+      background frequency model.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_re">
+      <p>The relative entropy of the motif.</p>
+
+      <p style="font-family: monospace;">re = llr / (sites * ln(2))</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_bt">
+      <p>The Bayes Threshold.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_strand">
+      <p>The strand used for the motif site.</p>
+      <dl>
+        <dt>+</dt>
+        <dd>The motif site was found in the sequence as it was supplied.</dd>
+        <dt>-</dt>
+        <dd>The motif site was found in the reverse complement of the supplied sequence.</dd>
+      </dl>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_start">
+      <p>The position in the sequence where the motif site starts. If a motif
+      started right at the begining of a sequence it would be described as
+      starting at position 1.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_pvalue">
+      <p>The probability that an equal or better site would be found in a
+      random sequence of the same length conforming to the background letter
+      frequencies.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_match">
+      <p>A motif site with the 10 flanking letters on either side.</p> 
+      <p>When the site is not on the given strand then the site
+      and both flanks are reverse complemented so they align.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_name">
+      <p>The name of the sequences as given in the FASTA file.</p>
+      <p>The number to the left of the sequence name is the ordinal
+      of the sequence.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_motif_sites">
+      <p>These are the motif sites predicted by MEME and used to build the motif.</p>
+      <p>These sites are shown in solid color and hovering the cursor
+      over a site will reveal details about the site.  Only sequences
+      that contain a motif site are shown.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_scanned_sites">
+      <p>These are the motif sites predicted by MEME plus
+      any additional sites detected using a motif scanning
+      algorithm.</p>
+      <p>These MEME sites are shown in solid color and 
+      additional scanned sites are shown in transparent color.
+      Hovering the cursor over a site will reveal details about the site.
+      Only sequences containing a predicted or scanned motif site are shown.</p>
+      <p>The scanned sites are predicted using a
+      log-odds scoring matrix constructed from the MEME sites.
+      Only scanned sites with position <i>p</i>-values less
+      than 0.0001 are shown.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_all_sequences">
+      <p>These are the same sites as shown by selecting the
+      "Motif Sites + Scanned Sites" button except that all
+      sequences, including those with no sites, are included
+      in the diagram.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_pvalue">
+      <p>This is the combined match <i>p</i>-value.</p>
+      <p>The combined match <i>p</i>-value is defined as the probability that a
+      random sequence (with the same length and conforming to the background) 
+      would have position <i>p</i>-values such that the product is smaller
+      or equal to the value calulated for the sequence under test.</p>
+      <p>The position <i>p</i>-value is defined as the probability that a
+      random sequence (with the same length and conforming to the background)
+      would have a match to the motif under test with a score greater or equal
+      to the largest found in the sequence under test.</p>
+      <p>Hovering your mouse over a motif site in the motif location 
+      block diagram will show its position <i>p</i>-value and other information
+      about the site.</p>
+       
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_location">
+      <p>This diagram shows the location of motif sites.</p>
+      <p>Each block shows the position and strength of a motif
+      site.  The height of a block gives an indication of the 
+      significance of the site as taller blocks are more significant. 
+      The height is calculated to be proportional to the negative 
+      logarithm of the <i>p</i>-value of the site, truncated at 
+      the height for a <i>p</i>-value of 1e-10.</p>
+      <p>For complementable alphabets (like DNA), sites on the 
+      positive strand are shown above the line,
+      sites on the negative strand are shown below.</p>
+      <p>Placing the cursor
+      over a motif site will reveal more information about the site
+      including its position <i>p</i>-value.  (See the help
+      for the <i>p</i>-value column for an explanation of position 
+      <i>p</i>-values.)</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_source">
+      <p>The name of the file of sequences input to MEME.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_psp_source">
+      <p>The position specific priors file used by MEME to find the motifs.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_alph">
+      <p>The alphabet used by the sequences.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_count">
+      <p>The number of sequences provided as input to MEME.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_name">
+      <p>The name of the alphabet symbol.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_alph_freq">
+      <p>The frequency of the alphabet symbol in the dataset with a pseudocount
+      so it is never zero.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_alph_bg">
+      <p>The frequency of the alphabet symbol as defined by the background model.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <!-- templates -->
+    <div id="measure_match" class="match"></div>
+    <div class="template pop_block" id="tmpl_block_info">
+      <div>
+        <span class="tvar_logo_pad lflank" style="visibility:hidden;"></span>
+        <span class="tvar_logo"></span>
+      </div>
+      <div class="block_sequence_fragment">
+        <span class="tvar_lflank lflank"></span>
+        <span class="tvar_match match"></span>
+        <span class="tvar_rflank rflank"></span>
+      </div>
+      <table class="block_information">
+        <tr><th>Motif</th><td class="tvar_motif">1</td></tr>
+        <tr><th><i>p</i>-value</th><td class="tvar_pvalue">8.23e-7</td></tr>
+        <tr><th>Start</th><td class="tvar_start">23</td></tr>
+        <tr><th>End</th><td class="tvar_end">33</td></tr>
+      </table>
+    </div>
+
+    <div class="template pop_block" id="tmpl_scan_info">
+      <h5>Scanned Site</h5>
+      <div class="tvar_logo"></div>
+      <table class="block_information">
+        <tr><th>Motif</th><td class="tvar_motif">1</td></tr>
+        <tr><th><i>p</i>-value</th><td class="tvar_pvalue">8.23e-7</td></tr>
+        <tr><th>Start</th><td class="tvar_start">23</td></tr>
+        <tr><th>End</th><td class="tvar_end">33</td></tr>
+      </table>
+    </div>
+
+    <div class="template box expanded_motif" id="tmpl_motif_expanded">
+      <div style="position: relative; min-height: 20px">
+        <div class="param_box">
+          <span class="param"><span class="tvar_ordinal"></span>.</span>
+        </div>
+        <div class="sym_btn positioned tvar_less" tabindex="0" 
+          title="Show less information.">&#8613;</div>
+        <div class="sym_btn positioned tvar_submit" tabindex="0"
+          title="Submit the motif to another MEME Suite program or download it.">&#8674;</div>
+      </div>
+      <div>
+        <div class="param_box">
+          <span class="param"><i>E</i>-value:</span>
+          <span class="tvar_evalue"></span>
+          <div class="help" data-topic="pop_ev"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Site Count:</span>
+          <span class="tvar_site_count"></span>
+          <div class="help" data-topic="pop_sites"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Width:</span>
+          <span class="tvar_width"></span>
+          <div class="help" data-topic="pop_width"></div>
+        </div>
+      </div>
+      <div class="tabMain base">
+        <div class="tabCenter tvar_logo"></div>
+      </div>
+      <div class="tabArea base">
+        <span class="tvar_tab tab" tabindex="0">Standard</span><span 
+          class="tvar_tab_rc tab middle" tabindex="0">Reverse 
+          Complement</span>
+      </div>
+      <div style="padding: 10px 0">
+        <div class="param_box">
+          <span class="param">Log Likelihood Ratio:</span>
+          <span class="tvar_llr"></span>
+          <div class="help" data-topic="pop_llr"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Information Content:</span>
+          <span class="tvar_ic"></span>
+          <div class="help" data-topic="pop_ic"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Relative Entropy:</span>
+          <span class="tvar_re"></span>
+          <div class="help" data-topic="pop_re"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Bayes Threshold:</span>
+          <span class="tvar_bt"></span>
+          <div class="help" data-topic="pop_bt"></div>
+        </div>
+      </div>
+      <div class="tvar_sites"></div>
+    </div>
+
+
+    <div class="popup_wrapper">
+      <div class="popup" style="display:none; top: -150px;" id="download">
+        <div>
+          <div style="float:right; ">
+            <div id="outpop_close" class="close" tabindex="0">x</div>
+          </div>
+          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
+          <div style="clear:both"></div>
+        </div>
+          <div style="height:100px">
+            <div style="float:right; width: 30px;">
+              <div id="outpop_prev" class="navarrow" tabindex="0">
+                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
+              </div>
+              <div id="outpop_num" class="navnum"></div>
+              <div id="outpop_next" class="navarrow" tabindex="0">
+                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
+              </div>
+            </div>
+            <div id="logo_box" style="height: 100px; margin-right: 40px;">
+              <canvas id="outpop_logo" height="100" width="580"></canvas>
+              <canvas id="outpop_logo_rc" class="logo_rc" height="100" width="580"></canvas>
+            </div>
+          </div>
+          <div>
+            <!-- tabs start -->
+            <div class="tabArea top">
+              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
+                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
+                id="outpop_tab_3" class="tab middle">Download Logo</span>
+            </div>
+            <div class="tabMain top">
+              <!-- Submit to another program -->
+              <div id="outpop_pnl_1">
+                <h4 class="compact">Submit to program</h4>
+                <table id="programs" class="programs">
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
+                    <td><label for="submit_tomtom">Tomtom</label></td>
+                    <td><label for="submit_tomtom">Find similar motifs in
+                        published libraries or a library you supply.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
+                    <td><label for="submit_fimo">FIMO</label></td>
+                    <td><label for="submit_fimo">Find motif occurrences in
+                        sequence data.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
+                    <td><label for="submit_mast">MAST</label></td>
+                    <td><label for="submit_mast">Rank sequences by affinity to
+                        groups of motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
+                    <td><label for="submit_gomo">GOMo</label></td>
+                    <td><label for="submit_gomo">Identify possible roles (Gene
+                        Ontology terms) for motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
+                    <td><label for="submit_spamo">SpaMo</label></td>
+                    <td><label for="submit_spamo">Find other motifs that are
+                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
+                  </tr>
+                </table>
+              </div>
+              <!-- download text format  -->
+              <div id="outpop_pnl_2">
+                <div>
+                  <label for="text_format">Format:</label>
+                  <select id="text_format">
+                    <option value="0">Count Matrix</option>
+                    <option value="1">Probability Matrix</option>
+                    <option value="2">Minimal MEME</option>
+                    <option value="3">FASTA</option>
+                    <option value="4">Raw</option>
+                  </select>
+                </div>
+                <form id="text_form" method="post" action="">
+                  <script>$("text_form").action = site_url + "/utilities/save_generated_file";</script>
+                  <input type="hidden" id="text_name" name="name" value="motif.txt">
+                  <input type="hidden" name="mime_type" value="text/plain">
+                  <textarea id="outpop_text" name="content"
+                    style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
+                    rows="8" readonly="readonly" wrap="off"></textarea>
+                </form>
+              </div>
+              <!-- download logo format -->
+              <div id="outpop_pnl_3">
+                <form id="logo_form" method="post" action="">
+                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
+                  <input type="hidden" name="program" value="MEME"/>
+                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
+                  <table>
+                    <tr>
+                      <td><label for="logo_format">Format:</label></td>
+                      <td>
+                        <select id="logo_format" name="png">
+                          <option value="1">PNG (for web)</option>
+                          <option value="0">EPS (for publication)</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_rc">Orientation:</label></td>
+                      <td>
+                        <select id="logo_rc" name="rc1">
+                          <option value="0">Normal</option>
+                          <option value="1" id="logo_rc_option">Reverse Complement</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
+                      <td>
+                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
+                        <select id="logo_ssc" name="ssc">
+                          <option value="0">Off</option>
+                          <option value="1">On</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_width">Width:</label></td>
+                      <td>
+                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_height">Height:</label></td>
+                      <td>
+                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
+                      </td>
+                    </tr>
+                  </table>
+                </form>
+              </div>
+              <!-- Buttons -->
+              <div>
+                <div style="float:left;">
+                  <input type="button" id="outpop_do" value="Submit" />
+                </div>
+                <div style="float:right;">
+                  <input id="outpop_cancel" type="button" value="Cancel" />
+                </div>
+                <div style="clear:both;"></div>
+              </div>
+            </div>
+        </div>
+      </div>
+    </div>
+
+
+
+    <!-- Page starts here -->
+    <div id="top" class="pad1">
+      <div class="prog_logo big">
+        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABGCAYAAACUsCfoAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9wLHAInL7an9JAAAA8eSURBVHja7ZpZbxv3ucZ/s3AZ7qQkypZELZS3WHKiRJbTFnHqOjZcGzCQBf0A7cUB8glOb89dz30vChRp7xK0aZo4TYq6dtKqSew6iuJWpmPJlrVFFCmKI+7LLJw5F81MFZyec5rTILJaP8AAnAty+Pzf933ebeAhHuIhHuIhHmJPo6TpaeGLfimTydhLS0sUCgWazSbVahXDMOh0Ong8HiKRCAMDAxw+fJhHH31UeFDJ/91/bHp62r558ya6rmOaJuvr6+TzeYrFIoZhAOD1epFlmWAwSDqdZnR0lCNHjjA+Ps7+/fuFPUU8k8nYV69epVKpEA6HuXPnDrOzs7RaLbxeL93d3fj9foLBIB6Ph0ajQaVSAUBRFNLpNI888ggHDhzg3Llzwp4g/vbbb9szMzPE43FyuRwffPAB2WyWnp4ehoaGiMVi2LZNvV6n3W7j8/mIRqN4vV4ajQa1Wo2trS0OHTqEaZo89dRTfO973xMeaOKvvfaaffv2bcLhMCsrK/z+979HVVWOHz/O0NAQxWIRVVVRVRW/348oihiGgSiKxGIxurq6CAQCBINB3n//fcbGxiiXyxw7dowXX3yx1Nvbm3igiBcKhY9u3rw5OTMzQzgc5vbt23zwwQfIsszExAS2bZPP55EkiVAoRCQSIRwOI8sy5XKZ7e1tWq0WnU6HTqfD4OAggUAAVVXpdDo0m01GRkb44Q9/KDxQxH/729/as7Oz+Hw+Pv30U37zm9/g9Xrp6emht7eXYDCI3+/H6/UiCALtdhvLsuh0OkiSRCAQQJZl6vU65XKZ1dVV+vv7SSQS5PN5vF4vhUKBgwcP8qMf/WjXyIs7b+7cuWMvLi4iCAL1ep133nkHXdcZHh4mlUoRDofp7+8nHo9jGAaCIBCPx+nr6yOdTtPX14fH40HTNGRZpqenh76+PrLZLMVikYGBARRFwTRN5ubm+PGPf2zvFnF5583c3BzlchlZlrl16xa1Wo2xsTGi0SiDg4OutUzTJBKJIIoiXq+XQCBAIpEgFAphmiaqqlIoFKjVaoyOjhKJRFhfXycajRKNRunp6WFhYYG33nqLQqHwUTKZPP5VE5ecD5cvX7bv37+Poijkcjl++ctfMjo6ytDQEMlkEo/HQ7lcpt1u4/F4kGUZQRDw+Xz09fVx4MABRkZGSKVSdHV10el0KJVK1Ot14vE4kiRRKpVQFIV4PI5t23z66ad0Op2+K1eu/MeuWVxVVUzTRNd17t27RzKZJJFIEI1GEUWRdruNaZqIoogkSYiiiCiK+P1+AoEA0WiUQ4cOCQCbm5vb5XI5Xi6XWVtbw7ZtZFnG7/e7D1YUhWAwSLVaJZvN2v39/cJXHuOLi4t2sVhEEAS2t7eZn59n//79JBIJwuEwlmXRbDbRdR1BEBAEAcuysCwL2/5LmIriX+Wit7c3EY/HSSQSeDweDMPA4/EQCoWwbRvbtgmFQoTDYUqlErlcbnfE7f79+64gbWxs0G63icViRCIRBEHANE0Mw0CSJLxer0vSUfVKpUKxWGRtbc12UmKr1cI0TQD3t4PBoHtwgUAAv99Ps9kkn8/vjrjlcjlkWabdbrO8vEx3dzfhcJhoNEq9XkfTNERRxOfz4fV6sW0bSZJcBS+VSqytrdFqtbh+/bq9sLBALpdje3sbXddd4jutLwh/8WzLslBVdXeI12o1RFFkc3PTLTFjsRixWAxVVbEsC1mWkSTJdVXnMgyDarWKrusUi0X8fj+WZVGtVimXyxiGgW3bblh4PB78fj/tdhvbthFF0a3tv3Liuq4jiiKFQgFZlolEInR3d6MoConEXytLp1Bx0Ol0sG0bXdfRdZ1arYYgCNi2jaZptFot1zOcQ3LSnxMGzsHvCnHH/RqNBtFoFEmSCIfDAAwNDWFZFu12m0ajgaZpWJbl/oDH4/ncoTii5xBz1N+2bTqdDrIs4/P53MxgWRaapu2exQOBgHsAnU6HdrvN5uYmgUCASCRCJBIhkUhgmibNZpNarUaj0XAt71jfET1RFN1YliTJfUa73SaZTLK1tUWtVkPTNKampnaHuFNGyrKM1+t141bTNGq1GrVazS1EIpEI8XjcLWJqtdrnYthNF58pv23beL1eJEly1VzXder1Oq1Wi2AwiK7ru0PcSSs73bBYLBIMBpEkCdM0qVQq6LpOq9UiHA673Vmn08E0TfdyRM85CNM08Xq9bkoMhULugRqGgd/v3z1Xl2X5c24aDodRVZV4PO7W406/raoqtVqNYDCIz+dDURQ3vp3LuXeEz4nlTqdDOBxG13U3TBRF2b0mJRAI0Gg0EAQBTdPw+/2Uy2VXoJzRkkPEifNWq0UgEHCLEsedLcty1X1nzIdCIRRFoVQqUSqVsCyLYDBIPB7fncotlUq5JaWu6xiGgWmabG1tuanINE0EQXAPwSlk6vU6zWaTdruNpmnud3eWsk6fnkwmMU2Tzc1NVFVFURSi0SjpdHp3iB89ehRRFOnt7XWHCNFolFwu58ar08AYhuEWNH6/H4/H8zlL71R4J5XJskwgECAWi5HP51lZWaHVajE8PEw8Hufw4cO7Q3zfvn0C4E5MNU2jq6uLarVKPp//nPA5hYgzcYlEIoRCIfcQHLd3SDvEPR4PHo+HfD5PPp9HEARGRkYIhUIMDQ0Ju0Ic4NixY3g8Hnp7e8lms8RiMcLhMNlsFk3TXHW3bZtgMOjmfScEvF6vW8s7qczxgGazSSAQ4M9//jOqqlKpVHj88cfx+XyMjY3t7ujp1KlTQrlcdicupVKJkZER1tbWuHfvHqqqEolEiMVitNtt6vW6q+iNRoNms4kkSfh8PtfC0WgURVHo7+9nc3OTjY0N3n33XQYGBkilUiSTSU6ePCnsKnGA559/nkqlwtGjR8nn8/j9fh5//HEsy+LWrVvMz8+j6zqhUAifz4dhGG7z0mq1UFUVXdeJRCIEg0F32loqlbh37x53796lq6sLRVGIRCJMTEzs2pT1c8Qfe+wxYWpqyv1j2WyWVCpFIpGgUqkwNzfHnTt33JTnDCUlSaK7u5v+/n66u7vxeDxun16r1SgUCly/fp3bt29z+vRpBgcHqdVqRKPRB2uh8LOf/cyemZlhYWGBYDBIJBIBoFgs0mw2CYfDxONxfD4fg4ODros7vXWhUKDT6bg5/v3332dlZYWhoSHS6TSnTp1i3759VKtVzpw5w1c9dvpfNymvvPKKff36dbLZLIqiuBVWs9mk0WhgWZbbn4fDYURRRNM0AoEAvb29+Hw+Go0Gly9fZmNjg4mJCcbGxti/f787mJyfn6darTI5OcmJEyeEB4J4sVj8wfT09L/Pzs6SzWbdpWEikXBJGoZBs9kkGo0iyzKmabrLhtXVVTKZDJubm5w9e5YjR44wMDDAd7/7XWF2dtZeXFzkyJEj7pZm//79pFIpenp6vhIP+D8f8NZbb9nr6+ssLy+ztbXl1t5er9fdhxeLRSRJoquri0qlQiaTYXt7m0gkwpkzZ5BlmbGxMV544QX3eR9//LE9Pz/PsWPHuHHjBouLi0iSxMDAAMePH2dqakrYVeIAKysr9u3bt1leXnZn65qmoeu6W9AYhkGj0aBYLGKaJocOHeLRRx8lkUgwOTnpjp4d5HI5++OPP6ZcLjM+Ps61a9dYWFig2Wzi9Xp5/vnnOX36tLCrxHfi1q1b9tLSkuv+9XrdbTEVRSEWi5FMJhkdHWV4eJiDBw/+j8/Y2tr6+WuvvfYdwzBIpVJIkoSqqszPz1Ov17lw4QJf+9rXziYSiau7TvxvoVQqpUul0n2n2/oibz+899579k9/+lPC4TCnTp3i61//Orlcjp/85CdomsbTTz/NiRMn/pvH/CMotrQfyF/GD8Xj8aX/7yEePnx4dnx8fPJ3v/sdiqIwODjI5OSkcOPGDfvNN9/kypUr5PN5MpmMPT4+/qWQ71Z835fZZSSTyeMrKyt2vV7n7t27vPrqq1y7ds1+8sknhT/+8Y/2pUuXuHnzJs1mk6WlJTudTn8p5EUeAAwPDwvPPfccBw4cYHV1lc+KJ3t0dPTVixcvcvDgQebn53n55ZeZmZn5h1fLalv/twfqTaRMJmP/4he/YH19nSNHjnDhwgVisRj37t3jnXfeYWFhgQMHDnD+/HmeeuopYc9b3MH4+LjwrW99C0EQuHXrFtPT09RqNfr7+zlx4gTpdJqNjQ3efPNN3njjDbtYLP5gV1X9y8bly5ft119/nUqlwsmTJzl9+jQej4ePPvqITz75hLW1NYLBIJOTk5w7d46+vr4vzEN+EImfO3dOuHr1qv3666/z3nvvoWkaZ8+e5YknnnBXU5qmcfPmTQzDYG1tzR4cHBT2vMUdTE9P25cuXaJQKDA5OcmFCxfQdZ3Z2VkWFhbY2NhAURRSqRTPPvssY2Njwp62uINvfvObwp/+9Cf7V7/6FTdu3KDT6XD+/HmmpqbcoaaqqszOzmIYxhfK9Q80cYCJiQlhbm7OFgSBubk5vF4vzzzzDBMTE+7CMRgMsrCwwEsvvcS1a9fsb3zjG8KedvWd+OSTT+y3336bubk5JicnOXnyJJZl8eGHH7K2tkahUKDRaLBv3z4uXrzI2bNnhT1tcQdHjx4VMpmM3el0WFxcJBQKMTU1xbFjx6hWqwC0221WVlb49a9/zY0bN+wnn3xS2BN5/O/J88899xzDw8NkMhnm5uaIx+M8/fTT9PT0YFkWg4ODrK6u8sorrzA/P2/veVffidXVVfvdd99lenqa8+fPMzo6iqZp/OEPf2BhYYFWq4Usy4yMjHDx4kX+luXlvUh8aGhImJmZsS3L4vr165imSSqVYt++fbTbbWq1GtVqlWq1yt27d7l//749Ojoq7HniAFNTU8LS0pJdLpe5e/cu6+vrRCIRhoeHqVarrK6uous66+vrZLNZSqVS+rP2eW8TB0in00I2m3XVHqCvr49YLEYikXBfRiqXy+Ryufs7Q1tkj6O/v1/49re/zTPPPIMgCMzPz7sraJ/Ph9/vd/d3pVIp/U9hcQdOnX7p0iU7k8kgiqK76lIUxX19dKerC/wTYXt7+8zm5uaV5eVlNjY2iMfj+P1+hoeH6enpmd35evg/FXEHm1uF7ZXltXgg6EcSPSR7u/+zO9H1ff6VsFWq/pyHeIiHeIh/FfwXjVDdIW9O2PAAAAAASUVORK5CYII=" alt="MEME Logo">
+        <h1>MEME</h1>
+        <h2>Multiple Em for Motif Elicitation</h2>
+      </div>
+      <p>
+        For further information on how to interpret these results or to get a 
+        copy of the MEME software please access 
+        <a href="http://meme-suite.org/">http://meme-suite.org</a>. 
+      </p>
+      <p>If you use MEME in your research, please cite the following paper:<br />
+        <span class="citation">
+          Timothy L. Bailey and Charles Elkan, 
+          "Fitting a mixture model by expectation maximization to discover motifs in biopolymers", 
+          <em>Proceedings of the Second International Conference on Intelligent Systems 
+          for Molecular Biology</em>, pp. 28-36, AAAI Press, Menlo Park, California, 1994. 
+          <a href="http://meme-suite.org/doc/ismb94.pdf">[pdf]</a> 
+        </span>
+      </p>
+    </div>
+    <!-- navigation -->
+    <div class="pad2">
+      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#sites_sec">Motif Locations</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#info_sec">Program information</a>
+    </div>
+    <!-- alert the user when their browser is not up to the task -->
+    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
+    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
+    <script>
+      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
+    </script>
+    <h2 class="mainh pad2" id="motifs_sec">Discovered Motifs</h2>
+    <div id="motifs" class="box">
+      <p>Please wait... Loading...</p>
+      <p>If the page has fully loaded and this message does not disappear then an error may have occurred.</p>
+    </div>
+    <h2 class="mainh pad2" id="sites_sec">Motif Locations</h2>
+    <div id="blocks" class="box">
+      <p>Please wait... Loading...</p>
+      <p>If the page has fully loaded and this message does not disappear then an error may have occurred.</p>
+    </div>
+    <h2 class="mainh pad2" id="inputs_sec">Inputs &amp; Settings</h2>
+    <div class="box">
+      <h4>Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th class="col_psp">PSP Source <div class="help" data-topic="pop_psp_source"></div></th>
+          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_seq_source"></td>
+          <td id="ins_seq_psp" class="col_psp"></td>
+          <td id="ins_seq_alphabet"></td>
+          <td id="ins_seq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.sequence_db;
+        $("ins_seq_source").innerHTML = db.source;
+        $("ins_seq_alphabet").innerHTML = meme_alphabet.get_alphabet_name();
+        $("ins_seq_count").innerHTML = db.sequences.length;
+        if (db.psp) {
+          $("ins_seq_psp").innerHTML = db.psp;
+        }
+        toggle_class($("seq_info"), "hide_psp", !(db.psp));
+      }
+      </script>
+      <h4>Background</h4>
+      <span id="alpha_bg"></span>
+      <script>
+      {
+        $("alpha_bg").appendChild(make_alpha_bg_table(meme_alphabet, data.sequence_db.freqs));
+      }
+      </script>
+      <h4>Other Settings</h4>
+      <table id="tbl_settings" class="inputs hide_advanced">
+        <tr>
+          <th>Motif Site Distribution</th>
+          <td id="opt_mod">
+            <span class="mod_zoops">ZOOPS: Zero or one site per sequence</span>
+            <span class="mod_oops">OOPS: Exactly one site per sequence</span>
+            <span class="mod_anr">ANR: Any number of sites per sequence</span>
+          </td>
+        </tr>
+        <tr>
+          <th>Site Strand Handling</th>
+          <td id="opt_strand">
+            <span class="strand_none">This alphabet only has one strand</span>
+            <span class="strand_given">Sites must be on the given strand</span>
+            <span class="strand_both">Sites may be on either strand</span>
+          </td>
+        </tr>
+        <tr>
+          <th>Maximum Number of Motifs</th>
+          <td id="opt_nmotifs"></td>
+        </tr>
+        <tr>
+          <th>Motif E-value Threshold</th>
+          <td id="opt_evt"></td>
+        </tr>
+        <tr>
+          <th>Minimum Motif Width</th>
+          <td id="opt_minw"></td>
+        </tr>
+        <tr>
+          <th>Maximum Motif Width</th>
+          <td id="opt_maxw"></td>
+        </tr>
+        <tr>
+          <th>Minimum Sites per Motif</th>
+          <td id="opt_minsites"></td>
+        </tr>
+        <tr>
+          <th>Maximum Sites per Motif</th>
+          <td id="opt_maxsites"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Bias on Number of Sites</th>
+          <td id="opt_wnsites"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Sequence Prior</th>
+          <td id="opt_prior">
+            <span class="prior_dirichlet">Simple Dirichlet</span>
+            <span class="prior_dmix">Dirichlets Mix</span>
+            <span class="prior_mega">Mega-weight Dirichlets Mix</span>
+            <span class="prior_megap">Mega-weight Dirichlets Mix Plus</span>
+            <span class="prior_addone">Add One</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>Sequence Prior Strength</th>
+          <td id="opt_b"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Source</th>
+          <td id="opt_substring">
+            <span class="substring_on">From substrings in input sequences</span>
+            <span class="substring_off">From strings on command line (-cons)</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Map Type</th>
+          <td id="opt_spmap">
+            <span class="spmap_uni">Uniform</span>
+            <span class="spmap_pam">Point Accepted Mutation</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Fuzz</th>
+          <td id="opt_spfuzz"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Maximum Iterations</th>
+          <td id="opt_maxiter"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Improvement Threshold</th>
+          <td id="opt_distance"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Trim Gap Open Cost</th>
+          <td id="opt_wg"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Trim Gap Extend Cost</th>
+          <td id="opt_ws"></td>
+        </tr>
+        <tr class="advanced">
+          <th>End Gap Treatment</th>
+          <td id="opt_noendgaps">
+            <span class="noendgaps_on">No cost</span>
+            <span class="noendgaps_off">Same cost as other gaps</span>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2" style="text-align: center">
+            <a href="javascript:toggle_class(document.getElementById('tbl_settings'), 'hide_advanced')">
+              <span class="show_more">Show Advanced Settings</span>
+              <span class="show_less">Hide Advanced Settings</span>
+            </a>
+          </td>
+        </tr>
+      </table>
+      <script>
+      {
+        $("opt_mod").className = data.options.mod;
+        $("opt_strand").className = (meme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
+        $("opt_nmotifs").textContent = data.options.nmotifs;
+        $("opt_evt").textContent = (typeof data.options.evt === "number" ? data.options.evt : "no limit");
+        $("opt_minw").textContent = data.options.minw;
+        $("opt_maxw").textContent = data.options.maxw;
+        $("opt_minsites").textContent = data.options.minsites;
+        $("opt_maxsites").textContent = data.options.maxsites;
+        $("opt_wnsites").textContent = data.options.wnsites;
+        $("opt_spmap").className = data.options.spmap;
+        $("opt_spfuzz").textContent = data.options.spfuzz;
+        $("opt_prior").className = data.options.prior;
+        $("opt_b").textContent = data.options.b;
+        $("opt_maxiter").textContent = data.options.maxiter;
+        $("opt_distance").textContent = data.options.distance;
+        $("opt_wg").textContent = data.options.wg;
+        $("opt_ws").textContent = data.options.ws;
+        $("opt_noendgaps").className = (data.options.noendgaps ? "on" : "off");
+        $("opt_substring").className = (data.options.substring ? "on" : "off");
+      }
+      </script>
+    </div>
+    <!-- list information on this program -->
+    <div id="info_sec" class="bar">
+      <div class="subsection">
+        <h5 id="version">MEME version</h5>
+        <span id="ins_version"></span> 
+        (Release date: <span id="ins_release"></span>)<br>
+      </div>
+      <script>
+        $("ins_version").innerHTML = data["version"];
+        $("ins_release").innerHTML = data["release"];
+      </script>
+      <div class="subsection">
+        <h5 id="reference">Reference</h5>
+        <span class="citation">
+          Timothy L. Bailey and Charles Elkan, 
+          "Fitting a mixture model by expectation maximization to discover motifs in biopolymers", 
+          <em>Proceedings of the Second International Conference on Intelligent Systems 
+          for Molecular Biology</em>, pp. 28-36, AAAI Press, Menlo Park, California, 1994. 
+        </span>
+      </div>
+      <div class="subsection">
+        <h5 id="command">Command line</h5>
+        <textarea id="cmd" rows="5" style="width:100%;" readonly="readonly">
+        </textarea>
+        <script>$("cmd").value = data["cmd"].join(" ");</script>
+      </div>
+    </div>
+    
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_output_test1.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,325 @@
+********************************************************************************
+MEME - Motif discovery tool
+********************************************************************************
+MEME version 4.12.0 (Release date: Tue Jun 27 16:22:50 2017 -0700)
+
+For further information on how to interpret these results or to get
+a copy of the MEME software please access http://meme-suite.org .
+
+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-suite.org .
+********************************************************************************
+
+
+********************************************************************************
+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= meme_input_1.fasta
+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 meme_input_1.fasta -o meme_test1_out -nostatus -maxsize 1000000 
+
+model:  mod=         zoops    nmotifs=         1    evt=           inf
+object function=  E-value of product of p-values
+width:  minw=            8    maxw=           50
+width:  wg=             11    ws=              1    endgaps=       yes
+nsites: minsites=        2    maxsites=       30    wnsites=       0.8
+theta:  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    shuffle=        -1
+
+sample: seed=            0    ctfrac=         -1    maxwords=       -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 GGGGTATAAAA MEME-1	width =  11  sites =  25  llr = 239  E-value = 2.4e-011
+********************************************************************************
+--------------------------------------------------------------------------------
+	Motif GGGGTATAAAA MEME-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 GGGGTATAAAA MEME-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 GGGGTATAAAA MEME-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 GGGGTATAAAA MEME-1 in BLOCKS format
+--------------------------------------------------------------------------------
+BL   MOTIF GGGGTATAAAA 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 GGGGTATAAAA MEME-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 GGGGTATAAAA MEME-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 GGGGTATAAAA MEME-1 regular expression
+--------------------------------------------------------------------------------
+[GA][GA][GC][GA]TATA[AT]AA
+--------------------------------------------------------------------------------
+
+
+
+
+Time  0.77 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 requested number of motifs (1) found.
+********************************************************************************
+
+CPU: ThinkPad-T450s
+
+********************************************************************************
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_output_test1.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,1292 @@
+<?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 name CDATA #REQUIRED>
+<!ELEMENT ambigs (letter*)>
+<!ELEMENT letter EMPTY>
+<!ATTLIST letter id ID #REQUIRED>
+<!ATTLIST letter symbol CDATA #REQUIRED>
+<!ATTLIST letter equals CDATA #IMPLIED>
+<!ATTLIST letter aliases CDATA #IMPLIED>
+<!ATTLIST letter complement CDATA #IMPLIED>
+<!ATTLIST letter name CDATA #IMPLIED>
+<!ATTLIST letter colour CDATA #IMPLIED>
+<!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,
+  spfun,
+  min_width,
+  max_width,
+  wg,
+  ws,
+  endgaps,
+  minsites,
+  maxsites,
+  wnsites,
+  spmap,
+  spfuzz,
+  prior,
+  beta,
+  maxiter,
+  distance,
+  num_sequences,
+  num_positions,
+  seed,
+  hsfrac,
+  maxwords,
+  maxsize,
+  csites,
+  strands,
+  priors_file,
+  reason_for_stopping,
+  back_order,
+  background_frequencies
+)>
+<!ELEMENT command_line (#PCDATA)*>
+<!ELEMENT host (#PCDATA)*>
+<!ELEMENT type (#PCDATA)*>
+<!ELEMENT nmotifs (#PCDATA)*>
+<!ELEMENT evalue_threshold (#PCDATA)*>
+<!ELEMENT object_function (#PCDATA)*>
+<!ELEMENT spfun (#PCDATA)*>
+<!ELEMENT min_width (#PCDATA)*>
+<!ELEMENT max_width (#PCDATA)*>
+<!ELEMENT wg (#PCDATA)*>
+<!ELEMENT ws (#PCDATA)*>
+<!ELEMENT endgaps (#PCDATA)*>
+<!ELEMENT minsites (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT wnsites (#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 hsfrac (#PCDATA)*>
+<!ELEMENT maxwords (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT csites (#PCDATA)*>
+<!ELEMENT strands (#PCDATA)*>
+<!ELEMENT priors_file (#PCDATA)*>
+<!ELEMENT reason_for_stopping (#PCDATA)*>
+<!ELEMENT back_order (#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
+                alt CDATA ""
+                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.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+<training_set datafile="meme_input_1.fasta" length="30">
+<alphabet name="Protein" like="protein">
+<letter id="A" symbol="A" name="Alanine" colour="0000CC"/>
+<letter id="C" symbol="C" name="Cysteine" colour="0000CC"/>
+<letter id="D" symbol="D" name="Aspartic acid" colour="FF00FF"/>
+<letter id="E" symbol="E" name="Glutamic acid" colour="FF00FF"/>
+<letter id="F" symbol="F" name="Phenylalanine" colour="0000CC"/>
+<letter id="G" symbol="G" name="Glycine" colour="FFB300"/>
+<letter id="H" symbol="H" name="Histidine" colour="FFCCCC"/>
+<letter id="I" symbol="I" name="Isoleucine" colour="0000CC"/>
+<letter id="K" symbol="K" name="Lysine" colour="CC0000"/>
+<letter id="L" symbol="L" name="Leucine" colour="0000CC"/>
+<letter id="M" symbol="M" name="Methionine" colour="0000CC"/>
+<letter id="N" symbol="N" name="Asparagine" colour="008000"/>
+<letter id="P" symbol="P" name="Proline" colour="FFFF00"/>
+<letter id="Q" symbol="Q" name="Glutamine" colour="008000"/>
+<letter id="R" symbol="R" name="Arginine" colour="CC0000"/>
+<letter id="S" symbol="S" name="Serine" colour="008000"/>
+<letter id="T" symbol="T" name="Threonine" colour="008000"/>
+<letter id="V" symbol="V" name="Valine" colour="0000CC"/>
+<letter id="W" symbol="W" name="Tryptophan" colour="0000CC"/>
+<letter id="Y" symbol="Y" name="Tyrosine" colour="33E6CC"/>
+<letter id="X" symbol="X" aliases="*." equals="ACDEFGHIKLMNPQRSTVWY" name="Any amino acid"/>
+<letter id="B" symbol="B" equals="DN" name="Asparagine or Aspartic acid"/>
+<letter id="Z" symbol="Z" equals="EQ" name="Glutamine or Glutamic acid"/>
+<letter id="J" symbol="J" equals="IL" name="Leucine or Isoleucine"/>
+</alphabet>
+<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="A">0.294</value>
+<value letter_id="C">0.231</value>
+<value letter_id="D">0.000</value>
+<value letter_id="E">0.000</value>
+<value letter_id="F">0.000</value>
+<value letter_id="G">0.257</value>
+<value letter_id="H">0.000</value>
+<value letter_id="I">0.000</value>
+<value letter_id="K">0.000</value>
+<value letter_id="L">0.000</value>
+<value letter_id="M">0.000</value>
+<value letter_id="N">0.000</value>
+<value letter_id="P">0.000</value>
+<value letter_id="Q">0.000</value>
+<value letter_id="R">0.000</value>
+<value letter_id="S">0.000</value>
+<value letter_id="T">0.217</value>
+<value letter_id="V">0.000</value>
+<value letter_id="W">0.000</value>
+<value letter_id="Y">0.000</value>
+</alphabet_array>
+</letter_frequencies>
+</training_set>
+<model>
+<command_line>meme meme_input_1.fasta -o meme_test1_out -nostatus -maxsize 1000000 </command_line>
+<host>ThinkPad-T450s</host>
+<type>zoops</type>
+<nmotifs>1</nmotifs>
+<evalue_threshold>inf</evalue_threshold>
+<object_function>E-value of product of p-values</object_function>
+<use_llr>0</use_llr>
+<min_width>8</min_width>
+<max_width>50</max_width>
+<wg>11</wg>
+<ws>1</ws>
+<endgaps>yes</endgaps>
+<substring>yes</substring>
+<minsites>2</minsites>
+<maxsites>30</maxsites>
+<wnsites>0.8</wnsites>
+<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>
+<ctfrac>-1</ctfrac>
+<maxwords>-1</maxwords>
+<strands>none</strands>
+<priors_file>prior30.plib</priors_file>
+<reason_for_stopping>Stopped because requested number of motifs (1) found.</reason_for_stopping>
+<background_frequencies source="dataset with add-one prior applied">
+<alphabet_array>
+<value letter_id="A">0.291</value>
+<value letter_id="C">0.229</value>
+<value letter_id="D">0.001</value>
+<value letter_id="E">0.001</value>
+<value letter_id="F">0.001</value>
+<value letter_id="G">0.255</value>
+<value letter_id="H">0.001</value>
+<value letter_id="I">0.001</value>
+<value letter_id="K">0.001</value>
+<value letter_id="L">0.001</value>
+<value letter_id="M">0.001</value>
+<value letter_id="N">0.001</value>
+<value letter_id="P">0.001</value>
+<value letter_id="Q">0.001</value>
+<value letter_id="R">0.001</value>
+<value letter_id="S">0.001</value>
+<value letter_id="T">0.215</value>
+<value letter_id="V">0.001</value>
+<value letter_id="W">0.001</value>
+<value letter_id="Y">0.001</value>
+</alphabet_array>
+</background_frequencies>
+</model>
+<motifs>
+<motif id="motif_1" name="GGGGTATAAAA" alt="MEME-1" width="11" sites="25" ic="40.0" re="13.8" llr="239" e_value="2.4e-011" bayes_threshold="5.33554" elapsed_time="0.772000">
+<scores>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">-32</value>
+<value letter_id="C">-680</value>
+<value letter_id="D">91</value>
+<value letter_id="E">77</value>
+<value letter_id="F">7</value>
+<value letter_id="G">138</value>
+<value letter_id="H">-20</value>
+<value letter_id="I">55</value>
+<value letter_id="K">64</value>
+<value letter_id="L">107</value>
+<value letter_id="M">11</value>
+<value letter_id="N">150</value>
+<value letter_id="P">142</value>
+<value letter_id="Q">72</value>
+<value letter_id="R">87</value>
+<value letter_id="S">396</value>
+<value letter_id="T">-148</value>
+<value letter_id="V">221</value>
+<value letter_id="W">-140</value>
+<value letter_id="Y">-36</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-11</value>
+<value letter_id="C">-680</value>
+<value letter_id="D">89</value>
+<value letter_id="E">76</value>
+<value letter_id="F">7</value>
+<value letter_id="G">137</value>
+<value letter_id="H">-21</value>
+<value letter_id="I">55</value>
+<value letter_id="K">63</value>
+<value letter_id="L">107</value>
+<value letter_id="M">10</value>
+<value letter_id="N">149</value>
+<value letter_id="P">141</value>
+<value letter_id="Q">71</value>
+<value letter_id="R">87</value>
+<value letter_id="S">396</value>
+<value letter_id="T">-239</value>
+<value letter_id="V">220</value>
+<value letter_id="W">-140</value>
+<value letter_id="Y">-36</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-79</value>
+<value letter_id="C">41</value>
+<value letter_id="D">4</value>
+<value letter_id="E">21</value>
+<value letter_id="F">-7</value>
+<value letter_id="G">44</value>
+<value letter_id="H">-62</value>
+<value letter_id="I">42</value>
+<value letter_id="K">-5</value>
+<value letter_id="L">99</value>
+<value letter_id="M">0</value>
+<value letter_id="N">99</value>
+<value letter_id="P">138</value>
+<value letter_id="Q">52</value>
+<value letter_id="R">42</value>
+<value letter_id="S">399</value>
+<value letter_id="T">-46</value>
+<value letter_id="V">223</value>
+<value letter_id="W">-173</value>
+<value letter_id="Y">-68</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">11</value>
+<value letter_id="C">-677</value>
+<value letter_id="D">48</value>
+<value letter_id="E">47</value>
+<value letter_id="F">-2</value>
+<value letter_id="G">127</value>
+<value letter_id="H">-43</value>
+<value letter_id="I">46</value>
+<value letter_id="K">27</value>
+<value letter_id="L">101</value>
+<value letter_id="M">3</value>
+<value letter_id="N">124</value>
+<value letter_id="P">138</value>
+<value letter_id="Q">60</value>
+<value letter_id="R">62</value>
+<value letter_id="S">397</value>
+<value letter_id="T">-235</value>
+<value letter_id="V">220</value>
+<value letter_id="W">-160</value>
+<value letter_id="Y">-55</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-596</value>
+<value letter_id="C">-820</value>
+<value letter_id="D">12</value>
+<value letter_id="E">-21</value>
+<value letter_id="F">-53</value>
+<value letter_id="G">-267</value>
+<value letter_id="H">-74</value>
+<value letter_id="I">37</value>
+<value letter_id="K">16</value>
+<value letter_id="L">44</value>
+<value letter_id="M">-37</value>
+<value letter_id="N">98</value>
+<value letter_id="P">31</value>
+<value letter_id="Q">9</value>
+<value letter_id="R">19</value>
+<value letter_id="S">319</value>
+<value letter_id="T">212</value>
+<value letter_id="V">127</value>
+<value letter_id="W">-193</value>
+<value letter_id="Y">-95</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">165</value>
+<value letter_id="C">-261</value>
+<value letter_id="D">70</value>
+<value letter_id="E">110</value>
+<value letter_id="F">77</value>
+<value letter_id="G">-521</value>
+<value letter_id="H">-4</value>
+<value letter_id="I">147</value>
+<value letter_id="K">95</value>
+<value letter_id="L">201</value>
+<value letter_id="M">90</value>
+<value letter_id="N">121</value>
+<value letter_id="P">124</value>
+<value letter_id="Q">91</value>
+<value letter_id="R">107</value>
+<value letter_id="S">425</value>
+<value letter_id="T">-527</value>
+<value letter_id="V">314</value>
+<value letter_id="W">-95</value>
+<value letter_id="Y">8</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-838</value>
+<value letter_id="C">-990</value>
+<value letter_id="D">-89</value>
+<value letter_id="E">-149</value>
+<value letter_id="F">-151</value>
+<value letter_id="G">-841</value>
+<value letter_id="H">-161</value>
+<value letter_id="I">-117</value>
+<value letter_id="K">-113</value>
+<value letter_id="L">-66</value>
+<value letter_id="M">-209</value>
+<value letter_id="N">-68</value>
+<value letter_id="P">-69</value>
+<value letter_id="Q">-129</value>
+<value letter_id="R">-91</value>
+<value letter_id="S">111</value>
+<value letter_id="T">221</value>
+<value letter_id="V">-55</value>
+<value letter_id="W">-255</value>
+<value letter_id="Y">-173</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">176</value>
+<value letter_id="C">-858</value>
+<value letter_id="D">-79</value>
+<value letter_id="E">-103</value>
+<value letter_id="F">-115</value>
+<value letter_id="G">-717</value>
+<value letter_id="H">-148</value>
+<value letter_id="I">-95</value>
+<value letter_id="K">-108</value>
+<value letter_id="L">-17</value>
+<value letter_id="M">-162</value>
+<value letter_id="N">-61</value>
+<value letter_id="P">-12</value>
+<value letter_id="Q">-95</value>
+<value letter_id="R">-69</value>
+<value letter_id="S">193</value>
+<value letter_id="T">-737</value>
+<value letter_id="V">52</value>
+<value letter_id="W">-240</value>
+<value letter_id="Y">-153</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">134</value>
+<value letter_id="C">-686</value>
+<value letter_id="D">0</value>
+<value letter_id="E">16</value>
+<value letter_id="F">-12</value>
+<value letter_id="G">-553</value>
+<value letter_id="H">-68</value>
+<value letter_id="I">44</value>
+<value letter_id="K">-8</value>
+<value letter_id="L">96</value>
+<value letter_id="M">-9</value>
+<value letter_id="N">88</value>
+<value letter_id="P">124</value>
+<value letter_id="Q">41</value>
+<value letter_id="R">36</value>
+<value letter_id="S">384</value>
+<value letter_id="T">11</value>
+<value letter_id="V">216</value>
+<value letter_id="W">-177</value>
+<value letter_id="Y">-71</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">165</value>
+<value letter_id="C">-261</value>
+<value letter_id="D">70</value>
+<value letter_id="E">110</value>
+<value letter_id="F">77</value>
+<value letter_id="G">-521</value>
+<value letter_id="H">-4</value>
+<value letter_id="I">147</value>
+<value letter_id="K">95</value>
+<value letter_id="L">201</value>
+<value letter_id="M">90</value>
+<value letter_id="N">121</value>
+<value letter_id="P">124</value>
+<value letter_id="Q">91</value>
+<value letter_id="R">107</value>
+<value letter_id="S">425</value>
+<value letter_id="T">-527</value>
+<value letter_id="V">314</value>
+<value letter_id="W">-95</value>
+<value letter_id="Y">8</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">147</value>
+<value letter_id="C">-614</value>
+<value letter_id="D">89</value>
+<value letter_id="E">129</value>
+<value letter_id="F">93</value>
+<value letter_id="G">-121</value>
+<value letter_id="H">12</value>
+<value letter_id="I">160</value>
+<value letter_id="K">113</value>
+<value letter_id="L">217</value>
+<value letter_id="M">108</value>
+<value letter_id="N">144</value>
+<value letter_id="P">144</value>
+<value letter_id="Q">111</value>
+<value letter_id="R">125</value>
+<value letter_id="S">447</value>
+<value letter_id="T">-241</value>
+<value letter_id="V">332</value>
+<value letter_id="W">-81</value>
+<value letter_id="Y">22</value>
+</alphabet_array>
+</alphabet_matrix>
+</scores>
+<probabilities>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">0.240000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.680000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.080000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.280000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.680000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.040000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.160000</value>
+<value letter_id="C">0.320000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.360000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.160000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.320000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.640000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.040000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.040000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.960000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.960000</value>
+<value letter_id="C">0.040000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.000000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">1.000000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">1.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.000000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.760000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.240000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.960000</value>
+<value letter_id="C">0.040000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.000000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="Y">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.840000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="D">0.000000</value>
+<value letter_id="E">0.000000</value>
+<value letter_id="F">0.000000</value>
+<value letter_id="G">0.120000</value>
+<value letter_id="H">0.000000</value>
+<value letter_id="I">0.000000</value>
+<value letter_id="K">0.000000</value>
+<value letter_id="L">0.000000</value>
+<value letter_id="M">0.000000</value>
+<value letter_id="N">0.000000</value>
+<value letter_id="P">0.000000</value>
+<value letter_id="Q">0.000000</value>
+<value letter_id="R">0.000000</value>
+<value letter_id="S">0.000000</value>
+<value letter_id="T">0.040000</value>
+<value letter_id="V">0.000000</value>
+<value letter_id="W">0.000000</value>
+<value letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="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_output_test2.html	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,7937 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>MEME</title>
+    <script>
+      // @JSON_VAR data
+      var data = {
+        "program": "MEME",
+        "version": "4.12.0",
+        "release": "Tue Jun 27 16:22:50 2017 -0700",
+        "stop_reason": "Stopped because requested number of motifs (1) found.",
+        "cmd": [
+          "meme", "meme_input_1.fasta", "-o", "meme_test2_out", "-nostatus",
+          "-maxsize", "1000000", "-sf", "Galaxy_FASTA_Input", "-dna", "-mod",
+          "zoops", "-nmotifs", "1", "-wnsites", "0.8", "-minw", "8", "-maxw",
+          "50", "-wg", "11", "-ws", "1", "-maxiter", "50", "-distance",
+          "0.001", "-prior", "dirichlet", "-b", "0.01", "-plib",
+          "prior30.plib", "-spmap", "uni", "-spfuzz", "0.5"
+        ],
+        "options": {
+          "mod": "zoops",
+          "revcomp": false,
+          "nmotifs": 1,
+          "minw": 8,
+          "maxw": 50,
+          "minsites": 2,
+          "maxsites": 30,
+          "wnsites": 0.8,
+          "spmap": "uni",
+          "spfuzz": 0.5,
+          "maxwords": -1,
+          "prior": "dirichlet",
+          "b": 0.01,
+          "maxiter": 50,
+          "distance": 0.001,
+          "wg": 11,
+          "ws": 1,
+          "noendgaps": false,
+          "substring": true
+        },
+        "alphabet": {
+          "name": "DNA",
+          "like": "dna",
+          "ncore": 4,
+          "symbols": [
+            {
+              "symbol": "A",
+              "name": "Adenine",
+              "colour": "CC0000",
+              "complement": "T"
+            }, {
+              "symbol": "C",
+              "name": "Cytosine",
+              "colour": "0000CC",
+              "complement": "G"
+            }, {
+              "symbol": "G",
+              "name": "Guanine",
+              "colour": "FFB300",
+              "complement": "C"
+            }, {
+              "symbol": "T",
+              "aliases": "U",
+              "name": "Thymine",
+              "colour": "008000",
+              "complement": "A"
+            }, {
+              "symbol": "N",
+              "aliases": "X.",
+              "name": "Any base",
+              "equals": "ACGT"
+            }, {
+              "symbol": "V",
+              "name": "Not T",
+              "equals": "ACG"
+            }, {
+              "symbol": "H",
+              "name": "Not G",
+              "equals": "ACT"
+            }, {
+              "symbol": "D",
+              "name": "Not C",
+              "equals": "AGT"
+            }, {
+              "symbol": "B",
+              "name": "Not A",
+              "equals": "CGT"
+            }, {
+              "symbol": "M",
+              "name": "Amino",
+              "equals": "AC"
+            }, {
+              "symbol": "R",
+              "name": "Purine",
+              "equals": "AG"
+            }, {
+              "symbol": "W",
+              "name": "Weak",
+              "equals": "AT"
+            }, {
+              "symbol": "S",
+              "name": "Strong",
+              "equals": "CG"
+            }, {
+              "symbol": "Y",
+              "name": "Pyrimidine",
+              "equals": "CT"
+            }, {
+              "symbol": "K",
+              "name": "Keto",
+              "equals": "GT"
+            }
+          ]
+        },
+        "background": {
+          "freqs": [0.294, 0.231, 0.257, 0.217]
+        },
+        "sequence_db": {
+          "source": "Galaxy_FASTA_Input",
+          "psp_source": "prior30.plib",
+          "freqs": [0.294, 0.231, 0.257, 0.217],
+          "sequences": [
+            {
+              "name": "chr21_19617074_19617124_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_26934381_26934431_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_28217753_28217803_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31710037_31710087_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31744582_31744632_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31768316_31768366_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31914206_31914256_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31933633_31933683_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31962741_31962791_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31964683_31964733_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31973364_31973414_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_31992870_31992920_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32185595_32185645_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32202076_32202126_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32253899_32253949_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_32410820_32410870_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_36411748_36411798_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_37838750_37838800_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45705687_45705737_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45971413_45971463_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45978668_45978718_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_45993530_45993580_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46020421_46020471_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46031920_46031970_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46046964_46047014_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46057197_46057247_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46086869_46086919_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_46102103_46102153_-",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_47517957_47518007_+",
+              "length": 50,
+              "weight": 1.000000
+            }, {
+              "name": "chr21_47575506_47575556_-",
+              "length": 50,
+              "weight": 1.000000
+            }
+          ]
+        },
+        "motifs": [
+          {
+            "db": 0,
+            "id": "GGSRTATAAAA",
+            "alt": "MEME-1",
+            "len": 11,
+            "nsites": 30,
+            "evalue": "5.1e-040",
+            "ic": 13.0,
+            "re": 12.2,
+            "llr": 254,
+            "bt": 5.2854,
+            "time": 0.376000,
+            "psm": [
+              [-14, -179, 114, -112], [3, -1155, 137, -270], 
+              [-114, 20, 86, -71], [3, -279, 122, -170], 
+              [-1155, -1155, -295, 215], [156, -179, -1155, -170], 
+              [-1155, -1155, -1155, 220], [172, -279, -1155, -1155], 
+              [125, -1155, -1155, 46], [167, -179, -1155, -1155], 
+              [144, -1155, -63, -270]
+            ],
+            "pwm": [
+              [0.266667, 0.066667, 0.566667, 0.100000], 
+              [0.300000, 0.000000, 0.666667, 0.033333], 
+              [0.133333, 0.266667, 0.466667, 0.133333], 
+              [0.300000, 0.033333, 0.600000, 0.066667], 
+              [0.000000, 0.000000, 0.033333, 0.966667], 
+              [0.866667, 0.066667, 0.000000, 0.066667], 
+              [0.000000, 0.000000, 0.000000, 1.000000], 
+              [0.966667, 0.033333, 0.000000, 0.000000], 
+              [0.700000, 0.000000, 0.000000, 0.300000], 
+              [0.933333, 0.066667, 0.000000, 0.000000], 
+              [0.800000, 0.000000, 0.166667, 0.033333]
+            ],
+            "sites": [
+              {
+                "seq": 24,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 4.51e-07,
+                "lflank": "AAGGCCAGGA",
+                "match": "GGGGTATAAAA",
+                "rflank": "GCCTGAGAGC"
+              }, {
+                "seq": 23,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 2.22e-06,
+                "lflank": "ATACCCAGGG",
+                "match": "AGGGTATAAAA",
+                "rflank": "CCTCAGCAGC"
+              }, {
+                "seq": 13,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 2.74e-06,
+                "lflank": "CCACCAGCTT",
+                "match": "GAGGTATAAAA",
+                "rflank": "AGCCCTGTAC"
+              }, {
+                "seq": 25,
+                "pos": 36,
+                "rc": false,
+                "pvalue": 4.86e-06,
+                "lflank": "ACAGGCCCTG",
+                "match": "GGCATATAAAA",
+                "rflank": "GCC"
+              }, {
+                "seq": 21,
+                "pos": 7,
+                "rc": false,
+                "pvalue": 4.86e-06,
+                "lflank": "CCAAGGA",
+                "match": "GGAGTATAAAA",
+                "rflank": "GCCCCACAAA"
+              }, {
+                "seq": 19,
+                "pos": 9,
+                "rc": false,
+                "pvalue": 4.86e-06,
+                "lflank": "CAGGCCCTG",
+                "match": "GGCATATAAAA",
+                "rflank": "GCCCCAGCAG"
+              }, {
+                "seq": 9,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 4.86e-06,
+                "lflank": "GATTCACTGA",
+                "match": "GGCATATAAAA",
+                "rflank": "GGCCCTCTGC"
+              }, {
+                "seq": 28,
+                "pos": 32,
+                "rc": false,
+                "pvalue": 6.48e-06,
+                "lflank": "CCGGCGGGGC",
+                "match": "GGGGTATAAAG",
+                "rflank": "GGGGCGG"
+              }, {
+                "seq": 20,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 6.48e-06,
+                "lflank": "CAGA",
+                "match": "GGGGTATAAAG",
+                "rflank": "GTTCCGACCA"
+              }, {
+                "seq": 12,
+                "pos": 18,
+                "rc": false,
+                "pvalue": 6.48e-06,
+                "lflank": "CACCAGAGCT",
+                "match": "GGGATATATAA",
+                "rflank": "AGAAGGTTCT"
+              }, {
+                "seq": 15,
+                "pos": 21,
+                "rc": false,
+                "pvalue": 1.38e-05,
+                "lflank": "AATCACTGAG",
+                "match": "GATGTATAAAA",
+                "rflank": "GTCCCAGGGA"
+              }, {
+                "seq": 11,
+                "pos": 16,
+                "rc": false,
+                "pvalue": 1.38e-05,
+                "lflank": "CACTATTGAA",
+                "match": "GATGTATAAAA",
+                "rflank": "TTTCATTTGC"
+              }, {
+                "seq": 0,
+                "pos": 39,
+                "rc": false,
+                "pvalue": 1.41e-05,
+                "lflank": "CCTCGGGACG",
+                "match": "TGGGTATATAA",
+                "rflank": ""
+              }, {
+                "seq": 6,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 1.61e-05,
+                "lflank": "CCCACTACTT",
+                "match": "AGAGTATAAAA",
+                "rflank": "TCATTCTGAG"
+              }, {
+                "seq": 22,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 1.95e-05,
+                "lflank": "GA",
+                "match": "GACATATAAAA",
+                "rflank": "GCCAACATCC"
+              }, {
+                "seq": 14,
+                "pos": 17,
+                "rc": false,
+                "pvalue": 1.95e-05,
+                "lflank": "CCCACCAGCA",
+                "match": "AGGATATATAA",
+                "rflank": "AAGCTCAGGA"
+              }, {
+                "seq": 18,
+                "pos": 37,
+                "rc": false,
+                "pvalue": 2.16e-05,
+                "lflank": "CGTGGTCGCG",
+                "match": "GGGGTATAACA",
+                "rflank": "GC"
+              }, {
+                "seq": 29,
+                "pos": 30,
+                "rc": false,
+                "pvalue": 3.04e-05,
+                "lflank": "GCTGCCGGTG",
+                "match": "AGCGTATAAAG",
+                "rflank": "GCCCTGGCG"
+              }, {
+                "seq": 4,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 3.04e-05,
+                "lflank": "CAGGTCTAAG",
+                "match": "AGCATATATAA",
+                "rflank": "CTTGGAGTCC"
+              }, {
+                "seq": 5,
+                "pos": 0,
+                "rc": false,
+                "pvalue": 3.67e-05,
+                "lflank": "",
+                "match": "AACGTATATAA",
+                "rflank": "ATGGTCCTGT"
+              }, {
+                "seq": 1,
+                "pos": 27,
+                "rc": false,
+                "pvalue": 3.93e-05,
+                "lflank": "AGTCACAAGT",
+                "match": "GAGTTATAAAA",
+                "rflank": "GGGTCGCACG"
+              }, {
+                "seq": 7,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 5.65e-05,
+                "lflank": "TCAG",
+                "match": "AGTATATATAA",
+                "rflank": "ATGTTCCTGT"
+              }, {
+                "seq": 3,
+                "pos": 14,
+                "rc": false,
+                "pvalue": 6.24e-05,
+                "lflank": "CCCAGGTTTC",
+                "match": "TGAGTATATAA",
+                "rflank": "TCGCCGCACC"
+              }, {
+                "seq": 16,
+                "pos": 22,
+                "rc": false,
+                "pvalue": 7.15e-05,
+                "lflank": "AGTTTCAGTT",
+                "match": "GGCATCTAAAA",
+                "rflank": "attatataac"
+              }, {
+                "seq": 27,
+                "pos": 36,
+                "rc": false,
+                "pvalue": 1.39e-04,
+                "lflank": "TGCCTGGGTC",
+                "match": "CAGGTATAAAG",
+                "rflank": "GCT"
+              }, {
+                "seq": 26,
+                "pos": 37,
+                "rc": false,
+                "pvalue": 1.39e-04,
+                "lflank": "TGCCTGGGCC",
+                "match": "CAGGTATAAAG",
+                "rflank": "GC"
+              }, {
+                "seq": 17,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 4.81e-04,
+                "lflank": "ga",
+                "match": "TGGTTTTATAA",
+                "rflank": "ggggcctcac"
+              }, {
+                "seq": 8,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 8.57e-04,
+                "lflank": "TATAACTCAG",
+                "match": "GTTGGATAAAA",
+                "rflank": "TAATTTGTAC"
+              }, {
+                "seq": 10,
+                "pos": 7,
+                "rc": false,
+                "pvalue": 1.47e-03,
+                "lflank": "aaactta",
+                "match": "AAACTCTATAA",
+                "rflank": "acttaaaact"
+              }, {
+                "seq": 2,
+                "pos": 26,
+                "rc": false,
+                "pvalue": 2.64e-03,
+                "lflank": "GGTGGGGGTG",
+                "match": "GGGGTTTCACT",
+                "rflank": "GGTCCACTAT"
+              }
+            ]
+          }
+        ],
+        "scan": [
+          {
+            "pvalue": 5.63e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 39,
+                "rc": false,
+                "pvalue": 1.41e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.57e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 27,
+                "rc": false,
+                "pvalue": 3.93e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.00e-01,
+            "sites": []
+          }, {
+            "pvalue": 2.49e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 14,
+                "rc": false,
+                "pvalue": 6.24e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.22e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 3.04e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.47e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 0,
+                "rc": false,
+                "pvalue": 3.67e-05
+              }
+            ]
+          }, {
+            "pvalue": 6.45e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 1.61e-05
+              }
+            ]
+          }, {
+            "pvalue": 2.26e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 5.65e-05
+              }
+            ]
+          }, {
+            "pvalue": 3.37e-02,
+            "sites": []
+          }, {
+            "pvalue": 1.95e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 4.86e-06
+              }
+            ]
+          }, {
+            "pvalue": 5.73e-02,
+            "sites": []
+          }, {
+            "pvalue": 5.52e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 16,
+                "rc": false,
+                "pvalue": 1.38e-05
+              }
+            ]
+          }, {
+            "pvalue": 2.59e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 18,
+                "rc": false,
+                "pvalue": 6.48e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.10e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 13,
+                "rc": false,
+                "pvalue": 2.74e-06
+              }
+            ]
+          }, {
+            "pvalue": 7.78e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 17,
+                "rc": false,
+                "pvalue": 1.95e-05
+              }
+            ]
+          }, {
+            "pvalue": 5.52e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 21,
+                "rc": false,
+                "pvalue": 1.38e-05
+              }
+            ]
+          }, {
+            "pvalue": 2.85e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 22,
+                "rc": false,
+                "pvalue": 7.15e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.90e-02,
+            "sites": []
+          }, {
+            "pvalue": 8.63e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 37,
+                "rc": false,
+                "pvalue": 2.16e-05
+              }
+            ]
+          }, {
+            "pvalue": 1.95e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 9,
+                "rc": false,
+                "pvalue": 4.86e-06
+              }
+            ]
+          }, {
+            "pvalue": 2.59e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 4,
+                "rc": false,
+                "pvalue": 6.48e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.95e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 7,
+                "rc": false,
+                "pvalue": 4.86e-06
+              }
+            ]
+          }, {
+            "pvalue": 7.78e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 2,
+                "rc": false,
+                "pvalue": 1.95e-05
+              }
+            ]
+          }, {
+            "pvalue": 8.89e-05,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 15,
+                "rc": false,
+                "pvalue": 2.22e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.80e-05,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 12,
+                "rc": false,
+                "pvalue": 4.51e-07
+              }
+            ]
+          }, {
+            "pvalue": 1.95e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 36,
+                "rc": false,
+                "pvalue": 4.86e-06
+              }
+            ]
+          }, {
+            "pvalue": 5.54e-03,
+            "sites": []
+          }, {
+            "pvalue": 5.54e-03,
+            "sites": []
+          }, {
+            "pvalue": 2.59e-04,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 32,
+                "rc": false,
+                "pvalue": 6.48e-06
+              }
+            ]
+          }, {
+            "pvalue": 1.22e-03,
+            "sites": [
+              {
+                "motif": 0,
+                "pos": 30,
+                "rc": false,
+                "pvalue": 3.04e-05
+              }
+            ]
+          }
+        ]
+      };
+    </script>
+    <script>
+var site_url = "http://meme-suite.org";
+</script>
+    <script>
+
+/*
+ * $
+ *
+ * Shorthand function for getElementById
+ */
+function $(el) {
+  return document.getElementById(el);
+}
+
+
+/*
+ * See http://stackoverflow.com/a/5450113/66387
+ * Does string multiplication like the perl x operator.
+ */
+function string_mult(pattern, count) {
+    if (count < 1) return '';
+    var result = '';
+    while (count > 1) {
+        if (count & 1) result += pattern;
+        count >>= 1, pattern += pattern;
+    }
+    return result + pattern;
+}
+
+/*
+ * See http://stackoverflow.com/questions/814613/how-to-read-get-data-from-a-url-using-javascript
+ * Slightly modified with information from
+ * https://developer.mozilla.org/en/DOM/window.location
+ */
+function parse_params() {
+  "use strict";
+  var search, queryStart, queryEnd, query, params, nvPairs, i, nv, n, v;
+  search = window.location.search;
+  queryStart = search.indexOf("?") + 1;
+  queryEnd   = search.indexOf("#") + 1 || search.length + 1;
+  query      = search.slice(queryStart, queryEnd - 1);
+
+  if (query === search || query === "") return {};
+
+  params  = {};
+  nvPairs = query.replace(/\+/g, " ").split("&");
+
+  for (i = 0; i < nvPairs.length; i++) {
+    nv = nvPairs[i].split("=");
+    n  = decodeURIComponent(nv[0]);
+    v  = decodeURIComponent(nv[1]);
+    // allow a name to be used multiple times
+    // storing each value in the array
+    if (!(n in params)) {
+      params[n] = [];
+    }
+    params[n].push(nv.length === 2 ? v : null);
+  }
+  return params;
+}
+
+/*
+ * coords
+ *
+ * Calculates the x and y offset of an element.
+ * From http://www.quirksmode.org/js/findpos.html
+ * with alterations to take into account scrolling regions
+ */
+function coords(elem) {
+  var myX = myY = 0;
+  if (elem.getBoundingClientRect) {
+    var rect;
+    rect = elem.getBoundingClientRect();
+    myX = rect.left + ((typeof window.pageXOffset !== "undefined") ?
+        window.pageXOffset : document.body.scrollLeft);
+    myY = rect.top + ((typeof window.pageYOffset !== "undefined") ?
+        window.pageYOffset : document.body.scrollTop);
+  } else {
+    // this fall back doesn't properly handle absolutely positioned elements
+    // inside a scrollable box
+    var node;
+    if (elem.offsetParent) {
+      // subtract all scrolling
+      node = elem;
+      do {
+        myX -= node.scrollLeft ? node.scrollLeft : 0;
+        myY -= node.scrollTop ? node.scrollTop : 0;
+      } while (node = node.parentNode);
+      // this will include the page scrolling (which is unwanted) so add it back on
+      myX += (typeof window.pageXOffset !== "undefined") ? window.pageXOffset : document.body.scrollLeft;
+      myY += (typeof window.pageYOffset !== "undefined") ? window.pageYOffset : document.body.scrollTop;
+      // sum up offsets
+      node = elem;
+      do {
+        myX += node.offsetLeft;
+        myY += node.offsetTop;
+      } while (node = node.offsetParent);
+    }
+  }
+  return [myX, myY];
+}
+
+/*
+ * position_popup
+ *
+ * Positions a popup relative to an anchor element.
+ *
+ * The avaliable positions are:
+ * 0 - Centered below the anchor.
+ */
+function position_popup(anchor, popup, position) {
+  "use strict";
+  var a_x, a_y, a_w, a_h, p_x, p_y, p_w, p_h;
+  var a_xy, spacer, margin, scrollbar, page_w;
+  // define constants
+  spacer = 5;
+  margin = 15;
+  scrollbar = 15;
+  // define the positions and widths
+  a_xy = coords(anchor);
+  a_x = a_xy[0];
+  a_y = a_xy[1];
+  a_w = anchor.offsetWidth;
+  a_h = anchor.offsetHeight;
+  p_w = popup.offsetWidth;
+  p_h = popup.offsetHeight;
+  page_w = null;
+  if (window.innerWidth) {
+    page_w = window.innerWidth;
+  } else if (document.body) {
+    page_w = document.body.clientWidth;
+  }
+  // check the position type is defined
+  if (typeof position !== "number") {
+    position = 0;
+  }
+  // calculate the popup position
+  switch (position) {
+    case 1:
+      p_x = a_x + a_w + spacer;
+      p_y = a_y + (a_h / 2) - (p_h / 2);
+      break;
+    case 0:
+    default:
+      p_x = a_x + (a_w / 2) - (p_w / 2);
+      p_y = a_y + a_h + spacer;
+      break;
+  }
+  // constrain the popup position
+  if (p_x < margin) {
+    p_x = margin;
+  } else if (page_w != null && (p_x + p_w) > (page_w - margin - scrollbar)) {
+    p_x = page_w - margin - scrollbar - p_w;
+  }
+  if (p_y < margin) {
+    p_y = margin;
+  }
+  // position the popup
+  popup.style.left = p_x + "px";
+  popup.style.top = p_y + "px";
+}
+
+function lookup_help_popup(popup_id) {
+  var _body, pop, info;
+  pop = document.getElementById(popup_id);
+  if (pop == null) {
+    _body = document.getElementsByTagName("body")[0];
+    pop = document.createElement("div");
+    pop.className = "pop_content";
+    pop.id = popup_id;
+    pop.style.backgroundColor = "#FFC";
+    pop.style.borderColor = "black";
+    info = document.createElement("p");
+    info.style.fontWeight = "bold";
+    info.appendChild(document.createTextNode("Error: No popup for topic \"" + popup_id + "\"."));
+    pop.appendChild(info);
+    // this might cause problems with the menu, but as this only happens
+    // when something is already wrong I don't think that's too much of a problem
+    _body.insertBefore(pop, _body.firstChild);
+  }
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-autobtns")) {
+    if (!/\bauto_buttons\b/.test(pop.className)) {
+      pop.className += " auto_buttons";
+      var back_btn_sec = document.createElement("div");
+      back_btn_sec.className = "nested_only pop_back_sec";
+      var back_btn = document.createElement("span");
+      back_btn.className = "pop_back";
+      back_btn.appendChild(document.createTextNode("<< back"));
+      back_btn.addEventListener("click", function(e) {
+        help_return();
+      }, false);
+      back_btn_sec.appendChild(back_btn);
+      pop.insertBefore(back_btn_sec, pop.firstChild);
+      var close_btn_sec = document.createElement("div");
+      close_btn_sec.className = "pop_close_sec";
+      var close_btn = document.createElement("span");
+      close_btn.className = "pop_close";
+      close_btn.appendChild(document.createTextNode("close"));
+      close_btn.addEventListener("click", function(e) {
+        help_popup();
+      }, false);
+      close_btn_sec.appendChild(close_btn);
+      pop.appendChild(close_btn_sec);
+    }
+  }
+  return pop;
+}
+
+/*
+ * help_popup
+ *
+ * Moves around help pop-ups so they appear
+ * below an activator.
+ */
+function help_popup(activator, popup_id) {
+  "use strict";
+  var pop;
+  // set default values
+  if (typeof help_popup.popup === "undefined") {
+    help_popup.popup = [];
+  }
+  if (typeof help_popup.activator === "undefined") {
+    help_popup.activator = null;
+  }
+  var last_pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (typeof(activator) == "undefined") { // no activator so hide
+    if (last_pop != null) {
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+    }
+    return;
+  }
+  pop = lookup_help_popup(popup_id);
+  if (pop == last_pop) {
+    if (activator == help_popup.activator) {
+      //hide popup (as we've already shown it for the current help button)
+      last_pop.style.display = 'none';
+      help_popup.popup = [];
+      return; // toggling complete!
+    }
+  } else if (last_pop != null) {
+    //activating different popup so hide current one
+    last_pop.style.display = 'none';
+  }
+  help_popup.popup = [pop];
+  help_popup.activator = activator;
+  toggle_class(pop, "nested", false);
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = 'block';
+  position_popup(activator, pop);
+}
+
+/*
+ * help_refine
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_refine(popup_id) {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not refine a help popup when one is not shown!");
+  }
+  var pop = lookup_help_popup(popup_id);
+  var last_pop = help_popup.popup[help_popup.popup.length - 1];
+  if (pop == last_pop) return; // slightly odd, but no real cause for alarm
+  help_popup.popup.push(pop);
+  toggle_class(pop, "nested", true);
+  last_pop.style.display = "none";
+  //must make the popup visible to measure it or it has zero width
+  pop.style.display = "block";
+  position_popup(help_popup.activator, pop);
+}
+
+/*
+ * help_return
+ * 
+ * Intended for links within a help popup. Stores a stack of state so
+ * you can go back.
+ */
+function help_return() {
+  if (help_popup.popup == null || help_popup.popup.length == 0 || help_popup.activator == null) {
+    throw new Error("Can not return to a earlier help popup when one is not shown!");
+  }
+  var last_pop = help_popup.popup.pop();
+  last_pop.style.display = "none";
+  var pop = (help_popup.popup.length > 0 ? help_popup.popup[help_popup.popup.length - 1] : null);
+  if (pop != null) {
+    toggle_class(pop, "nested", help_popup.popup.length > 1);
+    pop.style.display = "block";
+    position_popup(help_popup.activator, pop);
+  } else {
+    help_popup.activator = null;
+  }
+}
+
+/*
+ * update_scroll_pad
+ *
+ * Creates padding at the bottom of the page to allow
+ * scrolling of anything into view.
+ */
+function update_scroll_pad() {
+  var page, pad;
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  pad = $("scrollpad");
+  if (pad === null) {
+    pad = document.createElement("div");
+    pad.id = 'scrollpad';
+    document.getElementsByTagName('body')[0].appendChild(pad);
+  }
+  pad.style.height = Math.abs(page.clientHeight - 100) + "px";
+}
+
+function substitute_classes(node, remove, add) {
+  "use strict";
+  var list, all, i, cls, classes;
+  list = node.className.split(/\s+/);
+  all = {};
+  for (i = 0; i < list.length; i++) {
+    if (list[i].length > 0) all[list[i]] = true;
+  }
+  for (i = 0; i < remove.length; i++) {
+    if (all.hasOwnProperty(remove[i])) {
+      delete all[remove[i]];
+    }
+  }
+  for (i = 0; i < add.length; i++) {
+    all[add[i]] = true;
+  }
+  classes = "";
+  for (cls in all) {
+    classes += cls + " ";
+  }
+  node.className = classes;
+}
+
+/*
+ * toggle_class
+ *
+ * Adds or removes a class from the node. If the parameter 'enabled' is not 
+ * passed then the existence of the class will be toggled, otherwise it will be
+ * included if enabled is true.
+ */
+function toggle_class(node, cls, enabled) {
+  var classes = node.className;
+  var list = classes.replace(/^\s+/, '').replace(/\s+$/, '').split(/\s+/);
+  var found = false;
+  for (var i = 0; i < list.length; i++) {
+    if (list[i] == cls) {
+      list.splice(i, 1);
+      i--;
+      found = true;
+    }
+  }
+  if (typeof enabled == "undefined") {
+    if (!found) list.push(cls);
+  } else {
+    if (enabled) list.push(cls);
+  }
+  node.className = list.join(" ");
+}
+
+/*
+ * find_child
+ *
+ * Searches child nodes in depth first order and returns the first it finds
+ * with the className specified.
+ * TODO replace with querySelector
+ */
+function find_child(node, className) {
+  var pattern;
+  if (node == null || typeof node !== "object") {
+    return null;
+  }
+  if (typeof className === "string") {
+    pattern = new RegExp("\\b" + className + "\\b");
+  } else {
+    pattern = className;
+  }
+  if (node.nodeType == Node.ELEMENT_NODE && 
+      pattern.test(node.className)) {
+    return node;
+  } else {
+    var result = null;
+    for (var i = 0; i < node.childNodes.length; i++) {
+      result = find_child(node.childNodes[i], pattern);
+      if (result != null) break;
+    }
+    return result;
+  }
+}
+
+/*
+ * find_parent
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the className specified.
+ */
+function find_parent(node, className) {
+  var pattern;
+  pattern = new RegExp("\\b" + className + "\\b");
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && 
+        pattern.test(node.className)) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * find_parent_tag
+ *
+ * Searches parent nodes outwards from the node and returns the first it finds
+ * with the tag name specified. HTML tags should be specified in upper case.
+ */
+function find_parent_tag(node, tag_name) {
+  do {
+    if (node.nodeType == Node.ELEMENT_NODE && node.tagName == tag_name) {
+      return node;
+    }
+  } while (node = node.parentNode);
+  return null;
+}
+
+/*
+ * __toggle_help
+ *
+ * Uses the 'topic' property of the this object to
+ * toggle display of a help topic.
+ *
+ * This function is not intended to be called directly.
+ */
+function __toggle_help(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+
+  help_popup(this, this.getAttribute("data-topic"));
+}
+
+function setup_help_button(button) {
+  "use strict";
+  var topic;
+  if (button.hasAttribute("data-topic")) {
+    topic = button.getAttribute("data-topic");
+    if (document.getElementById(topic) != null) {
+      button.tabIndex = "0"; // make keyboard selectable
+      button.addEventListener("click", function() {
+        help_popup(button, topic);
+      }, false);
+      button.addEventListener("keydown", function(e) {
+        // toggle only on Enter or Spacebar, let other keys do their thing
+        if (e.keyCode !== 13 && e.keyCode !== 32) return;
+        // stop a submit or something like that
+        e.preventDefault();
+        help_popup(button, topic);
+      }, false);
+    } else {
+      button.style.visibility = "hidden";
+    }
+  }
+  button.className += " active";
+}
+
+/*
+ * help_button
+ *
+ * Makes a help button for the passed topic.
+ */
+function help_button(topic) {
+  var btn = document.createElement("div");
+  btn.className = "help";
+  btn.setAttribute("data-topic", topic);
+  setup_help_button(btn);
+  return btn;
+}
+
+/*
+ * prepare_download
+ *
+ * Sets the attributes of a link to setup a file download using the given content.
+ * If no link is provided then create one and click it.
+ */
+function prepare_download(content, mimetype, filename, link) {
+  "use strict";
+  // if no link is provided then create one and click it
+  var click_link = false;
+  if (!link) {
+    link = document.createElement("a");
+    click_link = true;
+  }
+  try {
+    // Use a BLOB to convert the text into a data URL.
+    // We could do this manually with a base 64 conversion.
+    // This will only be supported on modern browsers,
+    // hence the try block.
+    var blob = new Blob([content], {type: mimetype});
+    var reader = new FileReader();
+    reader.onloadend = function() {
+      // If we're lucky the browser will also support the download
+      // attribute which will let us suggest a file name to save the link.
+      // Otherwise it is likely that the filename will be unintelligible. 
+      link.setAttribute("download", filename);
+      link.href = reader.result;
+      if (click_link) {
+        // must add the link to click it
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      }
+    }
+    reader.readAsDataURL(blob);
+  } catch (error) {
+    if (console && console.log) console.log(error);
+    // probably an old browser
+    link.href = "";
+    link.visible = false;
+  }
+}
+
+/*
+ * add_cell
+ *
+ * Add a cell to the table row.
+ */
+function add_cell(row, node, cls, click_action) {
+  var cell = row.insertCell(row.cells.length);
+  if (node) cell.appendChild(node);
+  if (cls && cls !== "") cell.className = cls;
+  if (click_action) cell.addEventListener("click", click_action, false);
+}
+
+/*
+ * add_header_cell
+ *
+ * Add a header cell to the table row.
+ */
+function add_header_cell(row, node, help_topic, cls, colspan) {
+  var th = document.createElement("th");
+  if (node) th.appendChild(node);
+  if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic));
+  if (cls && cls !== "") th.className = cls;
+  if (typeof colspan == "number" && colspan > 1) th.colSpan = colspan;
+  row.appendChild(th);
+}
+
+/*
+ * add_text_cell
+ *
+ * Add a text cell to the table row.
+ */
+function add_text_cell(row, text, cls, action) {
+  var node = null;
+  if (typeof(text) != 'undefined') node = document.createTextNode(text);
+  add_cell(row, node, cls, action);
+}
+
+/*
+ * add_text_header_cell
+ *
+ * Add a text header cell to the table row.
+ */
+function add_text_header_cell(row, text, help_topic, cls, action, colspan) {
+  var node = null;
+  if (typeof(text) != 'undefined') {
+    var nbsp = (help_topic ? "\u00A0" : "");
+    var str = "" + text;
+    var parts = str.split(/\n/);
+    if (parts.length === 1) {
+      if (action) {
+        node = document.createElement("span");
+        node.appendChild(document.createTextNode(str + nbsp));
+      } else {
+        node = document.createTextNode(str + nbsp);
+      }
+    } else {
+      node = document.createElement("span");
+      for (var i = 0; i < parts.length; i++) {
+        if (i !== 0) {
+          node.appendChild(document.createElement("br"));
+        }
+        node.appendChild(document.createTextNode(parts[i]));
+      }
+    }
+    if (action) {
+      node.addEventListener("click", action, false);
+      node.style.cursor = "pointer";
+    }
+  }
+  add_header_cell(row, node, help_topic, cls, colspan);
+}
+
+function setup_help() {
+  "use strict";
+  var help_buttons, i;
+  help_buttons = document.querySelectorAll(".help:not(.active)");
+  for (i = 0; i < help_buttons.length; i++) {
+    setup_help_button(help_buttons[i]);
+  }
+}
+
+function setup_scrollpad() {
+  "use strict";
+  if (document.getElementsByTagName('body')[0].hasAttribute("data-scrollpad") && document.getElementById("scrollpad") == null) {
+    window.addEventListener("resize", update_scroll_pad, false);
+    update_scroll_pad();
+  }
+}
+
+// anon function to avoid polluting global scope
+(function() {
+  "use strict";
+  window.addEventListener("load", function load(evt) {
+    window.removeEventListener("load", load, false);
+    setup_help();
+    setup_scrollpad();
+  }, false);
+})();
+
+/*
+ *  make_link
+ *
+ *  Creates a text node and if a URL is specified it surrounds it with a link.
+ *  If the URL doesn't begin with "http://" it automatically adds it, as
+ *  relative links don't make much sense in this context.
+ */
+function make_link(text, url) {
+  var textNode = null;
+  var link = null;
+  if (typeof text !== "undefined" && text !== null) textNode = document.createTextNode(text);
+  if (typeof url === "string") {
+    if (url.indexOf("//") == -1) {
+      url = "http://" + url;
+    }
+    link = document.createElement('a');
+    link.href = url;
+    if (textNode) link.appendChild(textNode);
+    return link;
+  }
+  return textNode;
+}
+</script>
+    <script>
+      // 
+      // return true if any part of the passed element is visible in the viewport
+      //
+      function element_in_viewport(elem) {
+        var rect;
+        try {
+          rect = elem.getBoundingClientRect();
+        } catch (e) {
+          return false;
+        }
+        return (
+            rect.top < (window.innerHeight || document.body.clientHeight) &&
+            rect.bottom > 0 &&
+            rect.left < (window.innerWidth || document.body.clientWidth) &&
+            rect.right > 0
+            );
+      }
+
+      //
+      // Functions to delay a drawing task until it is required or it would not lag the display to do so
+      //
+
+      // a list of items still to be drawn
+      var drawable_list = [];
+      // the delay between drawing objects that are not currently visible
+      var draw_delay = 1;
+      // the delay after a user interaction
+      var user_delay = 300;
+      // the delay after a user has stopped scrolling and is viewing the stuff drawn on the current page
+      var stop_delay = 300;
+      // the timer handle; allows resetting of the timer after user interactions
+      var draw_timer = null;
+
+      //
+      // Drawable
+      //
+      // elem - a page element which defines the position on the page that drawing is to be done
+      // task - an object with the method run which takes care of painting the object
+      //
+      var Drawable = function(elem, task) {
+        this.elem = elem;
+        this.task = task;
+      }
+
+      //
+      // Drawable.is_visible
+      //
+      // Determines if the element is visible in the viewport
+      //
+      Drawable.prototype.is_visible = function() {
+        return element_in_viewport(this.elem);
+      }
+
+      //
+      // Drawable.run
+      //
+      // Run the task held by the drawable
+      Drawable.prototype.run = function() {
+        if (this.task) this.task.run();
+        this.task = null;
+      }
+
+      //
+      // Drawable.run
+      //
+      // Run the task iff visible
+      // returns true if the task ran or has already run
+      Drawable.prototype.run_visible = function() {
+        if (this.task) {
+          if (element_in_viewport(this.elem)) {
+            this.task.run();
+            this.task = null;
+            return true;
+          }
+          return false;
+        } else {
+          return true;
+        }
+      }
+
+      //
+      // draw_on_screen
+      //
+      // Checks each drawable object and draws those on screen.
+      //
+      function draw_on_screen() {
+        var found = false;
+        for (var i = 0; i < drawable_list.length; i++) {
+          if (drawable_list[i].run_visible()) {
+            drawable_list.splice(i--, 1);
+            found = true;
+          }
+        }
+        return found;
+      }
+
+      //
+      // process_draw_tasks
+      //
+      // Called on a delay to process the next avaliable
+      // draw task.
+      //
+      function process_draw_tasks() {
+        var delay = draw_delay;
+        draw_timer = null;
+        if (drawable_list.length == 0) return; //no more tasks
+        if (draw_on_screen()) {
+          delay = stop_delay; //give the user a chance to scroll
+        } else {
+          //get next task
+          var drawable = drawable_list.shift();
+          drawable.task.run();
+        }
+        //allow UI updates between tasks
+        draw_timer = window.setTimeout("process_draw_tasks()", delay);
+      }
+
+      //
+      // delayed_process_draw_tasks
+      //
+      // Call process_draw_tasks after a short delay.
+      // The delay serves to group multiple redundant events.       
+      // Should be set as event handler for onscroll and onresize.
+      //
+      function delayed_process_draw_tasks() {
+        //reset the timer
+        if (drawable_list.length > 0) { 
+          if (draw_timer != null) clearTimeout(draw_timer);
+          draw_timer = window.setTimeout("process_draw_tasks()", user_delay);
+        }
+      }
+
+      //
+      // add_draw_task
+      //
+      // Add a drawing task to be called immediately if it is
+      // visible, or to be called on a delay to reduce stuttering
+      // effect on the web browser.
+      function add_draw_task(elem, task) {
+        drawable = new Drawable(elem, task);
+        if (drawable.is_visible()) {
+          task.run();
+        } else {
+          drawable_list.push(drawable);
+          //reset timer
+          if (draw_timer != null) clearTimeout(draw_timer);
+          draw_timer = window.setTimeout("process_draw_tasks()", user_delay);
+        }
+      }
+
+</script>
+    <script>
+//======================================================================
+// start Alphabet object
+//======================================================================
+var Alphabet = function(alphabet, background) {
+  "use strict";
+  var i, j, sym, aliases, complement, comp_e_sym, ambigs, generate_background;
+  generate_background = (background == null);
+  if (generate_background) {
+    background = [];
+    for (i = 0; i < alphabet.ncore; i++) background[i] = 1.0 / alphabet.ncore;
+  } else if (alphabet.ncore != background.length) {
+    throw new Error("The background length does not match the alphabet length.");
+  }
+  this.name = alphabet.name;
+  this.like = (alphabet.like != null ? alphabet.like.toUpperCase() : null);
+  this.ncore = alphabet.ncore;
+  this.symbols = alphabet.symbols;
+  this.background = background;
+  this.genbg = generate_background;
+  this.encode = {};
+  this.encode2core = {};
+  this.complement = {};
+  // check if all symbols are same case
+  var seen_uc = false;
+  var seen_lc = false;
+  var check_case = function (syms) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        if (sym >= 'a' && sym <= 'z') seen_lc = true;
+        else if (sym >= 'A' && sym <= 'Z') seen_uc = true;
+      }
+    }
+  };
+  for (i = 0; i < this.symbols.length; i++) {
+    check_case(this.symbols[i].symbol);
+    check_case(this.symbols[i].aliases);
+  }
+  // now map symbols to indexes
+  var update_array = function(array, syms, index) {
+    var s, sym;
+    if (typeof syms === "string") {
+      for (s = 0; s < syms.length; s++) {
+        sym = syms.charAt(s);
+        array[sym] = index;
+        // when only a single case is used, then encode as case insensitive
+        if (seen_uc != seen_lc) {
+          if (sym >= 'a' && sym <= 'z') {
+            array[sym.toUpperCase()] = index;
+          } else if (sym >= 'A' && sym <= 'Z') {
+            array[sym.toLowerCase()] = index;
+          }
+        }
+      }
+    }
+  }
+  // map core symbols to index
+  for (i = 0; i < this.ncore; i++) {
+    update_array(this.encode2core, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode2core, this.symbols[i].aliases, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+  }
+  // map ambigous symbols to index
+  ambigs = {};
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    update_array(this.encode, this.symbols[i].symbol, i);
+    update_array(this.encode, this.symbols[i].aliases, i);
+    ambigs[this.symbols[i].equals] = i;
+  }
+  // determine complements
+  for (i = 0; i < this.ncore; i++) {
+    complement = this.symbols[i].complement;
+    if (typeof complement === "string") {
+      this.complement[i] = this.encode2core[complement];
+    }
+  }
+  next_symbol:
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    complement = "";
+    for (j = 0; j < this.symbols[i].equals.length; j++) {
+      comp_e_sym = this.complement[this.encode2core[this.symbols[i].equals.charAt(j)]];
+      if (typeof comp_e_sym !== "number") continue next_symbol;
+      complement += this.symbols[comp_e_sym].symbol;
+    }
+    complement = complement.split("").sort().join("");
+    if (typeof ambigs[complement] === "number") {
+      this.complement[i] = ambigs[complement];
+    }
+  }
+  // determine case insensitivity
+  this.case_insensitive = true;
+  if (seen_uc == seen_lc) {
+    // when there is a mixture of cases it probably won't
+    // be case insensitive but we still need to check
+    loop:
+    for (i = 0; i < this.symbols.length; i++) {
+      sym = this.symbols[i].symbol;
+      if (sym >= 'A' && sym <= 'Z') {
+        if (this.encode[sym.toLowerCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      } else if (sym >= 'a' && sym <= 'z') {
+        if (this.encode[sym.toUpperCase()] != i) {
+          this.case_insensitive = false;
+          break loop;
+        }
+      }
+      aliases = this.symbols[i].aliases;
+      if (aliases != null) {
+        for (j = 0; j < aliases.length; j++) {
+          sym = aliases.charAt(j);
+          if (sym >= 'A' && sym <= 'Z') {
+            if (this.encode[sym.toLowerCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          } else if (sym >= 'a' && sym <= 'z') {
+            if (this.encode[sym.toUpperCase()] != i) {
+              this.case_insensitive = false;
+              break loop;
+            }
+          }
+        }
+      }
+    }
+  }
+  // normalise aliases to remove the prime symbol and eliminate
+  // the alternate cases when the alphabet is case insensitive
+  var seen, out;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym = this.symbols[i].symbol;
+    aliases = this.symbols[i].aliases;
+    if (typeof aliases != "string") aliases = "";
+    seen = {};
+    out = [];
+    if (this.case_insensitive) {
+      sym = sym.toUpperCase();
+      aliases = aliases.toUpperCase();
+    }
+    seen[sym] = true;
+    for (j = 0; j < aliases.length; j++) {
+      if (!seen[aliases.charAt(j)]) {
+        seen[aliases.charAt(j)] = true;
+        out.push(aliases.charAt(j));
+      }
+    }
+    this.symbols[i].aliases = out.sort().join("");
+  }
+};
+// return the name of the alphabet
+Alphabet.prototype.get_alphabet_name = function() {
+  return this.name;
+};
+// return if the alphabet can be complemented
+Alphabet.prototype.has_complement = function() {
+  return (typeof this.symbols[0].complement === "string");
+};
+// return true if an uppercase letter has the same meaning as the lowercase form
+Alphabet.prototype.is_case_insensitive = function() {
+  return this.case_insensitive;
+};
+// return the information content of an alphabet letter
+Alphabet.prototype.get_ic = function() {
+  return Math.log(this.ncore) / Math.LN2;
+};
+// return the count of the core alphabet symbols
+Alphabet.prototype.get_size_core = function() {
+  return this.ncore;
+};
+// return the count of all alphabet symbols
+Alphabet.prototype.get_size_full = function() {
+  return this.symbols.length;
+};
+// return the symbol for the given alphabet index
+Alphabet.prototype.get_symbol = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  return this.symbols[alph_index].symbol;
+};
+// return the aliases for the given alphabet index
+Alphabet.prototype.get_aliases = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  var sym_obj = this.symbols[alph_index];
+  return (sym_obj.aliases != null ? sym_obj.aliases : "");
+};
+// return the name for the given alphabet index
+Alphabet.prototype.get_name = function(alph_index) {
+  "use strict";
+  var sym;
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("Alphabet index out of bounds");
+  }
+  sym = this.symbols[alph_index];
+  return (typeof sym.name === "string" ? sym.name : sym.symbol);
+};
+// return the alphabet it is like or null
+Alphabet.prototype.get_like = function() {
+  "use strict";
+  return this.like;
+};
+// return the index of the complement for the given alphabet index
+Alphabet.prototype.get_complement = function(alph_index) {
+  var comp_e_sym = this.complement[alph_index];
+  if (typeof comp_e_sym === "number") {
+    return comp_e_sym;
+  } else {
+    return -1;
+  }
+};
+// return a string containing the core symbols
+Alphabet.prototype.get_symbols = function() {
+  "use strict";
+  var i, core_symbols;
+  core_symbols = "";
+  for (i = 0; i < this.ncore; i++) {
+    core_symbols += this.symbols[i].symbol;
+  }
+  return core_symbols;
+};
+// return if the background was not a uniform generated background
+Alphabet.prototype.has_bg = function() {
+  "use strict";
+  return !this.genbg;
+};
+// get the background frequency for the index
+Alphabet.prototype.get_bg_freq = function(alph_index) {
+  "use strict";
+  var freq, i, symbols;
+  if (alph_index >= 0) {
+    if (alph_index < this.ncore) {
+      return this.background[alph_index];
+    } else if (alph_index < this.symbols.length) {
+      freq = 0;
+      symbols = this.symbols[alph_index].equals;
+      for (i = 0; i < symbols.length; i++) {
+        freq += this.background[this.encode2core[symbols.charAt(i)]];
+      }
+      return freq;
+    } 
+  }
+  throw new Error("The alphabet index is out of range.");
+};
+// get the colour of the index
+Alphabet.prototype.get_colour = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return "black";
+  }
+  return "#" + this.symbols[alph_index].colour;
+};
+// get the rgb componets of the colour at the index
+Alphabet.prototype.get_rgb = function(alph_index) {
+  "use strict";
+  if (alph_index < 0 || alph_index >= this.symbols.length) {
+    throw new Error("BAD_ALPHABET_INDEX");
+  }
+  if (typeof this.symbols[alph_index].colour != "string") {
+    return {"red": 0, "green": 0, "blue": 0};
+  }
+  var colour = this.symbols[alph_index].colour;
+  var red = parseInt(colour.substr(0, 2), 16) / 255;
+  var green = parseInt(colour.substr(2, 2), 16) / 255;
+  var blue = parseInt(colour.substr(4, 2), 16) / 255;
+  return {"red": red, "green": green, "blue": blue};
+};
+// convert a symbol into the index
+Alphabet.prototype.get_index = function(letter) {
+  "use strict";
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    return -1;
+  }
+  return alph_index;
+};
+// convert a symbol into the list of core indexes that it equals
+Alphabet.prototype.get_indexes = function(letter) {
+  "use strict";
+  var alph_index, comprise_str, i, comprise_list;
+  alph_index = this.encode[letter];
+  if (typeof alph_index === "undefined") {
+    throw new Error("Unknown letter");
+  }
+  comprise_str = this.symbols[alph_index].equals;
+  comprise_list = [];
+  if (typeof comprise_str == "string") {
+    for (i = 0; i < comprise_str.length; i++) {
+      comprise_list.push(this.encode2core[comprise_str.charAt(i)]);
+    }
+  } else {
+    comprise_list.push(alph_index);
+  }
+  return comprise_list;
+};
+// check if a symbol is the primary way of representing the symbol in the alphabet
+Alphabet.prototype.is_prime_symbol = function(letter) {
+  var alph_index;
+  alph_index = this.encode[letter];
+  if (alph_index == null) return false;
+  if (this.is_case_insensitive()) {
+    return (this.symbols[alph_index].symbol.toUpperCase() == letter.toUpperCase());
+  } else {
+    return (this.symbols[alph_index].symbol == letter);
+  }
+};
+// compare 2 alphabets
+Alphabet.prototype.equals = function(other) {
+  "use strict";
+  var i, sym1, sym2;
+  // first check that it's actually an alphabet object
+  if (!(typeof other === "object" && other != null && other instanceof Alphabet)) {
+    return false;
+  }
+  // second shortcircuit if it's the same object
+  if (this === other) return true;
+  // compare
+  if (this.name !== other.name) return false;
+  if (this.ncore !== other.ncore) return false;
+  if (this.symbols.length !== other.symbols.length) return false;
+  for (i = 0; i < this.symbols.length; i++) {
+    sym1 = this.symbols[i];
+    sym2 = other.symbols[i];
+    if (sym1.symbol !== sym2.symbol) return false;
+    if (sym1.aliases !== sym2.aliases) return false;
+    if (sym1.name !== sym2.name) return false;
+    if (typeof sym1.colour !== typeof sym2.colour || 
+        (typeof sym1.colour === "string" && typeof sym2.colour === "string" &&
+         parseInt(sym1.colour, 16) != parseInt(sym2.colour, 16))) {
+      return false;
+    }
+    if (sym1.complement !== sym2.complement) return false;
+    if (sym1.equals !== sym2.equals) return false;
+  }
+  return true;
+};
+Alphabet.prototype.check_core_subset = function(super_alph) {
+  var complement_same = true;
+  var seen_set = {};
+  var sub_i, sub_symbol, super_i, super_symbol;
+  for (sub_i = 0; sub_i < this.ncore; sub_i++) {
+    sub_symbol = this.symbols[sub_i];
+    super_i = super_alph.encode[sub_symbol.symbol]; 
+    if (super_i == null) return 0;
+    super_symbol = super_alph.symbols[super_i];
+    if (seen_set[super_i]) return 0;
+    seen_set[super_i] = true;
+    // check complement
+    if (sub_symbol.complement != null && super_symbol.complement != null) {
+      if (super_alph.encode[sub_symbol.complement] != super_alph.encode[super_symbol.complement]) {
+        complement_same = false;
+      }
+    } else if (sub_symbol.complement != null || super_symbol.complement != null) {
+      complement_same = false;
+    }
+  }
+  return (complement_same ? 1 : -1);
+};
+// convert a sequence to its reverse complement
+Alphabet.prototype.invcomp_seq = function(seq) {
+  "use strict";
+  var syms, i, e_sym, comp_e_sym;
+  if (!this.has_complement()) throw new Error("Alphabet must be complementable");
+  syms = seq.split("");
+  for (i = 0; i < syms.length; i++) {
+    e_sym = this.encode[syms[i]];
+    if (typeof e_sym === "undefined") {
+      e_sym = this.ncore; // wildcard
+    }
+    comp_e_sym = this.complement[e_sym];
+    if (typeof comp_e_sym === "undefined") {
+      comp_e_sym = e_sym; // not complementable
+    }
+    syms[i] = this.symbols[comp_e_sym].symbol;
+  }
+  return syms.reverse().join("");
+};
+// convert the alphabet to the text version
+Alphabet.prototype.as_text = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  function symbol_as_text(sym) {
+    var out;
+    out = sym.symbol;
+    if (typeof sym.name === "string" && sym.name != sym.symbol) {
+      out += " " + name_as_text(sym.name);
+    }
+    if (typeof sym.colour === "string") {
+      out += " " + sym.colour;
+    }
+    return out;
+  }
+  var out, i, j, c, sym;
+  out = "";
+  // output core symbols with 2 way complements
+  for (i = 0; i < this.ncore; i++) {
+    c = this.complement[i];
+    if (typeof c === "number" && i < c && this.complement[c] === i) {
+      out += symbol_as_text(this.symbols[i]) + " ~ " + symbol_as_text(this.symbols[c]) + "\n";  
+    }
+  }
+  // output core symbols with no complement
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.complement[i] === "undefined") {
+      out += symbol_as_text(this.symbols[i]) + "\n";
+    }
+  }
+  // output ambiguous symbols that have comprising characters
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    if (this.symbols[i].equals.length == 0) break;
+    out += symbol_as_text(this.symbols[i]) + " = " + this.symbols[i].equals + "\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].equals + "\n";
+      }
+    }
+  }
+  // output aliases of core symbols
+  for (i = 0; i < this.ncore; i++) {
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " = " + this.symbols[i].symbol + "\n";
+      }
+    }
+  }
+  // output gap symbols
+  i = this.symbols.length - 1;
+  if (this.symbols[i].equals.length == 0) {
+    out += symbol_as_text(this.symbols[i]) + " =\n";
+    if (typeof this.symbols[i].aliases === "string") {
+      for (j = 0; j < this.symbols[i].aliases.length; j++) {
+        if (this.symbols[i].aliases.charAt(j) == this.symbols[i].symbol) continue;
+        out += this.symbols[i].aliases.charAt(j) + " =\n";
+      }
+    }
+  }
+  return out;
+};
+// output the alphabet as it appears in minimal MEME format
+Alphabet.prototype.as_meme = function() {
+  "use strict";
+  function name_as_text(name) {
+    var i, c, out;
+    out = "\"";
+    for (i = 0; i < name.length; i++) {
+      c = name.charAt(i);
+      if (c == "\"") {
+        out += "\\\"";
+      } else if (c == "/") {
+        out += "\\/";
+      } else if (c == "\\") {
+        out += "\\\\";
+      } else {
+        out += c;
+      }
+    }
+    out += "\"";
+    return out;
+  }
+  if (this.equals(AlphStd.DNA)) {
+    return "ALPHABET= ACGT\n";
+  } else if (this.equals(AlphStd.PROTEIN)) {
+    return "ALPHABET= ACDEFGHIKLMNPQRSTVWY\n";
+  } else {
+    return "ALPHABET" + 
+      (this.name != null ? " " + name_as_text(this.name) : "") + 
+      (this.like != null ? " " + this.like + "-LIKE" : "") + "\n" +
+      this.as_text() + "END ALPHABET\n";
+  }
+};
+
+// Returns a table showing all the letters in the alphabet
+Alphabet.prototype.as_table = function() {
+  "use strict";
+  var i, j, row, th, td, aliases, equals, sym;
+  var table = document.createElement("table");
+  // create the core symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  if (this.has_complement()) {
+    th.appendChild(document.createTextNode("Complement"));
+  }
+  row.appendChild(th);
+  // list the core symbols
+  for (i = 0; i < this.ncore; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].complement != null) {
+      td.style.color = this.get_colour(this.get_index(this.symbols[i].complement));
+      td.appendChild(document.createTextNode(this.symbols[i].complement));
+    }
+    row.appendChild(td);
+  }
+  // create the ambiguous symbol header
+  row = table.insertRow(table.rows.length);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Symbol(s)"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Name"));
+  row.appendChild(th);
+  th = document.createElement("th");
+  th.appendChild(document.createTextNode("Matches"));
+  row.appendChild(th);
+  // list the ambiguous symbols
+  for (i = this.ncore; i < this.symbols.length; i++) {
+    row = table.insertRow(table.rows.length);
+    td = document.createElement("td");
+    if (this.symbols[i].colour != null) {
+      td.style.color = '#' + this.symbols[i].colour;
+    }
+    td.appendChild(document.createTextNode(this.symbols[i].symbol));
+    aliases = this.get_aliases(i);
+    if (aliases.length > 0) {
+      td.appendChild(document.createTextNode(' ' + aliases.split('').join(' ')));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    if (this.symbols[i].name != null) {
+      td.appendChild(document.createTextNode(this.symbols[i].name));
+    }
+    row.appendChild(td);
+    td = document.createElement("td");
+    equals = this.symbols[i].equals.split('');
+    for (j = 0; j < equals.length; j++) {
+      if (j != 0) td.appendChild(document.createTextNode(' '));
+      sym = document.createElement("span");
+      sym.style.color = this.get_colour(this.get_index(equals[j]));
+      sym.appendChild(document.createTextNode(equals[j]));
+      td.appendChild(sym);
+    }
+    row.appendChild(td);
+  }
+  return table;
+};
+
+// returns a dictionary of the colours for EPS
+Alphabet.prototype._as_eps_dict = function() {
+  "use strict";
+  var i, sym, rgb;
+  var out = "/fullColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = this.get_rgb(i);
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  out += "/mutedColourDict <<\n";
+  for (i = 0; i < this.ncore; i++) {
+    sym = this.get_symbol(i);
+    sym = sym.replace(/\\/g, "\\\\");
+    sym = sym.replace(/\(/g, "\\(");
+    sym = sym.replace(/\)/g, "\\)");
+    rgb = Alphabet.lighten_colour(this.get_rgb(i));
+    out += " (" + sym + ") [" + rgb.red.toFixed(4) + " " + rgb.green.toFixed(4) + " " + rgb.blue.toFixed(4) + "]\n";
+  }
+  out += ">> def\n";
+  return out;
+};
+
+// return the alphabet name or a list of primary symbols
+Alphabet.prototype.toString = function() {
+  "use strict";
+  if (this.name != null) {
+    return this.name;
+  } else {
+    return this.get_symbols();
+  }
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Helper functions
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+// Convert a colour specified in RGB colourspace values into LAB colourspace
+Alphabet.rgb2lab = function(rgb) {
+  "use strict";
+  var xyzHelper, labHelper;
+  // XYZ helper
+  xyzHelper = function(value) {
+    if (value > 0.0445) {
+      value = (value + 0.055) / 1.055;
+      value = Math.pow(value, 2.4);
+    } else {
+      value /= 12.92;
+    }
+    value *= 100;
+    return value;
+  };
+  // lab helper
+  labHelper = function(value) {
+    if (value > 0.008856) {
+      value = Math.pow(value, 1.0 / 3.0);
+    } else {
+      value = (7.787 * value) + (16.0 / 116.0);
+    }
+    return value;
+  };
+  // convert into XYZ colourspace
+  var c1, c2, c3;
+  if (typeof rgb == "number") {
+    c1 = xyzHelper(((rgb >> 16) & 0xFF) / 255.0);
+    c2 = xyzHelper(((rgb >> 8) & 0xFF) / 255.0);
+    c3 = xyzHelper((rgb & 0xFF) / 255.0);
+  } else {
+    c1 = xyzHelper(rgb.red);
+    c2 = xyzHelper(rgb.green);
+    c3 = xyzHelper(rgb.blue);
+  }
+  var x = (c1 * 0.4124) + (c2 * 0.3576) + (c3 * 0.1805);
+  var y = (c1 * 0.2126) + (c2 * 0.7152) + (c3 * 0.0722);
+  var z = (c1 * 0.0193) + (c2 * 0.1192) + (c3 * 0.9505);
+  // convert into Lab colourspace
+  c1 = labHelper(x / 95.047);
+  c2 = labHelper(y / 100.0);
+  c3 = labHelper(z / 108.883);
+  var l = (116.0 * c2) - 16;
+  var a = 500.0 * (c1 - c2);
+  var b = 200.0 * (c2 - c3);
+  return {"l": l, "a": a, "b": b};
+};
+
+// Convert a colour specified in HSV colourspace into RGB colourspace
+Alphabet.hsv2rgb = function(hue, sat, value, output_object) {
+  // achromatic (grey)
+  var r = value;
+  var g = value;
+  var b = value;
+  if (sat != 0) {
+    var h = hue / 60.0;
+    var i = Math.floor(h);
+    var f = h - i;
+    var p = value * (1.0 - sat);
+    var q = value * (1.0 - (sat * f));
+    var t = value * (1.0 - (sat * (1.0 - f)));
+    if (i == 0) {
+      r = value;
+      g = t;
+      b = p;
+    } else if (i == 1) {
+      r = q;
+      g = value;
+      b = p;
+    } else if (i == 2) {
+      r = p;
+      g = value;
+      b = t;
+    } else if (i == 3) {
+      r = p;
+      g = q;
+      b = value;
+    } else if (i == 4) {
+      r = t;
+      g = p;
+      b = value;
+    } else {
+      r = value;
+      g = p;
+      b = q;
+    }
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+// Calculate a distance score between two colours in LAB colourspace
+Alphabet.lab_dist = function(lab1, lab2) {
+  var c1 = Math.sqrt((lab1.l * lab1.l) + (lab1.a * lab1.a));
+  var c2 = Math.sqrt((lab2.l * lab2.l) + (lab2.a * lab2.a));
+  var dc = c1 - c2;
+  var dl = lab1.l - lab2.l;
+  var da = lab1.a - lab2.a;
+  var db = lab1.b - lab2.b;
+  // we don't want NaN due to rounding errors so fudge things a bit...
+  var dh = 0;
+  var dh_squared = (da * da) + (db * db) - (dc * dc);
+  if (dh_squared > 0) {
+    dh = Math.sqrt(dh_squared);
+  }
+  var first = dl;
+  var second = dc / (1.0 + (0.045 * c1));
+  var third = dh / (1.0 + (0.015 * c1));
+  return Math.sqrt((first * first) + (second * second) + (third * third));
+};
+
+// convert an RGB value into a HSL value
+Alphabet.rgb2hsl = function(rgb) {
+  "use strict";
+  var min, max, delta, h, s, l, r, g, b;
+  if (typeof rgb == "number") {
+    r = ((rgb >> 16) & 0xFF) / 255.0;
+    g = ((rgb >> 8) & 0xFF) / 255.0;
+    b = (rgb & 0xFF) / 255.0;
+  } else {
+    r = rgb.red;
+    g = rgb.green;
+    b = rgb.blue;
+  }
+  min = Math.min(r, g, b);
+  max = Math.max(r, g, b);
+  delta = max - min;
+  l = min + (delta / 2);
+  if (max == min) {
+    h = 0; // achromatic (grayscale)
+    s = 0;
+  } else {
+    if (l > 0.5) {
+      s = delta / (2 - max - min);
+    } else {
+      s = delta / (max + min);
+    }
+    if (max == r) {
+      h = (g - b) / delta;
+      if (g < b) h += 6;
+    } else if (max == g) {
+      h = ((b - r) / delta) + 2;
+    } else {
+      h = ((r - g) / delta) + 4;
+    }
+    h /= 6;
+  }
+  return {"h": h, "s": s, "l": l};
+};
+
+// convert a HSL value into an RGB value
+Alphabet.hsl2rgb = function(hsl, output_object) {
+  "use strict";
+  function _hue(p, q, t) {
+    "use strict";
+    if (t < 0) t += 1;
+    else if (t > 1) t -= 1;
+    if (t < (1.0 / 6.0)) {
+      return p + ((q - p) * 6.0 * t);
+    } else if (t < 0.5) {
+      return q;
+    } else if (t < (2.0 / 3.0)) {
+      return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+    } else {
+      return p;
+    }
+  }
+  var r, g, b, p, q;
+  if (hsl.s == 0) {
+    // achromatic (grayscale)
+    r = hsl.l;
+    g = hsl.l;
+    b = hsl.l;
+  } else {
+    if (hsl.l < 0.5) {
+      q = hsl.l * (1 + hsl.s);
+    } else {
+      q = hsl.l + hsl.s - (hsl.l * hsl.s);
+    }
+    p = (2 * hsl.l) - q;
+    r = _hue(p, q, hsl.h + (1.0 / 3.0));
+    g = _hue(p, q, hsl.h);
+    b = _hue(p, q, hsl.h - (1.0 / 3.0));
+  }
+  if (output_object) {
+    return {"red": r, "green": g, "blue": b};
+  } else {
+    return (Math.floor(r * 255) << 15) | (Math.floor(g * 255) << 8) | (Math.floor(b * 255));
+  }
+};
+
+Alphabet.lighten_colour = function(rgb) {
+  "use strict";
+  var hsl = Alphabet.rgb2hsl(rgb);
+  hsl.l += (1.0 - hsl.l) * 2 / 3;
+  return Alphabet.hsl2rgb(hsl, typeof rgb != "number");
+};
+
+//======================================================================
+// end Alphabet object
+//======================================================================
+
+//======================================================================
+// start StandardAlphabet object
+//======================================================================
+
+// an extension of the alphabet object to support some additional fields 
+// only present in standard alphabets.
+var StandardAlphabet = function(enum_code, enum_name, alphabet_data) {
+  Alphabet.apply(this, [alphabet_data]);
+  this.enum_code = enum_code;
+  this.enum_name = enum_name;
+};
+StandardAlphabet.prototype = Alphabet.prototype;
+StandardAlphabet.prototype.constructor = StandardAlphabet;
+
+// A unique code for this standard alphabet.
+// This code will be a power of 2 to enable creation of bitsets for
+// a selection of standard alphabets.
+StandardAlphabet.prototype.get_code = function() {
+  return this.enum_code;
+};
+
+// A unique name for this standard alphabet.
+// this name will be all upper case and the same as the property that
+// refers to this alphabet in the AlphStd collection.
+StandardAlphabet.prototype.get_enum = function() {
+  return this.enum_name;
+};
+
+//======================================================================
+// end StandardAlphabet object
+//======================================================================
+
+// A collection of standard alphabets.
+var AlphStd = {
+  RNA: new StandardAlphabet(1, "RNA", {
+    "name": "RNA",
+    "like": "RNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300"},
+      {"symbol": "U", "name": "Uracil", "colour": "008000",
+        "aliases": "T"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGU", "aliases": "X."},
+      {"symbol": "V", "name": "Not U", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACU"},
+      {"symbol": "D", "name": "Not C", "equals": "AGU"},
+      {"symbol": "B", "name": "Not A", "equals": "CGU"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AU"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CU"},
+      {"symbol": "K", "name": "Keto", "equals": "GU"}
+    ]
+  }), 
+  DNA: new StandardAlphabet(2, "DNA", {
+    "name": "DNA",
+    "like": "DNA",
+    "ncore": 4,
+    "symbols": [
+      {"symbol": "A", "name": "Adenine", "colour": "CC0000", "complement": "T"},
+      {"symbol": "C", "name": "Cytosine", "colour": "0000CC", "complement": "G"},
+      {"symbol": "G", "name": "Guanine", "colour": "FFB300", "complement": "C"},
+      {"symbol": "T", "name": "Thymine", "colour": "008000", "complement": "A",
+        "aliases": "U"},
+      {"symbol": "N", "name": "Any base", "equals": "ACGT", "aliases": "X."},
+      {"symbol": "V", "name": "Not T", "equals": "ACG"},
+      {"symbol": "H", "name": "Not G", "equals": "ACT"},
+      {"symbol": "D", "name": "Not C", "equals": "AGT"},
+      {"symbol": "B", "name": "Not A", "equals": "CGT"},
+      {"symbol": "M", "name": "Amino", "equals": "AC"},
+      {"symbol": "R", "name": "Purine", "equals": "AG"},
+      {"symbol": "W", "name": "Weak", "equals": "AT"}, 
+      {"symbol": "S", "name": "Strong", "equals": "CG"},
+      {"symbol": "Y", "name": "Pyrimidine", "equals": "CT"},
+      {"symbol": "K", "name": "Keto", "equals": "GT"}
+    ]
+  }), 
+  PROTEIN: new StandardAlphabet(4, "PROTEIN", {
+    "name": "Protein",
+    "like": "PROTEIN",
+    "ncore": 20,
+    "symbols": [
+      {"symbol": "A", "name": "Alanine", "colour": "0000CC"},
+      {"symbol": "C", "name": "Cysteine", "colour": "0000CC"},
+      {"symbol": "D", "name": "Aspartic acid", "colour": "FF00FF"},
+      {"symbol": "E", "name": "Glutamic acid", "colour": "FF00FF"},
+      {"symbol": "F", "name": "Phenylalanine", "colour": "0000CC"},
+      {"symbol": "G", "name": "Glycine", "colour": "FFB300"},
+      {"symbol": "H", "name": "Histidine", "colour": "FFCCCC"},
+      {"symbol": "I", "name": "Isoleucine", "colour": "0000CC"},
+      {"symbol": "K", "name": "Lysine", "colour": "CC0000"},
+      {"symbol": "L", "name": "Leucine", "colour": "0000CC"},
+      {"symbol": "M", "name": "Methionine", "colour": "0000CC"},
+      {"symbol": "N", "name": "Asparagine", "colour": "008000"},
+      {"symbol": "P", "name": "Proline", "colour": "FFFF00"},
+      {"symbol": "Q", "name": "Glutamine", "colour": "008000"},
+      {"symbol": "R", "name": "Arginine", "colour": "CC0000"},
+      {"symbol": "S", "name": "Serine", "colour": "008000"},
+      {"symbol": "T", "name": "Threonine", "colour": "008000"},
+      {"symbol": "V", "name": "Valine", "colour": "0000CC"},
+      {"symbol": "W", "name": "Tryptophan", "colour": "0000CC"},
+      {"symbol": "Y", "name": "Tyrosine", "colour": "33E6CC"},
+      {"symbol": "X", "name": "Any amino acid", "equals": "ACDEFGHIKLMNPQRSTVWY", "aliases": "*."},
+      {"symbol": "B", "name": "Asparagine or Aspartic acid", "equals": "DN"}, 
+      {"symbol": "Z", "name": "Glutamine or Glutamic acid", "equals": "EQ"}, 
+      {"symbol": "J", "name": "Leucine or Isoleucine", "equals": "IL"}
+    ]
+  })
+};
+
+//======================================================================
+// start Symbol object
+//======================================================================
+var Symbol = function(alph_index, scale, alphabet) {
+  "use strict";
+  //variable prototype
+  this.symbol = alphabet.get_symbol(alph_index);
+  this.scale = scale;
+  this.colour = alphabet.get_colour(alph_index);
+};
+
+Symbol.prototype.get_symbol = function() {
+  "use strict";
+  return this.symbol;
+};
+
+Symbol.prototype.get_scale = function() {
+  "use strict";
+  return this.scale;
+};
+
+Symbol.prototype.get_colour = function() {
+  "use strict";
+  return this.colour;
+};
+
+Symbol.prototype.toString = function() {
+  "use strict";
+  return this.symbol + " " + (Math.round(this.scale*1000)/10) + "%";
+};
+
+function compare_symbol(sym1, sym2) {
+  "use strict";
+  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
+//======================================================================
+var Pspm = function(matrix, name, ltrim, rtrim, nsites, evalue, pssm, alt) {
+  "use strict";
+  var row, col, data, row_sum, delta, evalue_re;
+  if (typeof name !== "string") {
+    name = "";
+  }
+  this.name = name;
+  //construct
+  if (matrix instanceof Pspm) {
+    // copy constructor
+    this.alph_length = matrix.alph_length;
+    this.motif_length = matrix.motif_length;
+    this.name = matrix.name;
+    this.alt = matrix.alt;
+    this.nsites = matrix.nsites;
+    this.evalue = matrix.evalue;
+    this.ltrim = matrix.ltrim;
+    this.rtrim = matrix.rtrim;
+    this.pspm = [];
+    for (row = 0; row < matrix.motif_length; row++) {
+      this.pspm[row] = [];
+      for (col = 0; col < matrix.alph_length; col++) {
+        this.pspm[row][col] = matrix.pspm[row][col];
+      }
+    }
+    if (matrix.pssm != null) {
+      this.pssm = [];
+      for (row = 0; row < matrix.motif_length; row++) {
+        this.pspm[row] = [];
+        for (col = 0; col < matrix.alph_length; col++) {
+          this.pssm[row][col] = matrix.pssm[row][col];
+        }
+      }
+    }
+  } else {
+    // check parameters
+    if (ltrim == null) {
+      ltrim = 0;
+    } else if (typeof ltrim !== "number" || ltrim % 1 !== 0 || ltrim < 0) {
+      throw new Error("ltrim must be a non-negative integer, got: " + ltrim);
+    }
+    if (rtrim == null) {
+      rtrim = 0;
+    } else if (typeof rtrim !== "number" || rtrim % 1 !== 0 || rtrim < 0) {
+      throw new Error("rtrim must be a non-negative integer, got: " + rtrim);
+    }
+    if (nsites != null) {
+      if (typeof nsites !== "number" || nsites < 0) {
+        throw new Error("nsites must be a positive number, got: " + nsites);
+      } else if (nsites == 0) {
+        nsites = null;
+      }
+    }
+    if (evalue != null) {
+      if (typeof evalue === "number") {
+        if (evalue < 0) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else if (typeof evalue === "string") {
+        evalue_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+        if (!evalue_re.test(evalue)) {
+          throw new Error("evalue must be a non-negative number, got: " + evalue);
+        }
+      } else {
+        throw new Error("evalue must be a non-negative number, got: " + evalue);
+      }
+    }
+    // set properties
+    this.name = name;
+    this.alt = alt;
+    this.nsites = nsites;
+    this.evalue = evalue;
+    this.ltrim = ltrim;
+    this.rtrim = rtrim;
+    if (typeof matrix === "string") {
+      // string constructor
+      data = parse_pspm_string(matrix);
+      this.alph_length = data["alph_length"];
+      this.motif_length = data["motif_length"];
+      this.pspm = data["pspm"];
+      if (this.evalue == null) {
+        if (data["evalue"] != null) {
+          this.evalue = data["evalue"];
+        } else {
+          this.evalue = 0;
+        }
+      }
+      if (this.nsites == null) {
+        if (typeof data["nsites"] === "number") {
+          this.nsites = data["nsites"];
+        } else {
+          this.nsites = 20;
+        }
+      }
+    } else {
+      // assume pspm is a nested array
+      this.motif_length = matrix.length;
+      this.alph_length = (matrix.length > 0 ? matrix[0].length : 0);
+      if (this.nsites == null) {
+        this.nsites = 20;
+      }
+      if (this.evalue == null) {
+        this.evalue = 0;
+      }
+      this.pspm = [];
+      // copy pspm and check
+      for (row = 0; row < this.motif_length; row++) {
+        if (this.alph_length != matrix[row].length) {
+          throw new Error("COLUMN_MISMATCH");
+        }
+        this.pspm[row] = [];
+        row_sum = 0;
+        for (col = 0; col < this.alph_length; col++) {
+          this.pspm[row][col] = matrix[row][col];
+          row_sum += this.pspm[row][col];
+        }
+        delta = 0.1;
+        if (isNaN(row_sum) || (row_sum > 1 && (row_sum - 1) > delta) || 
+            (row_sum < 1 && (1 - row_sum) > delta)) {
+          throw new Error("INVALID_SUM");
+        }
+      }
+      // copy pssm
+      if (pssm != null) {
+        this.pssm = [];
+        for (row = 0; row < this.motif_length; row++) {
+          this.pssm[row] = [];
+          for (col = 0; col < this.alph_length; col++) {
+            this.pssm[row][col] = pssm[row][col];
+          }
+        }
+      }
+    }
+  }
+};
+
+Pspm.prototype.copy = function() {
+  "use strict";
+  return new Pspm(this);
+};
+
+Pspm.prototype.reverse = function() {
+  "use strict";
+  var x, y, temp, temp_trim;
+  //reverse
+  x = 0;
+  y = this.motif_length-1;
+  while (x < y) {
+    temp = this.pspm[x];
+    this.pspm[x] = this.pspm[y];
+    this.pspm[y] = temp;
+    x++;
+    y--;
+  }
+  // reverse pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //reverse
+    x = 0;
+    y = this.motif_length-1;
+    while (x < y) {
+      temp = this.pssm[x];
+      this.pspm[x] = this.pssm[y];
+      this.pssm[y] = temp;
+      x++;
+      y--;
+    }
+  }
+  //swap triming
+  temp_trim = this.ltrim;
+  this.ltrim = this.rtrim;
+  this.rtrim = temp_trim;
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.reverse_complement = function(alphabet) {
+  "use strict";
+  var x, y, temp, i, row, c, temp_trim;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  if (!alphabet.has_complement()) {
+    throw new Error("The specified alphabet can not be complemented.");
+  }
+  // reverse motif
+  this.reverse();
+  //complement
+  for (x = 0; x < this.motif_length; x++) {
+    row = this.pspm[x];
+    for (i = 0; i < row.length; i++) {
+      c = alphabet.get_complement(i);
+      if (c < i) continue;
+      temp = row[i];
+      row[i] = row[c];
+      row[c] = temp;
+    }
+  }
+  // complement pssm (if defined)
+  if (typeof this.pssm !== "undefined") {
+    //complement
+    for (x = 0; x < this.motif_length; x++) {
+      row = this.pssm[x];
+      for (i = 0; i < row.length; i++) {
+        c = alphabet.get_complement(i);
+        if (c < i) continue;
+        temp = row[i];
+        row[i] = row[c];
+        row[c] = temp;
+      }
+    }
+  }
+  return this; //allow function chaining...
+};
+
+Pspm.prototype.get_stack = function(position, alphabet, ssc) {
+  "use strict";
+  var row, stack_ic, alphabet_ic, stack, i, sym;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size of the pspm.");
+  }
+  row = this.pspm[position];
+  stack_ic = this.get_stack_ic(position, alphabet);
+  if (ssc) stack_ic -= this.get_error(alphabet);
+  alphabet_ic = alphabet.get_ic();
+  stack = [];
+  for (i = 0; i < this.alph_length; i++) {
+    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;
+};
+
+Pspm.prototype.get_stack_ic = function(position, alphabet) {
+  "use strict";
+  var row, H, i;
+  if (this.alph_length != alphabet.get_size_core()) {
+    throw new Error("The alphabet size does not match the size fo the pspm.");
+  }
+  row = this.pspm[position];
+  H = 0;
+  for (i = 0; i < this.alph_length; i++) {
+    if (row[i] === 0) {
+      continue;
+    }
+    H -= (row[i] * (Math.log(row[i]) / Math.LN2));
+  }
+  return alphabet.get_ic() - H;
+};
+
+Pspm.prototype.get_error = function(alphabet) {
+  "use strict";
+  if (this.nsites === 0) {
+    return 0;
+  }
+  return (alphabet.get_size_core()-1) / (2 * Math.LN2 * this.nsites);
+};
+
+Pspm.prototype.get_motif_length = function() {
+  "use strict";
+  return this.motif_length;
+};
+
+Pspm.prototype.get_alph_length = function() {
+  "use strict";
+  return this.alph_length;
+};
+
+Pspm.prototype.get_left_trim = function() {
+  "use strict";
+  return this.ltrim;
+};
+
+Pspm.prototype.get_right_trim = function() {
+  "use strict";
+  return this.rtrim;
+};
+
+Pspm.prototype.as_best_match = function(alphabet) {
+  "use strict";
+  var match, odds, best_odds, best_index;
+  var i, j;
+  match = "";
+  for (i = 0; i < this.motif_length; i++) {
+    best_index = 0;
+    best_odds = this.pspm[i][0] / alphabet.get_bg_freq(0);
+    for (j = 1; j < this.alph_length; j++) {
+      odds = this.pspm[i][j] / alphabet.get_bg_freq(j);
+      if (odds > best_odds) {
+        best_odds = odds;
+        best_index = j;
+      }
+    }
+    match += alphabet.get_symbol(best_index);
+  }
+  return match;
+};
+
+Pspm.prototype.as_count_matrix = function() {
+  "use strict";
+  var count, count_text, text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      count = Math.round(this.nsites * this.pspm[i][j]);
+      count_text = "" + count;
+      // pad up to length of 4
+      if (count_text.length < 4) {
+        text += (new Array(5 - count_text.length)).join(" ") + count_text;
+      } else {
+        text += count_text;
+      }
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_probability_matrix = function() {
+  "use strict";
+  var text;
+  var i, j;
+  text = "";
+  for (i = 0; i < this.motif_length; i++) {
+    if (i !== 0) {
+      text += "\n";
+    }
+    for (j = 0; j < this.alph_length; j++) {
+      if (j !== 0) {
+        text += " ";
+      }
+      text += this.pspm[i][j].toFixed(6);
+    }
+  }
+  return text; 
+};
+
+Pspm.prototype.as_score_matrix = function(alphabet, pseudo) {
+  "use strict";
+  var me, score, out, row, col, score_text;
+  me = this;
+  if (typeof this.pssm === "undefined") {
+    if (!(typeof alphabet === "object" && alphabet != null && alphabet instanceof Alphabet)) {
+      throw new Error("The alphabet is required to generate the pssm.");
+    }
+    if (typeof pseudo === "undefined") {
+      pseudo = 0.01;
+    } else if (typeof pseudo !== "number" || pseudo < 0) {
+      throw new Error("Expected positive number for pseudocount");
+    }
+    score = function(row, col) {
+      "use strict";
+      var p, bg, p2;
+      p = me.pspm[row][col];
+      bg = alphabet.get_bg_freq(col);
+      p2 = (p * me.nsites + bg * pseudo) / (me.nsites + pseudo);
+      return (p2 > 0 ? Math.round((Math.log(p2 / bg) / Math.LN2) * 100) : -10000);
+    };
+  } else {
+    score = function(row, col) {
+      "use strict";
+      return me.pssm[row][col];
+    };
+  }
+  out = "";
+  for (row = 0; row < this.motif_length; row++) {
+    for (col = 0; col < this.alph_length; col++) {
+      if (col !== 0) {
+        out += " ";
+      }
+      score_text = "" + score(row, col);
+      // pad out to 6 characters
+      if (score_text.length < 6) {
+        out += (new Array(7 - score_text.length)).join(" ") + score_text;
+      } else {
+        out += score_text;
+      }
+    }
+    out += "\n";
+  }
+  return out;
+}
+
+Pspm.prototype.as_pspm = function() {
+  "use strict";
+  return "letter-probability matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + " nsites= " + this.nsites + 
+      " E= " + (typeof this.evalue === "number" ? 
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_probability_matrix();
+};
+
+Pspm.prototype.as_pssm = function(alphabet, pseudo) {
+  "use strict";
+  return "log-odds matrix: alength= " + this.alph_length + 
+      " w= " + this.motif_length + 
+      " E= " + (typeof this.evalue == "number" ?
+          this.evalue.toExponential() : this.evalue) + "\n" +
+      this.as_score_matrix(alphabet, pseudo);
+};
+
+Pspm.prototype.as_meme = function(options) {
+  var with_header, with_pspm, with_pssm, version, alphabet, bg_source, pseudocount, strands;
+  var out, alen, i;
+  // get the options
+  if (typeof options !== "object" || options === null) {
+    options = {};
+  }
+  with_header = (typeof options["with_header"] === "boolean" ? options["with_header"] : false);
+  with_pspm = (typeof options["with_pspm"] === "boolean" ? options["with_pspm"] : false);
+  with_pssm = (typeof options["with_pssm"] === "boolean" ? options["with_pssm"] : false);
+  if (!with_pspm && !with_pssm) with_pspm = true;
+  if (with_header) {
+    if (typeof options["version"] === "string" && /^\d+(?:\.\d+){0,2}$/.test(options["version"])) {
+      version = options["version"];
+    } else if (typeof options["version"] === "number") {
+      version = options["version"].toFixed(0);
+    } else {
+      version = "4";
+    }
+    if (typeof options["strands"] === "number" && options["strands"] === 1) {
+      strands = 1;
+    } else {
+      strands = 2;
+    }
+    if (typeof options["bg_source"] === "string") {
+      bg_source = options["bg_source"];
+    } else {
+      bg_source = "unknown source";
+    }
+    if (typeof options["alphabet"] === "object" && options["alphabet"] != null
+        && options["alphabet"] instanceof Alphabet) {
+      alphabet = options["alphabet"];
+    } else {
+      throw new Error("The alphabet is required to generate the header.");
+    }
+  }
+  // now create the output
+  out = "";
+  if (with_header) {
+    out = "MEME version " + version + "\n\n";
+    out += alphabet.as_meme() + "\n";
+    if (alphabet.has_complement()) { // assume DNA has both strands unless otherwise specified
+      out += "strands: " + (strands === 1 ? "+" : "+ -") + "\n\n";
+    }
+    out += "Background letter frequencies (from " + bg_source + "):\n";
+    alen = alphabet.get_size_core();
+    for (i = 0; i < alen; i++) {
+      if (i !== 0) {
+        if (i % 9 === 0) { // maximum of nine entries per line
+          out += "\n";
+        } else {
+          out += " ";
+        }
+      }
+      out += alphabet.get_symbol(i) + " " + alphabet.get_bg_freq(i).toFixed(3);
+    }
+  }
+  out += "\n\n";
+  out += "MOTIF " + this.name + (this.alt == null ? "" : " " + this.alt);
+  if (with_pssm) {
+    out += "\n\n";
+    out += this.as_pssm(options["alphabet"], options["pseudocount"]);
+  }
+  if (with_pspm) {
+    out += "\n\n";
+    out += this.as_pspm();
+  }
+  return out;
+}
+
+Pspm.prototype.toString = function() {
+  "use strict";
+  var str, i, row;
+  str = "";
+  for (i = 0; i < this.pspm.length; i++) {
+    row = this.pspm[i];
+    str += row.join("\t") + "\n";
+  }
+  return str;
+};
+
+function parse_pspm_properties(str) {
+  "use strict";
+  var parts, i, eqpos, before, after, properties, prop, num, num_re;
+  num_re = /^((?:[+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)|inf)$/;
+  parts = trim(str).split(/\s+/);
+  // split up words containing =
+  for (i = 0; i < parts.length;) {
+    eqpos = parts[i].indexOf("=");
+    if (eqpos != -1) {
+      before = parts[i].substr(0, eqpos);
+      after = parts[i].substr(eqpos+1);
+      if (before.length > 0 && after.length > 0) {
+        parts.splice(i, 1, before, "=", after);
+        i += 3;
+      } else if (before.length > 0) {
+        parts.splice(i, 1, before, "=");
+        i += 2;
+      } else if (after.length > 0) {
+        parts.splice(i, 1, "=", after);
+        i += 2;
+      } else {
+        parts.splice(i, 1, "=");
+        i++;
+      }
+    } else {
+      i++;
+    }
+  }
+  properties = {};
+  for (i = 0; i < parts.length; i += 3) {
+    if (parts.length - i < 3) {
+      throw new Error("Expected PSPM property was incomplete. "+
+          "Remaing parts are: " + parts.slice(i).join(" "));
+    }
+    if (parts[i+1] !== "=") {
+      throw new Error("Expected '=' in PSPM property between key and " +
+          "value but got " + parts[i+1]); 
+    }
+    prop = parts[i].toLowerCase();
+    num = parts[i+2];
+    if (!num_re.test(num)) {
+      throw new Error("Expected numeric value for PSPM property '" + 
+          prop + "' but got '" + num + "'");
+    }
+    properties[prop] = num;
+  }
+  return properties;
+}
+
+function parse_pspm_string(pspm_string) {
+  "use strict";
+  var header_re, lines, first_line, line_num, col_num, alph_length, 
+      motif_length, nsites, evalue, pspm, i, line, match, props, parts,
+      j, prob;
+  header_re = /^letter-probability\s+matrix:(.*)$/i;
+  lines = pspm_string.split(/\n/);
+  first_line = true;
+  line_num = 0;
+  col_num = 0;
+  alph_length;
+  motif_length;
+  nsites;
+  evalue;
+  pspm = [];
+  for (i = 0; i < lines.length; i++) {
+    line = trim(lines[i]);
+    if (line.length === 0) { 
+      continue;
+    }
+    // check the first line for a header though allow matrices without it
+    if (first_line) {
+      first_line = false;
+      match = header_re.exec(line);
+      if (match !== null) {
+        props = parse_pspm_properties(match[1]);
+        if (props.hasOwnProperty("alength")) {
+          alph_length = parseFloat(props["alength"]);
+          if (alph_length != 4 && alph_length != 20) {
+            throw new Error("PSPM property alength should be 4 or 20" +
+                " but got " + alph_length);
+          }
+        }
+        if (props.hasOwnProperty("w")) {
+          motif_length = parseFloat(props["w"]);
+          if (motif_length % 1 !== 0 || motif_length < 1) {
+            throw new Error("PSPM property w should be an integer larger " +
+                "than zero but got " + motif_length);
+          }
+        }
+        if (props.hasOwnProperty("nsites")) {
+          nsites = parseFloat(props["nsites"]);
+          if (nsites <= 0) {
+            throw new Error("PSPM property nsites should be larger than " +
+                "zero but got " + nsites);
+          }
+        }
+        if (props.hasOwnProperty("e")) {
+          evalue = props["e"];
+          if (evalue < 0) {
+            throw new Error("PSPM property evalue should be " +
+                "non-negative but got " + evalue);
+          }
+        }
+        continue;
+      }
+    }
+    pspm[line_num] = [];
+    col_num = 0;
+    parts = line.split(/\s+/);
+    for (j = 0; j < parts.length; j++) {
+      prob = parseFloat(parts[j]);
+      if (prob != parts[j] || prob < 0 || prob > 1) {
+        throw new Error("Expected probability but got '" + parts[j] + "'"); 
+      }
+      pspm[line_num][col_num] = prob;
+      col_num++;
+    }
+    line_num++;
+  }
+  if (typeof motif_length === "number") {
+    if (pspm.length != motif_length) {
+      throw new Error("Expected PSPM to have a motif length of " + 
+          motif_length + " but it was actually " + pspm.length);
+    }
+  } else {
+    motif_length = pspm.length;
+  }
+  if (typeof alph_length !== "number") {
+    alph_length = pspm[0].length;
+    if (alph_length != 4 && alph_length != 20) {
+      throw new Error("Expected length of first row in the PSPM to be " +
+          "either 4 or 20 but got " + alph_length);
+    }
+  }
+  for (i = 0; i < pspm.length; i++) {
+    if (pspm[i].length != alph_length) {
+      throw new Error("Expected PSPM row " + i + " to have a length of " + 
+          alph_length + " but the length was " + pspm[i].length);
+    }
+  }
+  return {"pspm": pspm, "motif_length": motif_length, 
+    "alph_length": alph_length, "nsites": nsites, "evalue": evalue};
+}
+//======================================================================
+// end Pspm object
+//======================================================================
+
+//======================================================================
+// start Logo object
+//======================================================================
+
+var Logo = function(alphabet, options) {
+  "use strict";
+  this.alphabet = alphabet;
+  this.fine_text = "";
+  this.x_axis = 1;
+  this.y_axis = true;
+  this.xlate_nsyms = 1;
+  this.xlate_start = null;
+  this.xlate_end = null;
+  this.pspm_list = [];
+  this.pspm_column = [];
+  this.rows = 0;
+  this.columns = 0;
+  if (typeof options === "string") {
+    // the old method signature had fine_text here so we support that
+    this.fine_text = options;
+  } else if (typeof options === "object" && options != null) {
+    this.fine_text = (typeof options.fine_text === "string" ? options.fine_text : "");
+    this.x_axis = (typeof options.x_axis === "boolean" ? (options.x_axis ? 1 : 0) : 1);
+    if (options.x_axis_hidden != null && options.x_axis_hidden) this.x_axis = -1;
+    this.y_axis = (typeof options.y_axis === "boolean" ? options.y_axis : true);
+    this.xlate_nsyms = (typeof options.xlate_nsyms === "number" ? options.xlate_nsyms : this.xlate_nsyms);
+    this.xlate_start = (typeof options.xlate_start === "number" ? options.xlate_start : this.xlate_start);
+    this.xlate_end = (typeof options.xlate_end === "number" ? options.xlate_end : this.xlate_end);
+  }
+};
+
+Logo.prototype.add_pspm = function(pspm, column) {
+  "use strict";
+  var col;
+  if (typeof column === "undefined") {
+    column = 0;
+  } else if (column < 0) {
+    throw new Error("Column index out of bounds.");
+  }
+  this.pspm_list[this.rows] = pspm;
+  this.pspm_column[this.rows] = column;
+  this.rows++;
+  col = column + pspm.get_motif_length();
+  if (col > this.columns) {
+    this.columns = col;
+  }
+};
+
+Logo.prototype.get_columns = function() {
+  "use strict";
+  return this.columns;
+};
+
+Logo.prototype.get_xlate_nsyms = function() {
+  "use strict";
+  return this.xlate_nsyms;
+};
+
+Logo.prototype.get_xlate_start = function() {
+  "use strict";
+  return (this.xlate_start != null ? this.xlate_start : 0);
+};
+
+Logo.prototype.get_xlate_end = function() {
+  "use strict";
+  return (this.xlate_end != null ? this.xlate_end : this.columns * this.xlate_nsyms);
+};
+
+Logo.prototype.get_xlate_columns = function() {
+  "use strict";
+  return this.get_xlate_end() - this.get_xlate_start();
+};
+
+Logo.prototype.get_rows = function() {
+  "use strict";
+  return this.rows;
+};
+
+Logo.prototype.get_pspm = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_list[row_index];
+};
+
+Logo.prototype.get_offset = function(row_index) {
+  "use strict";
+  if (row_index < 0 || row_index >= this.rows) {
+    throw new Error("INDEX_OUT_OF_BOUNDS");
+  }
+  return this.pspm_column[row_index];
+};
+
+Logo.prototype._as_eps_data = function(ssc, errbars) {
+  var i, j, pos, stack_pos, pspm, stack, sym, out;
+  out = "";
+  for (i = 0; i < this.rows; i++) {
+    out += "\nStartLine\n";
+    // Indent
+    for (j = 0; j < this.pspm_column[i]; j++) {
+      out += "() startstack\nendstack\n\n";
+    }
+    pspm = this.pspm_list[i];
+    if (pspm.get_left_trim() > 0) {
+      out += "MuteColour\nDrawTrimEdge\n" + pspm.get_left_trim() + " DrawTrimBg\n";
+    }
+    for (pos = 0; pos < pspm.get_motif_length(); pos++) {
+      if (pos != 0 && pos == pspm.get_left_trim()) { // enable full colour
+        out += "DrawTrimEdge\nRestoreColour\n";
+      } else if (pos == (pspm.get_motif_length() - pspm.get_right_trim())) {
+        out += "MuteColour\n" + pspm.get_right_trim() + " DrawTrimBg\n";
+      }
+      out += "(" + (pos + 1) + ") startstack\n";
+      stack = pspm.get_stack(pos, this.alphabet, ssc);
+      for (stack_pos = 0; stack_pos < stack.length; stack_pos++) {
+        sym = stack[stack_pos];
+        out += " " + (sym.get_scale() * this.alphabet.get_ic()) + " (" + sym.get_symbol() + ") numchar\n";
+      }
+      if (errbars) {
+        out += " " + pspm.get_error(this.alphabet) + " Ibeam\n";
+      }
+      out += "endstack\n\n";
+    }
+    if (pspm.get_right_trim() > 0 || pspm.get_left_trim() == pspm.get_motif_length()) {
+      out += "RestoreColour\n";
+    }
+    out += "EndLine\n";
+  }
+  return out;
+};
+
+Logo.prototype.as_eps = function(options) {
+  "use strict";
+  if (this.xlate_nsyms != 1) throw new Error("Unsupported setting xlate_nsyms for EPS");
+  if (this.xlate_start != null) throw new Error("Unsupported setting xlate_start for EPS");
+  if (this.xlate_end != null) throw new Error("Unsupported setting xlate_end for EPS");
+
+  var LOGOHEIGHT = 7.5; // default height of line in cm
+  var cm2pts, height, width, now, ssc, errbars;
+  if (typeof options === "undefined") {
+    options = {};
+  }
+  cm2pts = 72 / 2.54;
+  if (typeof options.logo_height == "number") {
+    height = options.logo_height;
+  } else {
+    height = LOGOHEIGHT * this.rows;
+  }
+  if (typeof options.logo_width == "number") {
+    width = options.logo_width;
+  } else {
+    width = this.columns + 2;
+  }
+  now = new Date();
+  ssc = (typeof options.ssc == "boolean" ? options.ssc : false);
+  errbars = (typeof options.show_error_bar == "boolean" ? options.show_error_bar : ssc);
+  var values = {
+    "LOGOHEIGHT": height,
+    "LOGOWIDTH": width,
+    "BOUNDINGHEIGHT": Math.round(height * cm2pts),
+    "BOUNDINGWIDTH": Math.round(width * cm2pts),
+    "LOGOLINEHEIGHT": (height / this.rows),
+    "CHARSPERLINE": this.columns,
+    "BARBITS": this.alphabet.get_ic(),
+    "LOGOTYPE": (this.alphabet.has_complement() ? "NA" : "AA"),
+    "CREATIONDATE": now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(),
+    "ERRORBARFRACTION": (typeof options.error_bar_fraction == "number" ? options.error_bar_fraction : 1.0),
+    "TICBITS": (typeof options.ticbits == "number" ? options.ticbits : 1.0),
+    "TITLE": (typeof options.title == "string" ? options.title : ""),
+    "FINEPRINT": (typeof options.fineprint == "string" ? options.fineprint : this.fine_text),
+    "XAXISLABEL": (typeof options.xaxislabel == "string" ? options.xaxislabel : ""),
+    "YAXISLABEL": (typeof options.yaxislabel == "string" ? options.yaxislabel : "bits"),
+    "SSC": ssc,
+    "YAXIS": (typeof options.show_y_axis == "boolean" ? options.show_y_axis : this.y_axis),
+    "SHOWENDS": (typeof options.show_ends == "boolean" ? options.show_ends : false),
+    "ERRBAR": errbars,
+    "OUTLINE": (typeof options.show_outline == "boolean" ? options.show_outline : false),
+    "NUMBERING": (typeof options.show_numbering == "boolean" ? options.show_numbering : this.x_axis != 0),
+    "SHOWINGBOX": (typeof options.show_box == "boolean" ? options.show_box : false),
+    "CREATOR": (typeof options.creator == "string" ? options.creator : "motif_logo.js"),
+    "FONTSIZE": (typeof options.label_font_size == "number" ? options.label_font_size : 12),
+    "TITLEFONTSIZE": (typeof options.title_font_size == "number" ? options.title_font_size : 12),
+    "SMALLFONTSIZE": (typeof options.small_font_size == "number" ? options.small_font_size : 6),
+    "TOPMARGIN" : (typeof options.top_margin == "number" ? options.top_margin : 0.9),
+    "BOTTOMMARGIN": (typeof options.bottom_margin == "number" ? options.bottom_margin : 0.9),
+    "COLORDICT": this.alphabet._as_eps_dict(),
+    "DATA": this._as_eps_data(ssc, errbars)
+  };
+  // now this requires that the script containing the template has been imported!
+  return motif_logo_template(values);
+};
+
+//======================================================================
+// end Logo object
+//======================================================================
+
+// calculate the exact size (in pixels) of an object drawn on the
+// canvas assuming that the background of the canvas is transparent.
+function canvas_bounds(ctx, cwidth, cheight) {
+  "use strict";
+  var data, r, c, top_line, bottom_line, left_line, right_line, 
+      txt_width, txt_height;
+
+  // extract the image data
+  data = ctx.getImageData(0, 0, cwidth, cheight).data;
+
+  // set initial values
+  top_line = -1; bottom_line = -1; left_line = -1; right_line = -1;
+  txt_width = 0; txt_height = 0;
+
+  // Find the top-most line with a non-transparent 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;
+    }
+  }
+  
+  // Only bother looking if we found at least one set pixel... 
+  if (top_line != -1) {
+
+    //find the last line with a non-transparent pixel
+    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;
+      }
+    }
+    // calculate height
+    txt_height = bottom_line - top_line + 1;
+
+    // Find the left-most line with a non-transparent pixel
+    for (c = 0; c < cwidth; c++) {
+      for (r = top_line; r <= bottom_line; 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-transparent pixel
+    for (c = cwidth-1; c >= left_line; c--) {
+      for(r = top_line; r <= bottom_line; 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};
+}
+
+//======================================================================
+// 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).
+var RasterizedAlphabet = function(alphabet, logo_scale, font, width) {
+  "use strict";
+  var default_size, safety_pad, canvas, ctx, middle, baseline, widths, sizes,
+      i, sym, size, tenpercent, avg_width, scale, 
+      target_width, target_height;
+  //variable prototypes
+  this.alphabet = alphabet;
+  this.scale = logo_scale;
+  this.sym_cache = {};
+  this.stack_num_cache = [];
+  this.scale_num_cache = [];
+  // size of canvas
+  default_size = 60; // size of measuring canvas
+  safety_pad = 20; // pixels to pad around so we don't miss the edges
+  // create a canvas to do our measuring
+  canvas = document.createElement("canvas");
+  if (!canvas.getContext) throw new Error("No canvas support");
+  canvas.width = default_size + 2 * safety_pad;
+  canvas.height = default_size + 2 * safety_pad;
+  middle = Math.round(canvas.width / 2);
+  baseline = Math.round(canvas.height - safety_pad);
+  ctx = canvas.getContext('2d');
+  if (!supports_text(ctx)) throw new Error("Canvas does not support text");
+  ctx.font = font;
+  ctx.textAlign = "center";
+  ctx.translate(middle, baseline);
+  // list of widths
+  widths = [];
+  sizes = [];
+  //now measure each letter in the alphabet
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    // reset the canvas
+    ctx.clearRect(0, 0, canvas.width, canvas.height);
+    ctx.fillStyle = alphabet.get_colour(i);
+    // draw the test text
+    ctx.fillText(alphabet.get_symbol(i), 0, 0);
+    //measure
+    size = canvas_bounds(ctx, canvas.width, canvas.height);
+    if (size.width === 0) throw new Error("Invisible symbol!");
+    widths.push(size.width);
+    sizes[i] = size;
+  }
+  //sort the widths
+  widths.sort(function(a,b) {return a - b;});
+  //drop 10% of the items off each end
+  tenpercent = Math.floor(widths.length / 10);
+  for (i = 0; i < tenpercent; ++i) {
+    widths.pop();
+    widths.shift();
+  }
+  //calculate average width
+  avg_width = 0;
+  for (i = 0; i < widths.length; ++i) {
+    avg_width += widths[i];
+  }
+  avg_width /= widths.length;
+  // calculate the target width
+  target_width = width * this.scale * 2;
+  // calculate scales
+  for (i = 0; i < alphabet.get_size_core(); ++i) {
+    sym = alphabet.get_symbol(i);
+    size = sizes[i];
+    // calculate scale
+    scale = target_width / Math.max(avg_width, size.width);
+    // estimate scaled height
+    target_height = size.height * scale;
+    // create an appropriately sized canvas
+    canvas = document.createElement("canvas");
+    canvas.width = target_width;
+    canvas.height = target_height + safety_pad * 2;
+    // calculate the middle
+    middle = Math.round(canvas.width / 2);
+    // calculate the baseline
+    baseline = Math.round(canvas.height - safety_pad);
+    // get the context and prepare to draw the rasterized text
+    ctx = canvas.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 text
+    ctx.fillText(sym, 0, 0);
+    ctx.restore();
+    this.sym_cache[sym] = {"image": canvas, "size": canvas_bounds(ctx, canvas.width, canvas.height)};
+  }
+};
+
+RasterizedAlphabet.prototype.get_alphabet = function() {
+  return this.alphabet;
+};
+
+RasterizedAlphabet.prototype.get_scale = function() {
+  return this.scale;
+};
+
+RasterizedAlphabet.prototype.draw_stack_sym = function(ctx, letter, dx, dy, dWidth, dHeight) {
+  "use strict";
+  var entry, image, size;
+  entry = this.sym_cache[letter];
+  image = entry.image;
+  size = entry.size;
+  ctx.drawImage(image, 0, size.bound_top -1, image.width, size.height+1, dx, dy, dWidth, dHeight);
+};
+
+RasterizedAlphabet.prototype.draw_stack_num = function(ctx, font, stack_width, index) {
+  var image, image_ctx, text_length;
+  if (index >= this.stack_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.save();
+    image_ctx.font = font;
+    text_length = image_ctx.measureText("" + (index + 1)).width;
+    image_ctx.restore();
+    // resize the canvas to fit
+    image.width = Math.ceil(stack_width);
+    image.height = Math.ceil(text_length);
+    // draw the text
+    image_ctx = image.getContext('2d');
+    image_ctx.translate(Math.round(stack_width / 2), 0);
+    image_ctx.font = font;
+    image_ctx.textBaseline = "middle";
+    image_ctx.textAlign = "right";
+    image_ctx.rotate(-(Math.PI / 2));
+    image_ctx.fillText("" + (index + 1), 0, 0);
+    this.stack_num_cache[index] = image;
+  } else {
+    image = this.stack_num_cache[index];
+  }
+  ctx.drawImage(image, 0, 0);
+}
+
+RasterizedAlphabet.prototype.draw_scale_num = function(ctx, font, num) {
+  var image, image_ctx, text_size, m_length;
+  if (num >= this.scale_num_cache.length) {
+    image = document.createElement("canvas");
+    // measure the text
+    image_ctx = image.getContext('2d');
+    image_ctx.font = font;
+    text_size = image_ctx.measureText("" + num);
+    if (text_size.actualBoundingBoxAscent && text_size.actualBoundingBoxDesent) {
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(text_size.actualBoundingBoxAscent + text_size.actualBoundingBoxDesent);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.fillText("" + num, image.width, text_size.actualBoundingBoxAscent);
+    } else {
+      // measure width of 'm' to approximate height, we double it later anyway
+      m_length = image_ctx.measureText("m").width;
+      // resize the canvas to fit
+      image.width = Math.ceil(text_size.width);
+      image.height = Math.ceil(2 * m_length);
+      // draw the text
+      image_ctx = image.getContext('2d');
+      image_ctx.font = font;
+      image_ctx.textAlign = "right";
+      image_ctx.textBaseline = "middle";
+      image_ctx.fillText("" + num, image.width, m_length);
+    }
+    this.scale_num_cache[num] = image;
+  } else {
+    image = this.scale_num_cache[num];
+  }
+  ctx.drawImage(image, -image.width, -Math.round(image.height / 2))
+}
+
+//======================================================================
+// end RasterizedAlphabet
+//======================================================================
+
+//======================================================================
+// start LogoMetrics object
+//======================================================================
+
+var LogoMetrics = function(ctx, logo_columns, logo_rows, has_names, has_finetext, x_axis, y_axis) {
+  "use strict";
+  var i, row_height;
+  //variable prototypes
+  this.pad_top = (has_names ? 5 : 0);
+  this.pad_left = (y_axis ? 10 : 0);
+  this.pad_right = (has_finetext ? 15 : 0);
+  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_axis = y_axis;
+  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_axis = x_axis;
+  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;
+  //calculate the width of the y axis numbers
+  ctx.font = this.y_num_font;
+  for (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)
+  if (x_axis == 1) {
+    ctx.font = this.x_num_font;
+    for (i = 1; i <= logo_columns; i++) {
+      this.x_num_width = Math.max(this.x_num_width, ctx.measureText("" + i).width);
+    }
+  } else if (x_axis == 0) {
+    this.x_num_height = 4;
+    this.x_num_width = 4;
+  } else {
+    this.x_num_height = 0;
+    this.x_num_width = 0;
+  }
+  
+  //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) {
+    row_height = this.stack_height + this.pad_middle;
+    if (has_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_axis ? this.y_num_height/2 : 0);
+
+  var fine_txt_total = (has_finetext ? this.fine_txt_height + this.fine_txt_above : 0);
+  if (has_names) {
+    this.summed_height += fine_txt_total + this.name_height;
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + this.name_spacer);
+  } else {
+    this.summed_height += Math.max((this.y_axis ? this.y_num_height/2 : 0), 
+        this.x_num_height + this.x_num_above + fine_txt_total);
+  }
+
+  //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;
+  if (this.y_axis) {
+    //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;
+
+};
+
+//======================================================================
+// end LogoMetrics object
+//======================================================================
+
+//found this trick at http://talideon.com/weblog/2005/02/detecting-broken-images-js.cfm
+function image_ok(img) {
+  "use strict";
+  // 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) {
+  "use strict";
+  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, raster) {
+  "use strict";
+  var tic_height, i;
+  tic_height = metrics.stack_height / alphabet_ic;
+  ctx.save();
+  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.rotate(-(Math.PI / 2));
+  ctx.textAlign = "center";
+  ctx.fillText("bits", 0, 0);
+  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);
+  for (i = 0; i <= alphabet_ic; i++) {
+    //draw the number
+    ctx.save();
+    ctx.translate(-1, 0);
+    raster.draw_scale_num(ctx, metrics.y_num_font, i);
+    ctx.restore();
+    //draw the tic
+    ctx.fillRect(0, -1, metrics.y_tic_width, 2);
+    //prepare for next tic
+    ctx.translate(0, -tic_height);
+  }
+  ctx.restore();
+
+  ctx.fillRect(metrics.y_tic_width - 2, 0, 2, metrics.stack_height)
+
+  ctx.restore();
+}
+
+function draw_stack_num(ctx, metrics, row_index, raster) {
+  "use strict";
+  ctx.save();
+  ctx.translate(0, Math.round(metrics.stack_height + metrics.x_num_above));
+  if (metrics.x_axis == 1) {
+    raster.draw_stack_num(ctx, metrics.x_num_font, metrics.stack_width, row_index);
+  } else if (metrics.x_axis == 0) {
+    // draw dots instead of the numbers (good for small logos)
+    ctx.beginPath();
+    var radius = Math.round(metrics.x_num_height / 2);
+    ctx.arc(Math.round(metrics.stack_width / 2), radius, radius, 0, 2 * Math.PI, false);
+    ctx.fill();
+  }
+  ctx.restore();
+}
+
+function draw_stack(ctx, metrics, symbols, raster) {
+  "use strict";
+  var preferred_pad, sym_min, i, sym, sym_height, pad;
+  preferred_pad = 0;
+  sym_min = 5;
+
+  ctx.save();//1
+  ctx.translate(0, metrics.stack_height);
+  for (i = 0; i < symbols.length; i++) {
+    sym = symbols[i];
+    sym_height = metrics.stack_height * sym.get_scale();
+    
+    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_stack_sym(ctx, sym.get_symbol(), 0, 0, metrics.stack_width, sym_height);
+    //translate past the padding
+    ctx.translate(0, -(pad/2));
+  }
+  ctx.restore();//1
+}
+
+function draw_dashed_line(ctx, pattern, start, x1, y1, x2, y2) {
+  "use strict";
+  var x, y, len, i, dx, dy, tlen, theta, mulx, muly, lx, ly;
+  dx = x2 - x1;
+  dy = y2 - y1;
+  tlen = Math.pow(dx*dx + dy*dy, 0.5);
+  theta = Math.atan2(dy,dx);
+  mulx = Math.cos(theta);
+  muly = Math.sin(theta);
+  lx = [];
+  ly = [];
+  for (i = 0; i < pattern; ++i) {
+    lx.push(pattern[i] * mulx);
+    ly.push(pattern[i] * muly);
+  }
+  i = start;
+  x = x1;
+  y = y1;
+  len = 0;
+  ctx.beginPath();
+  while (len + pattern[i] < tlen) {
+    ctx.moveTo(x, y);
+    x += lx[i];
+    y += ly[i];
+    ctx.lineTo(x, y);
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+    x += lx[i];
+    y += ly[i];
+    len += pattern[i];
+    i = (i + 1) % pattern.length;
+  }
+  if (len < tlen) {
+    ctx.moveTo(x, y);
+    x += mulx * (tlen - len);
+    y += muly * (tlen - len);
+    ctx.lineTo(x, y);
+  }
+  ctx.stroke();
+}
+
+function draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider) {
+  "use strict";
+  var left_size = left_end - left_start;
+  var right_size = right_end - right_start;
+  var line_x;
+
+  ctx.save();//s8
+  ctx.fillStyle = "rgb(240, 240, 240)";
+  if (left_size > 0) {
+    ctx.fillRect(left_start * metrics.stack_width, 0, left_size * metrics.stack_width, metrics.stack_height);
+  }
+  if (right_size > 0) {
+    ctx.fillRect(right_start * metrics.stack_width, 0, right_size * metrics.stack_width, metrics.stack_height);
+  }
+  ctx.fillStyle = "rgb(51, 51, 51)";
+  if (left_size > 0 && left_divider) {
+    line_x = (left_end * metrics.stack_width) - 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  if (right_size > 0 && right_divider) {
+    line_x = (right_start * metrics.stack_width) + 0.5;
+    draw_dashed_line(ctx, [3], 0, line_x, 0, line_x, metrics.stack_height);
+  }
+  ctx.restore();//s8
+}
+
+function size_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var draw_name, draw_finetext, metrics;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  if (canvas.width !== 0 && canvas.height !== 0) {
+    return;
+  }
+  metrics = new LogoMetrics(canvas.getContext('2d'), 
+      logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      canvas.width = metrics.summed_width * (canvas.height / metrics.summed_height);
+    } else if (canvas.height === 0) {
+      canvas.height = metrics.summed_height * (canvas.width / metrics.summed_width);
+    }
+  }
+}
+
+function draw_logo_on_canvas(logo, canvas, show_names, scale) {
+  "use strict";
+  var i, draw_name, draw_finetext, ctx, metrics, raster, pspm_i, pspm, 
+      offset, col_index, motif_position, ssc;
+  ssc = false;
+  draw_name = (typeof show_names === "boolean" ? show_names : (logo.get_rows() > 1));
+  draw_finetext = (logo.fine_text.length > 0);
+  ctx = canvas.getContext('2d');
+  //assume that the user wants the canvas scaled equally so calculate what the best width for this image should be
+  metrics = new LogoMetrics(ctx, logo.get_xlate_columns(), logo.get_rows(), draw_name, draw_finetext, logo.x_axis, logo.y_axis);
+  if (typeof scale == "number") {
+    //resize the canvas to fit the scaled logo
+    canvas.width = metrics.summed_width * scale;
+    canvas.height = metrics.summed_height * scale;
+  } else {
+    if (canvas.width === 0 && canvas.height === 0) {
+      scale = 1;
+      canvas.width = metrics.summed_width;
+      canvas.height = metrics.summed_height;
+    } else if (canvas.width === 0) {
+      scale = canvas.height / metrics.summed_height;
+      canvas.width = metrics.summed_width * scale;
+    } else if (canvas.height === 0) {
+      scale = canvas.width / metrics.summed_width;
+      canvas.height = metrics.summed_height * scale;
+    } else {
+      scale = Math.min(canvas.width / metrics.summed_width, canvas.height / metrics.summed_height);
+    }
+  }
+  // cache the raster based on the assumption that we will be drawing a lot
+  // of logos the same size and alphabet
+  if (typeof draw_logo_on_canvas.raster_cache === "undefined") {
+    draw_logo_on_canvas.raster_cache = [];
+  }
+  for (i = 0; i < draw_logo_on_canvas.raster_cache.length; i++) {
+    raster = draw_logo_on_canvas.raster_cache[i];
+    if (raster.get_alphabet().equals(logo.alphabet) &&
+        Math.abs(raster.get_scale() - scale) < 0.1) break;
+    raster = null;
+  }
+  if (raster == null) {
+    raster = new RasterizedAlphabet(logo.alphabet, scale, metrics.stack_font, metrics.stack_width);
+    draw_logo_on_canvas.raster_cache.push(raster);
+  }
+  ctx = canvas.getContext('2d');
+  ctx.save();//s1
+  ctx.scale(scale, scale);
+  ctx.save();//s2
+  ctx.save();//s7
+  //create margin
+  ctx.translate(Math.round(metrics.pad_left), Math.round(metrics.pad_top));
+  for (pspm_i = 0; pspm_i < logo.get_rows(); ++pspm_i) {
+    pspm = logo.get_pspm(pspm_i);
+    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(Math.round(metrics.summed_width/2), Math.round(metrics.name_height));
+      ctx.font = metrics.name_font;
+      ctx.textAlign = "center";
+      ctx.fillText(pspm.name, 0, 0);
+      ctx.restore();//s4
+      ctx.translate(0, Math.round(metrics.name_height + 
+          Math.min(0, metrics.name_spacer - metrics.y_num_height/2)));
+    }
+    //draw scale
+    if (logo.y_axis) draw_scale(ctx, metrics, logo.alphabet.get_ic(), raster);
+    ctx.save();//s5
+    //translate across past the scale
+    if (logo.y_axis) {
+      ctx.translate(Math.round(metrics.y_label_height + metrics.y_label_spacer + 
+        metrics.y_num_width + metrics.y_tic_width), Math.round(metrics.y_num_height / 2));
+    }
+    //draw the trimming background
+    if (pspm.get_left_trim() > 0 || pspm.get_right_trim() > 0) {
+      var left_start = offset * logo.get_xlate_nsyms();
+      var left_end = (offset + pspm.get_left_trim()) * logo.get_xlate_nsyms();
+      var left_divider = true;
+      if (left_end < logo.get_xlate_start() || left_start > logo.get_xlate_end()) {
+        // no overlap
+        left_start = 0;
+        left_end = 0;
+        left_divider = false;
+      } else {
+        if (left_start < logo.get_xlate_start()) {
+          left_start = logo.get_xlate_start();
+        }
+        if (left_end > logo.get_xlate_end()) {
+          left_end = logo.get_xlate_end();
+          left_divider = false;
+        }
+        left_start -= logo.get_xlate_start();
+        left_end -= logo.get_xlate_start();
+        if (left_end < left_start) {
+          left_start = 0;
+          left_end = 0;
+          left_divider = false;
+        }
+      }
+      var right_end = (offset + pspm.get_motif_length()) * logo.get_xlate_nsyms();
+      //var right_start = right_end - (pspm.get_left_trim() * logo.get_xlate_nsyms());
+      var right_start = right_end - (pspm.get_right_trim() * logo.get_xlate_nsyms());
+      var right_divider = true;
+      if (right_end < logo.get_xlate_start() || right_start > logo.get_xlate_end()) {
+        // no overlap
+        right_start = 0;
+        right_end = 0;
+        right_divider = false;
+      } else {
+        if (right_start < logo.get_xlate_start()) {
+          right_start = logo.get_xlate_start();
+          right_divider = false;
+        }
+        if (right_end > logo.get_xlate_end()) {
+          right_end = logo.get_xlate_end();
+        }
+        right_start -= logo.get_xlate_start();
+        right_end -= logo.get_xlate_start();
+        if (right_end < right_start) {
+          right_start = 0;
+          right_end = 0;
+          right_divider = false;
+        }
+      }
+      draw_trim_background(ctx, metrics, left_start, left_end, left_divider, right_start, right_end, right_divider);
+    }
+    //draw letters
+    var xlate_col;
+    for (xlate_col = logo.get_xlate_start(); xlate_col < logo.get_xlate_end(); xlate_col++) {
+      ctx.translate(metrics.stack_pad_left,0);
+      col_index = Math.floor(xlate_col / logo.get_xlate_nsyms());
+      if (xlate_col % logo.get_xlate_nsyms() == 0) {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          motif_position = col_index - offset;
+          draw_stack_num(ctx, metrics, motif_position, raster);
+          draw_stack(ctx, metrics, pspm.get_stack(motif_position, logo.alphabet, ssc), raster);
+        }
+      } else {
+        if (col_index >= offset && col_index < (offset + pspm.get_motif_length())) {
+          ctx.save();// s5.1
+          ctx.translate(0, Math.round(metrics.stack_height));
+          // TODO draw a dot or dash or something to indicate continuity of the motif
+          ctx.restore(); //s5.1
+        }
+      }
+      ctx.translate(Math.round(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
+  if (logo.fine_text.length > 0) {
+    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) {
+  "use strict";
+  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) {
+  "use strict";
+  var logo = new Logo(alphabet, fine_text);
+  logo.add_pspm(pspm);
+  return logo;
+}
+
+function logo_2(alphabet, fine_text, target, query, query_offset) {
+  "use strict";
+  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) {
+  "use strict";
+  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, null, 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) {
+  "use strict";
+  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, null, scale);
+  //replace the element with the canvas
+  element.parentNode.replaceChild(canvas, element);
+}
+
+/*
+ * Fast string trimming implementation found at
+ * http://blog.stevenlevithan.com/archives/faster-trim-javascript
+ *
+ * Note that regex is good at removing leading space but
+ * bad at removing trailing space as it has to first go through
+ * the whole string.
+ */
+function trim (str) {
+  "use strict";
+  var ws, i;
+  str = str.replace(/^\s\s*/, '');
+  ws = /\s/; i = str.length;
+  while (ws.test(str.charAt(--i)));
+  return str.slice(0, i + 1);
+}
+</script>
+    <script>
+
+// PRIVATE GLOBAL (uhoh)
+var _block_colour_lookup = {};
+
+function block_colour(index) {
+  function hsl2rgb(hue, saturation, lightness) {
+    "use strict";
+    function _hue(p, q, t) {
+      "use strict";
+      if (t < 0) t += 1;
+      else if (t > 1) t -= 1;
+      if (t < (1.0 / 6.0)) {
+        return p + ((q - p) * 6.0 * t);
+      } else if (t < 0.5) {
+        return q;
+      } else if (t < (2.0 / 3.0)) {
+        return p + ((q - p) * ((2.0 / 3.0) - t) * 6.0);
+      } else {
+        return p;
+      }
+    }
+    function _pad_hex(value) {
+      var hex = Math.round(value * 255).toString(16);
+      if (hex.length < 2) hex = "0" + hex;
+      return hex;
+    }
+    var r, g, b, p, q;
+    if (saturation == 0) {
+      // achromatic (grayscale)
+      r = lightness;
+      g = lightness;
+      b = lightness;
+    } else {
+      if (lightness < 0.5) {
+        q = lightness * (1 + saturation);
+      } else {
+        q = lightness + saturation - (lightness * saturation);
+      }
+      p = (2 * lightness) - q;
+      r = _hue(p, q, hue + (1.0 / 3.0));
+      g = _hue(p, q, hue);
+      b = _hue(p, q, hue - (1.0 / 3.0));
+    }
+    return "#" + _pad_hex(r) + _pad_hex(g) + _pad_hex(b);
+  }
+  if (typeof index !== "number" || index % 1 !== 0 || index < 0) return "#000000";
+  // check for override
+  if (_block_colour_lookup[index] == null) {
+    var start = 0; //red
+    var sat = 100;
+    var light = 50;
+    var divisions = 1 << Math.ceil(Math.log(index + 1) / Math.LN2);
+    hue = start + (360 / divisions) * ((index - (divisions >> 1)) * 2 + 1);
+    // colour input fields only support values in the form #RRGGBB
+    _block_colour_lookup[index] = hsl2rgb(hue / 360, sat / 100, light / 100);
+  }
+  return _block_colour_lookup[index];
+}
+
+function set_block_colour(index, new_colour) {
+  _block_colour_lookup[index] = new_colour;
+  var blocks = document.querySelectorAll("div.block_motif[data-colour-index=\"" + index + "\"]");
+  var i;
+  for (i = 0; i < blocks.length; i++) {
+    blocks[i].style.backgroundColor = new_colour;
+  }
+  var swatches = document.querySelectorAll("div.legend_swatch[data-colour-index=\"" + index + "\"]");
+  var picker;
+  for (i = 0; i < swatches.length; i++) {
+    swatches[i].style.backgroundColor = new_colour;
+    picker = swatches[i].querySelector("input[type=\"color\"]");
+    if (picker != null) picker.value = new_colour;
+  }
+}
+
+function make_block_legend_entry(motif_name, motif_colour_index) {
+  if (typeof make_block_legend_entry.has_colour_picker !== "boolean") {
+    // test if colour picker is supported, based off Modernizer
+    // see http://stackoverflow.com/a/7787648/66387
+    make_block_legend_entry.has_colour_picker = (function() {
+      var doc_ele = document.documentElement;
+      // We first check to see if the type we give it sticks..
+      var input_ele = document.createElement('input');
+      input_ele.setAttribute('type', 'color');
+      var value_ok = input_ele.type !== 'text';
+      if (value_ok) {
+        // If the type does, we feed it a textual value, which shouldn't be valid.
+        // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+        var smile = ':)';
+        input_ele.value = smile;
+        input_ele.style.cssText = 'position:absolute;visibility:hidden;';
+        // chuck into DOM and force reflow for Opera bug in 11.00
+        // github.com/Modernizr/Modernizr/issues#issue/159
+        doc_ele.appendChild(input_ele);
+        doc_ele.offsetWidth;
+        value_ok = input_ele.value != smile;
+        doc_ele.removeChild(input_ele);
+      }
+      return value_ok;
+    })();
+  }
+  var entry = document.createElement("div");
+  entry.className = "legend_entry";
+  var swatch;
+  swatch = document.createElement("div");
+  swatch.className = "legend_swatch";
+  swatch.setAttribute("data-colour-index", motif_colour_index);
+  swatch.style.backgroundColor = block_colour(motif_colour_index);
+  if (make_block_legend_entry.has_colour_picker) {
+    var picker = document.createElement("input");
+    picker.type = "color";
+    picker.value = block_colour(motif_colour_index);
+    picker.addEventListener("change", function(e) {
+      set_block_colour(motif_colour_index, picker.value);
+    }, false);
+    swatch.addEventListener("click", function(e) {
+      picker.click();
+    }, false);
+    swatch.appendChild(picker);
+  }
+  entry.appendChild(swatch);
+  var name = document.createElement("div");
+  name.className = "legend_text";
+  name.appendChild(document.createTextNode(motif_name));
+  entry.appendChild(name);
+  return entry;
+}
+
+function make_block_ruler(max_len) {
+  var container = document.createElement("div");
+  container.className = "block_container";
+  var step;
+  if (max_len < 50) {
+    step = 1;
+  } else if (max_len < 100) {
+    step = 2;
+  } else if (max_len < 200) {
+    step = 4;
+  } else if (max_len < 500) {
+    step = 10;
+  } else if (max_len < 1000) {
+    step = 20;
+  } else if (max_len < 2000) {
+    step = 40;
+  } else if (max_len < 5000) {
+    step = 100;
+  } else if (max_len < 10000) {
+    step = 200;
+  } else if (max_len < 20000) {
+    step = 400;
+  } else {
+    step = Math.floor(max_len / 20000) * 400;
+  }
+  var peroid;
+  if (max_len < 10) {
+    peroid = 1;
+  } else if (max_len < 20) {
+    peroid = 2;
+  } else {
+    peroid = 5;
+  }
+  var i, cycle, offset, tic, label;
+  for (i = 0, cycle = 0; i < max_len; i += step, cycle = (cycle + 1) % peroid) {
+    offset = "" + ((i / max_len) * 100) + "%";
+    tic = document.createElement("div");
+    tic.style.left = offset;
+    tic.className = (cycle == 0 ? "tic_major" : "tic_minor");
+    container.appendChild(tic);
+    if (cycle == 0) {
+      label = document.createElement("div");
+      label.className = "tic_label";
+      label.style.left = offset;
+      label.appendChild(document.createTextNode(i));
+      container.appendChild(label);
+    }
+  }
+  return container;
+}
+
+function _calculate_block_needle_drag_pos(e, data) {
+  var mouse;
+  e = e || window.event;
+  if (e.pageX || ev.pageY) {
+    mouse = {"x": e.pageX, "y": e.pageY};
+  } else {
+    mouse = {
+      x:e.clientX + document.body.scrollLeft - document.body.clientLeft, 
+      y:e.clientY + document.body.scrollTop  - document.body.clientTop 
+    };
+  }
+  var cont = data.container;
+  var dragable_length = cont.clientWidth - 
+    (cont.style.paddingLeft ? cont.style.paddingLeft : 0) -
+    (cont.style.paddingRight ? cont.style.paddingRight : 0);
+  //I believe that the offset parent is the body
+  //otherwise I would need to make this recursive
+  //maybe clientLeft would work, but the explanation of
+  //it is hard to understand and it apparently doesn't work
+  //in firefox 2.
+  var diff = mouse.x - cont.offsetLeft;
+  if (diff < 0) diff = 0;
+  if (diff > dragable_length) diff = dragable_length;
+  var pos = Math.round(diff / dragable_length * data.max);
+  if (pos > data.len) pos = data.len;
+  return pos;
+}
+
+function _update_block_needle_drag(e, data, done) {
+  "use strict";
+  var pos = _calculate_block_needle_drag_pos(e, data);
+  // read the needle positions
+  var left = parseInt(data.llabel.textContent, 10) - data.off - 1;
+  var right = parseInt(data.rlabel.textContent, 10) - data.off;
+  // validate needle positions
+  if (left >= data.len) left = data.len - 1;
+  if (left < 0) left = 0;
+  if (right > data.len) right = data.len;
+  if (right <= left) right = left + 1;
+  // calculate the new needle positions
+  if (data.moveboth) {
+    var size = right - left;
+    if (data.isleft) {
+      if ((pos + size) > data.len) pos = data.len - size;
+      left = pos;
+      right = pos + size;
+    } else {
+      if ((pos - size) < 0) pos = size;
+      left = pos - size;
+      right = pos;
+    }
+  } else {
+    if (data.isleft) {
+      if (pos >= right) pos = right - 1;
+      left = pos;
+    } else {
+      if (pos <= left) pos = left + 1;
+      right = pos;
+    }
+  }
+  // update the needle positions
+  data.lneedle.style.left = "" + (left / data.max * 100) + "%";
+  data.llabel.textContent = "" + (left + data.off + 1);
+  data.rneedle.style.left = "" + (right / data.max * 100) + "%";
+  data.rlabel.textContent = "" + (right + data.off);
+  data.handler(left, right, done);
+}
+
+function _make_block_needle_drag_start_handler(isleft, data) {
+  return function (e) {
+    data.isleft = isleft;
+    data.moveboth = !(e.shiftKey);
+    document.addEventListener("mousemove", data.drag_during, false);
+    document.addEventListener("mouseup", data.drag_end, false);
+  };
+}
+
+function _make_block_needle_drag_end_handler(data) {
+  return function (e) {
+    document.removeEventListener("mousemove", data.drag_during, false);
+    document.removeEventListener("mouseup", data.drag_end, false);
+    _update_block_needle_drag(e, data, true);
+  };
+}
+
+function _make_block_needle_drag_during_handler(data) {
+  return function (e) {
+    _update_block_needle_drag(e, data, false);
+  };
+}
+
+// private function used by make_block_container
+function _make_block_needle(isleft, value, data) {
+  var vbar = document.createElement('div');
+  vbar.className = "block_needle " + (isleft ? "left" : "right");
+  vbar.style.left = "" + (value / data.max * 100)+ "%";
+  var label = document.createElement('div');
+  label.className = "block_handle " + (isleft ? "left" : "right");
+  // The needles sit between the sequence positions, so the left one sits at the
+  // start and the right at the end. This is why 1 is added to the displayed
+  // value for a left handle as the user doesn't need to know about this detail
+  label.textContent = "" + (isleft ? value + data.off + 1 : value + data.off);
+  label.unselectable = "on"; // so IE and Opera don't select the text, others are done in css
+  label.title = "Drag to move the displayed range. Hold shift and drag to change " + (isleft ? "lower" : "upper") + " bound of the range.";
+  vbar.appendChild(label);
+  if (isleft) {
+    data.lneedle = vbar;
+    data.llabel = label;
+  } else {
+    data.rneedle = vbar;
+    data.rlabel = label;
+  }
+  label.addEventListener("mousedown", _make_block_needle_drag_start_handler(isleft, data), false);
+  return vbar;
+}
+
+function make_block_container(is_stranded, has_both_strands, max_len, show_len, offset, range_handler) {
+  offset = (offset != null ? offset : 0);
+  // make the container for the block diagram
+  var container = document.createElement("div");
+  container.className = "block_container";
+  container.setAttribute("data-max", max_len);
+  container.setAttribute("data-off", offset);
+  if (is_stranded) {
+    var plus = document.createElement("div");
+    plus.appendChild(document.createTextNode("+"));
+    plus.className = "block_plus_sym";
+    container.appendChild(plus);
+    if (has_both_strands) {
+      var minus = document.createElement("div");
+      minus.appendChild(document.createTextNode("-"));
+      minus.className = "block_minus_sym";
+      container.appendChild(minus);
+    }
+  }
+  var rule = document.createElement("div");
+  rule.className = "block_rule";
+  rule.style.width = ((show_len / max_len) * 100) + "%";
+  container.appendChild(rule);
+  if (range_handler != null) {
+    var range_data = {
+      "max": max_len,
+      "len": show_len,
+      "off": offset,
+      "handler": range_handler,
+      "container": container,
+      "lneedle": null, "llabel": null,
+      "rneedle": null, "rlabel": null,
+      "isleft": false, "moveboth" : false
+    };
+    range_data.drag_during = _make_block_needle_drag_during_handler(range_data);
+    range_data.drag_end = _make_block_needle_drag_end_handler(range_data);
+    container.appendChild(_make_block_needle(false, 1, range_data)); // add right first so z-index works
+    container.appendChild(_make_block_needle(true, 0, range_data));
+  }
+  return container;
+}
+
+function make_block_label(container, max_len, pos, length, message) {
+  "use strict";
+  var label = document.createElement("div");
+  label.className = "block_label";
+  label.style.left = (((pos + (length / 2)) / max_len) * 100) + "%";
+  label.appendChild(document.createTextNode(message));
+  container.appendChild(label);
+}
+
+function make_block(container, max_len,
+    site_pos, site_len, site_pvalue, site_rc, site_colour_index, site_secondary) {
+  "use strict";
+  var block_height, block, block_region1, block_region2;
+  var max_block_height = 12;
+  var max_pvalue = 1e-10;
+  // calculate the height of the block
+  block_height = (site_pvalue < max_pvalue ? max_block_height : 
+      (Math.log(site_pvalue) / Math.log(max_pvalue)) * max_block_height);
+  if (block_height < 1) block_height = 1;
+  // create a block to represent the motif
+  block = document.createElement("div");
+  block.className = "block_motif" + (site_secondary ? " scanned_site" : "") + (site_rc ? " bottom" : " top");
+  block.style.left = ((site_pos / max_len) * 100) + "%";
+  block.style.top = (!site_rc ? max_block_height - block_height : 
+      max_block_height + 1) + "px";
+  block.style.width = ((site_len / max_len) * 100) + "%";
+  block.style.height = block_height + "px";
+  block.style.backgroundColor = block_colour(site_colour_index);
+  block.setAttribute("data-colour-index", site_colour_index);
+  // add to container
+  container.appendChild(block);
+  var activator = function (e) {
+    toggle_class(block, "active", true);
+    var new_e = new e.constructor(e.type, e);
+    block.dispatchEvent(new_e);
+  };
+  var deactivator = function (e) {
+    toggle_class(block, "active", false);
+    var new_e = new e.constructor(e.type, e);
+    block.dispatchEvent(new_e);
+  }
+  // create a larger region to detect mouseover for the block
+  block_region1 = document.createElement("div");
+  block_region1.className = "block_region top" + 
+    (site_secondary ? " scanned_site" : "") + (site_rc ? "" : " main");
+  block_region1.style.left = block.style.left;
+  block_region1.style.width = block.style.width;
+  block_region1.addEventListener('mouseover', activator, false);
+  block_region1.addEventListener('mouseout', deactivator, false);
+  container.appendChild(block_region1);
+  block_region2 = document.createElement("div");
+  block_region2.className = "block_region bottom" + 
+    (site_secondary ? " scanned_site" : "") + (site_rc ? " main" : "");
+  block_region2.style.left = block.style.left;
+  block_region2.style.width = block.style.width;
+  block_region2.addEventListener('mouseover', activator, false);
+  block_region2.addEventListener('mouseout', deactivator, false);
+  container.appendChild(block_region2);
+  return block;
+}
+
+function set_block_needle_positions(containingNode, start, end) {
+  var container, lneedle, llabel, rneedle, rlabel, max, off, left, right;
+  container = (/\bblock_container\b/.test(containingNode.className) ? containingNode : containingNode.querySelector(".block_container"));
+  max = parseInt(container.getAttribute("data-max"), 10);
+  off = parseInt(container.getAttribute("data-off"), 10);
+  left = start - off;
+  right = end - off;
+  lneedle = containingNode.querySelector(".block_needle.left");
+  llabel = lneedle.querySelector(".block_handle.left");
+  rneedle = containingNode.querySelector(".block_needle.right");
+  rlabel = rneedle.querySelector(".block_handle.right");
+  // update the needle positions
+  lneedle.style.left = "" + (left / max * 100) + "%";
+  llabel.textContent = "" + (left + off + 1);
+  rneedle.style.left = "" + (right / max * 100) + "%";
+  rlabel.textContent = "" + (right + off);
+}
+
+function get_block_needle_positions(containingNode) {
+  var container, llabel, rlabel, max, off, left, right;
+  container = (/\bblock_container\b/.test(containingNode.className) ? containingNode : containingNode.querySelector(".block_container"));
+  max = parseInt(container.getAttribute("data-max"), 10);
+  off = parseInt(container.getAttribute("data-off"), 10);
+  llabel = containingNode.querySelector(".block_needle.left > .block_handle.left");
+  rlabel = containingNode.querySelector(".block_needle.right > .block_handle.right");
+  left = parseInt(llabel.textContent, 10) - off - 1;
+  right = parseInt(rlabel.textContent, 10) - off;
+  return {"start": left + off, "end": right + off};
+}
+</script>
+    <script>
+function make_alpha_bg_table(alph, freqs) {
+  function colour_symbol(index) {
+    var span = document.createElement("span");
+    span.appendChild(document.createTextNode(alph.get_symbol(index)));
+    span.style.color = alph.get_colour(index);
+    span.className = "alpha_symbol";
+    return span;
+  }
+  var table, thead, tbody, row, th, span, i;
+  // create table
+  table = document.createElement("table");
+  table.className = "alpha_bg_table";
+  // create header
+  thead = document.createElement("thead");
+  table.appendChild(thead);
+  row = thead.insertRow(thead.rows.length);
+  if (alph.has_complement()) {
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+  } else {
+    add_text_header_cell(row, "");
+    add_text_header_cell(row, "Name", "pop_alph_name");
+    if (freqs != null) add_text_header_cell(row, "Freq.", "pop_alph_freq");
+    if (alph.has_bg()) add_text_header_cell(row, "Bg.", "pop_alph_bg");
+  }
+  // add alphabet entries
+  tbody = document.createElement("tbody");
+  table.appendChild(tbody);
+  if (alph.has_complement()) {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      var c = alph.get_complement(i);
+      if (i > c) continue;
+      row = tbody.insertRow(tbody.rows.length);
+      add_text_cell(row, alph.get_name(i));
+      if (freqs != null) add_text_cell(row, "" + freqs[i].toFixed(3));
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(i).toFixed(3));
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, "~");
+      add_cell(row, colour_symbol(c)); 
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(c).toFixed(3));
+      if (freqs != null) add_text_cell(row, "" + freqs[c].toFixed(3));
+      add_text_cell(row, alph.get_name(c));
+    }
+  } else {
+    for (i = 0; i < alph.get_size_core(); i++) {
+      row = tbody.insertRow(tbody.rows.length);
+      add_cell(row, colour_symbol(i)); 
+      add_text_cell(row, alph.get_name(i));
+      if (freqs != null) add_text_cell(row, "" + freqs[i].toFixed(3));
+      if (alph.has_bg()) add_text_cell(row, "" + alph.get_bg_freq(i).toFixed(3));
+    }
+  }
+  return table;
+}
+
+</script>
+    <script>
+var current_motif = 0;
+var meme_alphabet = new Alphabet(data.alphabet, data.background.freqs);
+
+var DelayLogoTask = function(logo, canvas) {
+  this.logo = logo;
+  this.canvas = canvas;
+};
+
+DelayLogoTask.prototype.run = function () {
+  draw_logo_on_canvas(this.logo, this.canvas, false);
+};
+
+function motif_pspm(index) {
+  var motif, pwm, psm, name, ltrim, rtrim, nsites, evalue;
+  // get motif
+  motif = data["motifs"][index];
+  // get motif paramters
+  pwm = motif["pwm"]; 
+  psm = motif["psm"];
+  name = "" + (index + 1); ltrim = 0; rtrim = 0; 
+  nsites = motif["nsites"]; evalue = motif["evalue"];
+  // make pspm
+  return new Pspm(pwm, name, ltrim, rtrim, nsites, evalue, psm);
+}
+
+function motif_count_matrix(index) {
+  return motif_pspm(index).as_count_matrix();
+}
+
+function motif_prob_matrix(index) {
+  return motif_pspm(index).as_probability_matrix();
+}
+
+function motif_minimal_meme(index) {
+  return motif_pspm(index).as_meme({
+    "with_header": true, 
+    "with_pspm": true,
+    "with_pssm": true,
+    "version": data["version"],
+    "alphabet": meme_alphabet,
+    "strands": (meme_alphabet.has_complement() && data.options.revcomp ? 2 : 1)
+  });
+}
+
+function motif_fasta(index) {
+  "use strict";
+  var motif, sites, site, seq, sequences, sequence, i, num, counter, out;
+  counter = {};
+  sequences = data["sequence_db"]["sequences"];
+  motif = data["motifs"][index];
+  sites = motif["sites"];
+  out = "";
+  for (i = 0; i < sites.length; i++) {
+    site = sites[i];
+    seq = site["seq"];
+    sequence = sequences[seq];
+    counter[seq] = (num = counter[seq]) ? (++num) : (num = 1); // inc counter
+    if (i !== 0) {out += "\n";}
+    out += ">" + sequence["name"] + "_site_" + num + " offset= " + site["pos"] + 
+      (site["rc"] ? " RC\n" : "\n");
+    out += site["match"];
+  }
+  return out;
+}
+
+function motif_raw(index) {
+  "use strict";
+  var sites, i, out;
+  sites = data["motifs"][index]["sites"];
+  out = "";
+  for (i = 0; i < sites.length; i++) {
+    if (i !== 0) {out += "\n";}
+    out += sites[i]["match"];
+  }
+  return out;
+}
+
+function clone_template(template) {
+  "use strict";
+  var node, help_btns, i, button;
+  node = $(template).cloneNode(true);
+  toggle_class(node, "template", false);
+  node.id = "";
+  help_btns = node.querySelectorAll(".help");
+  for (i = 0; i < help_btns.length; i++) {
+    button = help_btns[i];
+    if (button.hasAttribute("data-topic")) {
+      button.tabIndex = "0";
+      button.addEventListener("click", __toggle_help, false);
+      button.addEventListener("keydown", __toggle_help, false);
+    }
+  }
+  return node;
+}
+
+function set_tvar(template, tvar, value) {
+  var node;
+  node = find_child(template, tvar);
+  if (node === null) {
+    throw new Error("Template does not contain variable " + tvar);
+  }
+  node.innerHTML = "";
+  if (typeof value !== "object") {
+    node.appendChild(document.createTextNode(value));
+  } else {
+    node.appendChild(value);
+  }
+}
+
+function make_logo(alphabet, pspm, rc, offset, className) {
+  if (rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, "");
+  logo.add_pspm(pspm, offset);
+  var canvas = document.createElement('canvas');
+  canvas.height = 50;
+  canvas.width = 0;
+  canvas.className = className;
+  size_logo_on_canvas(logo, canvas, false);
+  add_draw_task(canvas, new DelayLogoTask(logo, canvas));
+  return canvas;
+}
+
+function make_small_logo(alphabet, pspm, options) {
+  if (typeof options === "undefined") options = {};
+  if (options.rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, {x_axis: false, y_axis: false});
+  logo.add_pspm(pspm, (typeof options.offset === "number" ? options.offset : 0));
+  var canvas = document.createElement('canvas');
+  if (typeof options.className === "string") canvas.className = options.className;
+  if (typeof options.width === "number" && options.width > 0) {
+    canvas.height = 0;
+    canvas.width = options.width;
+    draw_logo_on_canvas(logo, canvas, false);
+  } else {
+    draw_logo_on_canvas(logo, canvas, false, 1/3);
+  }
+  return canvas;
+}
+
+function make_large_logo(alphabet, pspm, rc, offset, className) {
+  if (rc) pspm = pspm.copy().reverse_complement(alphabet);
+  var logo = new Logo(alphabet, "");
+  logo.add_pspm(pspm, offset);
+  var canvas = document.createElement('canvas');
+  canvas.height = 200;
+  canvas.width = 0;
+  canvas.className = className;
+  size_logo_on_canvas(logo, canvas, false);
+  add_draw_task(canvas, new DelayLogoTask(logo, canvas));
+  return canvas;
+}
+
+function make_sym_btn(symbol, title, action) {
+  var box;
+  box = document.createElement("div");
+  box.tabIndex = 0;
+  box.className = "sym_btn";
+  box.appendChild(document.createTextNode(symbol));
+  box.title = title;
+  box.addEventListener('click', action, false);
+  box.addEventListener('keydown', action, false);
+  return box;
+}
+
+function make_seq(alphabet, seq) {
+  var i, j, letter, lbox, sbox;
+  sbox = document.createElement("span");
+  for (i = 0; i < seq.length; i = j) {
+    letter = seq.charAt(i);
+    for (j = i+1; j < seq.length; j++) {
+      if (seq.charAt(j) !== letter) {
+        break;
+      }
+    }
+    lbox = document.createElement("span");
+    lbox.style.color = alphabet.get_colour(alphabet.get_index(letter));
+    lbox.appendChild(document.createTextNode(seq.substring(i, j)));
+    sbox.appendChild(lbox);
+  }
+  return sbox;
+}
+
+//
+// make_pv_text
+//
+// Returns the string p-value, with the p italicised.
+///
+function make_pv_text() {
+  var pv_text = document.createElement("span");
+  var pv_italic_text = document.createElement("span");
+  pv_italic_text.appendChild(document.createTextNode("p"));
+  pv_italic_text.style.fontStyle = "italic";
+  pv_text.appendChild(pv_italic_text);
+  pv_text.appendChild(document.createTextNode("-value"));
+  return pv_text;
+}
+
+function append_site_entries(tbody, motif, site_index, count) {
+  "use strict";
+  var i, end;
+  var sites, site, sequences, sequence;
+  var rbody;
+  if (typeof count !== "number") {
+    count = 20;
+  }
+  sequences = data["sequence_db"]["sequences"];
+  sites = motif["sites"];
+  end = Math.min(site_index + count, sites.length);
+  for (i = site_index; i < end; i++) {
+    site = sites[i];
+    sequence = sequences[site["seq"]];
+
+    rbody = tbody.insertRow(tbody.rows.length);
+    add_text_cell(rbody, "" + (site["seq"] + 1) + ".", "site_num");
+    add_text_cell(rbody, sequence["name"], "site_name");
+    add_text_cell(rbody, site["rc"] ? "-" : "+", "site_strand");
+    add_text_cell(rbody, site["pos"] + 1, "site_start");
+    add_text_cell(rbody, site["pvalue"].toExponential(2), "site_pvalue");
+    add_text_cell(rbody, site["lflank"], "site lflank");
+    add_cell(rbody, make_seq(meme_alphabet, site["match"]), "site match");
+    add_text_cell(rbody, site["rflank"], "site rflank");
+  }
+  return i;
+}
+
+function make_site_entries() {
+  "use strict";
+  var region;
+  region = this;
+  if (region.data_site_index >= region.data_motif["sites"].length) {
+    // all sites created
+    region.removeEventListener('scroll', make_site_entries, false);
+    return;
+  }
+  // if there's still 100 pixels to scroll than don't do anything yet
+  if (region.scrollHeight - (region.scrollTop + region.offsetHeight) > 100) {
+    return;
+  }
+
+  region.data_site_index = append_site_entries(
+      find_child(region, "sites_tbl").tBodies[0], 
+      region.data_motif, region.data_site_index, 20
+    ); 
+}
+
+function make_sites(motif) {
+  "use strict";
+  function add_site_header(row, title, nopad, help_topic, tag_class) {
+    var div, divcp, th;
+    th = document.createElement("th");
+    div = document.createElement("div");
+    div.className = "sites_th_inner";
+    if (typeof title !== "object") {
+      title = document.createTextNode("" + title);
+    }
+    div.appendChild(title);
+    if (help_topic) {
+      div.appendChild(document.createTextNode("\xA0"));
+      div.appendChild(help_button(help_topic));
+    }
+    divcp = div.cloneNode(true);
+    divcp.className = "sites_th_hidden";
+    th.appendChild(div);
+    th.appendChild(divcp);
+    if (nopad) {
+      th.className = "nopad";
+    }
+    if (tag_class) {
+      th.className += " " + tag_class;
+    }
+    row.appendChild(th);
+  }
+  var outer_tbl, inner_tbl, tbl, thead, tbody, rhead;
+
+  outer_tbl = document.createElement("div");
+  outer_tbl.className = "sites_outer";
+
+  inner_tbl = document.createElement("div");
+  inner_tbl.className = "sites_inner";
+  outer_tbl.appendChild(inner_tbl);
+
+  tbl = document.createElement("table");
+  tbl.className = "sites_tbl";
+  inner_tbl.appendChild(tbl);
+
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+
+  rhead = thead.insertRow(thead.rows.length);
+  add_site_header(rhead, "", true);
+  add_site_header(rhead, "Name", false, "pop_seq_name");
+  add_site_header(rhead, "Strand", false, "pop_site_strand", "site_strand_title");
+  add_site_header(rhead, "Start", false, "pop_site_start");
+  add_site_header(rhead, make_pv_text(), false, "pop_site_pvalue");
+  add_site_header(rhead, "", false);
+  add_site_header(rhead, "Sites", true, "pop_site_match");
+  add_site_header(rhead, "", false);
+
+  inner_tbl.data_motif = motif;
+  inner_tbl.data_site_index = append_site_entries(tbody, motif, 0, 20);
+  if (inner_tbl.data_site_index < motif["sites"].length) {
+    inner_tbl.addEventListener('scroll', make_site_entries, false);
+  }
+  return outer_tbl;
+}
+
+function make_motif_table_entry(row, alphabet, ordinal, motif, colw) {
+  "use strict";
+  function ev_sig(evalue_str) {
+    "use strict";
+    var ev_re, match, sig, exp, num;
+    ev_re = /^(.*)e(.*)$/;
+    if (match = ev_re.exec(evalue_str)) {
+      sig = parseFloat(match[1]);
+      exp = parseInt(match[2]);
+      if (exp >= 0) {
+        return false;
+      } else if (exp <= -3) {
+        return true;
+      } else {
+        return sig * Math.pow(10, exp) <= 0.05;
+      }
+    }
+    return true;
+  }
+  function make_preview(alphabet, motif) {
+    "use strict";
+    var pspm, preview, preview_rc;
+    var box, btn_box, logo_box, btn_plus, btn_minus;
+    if (motif["preview_logo"]) {
+      preview = motif["preview_logo"];
+      preview_rc = motif["preview_logo_rc"];
+    } else {
+      pspm = new Pspm(motif["pwm"]);
+      preview = make_logo(alphabet, pspm);
+      motif["preview_logo"] = preview;
+      if (alphabet.has_complement()) {
+        preview_rc = make_logo(alphabet, pspm, true, 0, "logo_rc");
+        motif["preview_logo_rc"] = preview_rc;
+      }
+    }
+    if (preview_rc) {
+      btn_plus = document.createElement("div");
+      btn_plus.appendChild(document.createTextNode("+"));
+      btn_plus.className = "preview_btn plus";
+      btn_plus.tabIndex = "0";
+      btn_plus.addEventListener("click", action_btn_rc, false);
+      btn_plus.addEventListener("keydown", action_btn_rc, false);
+      btn_minus = document.createElement("div");
+      btn_minus.appendChild(document.createTextNode("-"));
+      btn_minus.className = "preview_btn minus";
+      btn_minus.tabIndex = "0";
+      btn_minus.addEventListener("click", action_btn_rc, false);
+      btn_minus.addEventListener("keydown", action_btn_rc, false);
+      btn_box = document.createElement("div");
+      btn_box.className = "preview_btn_box";
+      btn_box.appendChild(btn_plus);
+      btn_box.appendChild(btn_minus);
+    }
+    logo_box = document.createElement("div");
+    logo_box.className = "preview_logo_box";
+    logo_box.appendChild(preview);
+    if (preview_rc) logo_box.appendChild(preview_rc);
+    box = document.createElement("div");
+    box.className = "preview_box";
+    if (preview_rc) box.appendChild(btn_box);
+    box.appendChild(logo_box);
+    if (preview_rc) {
+      if (motif["rc"]) {
+        btn_minus.className += " active";
+        logo_box.className += " show_rc_logo";
+      } else {
+        btn_plus.className += " active";
+      }
+    }
+    return box;
+  }
+  var pspm, preview, preview_rc, c;
+  row.data_motif = motif;
+  row.data_ordinal = ordinal;
+  if (!ev_sig(motif["evalue"])) {
+    row.style.opacity = 0.4;
+  }
+  add_text_cell(row, "" + ordinal + ".", "motif_ordinal");
+  add_cell(row, make_preview(alphabet, motif), "motif_logo");
+  add_text_cell(row, motif["evalue"], "motif_evalue");
+  add_text_cell(row, motif["nsites"], "motif_nsites");
+  add_text_cell(row, motif["len"], "motif_width");
+  add_cell(row, make_sym_btn("\u21A7", "Show more information.", 
+        action_show_more), "motif_more");
+  add_cell(row, 
+      make_sym_btn("\u21E2", 
+        "Submit the motif to another MEME Suite program or download it.",
+        action_show_outpop), 
+      "motif_submit");
+  if (colw) {
+    for (c = 0; c < row.cells.length; c++) {
+      row.cells[c].style.minWidth = colw[c] + "px";
+    }
+  }
+}
+
+function make_motifs_table(alphabet, start_ordinal, motifs, colw, stop_reason) {
+  var i, j;
+  var tbl, thead, tbody, tfoot, row, preview;
+  var motif, pspm;
+
+  tbl = document.createElement("table");
+  
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+  tfoot = document.createElement("tfoot");
+  tbl.appendChild(tfoot);
+
+  row = thead.insertRow(thead.rows.length);
+  add_text_header_cell(row, "", "", "motif_ordinal");
+  add_text_header_cell(row, "Logo", "", "motif_logo");
+  add_text_header_cell(row, "E-value", "pop_ev", "motif_evalue");
+  add_text_header_cell(row, "Sites", "pop_sites", "motif_nsites");
+  add_text_header_cell(row, "Width", "pop_width", "motif_width");
+  add_text_header_cell(row, "More", "pop_more", "motif_more");
+  add_text_header_cell(row, "Submit/Download", "pop_submit_dl", "motif_submit");
+
+  for (i = 0; i < motifs.length; i++) {
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, alphabet, start_ordinal + i, motifs[i], colw);
+  }
+
+  row = tfoot.insertRow(tfoot.rows.length);
+  add_text_header_cell(row, stop_reason, "", "stop_reason", "", 6);
+
+  return tbl;
+}
+
+function make_expanded_motif(alphabet, ordinal, motif, less_x, submit_x) {
+  "use strict";
+  var box, pspm, logo_box, large_logo, large_logo_rc, tab_logo, tab_logo_rc;
+  var btn, offset, norc;
+
+  box = clone_template("tmpl_motif_expanded");
+  box.data_motif = motif;
+  box.data_ordinal = ordinal;
+
+  pspm = new Pspm(motif["pwm"]);
+  if (typeof motif["rc"] !== "boolean") {
+    motif["rc"] = false;
+  }
+  if (motif["large_logo"]) {
+    large_logo = motif["large_logo"];
+    large_logo_rc = motif["large_logo_rc"];
+  } else {
+    large_logo = make_large_logo(alphabet, pspm, false, 0);
+    motif["large_logo"] = large_logo;
+    if (alphabet.has_complement()) {
+      large_logo_rc = make_large_logo(alphabet, pspm, true, 0, "logo_rc");
+      motif["large_logo_rc"] = large_logo_rc;
+    }
+  }
+  norc = (large_logo_rc == null);
+  toggle_class(box, "norc", norc);
+
+  logo_box = find_child(box, "tvar_logo");
+  logo_box.appendChild(large_logo);
+  if (large_logo_rc) logo_box.appendChild(large_logo_rc);
+  toggle_class(logo_box, "show_rc_logo", motif["rc"]);
+
+  tab_logo = find_child(box, "tvar_tab");
+  tab_logo_rc = find_child(box, "tvar_tab_rc");
+
+  toggle_class(tab_logo, "activeTab", !motif["rc"]);
+  toggle_class(tab_logo_rc, "activeTab", motif["rc"]);
+
+  tab_logo.addEventListener('click', action_rc_tab, false);
+  tab_logo.addEventListener('keydown', action_rc_tab, false);
+  tab_logo_rc.addEventListener('click', action_rc_tab, false);
+  tab_logo_rc.addEventListener('keydown', action_rc_tab, false);
+
+  set_tvar(box, "tvar_ordinal", ordinal); 
+  set_tvar(box, "tvar_evalue", motif["evalue"]);
+  set_tvar(box, "tvar_width", motif["len"]);
+  set_tvar(box, "tvar_site_count", motif["nsites"]);
+  set_tvar(box, "tvar_llr", motif["llr"]);
+  set_tvar(box, "tvar_ic", motif["ic"]);
+  set_tvar(box, "tvar_re", motif["re"]);
+  set_tvar(box, "tvar_bt", motif["bt"]);
+  set_tvar(box, "tvar_sites", make_sites(motif));
+
+  offset = 32; // 1* 5px padding + 2 * 10px padding + 2 * 2px border + 3px ??
+
+  btn = find_child(box, "tvar_less");
+  btn.style.left = (less_x - offset) + "px";
+  btn.addEventListener('click', action_show_less, false);
+  btn.addEventListener('keydown', action_show_less, false);
+  btn = find_child(box, "tvar_submit");
+  btn.style.left = (submit_x - offset) + "px";
+  btn.addEventListener('click', action_show_outpop, false);
+  btn.addEventListener('keydown', action_show_outpop, false);
+  return box;
+}
+
+
+//
+//
+///
+function make_motifs() {
+  "use strict";
+  function pixel_value(str_in) {
+    "use strict";
+    var px_re, match;
+    px_re = /^(\d+)px$/;
+    if (match = px_re.exec(str_in)) {
+      return parseInt(match[1], 10);
+    }
+    return 0;
+  }
+  var container, tbl;
+  var colw, r, row, c, cell, cell_style, pad_left, pad_right;
+
+  // make the motifs table
+  container = $("motifs");
+  container.innerHTML = ""; // clear content
+
+  tbl = make_motifs_table(meme_alphabet, 1, data["motifs"], colw, data["stop_reason"]);
+  container.appendChild(tbl);
+
+  // measure table column widths
+  colw = [];
+  row = tbl.tBodies[0].rows[0];
+  for (c = 0; c < row.cells.length; c++) {
+    var padLeft, padRight;
+    cell = row.cells[c];
+    cell_style = window.getComputedStyle(cell, null);
+    pad_left = pixel_value(cell_style.getPropertyValue("padding-left"));
+    pad_right = pixel_value(cell_style.getPropertyValue("padding-right"));
+    colw[c] = cell.clientWidth - pad_left - pad_right;
+    if (typeof colw[c] !== "number" || colw[c] < 0) {
+      colw[c] = 1;
+    }
+  }
+
+  // set minimum table column widths on each row so later when we remove rows it still aligns
+  for (r = 0; r < tbl.tBodies[0].rows.length; r++) {
+    row = tbl.tBodies[0].rows[r];
+    for (c = 0; c < row.cells.length; c++) {
+      row.cells[c].style.minWidth = colw[c] + "px";
+    }
+  }
+
+  // store the table column widths so we can create rows latter with the same minimums
+  container.data_colw = colw;
+
+  // calculate the x offset for the buttons
+  row = tbl.tBodies[0].rows[0];
+  container.data_more_x = coords(find_child(find_child(row, "motif_more"), "sym_btn"))[0];
+  container.data_submit_x = coords(find_child(find_child(row, "motif_submit"), "sym_btn"))[0];
+
+  draw_on_screen();
+}
+
+function make_meme_block(container, max_seq_len, is_scan, site) {
+  "use strict";
+  var motif = data.motifs[site.motif];
+  var block = make_block(container, max_seq_len, site.pos, motif.len,
+      site.pvalue, site.rc, site.motif, is_scan);
+  var handler = (is_scan ?
+      make_scan_popup(site, motif, block) :
+      make_block_popup(site, motif, block));
+  block.addEventListener("mouseover", handler, false);
+  block.addEventListener("mouseout", handler, false);
+}
+
+function append_blocks_entries(tbody, seq_index, count) {
+  "use strict";
+  var i, end, j;
+  var max_pvalue, max_block_height, max_seq_len, sequences;
+  var sequence, sites, scans, scan;
+  var container, plus, minus, rule, row;
+  // define some constants
+  max_seq_len = data.sequence_db.max_length;
+  // determine how many to load
+  end = Math.min(seq_index + count, data.sequence_db.sequences.length);
+  for (i = seq_index; i < end; i++) {
+    // get the sequence
+    sequence = data.sequence_db.sequences[i];
+    // make the containers for the block diagram
+    container = make_block_container(meme_alphabet.has_complement(),
+        data.options.revcomp, max_seq_len, sequence.length);
+    // create blocks for the motif sites
+    sites = sequence["sites"];
+    for (j = 0; j < sites.length; j++)
+      make_meme_block(container, max_seq_len, false, sites[j]);
+    // create blocks for the scanned sites
+    scan = data.scan[i];
+    for (j = 0; j < scan.sites.length; j++)
+      make_meme_block(container, max_seq_len, true, scan.sites[j]);
+    // create a row for the sequence
+    row = tbody.insertRow(tbody.rows.length);
+    toggle_class(row, "empty_seq", sites.length == 0 && scan.sites.length == 0);
+    toggle_class(row, "only_scan", sites.length == 0 && scan.sites.length > 0);
+    add_text_cell(row, (i + 1) + ".", "blockdiag_num");
+    add_text_cell(row, sequence["name"], "blockdiag_name");
+    add_text_cell(row, scan["pvalue"].toExponential(2), "blockdiag_pvalue");
+    add_cell(row, container, "block_td"); 
+  }
+  return end;
+}
+
+function make_blocks_entries() {
+  "use strict";
+  var region;
+  region = this;
+  if (region.data_blocks_index >= data["sequence_db"]["sequences"].length) {
+    // all sites created
+    region.removeEventListener('scroll', make_blocks_entries, false);
+    return;
+  }
+  // if there's still 100 pixels to scroll than don't do anything yet
+  if (region.scrollHeight - (region.scrollTop + region.offsetHeight) > 100) {
+    return;
+  }
+
+  region.data_blocks_index = append_blocks_entries(
+      find_child(region, "blocks_tbl").tBodies[0], 
+      region.data_blocks_index, 20
+    ); 
+}
+
+function make_blocks() {
+  "use strict";
+  function add_seqs_filter(container, id, checked, label_text, help_topic) {
+    "use strict";
+    var label, radio;
+    radio = document.createElement("input");
+    radio.type = "radio";
+    radio.name = "seqs_display";
+    radio.id = id;
+    radio.checked = checked;
+    radio.addEventListener('click', action_seqs_filter, false);
+    label = document.createElement("label");
+    label.appendChild(document.createTextNode(label_text));
+    label.htmlFor = id;
+    container.appendChild(radio);
+    container.appendChild(label);
+    if (help_topic) {
+      container.appendChild(document.createTextNode("\xA0"));
+      container.appendChild(help_button(help_topic));
+    }
+  }
+  function add_blocks_header(row, title, nopad, help_topic) {
+    "use strict";
+    var div, divcp, th;
+    th = document.createElement("th");
+    div = document.createElement("div");
+    div.className = "blocks_th_inner";
+    if (typeof title !== "object") {
+      title = document.createTextNode("" + title);
+    }
+    div.appendChild(title);
+    if (help_topic) {
+      div.appendChild(document.createTextNode("\xA0"));
+      div.appendChild(help_button(help_topic));
+    }
+    divcp = div.cloneNode(true);
+    divcp.className = "blocks_th_hidden";
+    th.appendChild(div);
+    th.appendChild(divcp);
+    if (nopad) {
+      th.className = "nopad";
+    }
+    row.appendChild(th);
+  }
+  var container;
+  var page, view_height, outer_tbl, inner_tbl, tbl, thead, tbody, rhead;
+  var in_view, i, seq_count;
+  
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  view_height = Math.max(page.clientHeight - 300, 300);
+
+  container = $("blocks");
+  toggle_class(container, "hide_empty_seqs", true);
+  toggle_class(container, "hide_only_scan", true);
+  container.innerHTML = "";
+  add_seqs_filter(container, "rdo_sites_only", true, "Only Motif Sites", "pop_motif_sites");
+  add_seqs_filter(container, "rdo_sites_and_scan", false, "Motif Sites+Scanned Sites", "pop_scanned_sites");
+  add_seqs_filter(container, "rdo_all_seqs", false, "All Sequences", "pop_all_sequences");
+
+  outer_tbl = document.createElement("div");
+  outer_tbl.className = "blocks_outer";
+
+  inner_tbl = document.createElement("div");
+  inner_tbl.id = "blocks_scroll";
+  inner_tbl.className = "blocks_inner";
+  inner_tbl.style.maxHeight = view_height + "px";
+  outer_tbl.appendChild(inner_tbl);
+
+  tbl = document.createElement("table");
+  tbl.className = "blocks_tbl";
+  inner_tbl.appendChild(tbl);
+
+  thead = document.createElement("thead");
+  tbl.appendChild(thead);
+  tbody = document.createElement("tbody");
+  tbl.appendChild(tbody);
+
+  rhead = thead.insertRow(thead.rows.length);
+  add_blocks_header(rhead, "", true);
+  add_blocks_header(rhead, "Name", false, "pop_seq_name");
+  add_blocks_header(rhead, make_pv_text(), false, "pop_seq_pvalue");
+  add_blocks_header(rhead, "Motif Location", false, "pop_motif_location");
+
+  container.appendChild(outer_tbl);
+
+  
+  seq_count = data["sequence_db"]["sequences"].length;
+  in_view = Math.max(Math.ceil(view_height / 25), 1);
+  i = append_blocks_entries(tbody, 0, in_view);
+
+  while (i < seq_count && inner_tbl.scrollHeight - (inner_tbl.scrollTop + inner_tbl.offsetHeight) < 400) {
+    i = append_blocks_entries(tbody, i, 20);
+  }
+  inner_tbl.data_blocks_index = i;
+  if (i < seq_count) {
+    inner_tbl.addEventListener('scroll', make_blocks_entries, false);
+  }
+}
+
+function make_scan_popup(site, motif) {
+  return function (e) {
+    "use strict";
+    var pop, xy, padding, edge_padding, pop_left, pop_top, page_width;
+    var lflank, match, rflank, pspm;
+    if (!e) var e = window.event;
+    pop = make_scan_popup.pop;
+    if (e.type === "mouseover") {
+      if (pop) return;
+      pop = clone_template("tmpl_scan_info");
+      pspm = new Pspm(motif.pwm);
+      if (site.rc) pspm.reverse_complement(meme_alphabet);
+      set_tvar(pop, "tvar_logo", make_small_logo(meme_alphabet, pspm, {"className": "scan_logo"}));
+      set_tvar(pop, "tvar_motif", motif.id);
+      set_tvar(pop, "tvar_pvalue", site.pvalue.toExponential(2));
+      set_tvar(pop, "tvar_start", site.pos + 1);
+      set_tvar(pop, "tvar_end", site.pos + motif.len);
+
+      document.body.appendChild(pop);
+      position_popup(this, pop);
+      make_scan_popup.pop = pop;
+    } else if (e.type === "mouseout") {
+      if (pop) {
+        pop.parentNode.removeChild(pop);
+        make_scan_popup.pop = null;
+      }
+    }
+  };
+}
+
+function make_block_popup(site, motif, block) {
+  return function (e) {
+    "use strict";
+    var pop;
+    var lflank, match, rflank, pspm, ruler, match_seq, match_width;
+    if (!e) var e = window.event;
+    pop = make_block_popup.pop;
+    if (e.type === "mouseover") {
+      if (pop) return;
+      pop = clone_template("tmpl_block_info");
+      pspm = new Pspm(motif.pwm);
+      if (site.rc) { // must be dna
+        pspm.reverse_complement(meme_alphabet);
+        lflank = meme_alphabet.invcomp_seq(site.rflank);
+        match = meme_alphabet.invcomp_seq(site.match);
+        rflank = meme_alphabet.invcomp_seq(site.lflank);
+      } else {
+        lflank = site.lflank;
+        match = site.match;
+        rflank = site.rflank;
+      }
+      ruler = document.getElementById("measure_match");
+      match_seq = make_seq(meme_alphabet, match);
+      ruler.innerHTML = "";
+      ruler.appendChild(match_seq);
+      match_width = ruler.clientWidth;
+      ruler.removeChild(match_seq);
+      set_tvar(pop, "tvar_lflank", lflank);
+      set_tvar(pop, "tvar_match", match_seq);
+      set_tvar(pop, "tvar_rflank", rflank);
+      set_tvar(pop, "tvar_logo_pad", lflank);
+      set_tvar(pop, "tvar_logo", make_small_logo(meme_alphabet, pspm, {"width": match_width}));
+      set_tvar(pop, "tvar_motif", motif.id);
+      set_tvar(pop, "tvar_pvalue", site.pvalue.toExponential(2));
+      set_tvar(pop, "tvar_start", site.pos + 1);
+      set_tvar(pop, "tvar_end", site.pos + motif.len);
+
+      document.body.appendChild(pop);
+      position_popup(block, pop);
+      make_block_popup.pop = pop;
+    } else if (e.type === "mouseout") {
+      if (pop) {
+        pop.parentNode.removeChild(pop);
+        make_block_popup.pop = null;
+      }
+    }
+  };
+}
+
+function update_outpop_format(index) {
+  switch(parseInt($("text_format").value)) {
+    case 0: // count matrix
+      $("outpop_text").value = motif_count_matrix(index);
+      $("text_name").value = "motif_" + (index + 1) + "_counts.txt";
+      break;
+    case 1: // prob matrix
+      $("outpop_text").value = motif_prob_matrix(index);
+      $("text_name").value = "motif_" + (index + 1) + "_freqs.txt";
+      break;
+    case 2: // minimal meme
+      $("outpop_text").value = motif_minimal_meme(index);
+      $("text_name").value = "motif_" + (index + 1) + ".txt";
+      break;
+    case 3: // fasta
+      $("outpop_text").value = motif_fasta(index);
+      $("text_name").value = "motif_" + (index + 1) + "_fasta.txt";
+      break;
+    case 4: // raw
+      $("outpop_text").value = motif_raw(index);
+      $("text_name").value = "motif_" + (index + 1) + "_raw.txt";
+      break;
+    default:
+      throw new Error("Unknown motif format");
+  }
+}
+
+function update_outpop_motif(index) {
+  "use strict";
+  var motifs, motif, pspm, logo, canvas, num;
+  motifs = data["motifs"];
+  if (index < 0 || index >= motifs.length) {return;}
+  current_motif = index;
+  motif = motifs[index];
+  pspm = new Pspm(motif["pwm"]);
+  logo = new Logo(meme_alphabet, "");
+  logo.add_pspm(pspm, 0);
+  canvas = $("outpop_logo");
+  canvas.width = canvas.width; // clear canvas
+  draw_logo_on_canvas(logo, canvas, false);
+  if (meme_alphabet.has_complement()) {
+    pspm.reverse_complement(meme_alphabet);
+    logo = new Logo(meme_alphabet, "");
+    canvas = $("outpop_logo_rc");
+    canvas.width = canvas.width; // clear canvas
+    draw_logo_on_canvas(logo, canvas, false);
+  }
+  num = $("outpop_num");
+  num.innerHTML = "";
+  num.appendChild(document.createTextNode("" + (index + 1)));
+  update_outpop_format(index);
+}
+
+//
+// action_show_more
+//
+// Show more information on the motif.
+///
+function action_show_more(e) {
+  var node, tr, tbody, table, container, motif, ordinal;
+  var expanded_motif;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // find the row that contains the cell
+  node = this;
+  do {
+    if (node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find row!?");
+  tr = node;
+  // get info
+  motif = tr.data_motif;
+  ordinal = tr.data_ordinal;
+  // find tbody
+  do {
+    if (node.tagName === "TBODY") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find tbody!?");
+  tbody = node;
+  // find table
+  do {
+    if (node.tagName === "TABLE") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find table!?");
+  table = node;
+  // find container
+  container = node.parentNode;
+  // make a expanded motif
+  motif["expanded"] = true;
+  expanded_motif = make_expanded_motif(meme_alphabet, ordinal, motif, 
+      container.data_more_x, container.data_submit_x);
+  // now determine how to place it
+  if (tbody.rows.length === 1) {
+    // only us in the table so the table can be replaced
+    container.replaceChild(expanded_motif, table);
+  } else if (tbody.rows[0] === tr) {
+    // first row, so remove and insert an expanded motif before
+    table.deleteRow(tr.rowIndex);
+    container.insertBefore(expanded_motif, table);
+  } else if (tbody.rows[tbody.rows.length -1] === tr) {
+    // last row, so remove and insert an expanded motif after
+    table.deleteRow(tr.rowIndex);
+    container.insertBefore(expanded_motif, table.nextSibling);
+  } else {
+    var table2, tbody2;
+    table2 = table.cloneNode(false);
+    table2.appendChild(table.tHead.cloneNode(true));
+    tbody2 = table.tBodies[0].cloneNode(false);
+    table2.appendChild(tbody2);
+    container.insertBefore(table2, table.nextSibling);
+    for (i = tbody.rows.length - 1; i >= 0; i--) {
+      row = tbody.rows[i];
+      row.parentNode.removeChild(row);
+      if (row === tr) {
+        break;
+      }
+      tbody2.insertBefore(row, tbody2.rows[0]);
+    }
+    container.insertBefore(expanded_motif, table2);
+  }
+  find_child(expanded_motif, "tvar_less").focus();
+}
+
+//
+// action_show_less
+//
+// Show less information on the motif.
+///
+function action_show_less(e) {
+  var btn;
+  var expanded_motif, container, motif, ordinal, colw, focus_target;
+  var table, tbody, tbody2, row, table_before, table_after;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  btn = this;
+  // find expanded motif
+  expanded_motif = find_parent(btn, "expanded_motif");
+  if (!expanded_motif) throw new Error("Expected expanded motif.");
+  // find the container
+  container = expanded_motif.parentNode;
+  // get data
+  motif = expanded_motif.data_motif;
+  ordinal = expanded_motif.data_ordinal;
+  colw = container.data_colw;
+  // get the table before
+  table_before = expanded_motif.previousSibling;
+  if (table_before && table_before.tagName !== "TABLE") {
+    table_before = null;
+  }
+  // get the table after
+  table_after = expanded_motif.nextSibling;
+  if (table_after && table_after.tagName !== "TABLE") {
+    table_after = null;
+  }
+  // see if there is a table below or above that we can put this in.
+  // if there is a table both below and above then add this motif and
+  // all ones below to the above table
+  motif["expanded"] = false;
+  if (table_before && table_after) {
+    tbody = table_before.tBodies[0];
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+    tbody2 = table_after.tBodies[0];
+    while (tbody2.rows.length > 0) {
+      row = tbody2.rows[0];
+      row.parentNode.removeChild(row);
+      tbody.appendChild(row);
+    }
+    container.removeChild(table_after);
+  } else if (table_before) {
+    tbody = table_before.tBodies[0];
+    row = tbody.insertRow(tbody.rows.length);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+  } else if (table_after) {
+    tbody = table_after.tBodies[0];
+    row = tbody.insertRow(0);
+    make_motif_table_entry(row, meme_alphabet, ordinal, motif, colw);
+    focus_target = find_child(row.cells[5], "sym_btn");
+    container.removeChild(expanded_motif);
+  } else {
+    //no table above or below!
+    // make a new table
+    table = make_motifs_table(meme_alphabet, ordinal, [motif], colw, data["stop_reason"]);
+    focus_target = find_child(table.tBodies[0].rows[0].cells[5], "sym_btn");
+    container.replaceChild(table, expanded_motif);
+  }
+  focus_target.focus();
+}
+
+function action_show_outpop(e) {
+  "use strict";
+  function init() {
+    "use strict";
+    var close_btn, next_btn, prev_btn, cancel_btn, do_btn;
+    var tab1, tab2, tab3;
+    var pnl1, pnl2, pnl3;
+    var format_list;
+    var tbl_submit, inputs, i, default_prog;
+    close_btn = $("outpop_close");
+    close_btn.addEventListener("click", action_hide_outpop, false);
+    close_btn.addEventListener("keydown", action_hide_outpop, false);
+    next_btn = $("outpop_next");
+    next_btn.addEventListener("click", action_outpop_next, false);
+    next_btn.addEventListener("keydown", action_outpop_next, false);
+    prev_btn = $("outpop_prev");
+    prev_btn.addEventListener("click", action_outpop_prev, false);
+    prev_btn.addEventListener("keydown", action_outpop_prev, false);
+    cancel_btn = $("outpop_cancel");
+    cancel_btn.addEventListener("click", action_hide_outpop, false);
+    do_btn = $("outpop_do");
+    do_btn.addEventListener("click", action_outpop_submit, false);
+    tab1 = $("outpop_tab_1");
+    tab1.tabIndex = 0;
+    tab1.addEventListener("click", action_outpop_tab, false);
+    tab1.addEventListener("keydown", action_outpop_tab, false);
+    tab2 = $("outpop_tab_2");
+    tab2.tabIndex = 0;
+    tab2.addEventListener("click", action_outpop_tab, false);
+    tab2.addEventListener("keydown", action_outpop_tab, false);
+    tab3 = $("outpop_tab_3");
+    tab3.tabIndex = 0;
+    tab3.addEventListener("click", action_outpop_tab, false);
+    tab3.addEventListener("keydown", action_outpop_tab, false);
+    pnl1 = $("outpop_pnl_1");
+    pnl2 = $("outpop_pnl_2");
+    pnl3 = $("outpop_pnl_3");
+    toggle_class(tab1, "activeTab", true);
+    toggle_class(tab2, "activeTab", false);
+    toggle_class(tab3, "activeTab", false);
+    pnl1.style.display = "block";
+    pnl2.style.display = "none";
+    pnl3.style.display = "none";
+    format_list = $("text_format");
+    format_list.addEventListener("change", action_outpop_format, false);
+    // setup program selection
+    tbl_submit = $("programs");
+    // when not dna, hide the inputs for programs that require dna motifs
+    toggle_class(tbl_submit, "alphabet_dna", meme_alphabet.has_complement());//TODO FIXME alphabet_dna is a bad name for a field when allowing custom alphabets
+    // add a click listener for the radio buttons
+    inputs = tbl_submit.querySelectorAll("input[type='radio']");
+    for (i = 0; i < inputs.length; i++) {
+      inputs[i].addEventListener("click", action_outpop_program, false);
+    }
+    // ensure that a default program option is selected for DNA and Protein
+    default_prog = document.getElementById(meme_alphabet.has_complement() ? "submit_tomtom" : "submit_fimo"); //TODO FIXME Tomtom might require a more strict definition of DNA
+    default_prog.checked = true;
+    action_outpop_program.call(default_prog);
+    // disable reverse-complement when not DNA
+    $("logo_rc_option").disabled = !meme_alphabet.has_complement(); 
+    // set errorbars on when ssc is on
+    $("logo_ssc").addEventListener("change", action_outpop_ssc, false);
+  }
+  var node;
+  // store the focused element
+  action_hide_outpop.last_active = document.activeElement;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  // hide the help popup
+  help_popup();
+  // on first load initilize the popup
+  if (!action_show_outpop.ready) {
+    init();
+    action_show_outpop.ready = true;
+  }
+  // load the motif logo
+  node = this;
+  do {
+    if (/\bexpanded_motif\b/.test(node.className) || node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (node === null) throw new Error("Expected node!");
+  update_outpop_motif(node.data_ordinal - 1);
+  // display the download popup
+  $("grey_out_page").style.display = "block";
+  $("download").style.display = "block";
+  $("outpop_close").focus();
+}
+
+function action_hide_outpop(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  $("download").style.display = "none";
+  $("grey_out_page").style.display = "none";
+  if (typeof action_hide_outpop.last_active !== "undefined") {
+    action_hide_outpop.last_active.focus();
+  }
+}
+
+function action_outpop_next(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif + 1);
+}
+
+function action_outpop_prev(e) {
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  update_outpop_motif(current_motif - 1);
+}
+
+function action_outpop_program() {
+  "use strict";
+  var table, tr, rows, i;
+  tr = find_parent_tag(this, "TR");
+  table = find_parent_tag(tr, "TABLE");
+  rows = table.querySelectorAll("tr");
+  for (i = 0; i < rows.length; i++) {
+    toggle_class(rows[i], "selected", rows[i] === tr);
+  }
+}
+
+function action_outpop_ssc() {
+  "use strict";
+  $("logo_err").value = $("logo_ssc").value;
+}
+
+function action_outpop_submit(e) {
+  "use strict";
+  var form, input, program, motifs;
+  // find out which program is selected
+  var radios, i;
+  radios = document.getElementsByName("program");
+  program = "fimo"; // default to fimo, since it works with all alphabet types
+  for (i = 0; i < radios.length; i++) {
+    if (radios[i].checked) program = radios[i].value;
+  }
+
+  motifs = motif_minimal_meme(current_motif);
+  form = document.createElement("form");
+  form.setAttribute("method", "post");
+  form.setAttribute("action", site_url + "/tools/" + program);
+  
+  input = document.createElement("input");
+  input.setAttribute("type", "hidden");
+  input.setAttribute("name", "motifs_embed");
+  input.setAttribute("value", motifs);
+  form.appendChild(input);
+
+  document.body.appendChild(form);
+  form.submit();
+  document.body.removeChild(form);
+}
+
+function action_outpop_download_motif(e) {
+  $("text_form").submit();
+}
+
+function action_outpop_download_logo(e) {
+  "use strict";
+  $("logo_motifs").value = motif_minimal_meme(current_motif);
+  $("logo_form").submit();
+}
+
+function action_btn_rc(e) {
+  "use strict";
+  var node, tr, motif, box, logo_box, tab_st, tab_rc, rc;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  node = this;
+  do {
+    if (node.tagName === "TR") break;
+  } while (node = node.parentNode);
+  if (!node) throw new Error("Expected to find row!?");
+  tr = node;
+  // get info
+  motif = tr.data_motif;
+  box = find_parent(this, "preview_box");
+  logo_box = find_child(box, "preview_logo_box");
+  tab_st = find_child(box, "plus");
+  tab_rc = find_child(box, "minus");
+  rc = (this === tab_rc);
+  motif["rc"] = rc;
+  toggle_class(logo_box, "show_rc_logo", rc);
+  toggle_class(tab_st, "active", !rc);
+  toggle_class(tab_rc, "active", rc);
+}
+
+function action_rc_tab(e) {
+  "use strict";
+  var box, logo_box, tab_st, tab_rc, rc;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  box = find_parent(this, "expanded_motif");
+  logo_box = find_child(box, "tvar_logo");
+  tab_st = find_child(box, "tvar_tab");
+  tab_rc = find_child(box, "tvar_tab_rc");
+  rc = (this === tab_rc);
+  box.data_motif["rc"] = rc;
+  toggle_class(logo_box, "show_rc_logo", rc);
+  toggle_class(tab_st, "activeTab", !rc);
+  toggle_class(tab_rc, "activeTab", rc);
+}
+
+function action_outpop_tab(e) {
+  "use strict";
+  var tab1, tab2, tab3, pnl1, pnl2, pnl3, do_btn;
+  if (!e) e = window.event;
+  if (e.type === "keydown") {
+    if (e.keyCode !== 13 && e.keyCode !== 32) {
+      return;
+    }
+    // stop a submit or something like that
+    e.preventDefault();
+  }
+  tab1 = $("outpop_tab_1");
+  tab2 = $("outpop_tab_2");
+  tab3 = $("outpop_tab_3");
+  pnl1 = $("outpop_pnl_1");
+  pnl2 = $("outpop_pnl_2");
+  pnl3 = $("outpop_pnl_3");
+  do_btn = $("outpop_do");
+
+  toggle_class(tab1, "activeTab", (this === tab1));
+  toggle_class(tab2, "activeTab", (this === tab2));
+  toggle_class(tab3, "activeTab", (this === tab3));
+  pnl1.style.display = ((this === tab1) ? "block" : "none");
+  pnl2.style.display = ((this === tab2) ? "block" : "none");
+  pnl3.style.display = ((this === tab3) ? "block" : "none");
+  do_btn.value = ((this === tab1) ? "Submit" : "Download");
+  do_btn.removeEventListener("click", action_outpop_submit, false);
+  do_btn.removeEventListener("click", action_outpop_download_logo, false);
+  do_btn.removeEventListener("click", action_outpop_download_motif, false);
+  if (this === tab1) {
+    do_btn.addEventListener("click", action_outpop_submit, false);
+  } else if (this === tab2) {
+    do_btn.addEventListener("click", action_outpop_download_motif, false);
+  } else {
+    do_btn.addEventListener("click", action_outpop_download_logo, false);
+  }
+}
+
+function action_seqs_filter() {
+  "use strict";
+  var block_container;
+  block_container = $("blocks");
+  if ($("rdo_all_seqs").checked) {
+    toggle_class(block_container, "hide_empty_seqs", false);
+    toggle_class(block_container, "hide_only_scan", false);
+  } else if ($("rdo_sites_and_scan").checked) {
+    toggle_class(block_container, "hide_empty_seqs", true);
+    toggle_class(block_container, "hide_only_scan", false);
+  } else if ($("rdo_sites_only").checked) {
+    toggle_class(block_container, "hide_empty_seqs", true);
+    toggle_class(block_container, "hide_only_scan", true);
+  }
+}
+
+function action_outpop_format() {
+  update_outpop_format(current_motif);
+}
+
+//
+// page_loaded
+//
+// Called when the page has loaded for the first time.
+///
+function page_loaded() {
+  post_load_setup();
+}
+
+//
+// page_loaded
+//
+// Called when a cached page is reshown.
+///
+function page_shown(e) {
+  if (e.persisted) post_load_setup();
+}
+
+//
+// page_loaded
+//
+// Called when the page is resized
+///
+function page_resized() {
+  var page, blocks_scroll;
+  update_scroll_pad();
+  page = (document.compatMode === "CSS1Compat") ? document.documentElement : document.body;
+  blocks_scroll = $("blocks_scroll");
+  if (blocks_scroll) {
+    blocks_scroll.style.maxHeight = Math.max(page.clientHeight - 300, 300) + "px";
+  }
+}
+
+//
+// pre_load_setup
+//
+// Run before the page is displayed
+///
+function pre_load_setup() {
+  var start, hue, sat, light, divisions;
+  var i, j, motifs, motif, sites, site, sequences, sequence;
+  var max_seq_len;
+  motifs = data["motifs"];
+  sequences = data["sequence_db"]["sequences"];
+  max_seq_len = 1;
+  for (i = 0; i < sequences.length; i++) {
+    sequence = sequences[i];
+    sequence["sites"] = [];
+    if (sequence["length"] > max_seq_len) {
+      max_seq_len = sequence["length"];
+    }
+  }
+  data["sequence_db"]["max_length"] = max_seq_len;
+  // use hsl colours
+  start = 0; //red
+  sat = 100;
+  light = 50;
+  for (i = 0; i < motifs.length; i++) {
+    motif = motifs[i];
+    // give the motif a colour
+    divisions = 1 << Math.ceil(Math.log(i + 1) / Math.LN2);
+    hue = start + (360 / divisions) * ((i - (divisions >> 1)) * 2 + 1);
+    motif["colour"] = "hsl(" + hue + ", " + sat + "%, " + light + "%)";
+    // associate sites with sequences as well 
+    // to make generating the block diagram easier
+    sites = motif["sites"];
+    for (j = 0; j < sites.length; j++) {
+      site = sites[j];
+      sequence = sequences[site["seq"]];
+      // record the motif index
+      site["motif"] = i;
+      // add the site to the sequence
+      sequence["sites"].push(site);
+    }
+  }
+}
+
+//
+// post_load_setup
+//
+// Run when the page has loaded, or been reloaded.
+//
+function post_load_setup() {
+  update_scroll_pad();
+  if (data["motifs"].length > 0) {
+    make_motifs();
+    make_blocks();
+  } else {
+    $("motifs").innerHTML = "<p>No significant motifs found!</p>"; // clear content
+    $("motifs").innerHTML += "<p><b>" + data["stop_reason"] + "</b></p>";
+    $("blocks").innerHTML = "<p>No significant motifs found!</p>";
+  }
+}
+
+pre_load_setup();
+</script>
+    <style>
+/* 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;
+  cursor: pointer;
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAIABANR0AP///yH5BAEAAAEALAAAAAAMAA0AAAIdhI8Xy22MIFgv1DttrrJ7mlGNNo4c+aFg6SQuUAAAOw==);
+}
+
+div.help:hover {
+  background-image: url(data:image/gif;base64,R0lGODlhDAANAKEAANR0AP///9R0ANR0ACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEAAAIALAAAAAAMAA0AAAIdDGynCe3PgoxONntvwqz2/z2K2ImjR0KhmSIZUgAAOw==);
+}
+
+p.spaced { line-height: 1.8em;}
+
+span.citation { font-family: "Book Antiqua", "Palatino Linotype", serif; color: #004a4d;}
+
+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; overflow: hidden;}
+
+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;}
+
+.explain h5 {font-size:1em; margin-left: 1em;}
+
+div.doc {margin-left: 2em; margin-bottom: 3em;}
+
+th.trainingset {
+  border-bottom: thin dashed black; 
+  font-weight:normal; 
+  padding:0px 10px;
+}
+div.pop_content {
+  position:absolute;
+  z-index:50;
+  width:300px;
+  padding: 5px;
+  background: #E4ECEC;
+  font-size: 12px;
+  font-family: Arial;
+  border-style: double;
+  border-width: 3px;
+  border-color: #AA2244;
+  display:none;
+}
+
+div.pop_content > *:first-child {
+  margin-top: 0px;
+}
+
+div.pop_content h1, div.pop_content h2, div.pop_content h3, div.pop_content h4, 
+div.pop_content h5, div.pop_content h6, div.pop_content p {
+  margin: 0px;
+}
+
+div.pop_content p + h1, div.pop_content p + h2, div.pop_content p + h3, 
+div.pop_content p + h4, div.pop_content p + h5, div.pop_content p + h6 {
+  margin-top: 5px;
+}
+
+div.pop_content p + p {
+  margin-top: 5px;
+}
+
+div.pop_content > *:last-child {
+  margin-bottom: 0px;
+}
+
+div.pop_content div.pop_close {
+  /* old definition */
+  float:right;
+  bottom: 0;
+}
+
+div.pop_content span.pop_close, div.pop_content span.pop_back {
+  display: inline-block;
+  border: 2px outset #661429;
+  background-color: #CCC;
+  padding-left: 1px;
+  padding-right: 1px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  cursor: pointer;
+  color: #AA2244; /*#661429;*/
+  font-weight: bold;
+}
+
+div.pop_content span.pop_close:active, div.pop_content span.pop_back:active {
+  border-style: inset;
+}
+
+div.pop_content span.pop_close {
+  float:right;
+  /*border: 2px outset #AA002B;*/
+  /*color: #AA2244;*/
+}
+
+div.pop_content:not(.nested) .nested_only {
+  display: none;
+}
+
+div.pop_back_sec {
+  margin-bottom: 5px;
+}
+
+div.pop_close_sec {
+  margin-top: 5px;
+}
+
+table.hide_advanced tr.advanced {
+  display: none;
+}
+span.show_more {
+  display: none;
+}
+table.hide_advanced span.show_more {
+  display: inline;
+}
+table.hide_advanced span.show_less {
+  display: none;
+}
+
+
+/*****************************************************************************
+ * Program logo styling
+ ****************************************************************************/
+div.prog_logo {
+  border-bottom: 0.25em solid #0f5f60;
+  height: 4.5em;
+  width: 24em;
+  display:inline-block;
+}
+div.prog_logo img {
+  float:left;
+  width: 4em;
+  border-style: none;
+  margin-right: 0.2em;
+}
+div.prog_logo h1, div.prog_logo h1:hover, div.prog_logo h1:active, div.prog_logo h1:visited {
+  margin:0;
+  padding:0;
+  font-family: Arial, Helvetica,  sans-serif;
+  font-size: 3.2em;
+  line-height: 1em;
+  vertical-align: top;
+  display: block;
+  color: #026666;
+  letter-spacing: -0.06em;
+  text-shadow: 0.04em 0.06em 0.05em #666;
+}
+div.prog_logo h2, div.prog_logo h2:hover, div.prog_logo h2:active, div.prog_logo h2:visited {
+  display: block;
+  margin:0;
+  padding:0;
+  font-family: Helvetica, sans-serif;
+  font-size: 0.9em;
+  line-height: 1em;
+  letter-spacing: -0.06em;
+  color: black;
+}
+
+div.big.prog_logo {
+  font-size: 18px;
+}
+
+</style>
+    <style>
+.block_td {
+  height:25px;
+}
+.block_container {
+  position:relative;
+  box-sizing: border-box;
+  height: 25px;
+  padding: 0px;
+  margin: 0px;
+  margin-left: 1em;
+}
+.block_label {
+  position: absolute; 
+  display: inline-block;
+  padding: 3px;
+  z-index: 4;
+  top: 6px;
+  height: 12px;
+  line-height: 12px;
+  font-size: 12px;
+  background-color: white;
+  border: 1px solid black;
+  -moz-border-radius: 12px;
+  -webkit-border-radius: 12px;
+  border-radius: 12px;
+  transform: translateX(-50%);
+}
+.block_motif {
+  position: absolute; 
+  z-index: 3;
+  top: 0px;
+  box-sizing: border-box;
+  border: 1px solid black;
+  height: 12px;
+  background-color: cyan;
+}
+.block_motif.top {
+  border-bottom-width: 0;
+}
+.block_motif.bottom {
+  border-top-width: 0;
+}
+.block_motif.scanned_site {
+  opacity: 0.3;
+}
+.block_motif.scanned_site.active {
+  opacity: 0.9;
+}
+.block_region {
+  position:absolute; 
+  z-index:6; 
+  height:25px; 
+  top:0px; 
+}
+.block_region.main {
+  z-index:8;
+}
+.block_region.scanned_site {
+  z-index:5;
+}
+.block_region.scanned_site.main {
+  z-index:7;
+}
+.block_region.top {
+  height:13px;
+}
+.block_region.bottom {
+  height:13px;
+  top:12px;
+}
+.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;
+  line-height:12px;
+  top:0px;
+  left:-1em;
+}
+.block_minus_sym {
+  position:absolute;
+  z-index:4;
+  line-height:12px;
+  top:13px;
+  left:-1em;
+}
+
+.tic_major {
+  position:absolute;
+  top:0em;
+  height:0.5em;
+  width: 2px;
+  margin-left: -1px;
+  background-color: blue;
+}
+.tic_minor {
+  position:absolute;
+  top:0em;
+  height:0.2em;
+  width: 1px;
+  margin-left: -0.5px;
+  background-color: blue;
+}
+.tic_label {
+  position:absolute;
+  display: inline-block;
+  top:0.5em;
+  height: 1em;
+  color: blue;
+  transform: translateX(-50%);
+}
+
+.block_needle {
+  position:absolute;
+  z-index:4;
+  height:30px; 
+  width:1px; 
+  top:-2px; 
+  background-color:gray;
+}
+.block_needle.right {
+  height: 60px;
+}
+.block_handle {
+  position: absolute; 
+  display: inline-block;
+  z-index: 5; 
+  top: 27px; 
+  min-width: 3ex;
+  text-align: center;
+  font-size: 12px;
+  line-height: 12px;
+  transform: translateX(-50%);
+  background-color: LightGrey; 
+  border:3px outset grey;
+  cursor: pointer;
+  -webkit-user-select: none; /* Chrome/Safari */        
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
+  /* Rules below not implemented in browsers yet */
+  -o-user-select: none;
+  user-select: none;
+}
+.block_handle.right {
+  top: 47px;
+}
+
+.legend_container {
+  text-align: right;
+}
+.legend_entry {
+  display: inline-block;
+  padding: 5px;
+}
+div.legend_swatch {
+  box-sizing: border-box;
+  width: 15px;
+  height: 15px;
+  border: 1px solid black;
+  background-color: cyan;
+  float: left;
+}
+div.legend_swatch input {
+  display: none;
+}
+.legend_text {
+  line-height: 15px;
+  margin-left: 20px;
+}
+</style>
+    <style>
+/* meme output specific css */
+
+div.pop_block {
+  position:absolute;
+  z-index:5;
+  padding: 5px;
+  border: 1px solid black;
+  display: inline-block;
+  background-color: white;
+}
+
+#measure_match {
+  position: absolute;
+  visibility: hidden;
+  height: auto;
+  width: auto;
+  white-space: nowrap;
+}
+
+div.template {
+  position: absolute;
+  z-index: 1;
+  left: 0;
+  top: 0;
+  visibility: hidden;
+}
+
+table.block_information {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+table.block_information * th {
+  text-align: right;
+}
+
+*.hide_empty_seqs * tr.empty_seq {
+  display: none;
+}
+
+*.hide_only_scan * tr.only_scan {
+  display: none;
+}
+
+*.hide_only_scan * div.scanned_site {
+  display: none;
+}
+
+td.symaction {
+  text-align: center;
+  text-decoration: underline;
+  font-size: 20px;
+  cursor: pointer;
+}
+div.sym_btn {
+  display:inline-block;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 20px;
+  line-height:20px; 
+  text-align: center;
+  width: 20px;
+  height: 20px;
+  color: blue;
+}
+div.sym_btn:hover {
+  color: white;
+  background-color: blue;
+}
+
+div.sym_btn.positioned {
+  position: absolute;
+  top: 0px;
+}
+
+div.actionbutton { 
+  display:inline-block;
+  cursor: pointer;
+  font-size: 18px;
+  line-height:20px; 
+  padding: 5px; 
+  margin: 10px 0; 
+  border: 1px solid black;
+}
+
+div.actionbutton:hover {
+  color:#FFF;
+  background-color:#000;
+}
+
+div.param_box {
+  display: inline-block;
+  margin-right: 20px;
+}
+
+span.param {
+  font-weight: bold;
+}
+
+div.box + div.box {
+  margin-top: 5px;
+}
+
+div.sites_outer {
+  position: relative;
+  padding-top: 20px; /* height of header */
+  display: inline-block;
+}
+
+div.sites_inner {
+  overflow-x: hidden;
+  overflow-y: auto;
+  max-height: 200px;
+}
+table.sites_tbl {
+  border-collapse: collapse;
+}
+
+div.sites_th_inner {
+  position: absolute;
+  top: 0;
+  line-height: 20px; /* height of header */
+  text-align: left;
+  padding-left: 5px;
+}
+th.nopad div.sites_th_inner {
+  padding-left: 0;
+}
+div.sites_th_hidden {
+  visibility: hidden;
+  height: 0;
+  padding: 0 10px;
+}
+th.nopad div.sites_th_hidden {
+  padding: 0;
+}
+div.sites_inner * th {
+  height: 0;
+}
+
+table.sites_tbl {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+.site_num {
+  text-align: right;
+}
+.site_name {
+  padding:0px 5px; 
+  text-align:left;
+}
+.site_strand {
+  padding:0px 5px; 
+  text-align:center;
+}
+.norc .site_strand, .norc .site_strand_title {
+  display: none;
+}
+.site_start {
+  padding:0px 15px; 
+  text-align: right;
+}
+.site_pvalue {
+  text-align:center; 
+  padding:0px 15px; 
+  text-align:right;
+  white-space: nowrap;
+}
+.lflank, .rflank, .match, .alpha_symbol {
+  font-weight:bold; 
+  font-size:15px; 
+  font-family: 'Courier New', Courier, monospace;
+  color:gray; 
+}
+
+.site.lflank {
+  text-align:right; 
+  padding-right:5px; 
+  color:gray;
+}
+.site.match {
+  text-align:center; 
+}
+.site.rflank {
+  text-align:left; 
+  padding-left:5px; 
+  padding-right: 20px;
+}
+
+th.stop_reason {
+  text-align: left;
+  padding-right: 10px;
+}
+
+th.motif_ordinal {
+
+}
+td.motif_ordinal {
+  text-align: right;
+  padding-right: 10px;
+}
+th.motif_logo {
+  padding-right: 10px;
+}
+td.motif_logo {
+  padding-right: 10px;
+}
+th.motif_evalue {
+  text-align:right;
+  padding-right: 10px;
+}
+td.motif_evalue {
+  text-align: right;
+  white-space: nowrap;
+  padding-right: 20px;
+}
+th.motif_nsites {
+  text-align: right;
+  padding-right: 10px;
+}
+td.motif_nsites {
+  text-align: right;
+  padding-right: 20px;
+}
+th.motif_width {
+  text-align: right;
+  padding-right: 5px;
+}
+td.motif_width {
+  text-align: right;
+  padding-right: 15px;
+}
+th.motif_more {
+  padding: 0 5px;
+}
+td.motif_more {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_submit {
+  padding: 0 5px;
+}
+td.motif_submit {
+  text-align: center;
+  padding: 0 5px;
+}
+th.motif_download {
+  padding-left: 5px;
+}
+td.motif_download {
+  text-align: center;
+  padding-left: 5px;
+}
+
+
+div.tabArea {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+.norc div.tabArea {
+  display: none;
+}
+
+span.tab, span.tab:visited {
+  cursor: pointer;
+  color: #888;
+  background-color: #ddd;
+  border: 2px solid #ccc;
+  padding: 2px 1em;
+  text-decoration: none;
+}
+span.tab.middle {
+  border-left-width: 0px;
+}
+div.tabArea.base span.tab {
+  border-top-width: 0px;
+}
+div.tabArea.top span.tab {
+  border-bottom-width: 0px;
+}
+
+span.tab:hover {
+  background-color: #bbb;
+  border-color: #bbb;
+  color: #666;
+}
+span.tab.activeTab, span.tab.activeTab:hover, span.tab.activeTab:visited {
+  background-color: white;
+  color: black;
+  cursor: default;
+}
+div.tabMain {
+  border: 2px solid #ccc;
+  background-color: white;
+  padding: 10px;
+}
+div.tabMain.base {
+  margin-top: 5px;
+  display: inline-block;
+  max-width: 98%;
+}
+
+div.tabMain.top {
+  margin-bottom: 5px;
+}
+
+div.tabCenter {
+  max-width: 100%;
+  overflow-x: auto;
+  height: 200px;
+  overflow-y: hidden;
+}
+
+canvas.logo_rc {
+  display:none;
+}
+.show_rc_logo > canvas {
+  display: none;
+}
+.show_rc_logo > canvas.logo_rc {
+  display: block;
+}
+
+canvas.scan_logo {
+  margin-left: 10px;
+}
+
+div.blocks_outer {
+  position: relative;
+  padding-top: 20px; /* height of header */
+}
+
+div.blocks_inner {
+  overflow-x: hidden;
+  overflow-y: auto;
+  max-height: 200px;
+}
+table.blocks_tbl {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+div.blocks_th_inner {
+  position: absolute;
+  top: 0;
+  line-height: 20px; /* height of header */
+  text-align: left;
+  padding-left: 5px;
+}
+th.nopad div.blocks_th_inner {
+  padding-left: 0;
+}
+div.blocks_th_hidden {
+  visibility: hidden;
+  height: 0;
+  padding: 0 10px;
+}
+th.nopad div.blocks_th_hidden {
+  padding: 0;
+}
+div.blocks_inner * th {
+  height: 0;
+}
+
+table.blocks_tbl {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+td.block_td {
+  width: 99%;
+}
+
+*.blockdiag_num {
+  text-align: right;
+}
+
+td.blockdiag_name {
+  text-align: left;
+  padding:0px 10px; 
+}
+
+td.blockdiag_pvalue {
+  padding:0px 10px; 
+  text-align:right;
+  white-space: nowrap;
+}
+
+div.preview_btn {
+  border: 2px solid white;
+  height: 16px;
+  width: 16px;
+  font-size: 12px;
+  line-height: 16px;
+  text-align: center;
+  cursor: pointer;
+}
+div.preview_btn + div.preview_btn {
+  margin-top: 3px;
+}
+
+div.preview_btn.active {
+  border: 2px solid black;
+  cursor: default;
+}
+
+div.preview_btn:hover {
+  background-color: black;
+  color: white;
+  border-color: black;
+}
+
+div.preview_btn.active:hover {
+  background-color: white;
+  color: black;
+  border-color: black;
+}
+
+
+div.preview_btn_box {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  padding: 3px;
+}
+
+div.preview_logo_box {
+  height: 50px;
+  overflow-y: hidden;
+}
+
+div.preview_btn_box + div.preview_logo_box {
+  margin-left: 25px;
+}
+
+div.preview_box {
+  position: relative;
+}
+
+div.grey_background {
+  position:fixed; 
+  z-index: 8;
+  background-color: #000;
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+  opacity: 0.5;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+}
+
+div.popup_wrapper {
+  position:fixed; 
+  z-index:9;
+  width:100%; 
+  height:0; 
+  top:50%; 
+  left:0;
+}
+
+div.popup {
+  width: 600px; 
+  z-index:9;
+  margin-left: auto;
+  margin-right: auto;
+  padding: 5px;
+  background-color: #FFF;
+  border-style: double;
+  border-width: 5px;
+  border-color: #00666a;
+  position:relative; 
+}
+div.close {
+  cursor: pointer;
+  border: 1px solid black; 
+  width:15px; 
+  height:15px; 
+  line-height:15px; /* this causes vertical centering */
+  text-align:center; 
+  background-color:#FFF; 
+  color:#000; 
+  font-size:15px;
+  font-family:monospace;
+}
+
+div.close:hover {
+  color:#FFF;
+  background-color:#000; 
+}
+
+div.navnum {
+  width:100%; 
+  height:20px; 
+  line-height:20px; 
+  text-align:center; 
+  font-size:medium;
+}
+
+div.navarrow {
+  font-size: 30px;
+  text-decoration:none;
+  cursor: pointer;
+  -moz-user-select: none;  
+  -webkit-user-select: none;  
+  -ms-user-select: none;
+}
+
+div.navarrow > span.inactive {
+  display: inline;
+}
+div.navarrow > span.active {
+  display: none;
+}
+
+div.navarrow:hover > span.active {
+  display: inline;
+}
+div.navarrow:hover > span.inactive {
+  display: none;
+}
+
+table.programs {
+  width: 100%;
+}
+
+table.programs tr {
+  background-color: #EFE;
+}
+
+table.programs tr.selected {
+  background-color: #262;
+  color: #FFF;
+}
+
+table.programs tr.dna_only {
+  display: none;
+}
+
+table.programs.alphabet_dna tr.dna_only {
+  display: table-row;
+}
+
+div.programs_scroll {
+  width: 100%; 
+  height: 90px; 
+  overflow-y: auto; 
+  overflow-x: hidden;
+  margin: 0 auto; 
+}
+table.inputs, table.alpha_bg_table {
+  margin-top: 20px;
+  border-collapse:collapse;
+}
+table.inputs * td, table.inputs * th, table.alpha_bg_table * td, table.alpha_bg_table * th {
+  padding-left: 15px;
+  padding-right: 15px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+table.hide_psp td.col_psp, table.hide_psp th.col_psp {
+  display: none;
+}
+
+/* program settings */
+span.mod_oops, span.mod_zoops, span.mod_anr {
+  display: none;
+}
+td.oops span.mod_oops,td.zoops span.mod_zoops, td.anr span.mod_anr  {
+  display: inline;
+}
+span.strand_none, span.strand_given, span.strand_both {
+  display: none;
+}
+td.none span.strand_none, td.given span.strand_given, td.both span.strand_both {
+  display: inline;
+}
+span.spmap_uni, span.spmap_pam {
+  display: none;
+}
+td.uni span.spmap_uni, td.pam span.spmap_pam {
+  display: inline;
+}
+span.prior_dirichlet, span.prior_dmix, span.prior_mega, span.prior_megap, span.prior_addone {
+  display: none;
+}
+td.dirichlet span.prior_dirichlet, td.dmix span.prior_dmix, td.mega span.prior_mega,
+td.megap span.prior_megap, td.addone span.prior_addone {
+  display: inline;
+}
+span.noendgaps_on, span.noendgaps_off {
+  display: none;
+}
+td.on span.noendgaps_on, td.off span.noendgaps_off {
+  display: inline;
+}
+span.substring_on, span.substring_off {
+  display: none;
+}
+td.on span.substring_on, td.off span.substring_off {
+  display: inline;
+}
+</style>
+  </head>
+  <body onload="page_loaded()" onpageshow="page_shown(event)" onresize="page_resized()">
+    <!--  -->
+    <div id="grey_out_page" class="grey_background" style="display:none;">
+    </div>
+    <!-- Help popups -->
+    <div class="pop_content" id="pop_">
+      <p>Help poup.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_ev">
+      <p>The statistical significance of the motif. MEME usually finds the most
+      statistically significant (low E-value) motifs first. It is unusual to
+      consider a motif with an E-value larger than 0.05 significant so, as an
+      additional indicator, MEME displays these partially transparent.</p> 
+      <p>The E-value of a motif is based on its log likelihood ratio, width,
+      sites, the background letter frequencies (given in the command line
+      summary), and the size of the training set.</p>
+      <p>The E-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 (sequences where each position is independent and letters are
+      chosen according to the background letter frequencies).</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_sites">
+      <p>The number of sites contributing to the construction of the motif.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_width">
+      <p>The width of the motif. Each motif describes a pattern of a fixed
+      width, as no gaps are allowed in MEME motifs.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_more">
+      <p>Click on the blue symbol below to reveal more information about this motif.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_submit_dl">
+      <p>Click on the blue symbol below to reveal options allowing you
+      to submit this motif to another MEME Suite motif analysis program, to download this
+      motif in various text formats, or to download a sequence "logo" of
+      this motif PNG or EPS format.</p>
+      <h5>Supported Programs</h5>
+      <dl>
+        <dt>Tomtom</dt>
+        <dd>Tomtom is a tool for searching for similar known motifs. 
+          [<a href="http://meme-suite.org/doc/tomtom.html?man_type=web">manual</a>]</dd>
+        <dt>MAST</dt>
+        <dd>MAST is a tool for searching biological sequence databases for 
+          sequences that contain one or more of a group of known motifs.
+          [<a href="http://meme-suite.org/doc/mast.html?man_type=web">manual</a>]</dd>
+        <dt>FIMO</dt>
+        <dd>FIMO is a tool for searching biological sequence databases for 
+          sequences that contain one or more known motifs.
+          [<a href="http://meme-suite.org/doc/fimo.html?man_type=web">manual</a>]</dd>
+        <dt>GOMO</dt>
+        <dd>GOMO is a tool for identifying possible roles (Gene Ontology 
+          terms) for DNA binding motifs.
+          [<a href="http://meme-suite.org/doc/gomo.html?man_type=web">manual</a>]</dd>
+        <dt>SpaMo</dt>
+        <dd>SpaMo is a tool for inferring possible transcription factor
+          complexes by finding motifs with enriched spacings.
+          [<a href="http://meme-suite.org/doc/spamo.html?man_type=web">manual</a>]</dd>
+      </dl>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_llr">
+      <p>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 -bfile option to MEME.).</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_ic">
+      <p>The information content of the motif in bits. It is equal to the sum
+      of the uncorrected information content, R(), in the columns of the pwm.
+      This is equal relative entropy of the motif relative to a uniform
+      background frequency model.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_re">
+      <p>The relative entropy of the motif.</p>
+
+      <p style="font-family: monospace;">re = llr / (sites * ln(2))</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_bt">
+      <p>The Bayes Threshold.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_strand">
+      <p>The strand used for the motif site.</p>
+      <dl>
+        <dt>+</dt>
+        <dd>The motif site was found in the sequence as it was supplied.</dd>
+        <dt>-</dt>
+        <dd>The motif site was found in the reverse complement of the supplied sequence.</dd>
+      </dl>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_start">
+      <p>The position in the sequence where the motif site starts. If a motif
+      started right at the begining of a sequence it would be described as
+      starting at position 1.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_pvalue">
+      <p>The probability that an equal or better site would be found in a
+      random sequence of the same length conforming to the background letter
+      frequencies.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_site_match">
+      <p>A motif site with the 10 flanking letters on either side.</p> 
+      <p>When the site is not on the given strand then the site
+      and both flanks are reverse complemented so they align.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_name">
+      <p>The name of the sequences as given in the FASTA file.</p>
+      <p>The number to the left of the sequence name is the ordinal
+      of the sequence.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_motif_sites">
+      <p>These are the motif sites predicted by MEME and used to build the motif.</p>
+      <p>These sites are shown in solid color and hovering the cursor
+      over a site will reveal details about the site.  Only sequences
+      that contain a motif site are shown.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_scanned_sites">
+      <p>These are the motif sites predicted by MEME plus
+      any additional sites detected using a motif scanning
+      algorithm.</p>
+      <p>These MEME sites are shown in solid color and 
+      additional scanned sites are shown in transparent color.
+      Hovering the cursor over a site will reveal details about the site.
+      Only sequences containing a predicted or scanned motif site are shown.</p>
+      <p>The scanned sites are predicted using a
+      log-odds scoring matrix constructed from the MEME sites.
+      Only scanned sites with position <i>p</i>-values less
+      than 0.0001 are shown.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_all_sequences">
+      <p>These are the same sites as shown by selecting the
+      "Motif Sites + Scanned Sites" button except that all
+      sequences, including those with no sites, are included
+      in the diagram.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_pvalue">
+      <p>This is the combined match <i>p</i>-value.</p>
+      <p>The combined match <i>p</i>-value is defined as the probability that a
+      random sequence (with the same length and conforming to the background) 
+      would have position <i>p</i>-values such that the product is smaller
+      or equal to the value calulated for the sequence under test.</p>
+      <p>The position <i>p</i>-value is defined as the probability that a
+      random sequence (with the same length and conforming to the background)
+      would have a match to the motif under test with a score greater or equal
+      to the largest found in the sequence under test.</p>
+      <p>Hovering your mouse over a motif site in the motif location 
+      block diagram will show its position <i>p</i>-value and other information
+      about the site.</p>
+       
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_motif_location">
+      <p>This diagram shows the location of motif sites.</p>
+      <p>Each block shows the position and strength of a motif
+      site.  The height of a block gives an indication of the 
+      significance of the site as taller blocks are more significant. 
+      The height is calculated to be proportional to the negative 
+      logarithm of the <i>p</i>-value of the site, truncated at 
+      the height for a <i>p</i>-value of 1e-10.</p>
+      <p>For complementable alphabets (like DNA), sites on the 
+      positive strand are shown above the line,
+      sites on the negative strand are shown below.</p>
+      <p>Placing the cursor
+      over a motif site will reveal more information about the site
+      including its position <i>p</i>-value.  (See the help
+      for the <i>p</i>-value column for an explanation of position 
+      <i>p</i>-values.)</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_seq_source">
+      <p>The name of the file of sequences input to MEME.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_psp_source">
+      <p>The position specific priors file used by MEME to find the motifs.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_alph">
+      <p>The alphabet used by the sequences.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_seq_count">
+      <p>The number of sequences provided as input to MEME.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <div class="pop_content" id="pop_alph_name">
+      <p>The name of the alphabet symbol.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_alph_freq">
+      <p>The frequency of the alphabet symbol in the dataset with a pseudocount
+      so it is never zero.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+    <div class="pop_content" id="pop_alph_bg">
+      <p>The frequency of the alphabet symbol as defined by the background model.</p>
+      <div style="float:right; bottom:0px;">[ 
+        <a href="javascript:help_popup()">close</a> ]</div>
+    </div>
+
+    <!-- templates -->
+    <div id="measure_match" class="match"></div>
+    <div class="template pop_block" id="tmpl_block_info">
+      <div>
+        <span class="tvar_logo_pad lflank" style="visibility:hidden;"></span>
+        <span class="tvar_logo"></span>
+      </div>
+      <div class="block_sequence_fragment">
+        <span class="tvar_lflank lflank"></span>
+        <span class="tvar_match match"></span>
+        <span class="tvar_rflank rflank"></span>
+      </div>
+      <table class="block_information">
+        <tr><th>Motif</th><td class="tvar_motif">1</td></tr>
+        <tr><th><i>p</i>-value</th><td class="tvar_pvalue">8.23e-7</td></tr>
+        <tr><th>Start</th><td class="tvar_start">23</td></tr>
+        <tr><th>End</th><td class="tvar_end">33</td></tr>
+      </table>
+    </div>
+
+    <div class="template pop_block" id="tmpl_scan_info">
+      <h5>Scanned Site</h5>
+      <div class="tvar_logo"></div>
+      <table class="block_information">
+        <tr><th>Motif</th><td class="tvar_motif">1</td></tr>
+        <tr><th><i>p</i>-value</th><td class="tvar_pvalue">8.23e-7</td></tr>
+        <tr><th>Start</th><td class="tvar_start">23</td></tr>
+        <tr><th>End</th><td class="tvar_end">33</td></tr>
+      </table>
+    </div>
+
+    <div class="template box expanded_motif" id="tmpl_motif_expanded">
+      <div style="position: relative; min-height: 20px">
+        <div class="param_box">
+          <span class="param"><span class="tvar_ordinal"></span>.</span>
+        </div>
+        <div class="sym_btn positioned tvar_less" tabindex="0" 
+          title="Show less information.">&#8613;</div>
+        <div class="sym_btn positioned tvar_submit" tabindex="0"
+          title="Submit the motif to another MEME Suite program or download it.">&#8674;</div>
+      </div>
+      <div>
+        <div class="param_box">
+          <span class="param"><i>E</i>-value:</span>
+          <span class="tvar_evalue"></span>
+          <div class="help" data-topic="pop_ev"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Site Count:</span>
+          <span class="tvar_site_count"></span>
+          <div class="help" data-topic="pop_sites"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Width:</span>
+          <span class="tvar_width"></span>
+          <div class="help" data-topic="pop_width"></div>
+        </div>
+      </div>
+      <div class="tabMain base">
+        <div class="tabCenter tvar_logo"></div>
+      </div>
+      <div class="tabArea base">
+        <span class="tvar_tab tab" tabindex="0">Standard</span><span 
+          class="tvar_tab_rc tab middle" tabindex="0">Reverse 
+          Complement</span>
+      </div>
+      <div style="padding: 10px 0">
+        <div class="param_box">
+          <span class="param">Log Likelihood Ratio:</span>
+          <span class="tvar_llr"></span>
+          <div class="help" data-topic="pop_llr"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Information Content:</span>
+          <span class="tvar_ic"></span>
+          <div class="help" data-topic="pop_ic"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Relative Entropy:</span>
+          <span class="tvar_re"></span>
+          <div class="help" data-topic="pop_re"></div>
+        </div>
+        <div class="param_box">
+          <span class="param">Bayes Threshold:</span>
+          <span class="tvar_bt"></span>
+          <div class="help" data-topic="pop_bt"></div>
+        </div>
+      </div>
+      <div class="tvar_sites"></div>
+    </div>
+
+
+    <div class="popup_wrapper">
+      <div class="popup" style="display:none; top: -150px;" id="download">
+        <div>
+          <div style="float:right; ">
+            <div id="outpop_close" class="close" tabindex="0">x</div>
+          </div>
+          <h2 class="mainh" style="margin:0; padding:0;">Submit or Download</h2>
+          <div style="clear:both"></div>
+        </div>
+          <div style="height:100px">
+            <div style="float:right; width: 30px;">
+              <div id="outpop_prev" class="navarrow" tabindex="0">
+                <span class="inactive">&#8679;</span><span class="active">&#11014;</span>
+              </div>
+              <div id="outpop_num" class="navnum"></div>
+              <div id="outpop_next" class="navarrow" tabindex="0">
+                <span class="inactive">&#8681;</span><span class="active">&#11015;</span>
+              </div>
+            </div>
+            <div id="logo_box" style="height: 100px; margin-right: 40px;">
+              <canvas id="outpop_logo" height="100" width="580"></canvas>
+              <canvas id="outpop_logo_rc" class="logo_rc" height="100" width="580"></canvas>
+            </div>
+          </div>
+          <div>
+            <!-- tabs start -->
+            <div class="tabArea top">
+              <span id="outpop_tab_1" class="tab">Submit Motif</span><span
+                id="outpop_tab_2" class="tab middle">Download Motif</span><span 
+                id="outpop_tab_3" class="tab middle">Download Logo</span>
+            </div>
+            <div class="tabMain top">
+              <!-- Submit to another program -->
+              <div id="outpop_pnl_1">
+                <h4 class="compact">Submit to program</h4>
+                <table id="programs" class="programs">
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="tomtom" id="submit_tomtom"></td>
+                    <td><label for="submit_tomtom">Tomtom</label></td>
+                    <td><label for="submit_tomtom">Find similar motifs in
+                        published libraries or a library you supply.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="fimo" id="submit_fimo"></td>
+                    <td><label for="submit_fimo">FIMO</label></td>
+                    <td><label for="submit_fimo">Find motif occurrences in
+                        sequence data.</label></td>
+                  </tr>
+                  <tr>
+                    <td><input type="radio" name="program" value="mast" id="submit_mast"></td>
+                    <td><label for="submit_mast">MAST</label></td>
+                    <td><label for="submit_mast">Rank sequences by affinity to
+                        groups of motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="gomo" id="submit_gomo"></td>
+                    <td><label for="submit_gomo">GOMo</label></td>
+                    <td><label for="submit_gomo">Identify possible roles (Gene
+                        Ontology terms) for motifs.</label></td>
+                  </tr>
+                  <tr class="dna_only">
+                    <td><input type="radio" name="program" value="spamo" id="submit_spamo"></td>
+                    <td><label for="submit_spamo">SpaMo</label></td>
+                    <td><label for="submit_spamo">Find other motifs that are
+                        enriched at specific close spacings which might imply the existance of a complex.</label></td>
+                  </tr>
+                </table>
+              </div>
+              <!-- download text format  -->
+              <div id="outpop_pnl_2">
+                <div>
+                  <label for="text_format">Format:</label>
+                  <select id="text_format">
+                    <option value="0">Count Matrix</option>
+                    <option value="1">Probability Matrix</option>
+                    <option value="2">Minimal MEME</option>
+                    <option value="3">FASTA</option>
+                    <option value="4">Raw</option>
+                  </select>
+                </div>
+                <form id="text_form" method="post" action="">
+                  <script>$("text_form").action = site_url + "/utilities/save_generated_file";</script>
+                  <input type="hidden" id="text_name" name="name" value="motif.txt">
+                  <input type="hidden" name="mime_type" value="text/plain">
+                  <textarea id="outpop_text" name="content"
+                    style="width:99%; white-space: pre; word-wrap: normal; overflow-x: scroll;" 
+                    rows="8" readonly="readonly" wrap="off"></textarea>
+                </form>
+              </div>
+              <!-- download logo format -->
+              <div id="outpop_pnl_3">
+                <form id="logo_form" method="post" action="">
+                  <script>$("logo_form").action = site_url + "/utilities/generate_logo";</script>
+                  <input type="hidden" name="program" value="MEME"/>
+                  <input type="hidden" id="logo_motifs" name="motifs" value=""/>
+                  <table>
+                    <tr>
+                      <td><label for="logo_format">Format:</label></td>
+                      <td>
+                        <select id="logo_format" name="png">
+                          <option value="1">PNG (for web)</option>
+                          <option value="0">EPS (for publication)</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_rc">Orientation:</label></td>
+                      <td>
+                        <select id="logo_rc" name="rc1">
+                          <option value="0">Normal</option>
+                          <option value="1" id="logo_rc_option">Reverse Complement</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_ssc">Small Sample Correction:</label></td>
+                      <td>
+                        <input type="hidden" id="logo_err" name="errbars" value="0"/>
+                        <select id="logo_ssc" name="ssc">
+                          <option value="0">Off</option>
+                          <option value="1">On</option>
+                        </select>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_width">Width:</label></td>
+                      <td>
+                        <input type="text" id="logo_width" size="4" placeholder="default" name="width"/>&nbsp;cm
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><label for="logo_height">Height:</label></td>
+                      <td>
+                        <input type="text" id="logo_height" size="4" placeholder="default" name="height"/>&nbsp;cm
+                      </td>
+                    </tr>
+                  </table>
+                </form>
+              </div>
+              <!-- Buttons -->
+              <div>
+                <div style="float:left;">
+                  <input type="button" id="outpop_do" value="Submit" />
+                </div>
+                <div style="float:right;">
+                  <input id="outpop_cancel" type="button" value="Cancel" />
+                </div>
+                <div style="clear:both;"></div>
+              </div>
+            </div>
+        </div>
+      </div>
+    </div>
+
+
+
+    <!-- Page starts here -->
+    <div id="top" class="pad1">
+      <div class="prog_logo big">
+        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABGCAYAAACUsCfoAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9wLHAInL7an9JAAAA8eSURBVHja7ZpZbxv3ucZ/s3AZ7qQkypZELZS3WHKiRJbTFnHqOjZcGzCQBf0A7cUB8glOb89dz30vChRp7xK0aZo4TYq6dtKqSew6iuJWpmPJlrVFFCmKI+7LLJw5F81MFZyec5rTILJaP8AAnAty+Pzf933ebeAhHuIhHuIhHmJPo6TpaeGLfimTydhLS0sUCgWazSbVahXDMOh0Ong8HiKRCAMDAxw+fJhHH31UeFDJ/91/bHp62r558ya6rmOaJuvr6+TzeYrFIoZhAOD1epFlmWAwSDqdZnR0lCNHjjA+Ps7+/fuFPUU8k8nYV69epVKpEA6HuXPnDrOzs7RaLbxeL93d3fj9foLBIB6Ph0ajQaVSAUBRFNLpNI888ggHDhzg3Llzwp4g/vbbb9szMzPE43FyuRwffPAB2WyWnp4ehoaGiMVi2LZNvV6n3W7j8/mIRqN4vV4ajQa1Wo2trS0OHTqEaZo89dRTfO973xMeaOKvvfaaffv2bcLhMCsrK/z+979HVVWOHz/O0NAQxWIRVVVRVRW/348oihiGgSiKxGIxurq6CAQCBINB3n//fcbGxiiXyxw7dowXX3yx1Nvbm3igiBcKhY9u3rw5OTMzQzgc5vbt23zwwQfIsszExAS2bZPP55EkiVAoRCQSIRwOI8sy5XKZ7e1tWq0WnU6HTqfD4OAggUAAVVXpdDo0m01GRkb44Q9/KDxQxH/729/as7Oz+Hw+Pv30U37zm9/g9Xrp6emht7eXYDCI3+/H6/UiCALtdhvLsuh0OkiSRCAQQJZl6vU65XKZ1dVV+vv7SSQS5PN5vF4vhUKBgwcP8qMf/WjXyIs7b+7cuWMvLi4iCAL1ep133nkHXdcZHh4mlUoRDofp7+8nHo9jGAaCIBCPx+nr6yOdTtPX14fH40HTNGRZpqenh76+PrLZLMVikYGBARRFwTRN5ubm+PGPf2zvFnF5583c3BzlchlZlrl16xa1Wo2xsTGi0SiDg4OutUzTJBKJIIoiXq+XQCBAIpEgFAphmiaqqlIoFKjVaoyOjhKJRFhfXycajRKNRunp6WFhYYG33nqLQqHwUTKZPP5VE5ecD5cvX7bv37+Poijkcjl++ctfMjo6ytDQEMlkEo/HQ7lcpt1u4/F4kGUZQRDw+Xz09fVx4MABRkZGSKVSdHV10el0KJVK1Ot14vE4kiRRKpVQFIV4PI5t23z66ad0Op2+K1eu/MeuWVxVVUzTRNd17t27RzKZJJFIEI1GEUWRdruNaZqIoogkSYiiiCiK+P1+AoEA0WiUQ4cOCQCbm5vb5XI5Xi6XWVtbw7ZtZFnG7/e7D1YUhWAwSLVaJZvN2v39/cJXHuOLi4t2sVhEEAS2t7eZn59n//79JBIJwuEwlmXRbDbRdR1BEBAEAcuysCwL2/5LmIriX+Wit7c3EY/HSSQSeDweDMPA4/EQCoWwbRvbtgmFQoTDYUqlErlcbnfE7f79+64gbWxs0G63icViRCIRBEHANE0Mw0CSJLxer0vSUfVKpUKxWGRtbc12UmKr1cI0TQD3t4PBoHtwgUAAv99Ps9kkn8/vjrjlcjlkWabdbrO8vEx3dzfhcJhoNEq9XkfTNERRxOfz4fV6sW0bSZJcBS+VSqytrdFqtbh+/bq9sLBALpdje3sbXddd4jutLwh/8WzLslBVdXeI12o1RFFkc3PTLTFjsRixWAxVVbEsC1mWkSTJdVXnMgyDarWKrusUi0X8fj+WZVGtVimXyxiGgW3bblh4PB78fj/tdhvbthFF0a3tv3Liuq4jiiKFQgFZlolEInR3d6MoConEXytLp1Bx0Ol0sG0bXdfRdZ1arYYgCNi2jaZptFot1zOcQ3LSnxMGzsHvCnHH/RqNBtFoFEmSCIfDAAwNDWFZFu12m0ajgaZpWJbl/oDH4/ncoTii5xBz1N+2bTqdDrIs4/P53MxgWRaapu2exQOBgHsAnU6HdrvN5uYmgUCASCRCJBIhkUhgmibNZpNarUaj0XAt71jfET1RFN1YliTJfUa73SaZTLK1tUWtVkPTNKampnaHuFNGyrKM1+t141bTNGq1GrVazS1EIpEI8XjcLWJqtdrnYthNF58pv23beL1eJEly1VzXder1Oq1Wi2AwiK7ru0PcSSs73bBYLBIMBpEkCdM0qVQq6LpOq9UiHA673Vmn08E0TfdyRM85CNM08Xq9bkoMhULugRqGgd/v3z1Xl2X5c24aDodRVZV4PO7W406/raoqtVqNYDCIz+dDURQ3vp3LuXeEz4nlTqdDOBxG13U3TBRF2b0mJRAI0Gg0EAQBTdPw+/2Uy2VXoJzRkkPEifNWq0UgEHCLEsedLcty1X1nzIdCIRRFoVQqUSqVsCyLYDBIPB7fncotlUq5JaWu6xiGgWmabG1tuanINE0EQXAPwSlk6vU6zWaTdruNpmnud3eWsk6fnkwmMU2Tzc1NVFVFURSi0SjpdHp3iB89ehRRFOnt7XWHCNFolFwu58ar08AYhuEWNH6/H4/H8zlL71R4J5XJskwgECAWi5HP51lZWaHVajE8PEw8Hufw4cO7Q3zfvn0C4E5MNU2jq6uLarVKPp//nPA5hYgzcYlEIoRCIfcQHLd3SDvEPR4PHo+HfD5PPp9HEARGRkYIhUIMDQ0Ju0Ic4NixY3g8Hnp7e8lms8RiMcLhMNlsFk3TXHW3bZtgMOjmfScEvF6vW8s7qczxgGazSSAQ4M9//jOqqlKpVHj88cfx+XyMjY3t7ujp1KlTQrlcdicupVKJkZER1tbWuHfvHqqqEolEiMVitNtt6vW6q+iNRoNms4kkSfh8PtfC0WgURVHo7+9nc3OTjY0N3n33XQYGBkilUiSTSU6ePCnsKnGA559/nkqlwtGjR8nn8/j9fh5//HEsy+LWrVvMz8+j6zqhUAifz4dhGG7z0mq1UFUVXdeJRCIEg0F32loqlbh37x53796lq6sLRVGIRCJMTEzs2pT1c8Qfe+wxYWpqyv1j2WyWVCpFIpGgUqkwNzfHnTt33JTnDCUlSaK7u5v+/n66u7vxeDxun16r1SgUCly/fp3bt29z+vRpBgcHqdVqRKPRB2uh8LOf/cyemZlhYWGBYDBIJBIBoFgs0mw2CYfDxONxfD4fg4ODros7vXWhUKDT6bg5/v3332dlZYWhoSHS6TSnTp1i3759VKtVzpw5w1c9dvpfNymvvPKKff36dbLZLIqiuBVWs9mk0WhgWZbbn4fDYURRRNM0AoEAvb29+Hw+Go0Gly9fZmNjg4mJCcbGxti/f787mJyfn6darTI5OcmJEyeEB4J4sVj8wfT09L/Pzs6SzWbdpWEikXBJGoZBs9kkGo0iyzKmabrLhtXVVTKZDJubm5w9e5YjR44wMDDAd7/7XWF2dtZeXFzkyJEj7pZm//79pFIpenp6vhIP+D8f8NZbb9nr6+ssLy+ztbXl1t5er9fdhxeLRSRJoquri0qlQiaTYXt7m0gkwpkzZ5BlmbGxMV544QX3eR9//LE9Pz/PsWPHuHHjBouLi0iSxMDAAMePH2dqakrYVeIAKysr9u3bt1leXnZn65qmoeu6W9AYhkGj0aBYLGKaJocOHeLRRx8lkUgwOTnpjp4d5HI5++OPP6ZcLjM+Ps61a9dYWFig2Wzi9Xp5/vnnOX36tLCrxHfi1q1b9tLSkuv+9XrdbTEVRSEWi5FMJhkdHWV4eJiDBw/+j8/Y2tr6+WuvvfYdwzBIpVJIkoSqqszPz1Ov17lw4QJf+9rXziYSiau7TvxvoVQqpUul0n2n2/oibz+899579k9/+lPC4TCnTp3i61//Orlcjp/85CdomsbTTz/NiRMn/pvH/CMotrQfyF/GD8Xj8aX/7yEePnx4dnx8fPJ3v/sdiqIwODjI5OSkcOPGDfvNN9/kypUr5PN5MpmMPT4+/qWQ71Z835fZZSSTyeMrKyt2vV7n7t27vPrqq1y7ds1+8sknhT/+8Y/2pUuXuHnzJs1mk6WlJTudTn8p5EUeAAwPDwvPPfccBw4cYHV1lc+KJ3t0dPTVixcvcvDgQebn53n55ZeZmZn5h1fLalv/twfqTaRMJmP/4he/YH19nSNHjnDhwgVisRj37t3jnXfeYWFhgQMHDnD+/HmeeuopYc9b3MH4+LjwrW99C0EQuHXrFtPT09RqNfr7+zlx4gTpdJqNjQ3efPNN3njjDbtYLP5gV1X9y8bly5ft119/nUqlwsmTJzl9+jQej4ePPvqITz75hLW1NYLBIJOTk5w7d46+vr4vzEN+EImfO3dOuHr1qv3666/z3nvvoWkaZ8+e5YknnnBXU5qmcfPmTQzDYG1tzR4cHBT2vMUdTE9P25cuXaJQKDA5OcmFCxfQdZ3Z2VkWFhbY2NhAURRSqRTPPvssY2Njwp62uINvfvObwp/+9Cf7V7/6FTdu3KDT6XD+/HmmpqbcoaaqqszOzmIYxhfK9Q80cYCJiQlhbm7OFgSBubk5vF4vzzzzDBMTE+7CMRgMsrCwwEsvvcS1a9fsb3zjG8KedvWd+OSTT+y3336bubk5JicnOXnyJJZl8eGHH7K2tkahUKDRaLBv3z4uXrzI2bNnhT1tcQdHjx4VMpmM3el0WFxcJBQKMTU1xbFjx6hWqwC0221WVlb49a9/zY0bN+wnn3xS2BN5/O/J88899xzDw8NkMhnm5uaIx+M8/fTT9PT0YFkWg4ODrK6u8sorrzA/P2/veVffidXVVfvdd99lenqa8+fPMzo6iqZp/OEPf2BhYYFWq4Usy4yMjHDx4kX+luXlvUh8aGhImJmZsS3L4vr165imSSqVYt++fbTbbWq1GtVqlWq1yt27d7l//749Ojoq7HniAFNTU8LS0pJdLpe5e/cu6+vrRCIRhoeHqVarrK6uous66+vrZLNZSqVS+rP2eW8TB0in00I2m3XVHqCvr49YLEYikXBfRiqXy+Ryufs7Q1tkj6O/v1/49re/zTPPPIMgCMzPz7sraJ/Ph9/vd/d3pVIp/U9hcQdOnX7p0iU7k8kgiqK76lIUxX19dKerC/wTYXt7+8zm5uaV5eVlNjY2iMfj+P1+hoeH6enpmd35evg/FXEHm1uF7ZXltXgg6EcSPSR7u/+zO9H1ff6VsFWq/pyHeIiHeIh/FfwXjVDdIW9O2PAAAAAASUVORK5CYII=" alt="MEME Logo">
+        <h1>MEME</h1>
+        <h2>Multiple Em for Motif Elicitation</h2>
+      </div>
+      <p>
+        For further information on how to interpret these results or to get a 
+        copy of the MEME software please access 
+        <a href="http://meme-suite.org/">http://meme-suite.org</a>. 
+      </p>
+      <p>If you use MEME in your research, please cite the following paper:<br />
+        <span class="citation">
+          Timothy L. Bailey and Charles Elkan, 
+          "Fitting a mixture model by expectation maximization to discover motifs in biopolymers", 
+          <em>Proceedings of the Second International Conference on Intelligent Systems 
+          for Molecular Biology</em>, pp. 28-36, AAAI Press, Menlo Park, California, 1994. 
+          <a href="http://meme-suite.org/doc/ismb94.pdf">[pdf]</a> 
+        </span>
+      </p>
+    </div>
+    <!-- navigation -->
+    <div class="pad2">
+      <a class="jump" href="#motifs_sec">Discovered Motifs</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#sites_sec">Motif Locations</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#inputs_sec">Inputs &amp; Settings</a>
+      &nbsp;&nbsp;|&nbsp;&nbsp;
+      <a class="jump" href="#info_sec">Program information</a>
+    </div>
+    <!-- alert the user when their browser is not up to the task -->
+    <noscript><h1 style="color:red">Javascript is required to view these results!</h1></noscript>
+    <h1 id="html5_warning" style="color:red; display:none;">Your browser does not support canvas!</h1>
+    <script>
+      if (!window.HTMLCanvasElement) $("html5_warning").style.display = "block";
+    </script>
+    <h2 class="mainh pad2" id="motifs_sec">Discovered Motifs</h2>
+    <div id="motifs" class="box">
+      <p>Please wait... Loading...</p>
+      <p>If the page has fully loaded and this message does not disappear then an error may have occurred.</p>
+    </div>
+    <h2 class="mainh pad2" id="sites_sec">Motif Locations</h2>
+    <div id="blocks" class="box">
+      <p>Please wait... Loading...</p>
+      <p>If the page has fully loaded and this message does not disappear then an error may have occurred.</p>
+    </div>
+    <h2 class="mainh pad2" id="inputs_sec">Inputs &amp; Settings</h2>
+    <div class="box">
+      <h4>Sequences</h4>
+      <table id="seq_info" class="inputs">
+        <tr><th>Source <div class="help" data-topic="pop_seq_source"></div></th>
+          <th class="col_psp">PSP Source <div class="help" data-topic="pop_psp_source"></div></th>
+          <th>Alphabet <div class="help" data-topic="pop_seq_alph"></div></th>
+          <th>Sequence Count <div class="help" data-topic="pop_seq_count"></div></th>
+        </tr>
+        <tr>
+          <td id="ins_seq_source"></td>
+          <td id="ins_seq_psp" class="col_psp"></td>
+          <td id="ins_seq_alphabet"></td>
+          <td id="ins_seq_count"></td>
+        </tr>
+      </table>
+      <script>
+      {
+        var db = data.sequence_db;
+        $("ins_seq_source").innerHTML = db.source;
+        $("ins_seq_alphabet").innerHTML = meme_alphabet.get_alphabet_name();
+        $("ins_seq_count").innerHTML = db.sequences.length;
+        if (db.psp) {
+          $("ins_seq_psp").innerHTML = db.psp;
+        }
+        toggle_class($("seq_info"), "hide_psp", !(db.psp));
+      }
+      </script>
+      <h4>Background</h4>
+      <span id="alpha_bg"></span>
+      <script>
+      {
+        $("alpha_bg").appendChild(make_alpha_bg_table(meme_alphabet, data.sequence_db.freqs));
+      }
+      </script>
+      <h4>Other Settings</h4>
+      <table id="tbl_settings" class="inputs hide_advanced">
+        <tr>
+          <th>Motif Site Distribution</th>
+          <td id="opt_mod">
+            <span class="mod_zoops">ZOOPS: Zero or one site per sequence</span>
+            <span class="mod_oops">OOPS: Exactly one site per sequence</span>
+            <span class="mod_anr">ANR: Any number of sites per sequence</span>
+          </td>
+        </tr>
+        <tr>
+          <th>Site Strand Handling</th>
+          <td id="opt_strand">
+            <span class="strand_none">This alphabet only has one strand</span>
+            <span class="strand_given">Sites must be on the given strand</span>
+            <span class="strand_both">Sites may be on either strand</span>
+          </td>
+        </tr>
+        <tr>
+          <th>Maximum Number of Motifs</th>
+          <td id="opt_nmotifs"></td>
+        </tr>
+        <tr>
+          <th>Motif E-value Threshold</th>
+          <td id="opt_evt"></td>
+        </tr>
+        <tr>
+          <th>Minimum Motif Width</th>
+          <td id="opt_minw"></td>
+        </tr>
+        <tr>
+          <th>Maximum Motif Width</th>
+          <td id="opt_maxw"></td>
+        </tr>
+        <tr>
+          <th>Minimum Sites per Motif</th>
+          <td id="opt_minsites"></td>
+        </tr>
+        <tr>
+          <th>Maximum Sites per Motif</th>
+          <td id="opt_maxsites"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Bias on Number of Sites</th>
+          <td id="opt_wnsites"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Sequence Prior</th>
+          <td id="opt_prior">
+            <span class="prior_dirichlet">Simple Dirichlet</span>
+            <span class="prior_dmix">Dirichlets Mix</span>
+            <span class="prior_mega">Mega-weight Dirichlets Mix</span>
+            <span class="prior_megap">Mega-weight Dirichlets Mix Plus</span>
+            <span class="prior_addone">Add One</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>Sequence Prior Strength</th>
+          <td id="opt_b"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Source</th>
+          <td id="opt_substring">
+            <span class="substring_on">From substrings in input sequences</span>
+            <span class="substring_off">From strings on command line (-cons)</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Map Type</th>
+          <td id="opt_spmap">
+            <span class="spmap_uni">Uniform</span>
+            <span class="spmap_pam">Point Accepted Mutation</span>
+          </td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Starting Point Fuzz</th>
+          <td id="opt_spfuzz"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Maximum Iterations</th>
+          <td id="opt_maxiter"></td>
+        </tr>
+        <tr class="advanced">
+          <th>EM Improvement Threshold</th>
+          <td id="opt_distance"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Trim Gap Open Cost</th>
+          <td id="opt_wg"></td>
+        </tr>
+        <tr class="advanced">
+          <th>Trim Gap Extend Cost</th>
+          <td id="opt_ws"></td>
+        </tr>
+        <tr class="advanced">
+          <th>End Gap Treatment</th>
+          <td id="opt_noendgaps">
+            <span class="noendgaps_on">No cost</span>
+            <span class="noendgaps_off">Same cost as other gaps</span>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2" style="text-align: center">
+            <a href="javascript:toggle_class(document.getElementById('tbl_settings'), 'hide_advanced')">
+              <span class="show_more">Show Advanced Settings</span>
+              <span class="show_less">Hide Advanced Settings</span>
+            </a>
+          </td>
+        </tr>
+      </table>
+      <script>
+      {
+        $("opt_mod").className = data.options.mod;
+        $("opt_strand").className = (meme_alphabet.has_complement() ? (data.options.revcomp ? "both" : "given") : "none");
+        $("opt_nmotifs").textContent = data.options.nmotifs;
+        $("opt_evt").textContent = (typeof data.options.evt === "number" ? data.options.evt : "no limit");
+        $("opt_minw").textContent = data.options.minw;
+        $("opt_maxw").textContent = data.options.maxw;
+        $("opt_minsites").textContent = data.options.minsites;
+        $("opt_maxsites").textContent = data.options.maxsites;
+        $("opt_wnsites").textContent = data.options.wnsites;
+        $("opt_spmap").className = data.options.spmap;
+        $("opt_spfuzz").textContent = data.options.spfuzz;
+        $("opt_prior").className = data.options.prior;
+        $("opt_b").textContent = data.options.b;
+        $("opt_maxiter").textContent = data.options.maxiter;
+        $("opt_distance").textContent = data.options.distance;
+        $("opt_wg").textContent = data.options.wg;
+        $("opt_ws").textContent = data.options.ws;
+        $("opt_noendgaps").className = (data.options.noendgaps ? "on" : "off");
+        $("opt_substring").className = (data.options.substring ? "on" : "off");
+      }
+      </script>
+    </div>
+    <!-- list information on this program -->
+    <div id="info_sec" class="bar">
+      <div class="subsection">
+        <h5 id="version">MEME version</h5>
+        <span id="ins_version"></span> 
+        (Release date: <span id="ins_release"></span>)<br>
+      </div>
+      <script>
+        $("ins_version").innerHTML = data["version"];
+        $("ins_release").innerHTML = data["release"];
+      </script>
+      <div class="subsection">
+        <h5 id="reference">Reference</h5>
+        <span class="citation">
+          Timothy L. Bailey and Charles Elkan, 
+          "Fitting a mixture model by expectation maximization to discover motifs in biopolymers", 
+          <em>Proceedings of the Second International Conference on Intelligent Systems 
+          for Molecular Biology</em>, pp. 28-36, AAAI Press, Menlo Park, California, 1994. 
+        </span>
+      </div>
+      <div class="subsection">
+        <h5 id="command">Command line</h5>
+        <textarea id="cmd" rows="5" style="width:100%;" readonly="readonly">
+        </textarea>
+        <script>$("cmd").value = data["cmd"].join(" ");</script>
+      </div>
+    </div>
+    
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_output_test2.txt	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,319 @@
+********************************************************************************
+MEME - Motif discovery tool
+********************************************************************************
+MEME version 4.12.0 (Release date: Tue Jun 27 16:22:50 2017 -0700)
+
+For further information on how to interpret these results or to get
+a copy of the MEME software please access http://meme-suite.org .
+
+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-suite.org .
+********************************************************************************
+
+
+********************************************************************************
+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= Galaxy_FASTA_Input
+ALPHABET= ACGT
+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 meme_input_1.fasta -o meme_test2_out -nostatus -maxsize 1000000 -sf Galaxy_FASTA_Input -dna -mod zoops -nmotifs 1 -wnsites 0.8 -minw 8 -maxw 50 -wg 11 -ws 1 -maxiter 50 -distance 0.001 -prior dirichlet -b 0.01 -plib prior30.plib -spmap uni -spfuzz 0.5 
+
+model:  mod=         zoops    nmotifs=         1    evt=           inf
+object function=  E-value of product of p-values
+width:  minw=            8    maxw=           50
+width:  wg=             11    ws=              1    endgaps=       yes
+nsites: minsites=        2    maxsites=       30    wnsites=       0.8
+theta:  spmap=         uni    spfuzz=        0.5
+global: substring=     yes    branching=      no    wbranch=        no
+em:     prior=   dirichlet    b=            0.01    maxiter=        50
+        distance=    0.001
+data:   n=            1500    N=              30    shuffle=        -1
+strands: +
+sample: seed=            0    ctfrac=         -1    maxwords=       -1
+Dirichlet mixture priors file: prior30.plib
+Letter frequencies in dataset:
+A 0.294 C 0.231 G 0.257 T 0.217 
+Background letter frequencies (from dataset with add-one prior applied):
+A 0.294 C 0.231 G 0.257 T 0.217 
+********************************************************************************
+
+
+********************************************************************************
+MOTIF GGSRTATAAAA MEME-1	width =  11  sites =  30  llr = 254  E-value = 5.1e-040
+********************************************************************************
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 Description
+--------------------------------------------------------------------------------
+Simplified        A  3313:9:a798
+pos.-specific     C  1:3::1:::1:
+probability       G  6756::::::2
+matrix            T  1:11a1a:3::
+
+         bits    2.2       *    
+                 2.0     * *    
+                 1.8     * *    
+                 1.5     * ** * 
+Relative         1.3     * ** * 
+Entropy          1.1     ****** 
+(12.2 bits)      0.9  *  *******
+                 0.7  *  *******
+                 0.4 ** ********
+                 0.2 ***********
+                 0.0 -----------
+
+Multilevel           GGGGTATAAAA
+consensus            AACA    T  
+sequence                        
+                                
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 sites sorted by position p-value
+--------------------------------------------------------------------------------
+Sequence name             Start   P-value               Site  
+-------------             ----- ---------            -----------
+chr21_46046964_46047014_     13  4.51e-07 AAGGCCAGGA GGGGTATAAAA GCCTGAGAGC
+chr21_46031920_46031970_     16  2.22e-06 ATACCCAGGG AGGGTATAAAA CCTCAGCAGC
+chr21_32202076_32202126_     14  2.74e-06 CCACCAGCTT GAGGTATAAAA AGCCCTGTAC
+chr21_46057197_46057247_     37  4.86e-06 ACAGGCCCTG GGCATATAAAA GCC       
+chr21_45993530_45993580_      8  4.86e-06    CCAAGGA GGAGTATAAAA GCCCCACAAA
+chr21_45971413_45971463_     10  4.86e-06  CAGGCCCTG GGCATATAAAA GCCCCAGCAG
+chr21_31964683_31964733_     14  4.86e-06 GATTCACTGA GGCATATAAAA GGCCCTCTGC
+chr21_47517957_47518007_     33  6.48e-06 CCGGCGGGGC GGGGTATAAAG GGGGCGG   
+chr21_45978668_45978718_      5  6.48e-06       CAGA GGGGTATAAAG GTTCCGACCA
+chr21_32185595_32185645_     19  6.48e-06 CACCAGAGCT GGGATATATAA AGAAGGTTCT
+chr21_32410820_32410870_     22  1.38e-05 AATCACTGAG GATGTATAAAA GTCCCAGGGA
+chr21_31992870_31992920_     17  1.38e-05 CACTATTGAA GATGTATAAAA TTTCATTTGC
+chr21_19617074_19617124_     40  1.41e-05 CCTCGGGACG TGGGTATATAA           
+chr21_31914206_31914256_     16  1.61e-05 CCCACTACTT AGAGTATAAAA TCATTCTGAG
+chr21_46020421_46020471_      3  1.95e-05         GA GACATATAAAA GCCAACATCC
+chr21_32253899_32253949_     18  1.95e-05 CCCACCAGCA AGGATATATAA AAGCTCAGGA
+chr21_45705687_45705737_     38  2.16e-05 CGTGGTCGCG GGGGTATAACA GC        
+chr21_47575506_47575556_     31  3.04e-05 GCTGCCGGTG AGCGTATAAAG GCCCTGGCG 
+chr21_31744582_31744632_     13  3.04e-05 CAGGTCTAAG AGCATATATAA CTTGGAGTCC
+chr21_31768316_31768366_      1  3.67e-05          . AACGTATATAA ATGGTCCTGT
+chr21_26934381_26934431_     28  3.93e-05 AGTCACAAGT GAGTTATAAAA GGGTCGCACG
+chr21_31933633_31933683_      5  5.65e-05       TCAG AGTATATATAA ATGTTCCTGT
+chr21_31710037_31710087_     15  6.24e-05 CCCAGGTTTC TGAGTATATAA TCGCCGCACC
+chr21_36411748_36411798_     23  7.15e-05 AGTTTCAGTT GGCATCtaaaa attatataac
+chr21_46102103_46102153_     37  1.39e-04 TGCCTGGGTC CAGGTATAAAG GCT       
+chr21_46086869_46086919_     38  1.39e-04 TGCCTGGGCC CAGGTATAAAG GC        
+chr21_37838750_37838800_      3  4.81e-04         ga tggttttataa ggggcctcac
+chr21_31962741_31962791_     14  8.57e-04 TATAACTCAG GTTGGATAAAA TAATTTGTAC
+chr21_31973364_31973414_      8  1.47e-03    aaactta aaactctataa acttaaaact
+chr21_28217753_28217803_     27  2.64e-03 GGTGGGGGTG GGGGTTTCACT GGTCCACTAT
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 block diagrams
+--------------------------------------------------------------------------------
+SEQUENCE NAME            POSITION P-VALUE  MOTIF DIAGRAM
+-------------            ----------------  -------------
+chr21_46046964_46047014_          4.5e-07  12_[+1]_27
+chr21_46031920_46031970_          2.2e-06  15_[+1]_24
+chr21_32202076_32202126_          2.7e-06  13_[+1]_26
+chr21_46057197_46057247_          4.9e-06  36_[+1]_3
+chr21_45993530_45993580_          4.9e-06  7_[+1]_32
+chr21_45971413_45971463_          4.9e-06  9_[+1]_30
+chr21_31964683_31964733_          4.9e-06  13_[+1]_26
+chr21_47517957_47518007_          6.5e-06  32_[+1]_7
+chr21_45978668_45978718_          6.5e-06  4_[+1]_35
+chr21_32185595_32185645_          6.5e-06  18_[+1]_21
+chr21_32410820_32410870_          1.4e-05  21_[+1]_18
+chr21_31992870_31992920_          1.4e-05  16_[+1]_23
+chr21_19617074_19617124_          1.4e-05  39_[+1]
+chr21_31914206_31914256_          1.6e-05  15_[+1]_24
+chr21_46020421_46020471_          1.9e-05  2_[+1]_37
+chr21_32253899_32253949_          1.9e-05  17_[+1]_22
+chr21_45705687_45705737_          2.2e-05  37_[+1]_2
+chr21_47575506_47575556_            3e-05  30_[+1]_9
+chr21_31744582_31744632_            3e-05  12_[+1]_27
+chr21_31768316_31768366_          3.7e-05  [+1]_39
+chr21_26934381_26934431_          3.9e-05  27_[+1]_12
+chr21_31933633_31933683_          5.6e-05  4_[+1]_35
+chr21_31710037_31710087_          6.2e-05  14_[+1]_25
+chr21_36411748_36411798_          7.1e-05  22_[+1]_17
+chr21_46102103_46102153_          0.00014  36_[+1]_3
+chr21_46086869_46086919_          0.00014  37_[+1]_2
+chr21_37838750_37838800_          0.00048  2_[+1]_37
+chr21_31962741_31962791_          0.00086  13_[+1]_26
+chr21_31973364_31973414_           0.0015  7_[+1]_32
+chr21_28217753_28217803_           0.0026  26_[+1]_13
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 in BLOCKS format
+--------------------------------------------------------------------------------
+BL   MOTIF GGSRTATAAAA width=11 seqs=30
+chr21_46046964_46047014_ (   13) GGGGTATAAAA  1 
+chr21_46031920_46031970_ (   16) AGGGTATAAAA  1 
+chr21_32202076_32202126_ (   14) GAGGTATAAAA  1 
+chr21_46057197_46057247_ (   37) GGCATATAAAA  1 
+chr21_45993530_45993580_ (    8) GGAGTATAAAA  1 
+chr21_45971413_45971463_ (   10) GGCATATAAAA  1 
+chr21_31964683_31964733_ (   14) GGCATATAAAA  1 
+chr21_47517957_47518007_ (   33) GGGGTATAAAG  1 
+chr21_45978668_45978718_ (    5) GGGGTATAAAG  1 
+chr21_32185595_32185645_ (   19) GGGATATATAA  1 
+chr21_32410820_32410870_ (   22) GATGTATAAAA  1 
+chr21_31992870_31992920_ (   17) GATGTATAAAA  1 
+chr21_19617074_19617124_ (   40) TGGGTATATAA  1 
+chr21_31914206_31914256_ (   16) AGAGTATAAAA  1 
+chr21_46020421_46020471_ (    3) GACATATAAAA  1 
+chr21_32253899_32253949_ (   18) AGGATATATAA  1 
+chr21_45705687_45705737_ (   38) GGGGTATAACA  1 
+chr21_47575506_47575556_ (   31) AGCGTATAAAG  1 
+chr21_31744582_31744632_ (   13) AGCATATATAA  1 
+chr21_31768316_31768366_ (    1) AACGTATATAA  1 
+chr21_26934381_26934431_ (   28) GAGTTATAAAA  1 
+chr21_31933633_31933683_ (    5) AGTATATATAA  1 
+chr21_31710037_31710087_ (   15) TGAGTATATAA  1 
+chr21_36411748_36411798_ (   23) GGCATCTAAAA  1 
+chr21_46102103_46102153_ (   37) CAGGTATAAAG  1 
+chr21_46086869_46086919_ (   38) CAGGTATAAAG  1 
+chr21_37838750_37838800_ (    3) TGGTTTTATAA  1 
+chr21_31962741_31962791_ (   14) GTTGGATAAAA  1 
+chr21_31973364_31973414_ (    8) AAACTCTATAA  1 
+chr21_28217753_28217803_ (   27) GGGGTTTCACT  1 
+//
+
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 position-specific scoring matrix
+--------------------------------------------------------------------------------
+log-odds matrix: alength= 4 w= 11 n= 1200 bayes= 5.2854 E= 5.1e-040 
+   -14   -179    114   -112 
+     3  -1155    137   -270 
+  -114     20     86    -71 
+     3   -279    122   -170 
+ -1155  -1155   -295    215 
+   156   -179  -1155   -170 
+ -1155  -1155  -1155    220 
+   172   -279  -1155  -1155 
+   125  -1155  -1155     46 
+   167   -179  -1155  -1155 
+   144  -1155    -63   -270 
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 position-specific probability matrix
+--------------------------------------------------------------------------------
+letter-probability matrix: alength= 4 w= 11 nsites= 30 E= 5.1e-040 
+ 0.266667  0.066667  0.566667  0.100000 
+ 0.300000  0.000000  0.666667  0.033333 
+ 0.133333  0.266667  0.466667  0.133333 
+ 0.300000  0.033333  0.600000  0.066667 
+ 0.000000  0.000000  0.033333  0.966667 
+ 0.866667  0.066667  0.000000  0.066667 
+ 0.000000  0.000000  0.000000  1.000000 
+ 0.966667  0.033333  0.000000  0.000000 
+ 0.700000  0.000000  0.000000  0.300000 
+ 0.933333  0.066667  0.000000  0.000000 
+ 0.800000  0.000000  0.166667  0.033333 
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+	Motif GGSRTATAAAA MEME-1 regular expression
+--------------------------------------------------------------------------------
+[GA][GA][GC][GA]TATA[AT]AA
+--------------------------------------------------------------------------------
+
+
+
+
+Time  0.38 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_         5.63e-04  39_[+1(1.41e-05)]
+chr21_26934381_26934431_         1.57e-03  27_[+1(3.93e-05)]_12
+chr21_28217753_28217803_         1.00e-01  50
+chr21_31710037_31710087_         2.49e-03  14_[+1(6.24e-05)]_25
+chr21_31744582_31744632_         1.22e-03  12_[+1(3.04e-05)]_27
+chr21_31768316_31768366_         1.47e-03  [+1(3.67e-05)]_39
+chr21_31914206_31914256_         6.45e-04  15_[+1(1.61e-05)]_24
+chr21_31933633_31933683_         2.26e-03  4_[+1(5.65e-05)]_35
+chr21_31962741_31962791_         3.37e-02  50
+chr21_31964683_31964733_         1.95e-04  13_[+1(4.86e-06)]_26
+chr21_31973364_31973414_         5.73e-02  50
+chr21_31992870_31992920_         5.52e-04  16_[+1(1.38e-05)]_23
+chr21_32185595_32185645_         2.59e-04  18_[+1(6.48e-06)]_21
+chr21_32202076_32202126_         1.10e-04  13_[+1(2.74e-06)]_26
+chr21_32253899_32253949_         7.78e-04  17_[+1(1.95e-05)]_22
+chr21_32410820_32410870_         5.52e-04  21_[+1(1.38e-05)]_18
+chr21_36411748_36411798_         2.85e-03  22_[+1(7.15e-05)]_17
+chr21_37838750_37838800_         1.90e-02  50
+chr21_45705687_45705737_         8.63e-04  37_[+1(2.16e-05)]_2
+chr21_45971413_45971463_         1.95e-04  9_[+1(4.86e-06)]_30
+chr21_45978668_45978718_         2.59e-04  4_[+1(6.48e-06)]_35
+chr21_45993530_45993580_         1.95e-04  7_[+1(4.86e-06)]_32
+chr21_46020421_46020471_         7.78e-04  2_[+1(1.95e-05)]_37
+chr21_46031920_46031970_         8.89e-05  15_[+1(2.22e-06)]_24
+chr21_46046964_46047014_         1.80e-05  12_[+1(4.51e-07)]_27
+chr21_46057197_46057247_         1.95e-04  36_[+1(4.86e-06)]_3
+chr21_46086869_46086919_         5.54e-03  50
+chr21_46102103_46102153_         5.54e-03  50
+chr21_47517957_47518007_         2.59e-04  32_[+1(6.48e-06)]_7
+chr21_47575506_47575556_         1.22e-03  30_[+1(3.04e-05)]_9
+--------------------------------------------------------------------------------
+
+********************************************************************************
+
+
+********************************************************************************
+Stopped because requested number of motifs (1) found.
+********************************************************************************
+
+CPU: ThinkPad-T450s
+
+********************************************************************************
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_output_test2.xml	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,984 @@
+<?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 name CDATA #REQUIRED>
+<!ELEMENT ambigs (letter*)>
+<!ELEMENT letter EMPTY>
+<!ATTLIST letter id ID #REQUIRED>
+<!ATTLIST letter symbol CDATA #REQUIRED>
+<!ATTLIST letter equals CDATA #IMPLIED>
+<!ATTLIST letter aliases CDATA #IMPLIED>
+<!ATTLIST letter complement CDATA #IMPLIED>
+<!ATTLIST letter name CDATA #IMPLIED>
+<!ATTLIST letter colour CDATA #IMPLIED>
+<!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,
+  spfun,
+  min_width,
+  max_width,
+  wg,
+  ws,
+  endgaps,
+  minsites,
+  maxsites,
+  wnsites,
+  spmap,
+  spfuzz,
+  prior,
+  beta,
+  maxiter,
+  distance,
+  num_sequences,
+  num_positions,
+  seed,
+  hsfrac,
+  maxwords,
+  maxsize,
+  csites,
+  strands,
+  priors_file,
+  reason_for_stopping,
+  back_order,
+  background_frequencies
+)>
+<!ELEMENT command_line (#PCDATA)*>
+<!ELEMENT host (#PCDATA)*>
+<!ELEMENT type (#PCDATA)*>
+<!ELEMENT nmotifs (#PCDATA)*>
+<!ELEMENT evalue_threshold (#PCDATA)*>
+<!ELEMENT object_function (#PCDATA)*>
+<!ELEMENT spfun (#PCDATA)*>
+<!ELEMENT min_width (#PCDATA)*>
+<!ELEMENT max_width (#PCDATA)*>
+<!ELEMENT wg (#PCDATA)*>
+<!ELEMENT ws (#PCDATA)*>
+<!ELEMENT endgaps (#PCDATA)*>
+<!ELEMENT minsites (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT wnsites (#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 hsfrac (#PCDATA)*>
+<!ELEMENT maxwords (#PCDATA)*>
+<!ELEMENT maxsites (#PCDATA)*>
+<!ELEMENT csites (#PCDATA)*>
+<!ELEMENT strands (#PCDATA)*>
+<!ELEMENT priors_file (#PCDATA)*>
+<!ELEMENT reason_for_stopping (#PCDATA)*>
+<!ELEMENT back_order (#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
+                alt CDATA ""
+                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.12.0" release="Tue Jun 27 16:22:50 2017 -0700">
+<training_set datafile="Galaxy_FASTA_Input" length="30">
+<alphabet name="DNA" like="dna">
+<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
+<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
+<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
+<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
+<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
+<letter id="V" symbol="V" equals="ACG" name="Not T"/>
+<letter id="H" symbol="H" equals="ACT" name="Not G"/>
+<letter id="D" symbol="D" equals="AGT" name="Not C"/>
+<letter id="B" symbol="B" equals="CGT" name="Not A"/>
+<letter id="M" symbol="M" equals="AC" name="Amino"/>
+<letter id="R" symbol="R" equals="AG" name="Purine"/>
+<letter id="W" symbol="W" equals="AT" name="Weak"/>
+<letter id="S" symbol="S" equals="CG" name="Strong"/>
+<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
+<letter id="K" symbol="K" equals="GT" name="Keto"/>
+</alphabet>
+<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="A">0.294</value>
+<value letter_id="C">0.231</value>
+<value letter_id="G">0.257</value>
+<value letter_id="T">0.217</value>
+</alphabet_array>
+</letter_frequencies>
+</training_set>
+<model>
+<command_line>meme meme_input_1.fasta -o meme_test2_out -nostatus -maxsize 1000000 -sf Galaxy_FASTA_Input -dna -mod zoops -nmotifs 1 -wnsites 0.8 -minw 8 -maxw 50 -wg 11 -ws 1 -maxiter 50 -distance 0.001 -prior dirichlet -b 0.01 -plib prior30.plib -spmap uni -spfuzz 0.5 </command_line>
+<host>ThinkPad-T450s</host>
+<type>zoops</type>
+<nmotifs>1</nmotifs>
+<evalue_threshold>inf</evalue_threshold>
+<object_function>E-value of product of p-values</object_function>
+<use_llr>0</use_llr>
+<min_width>8</min_width>
+<max_width>50</max_width>
+<wg>11</wg>
+<ws>1</ws>
+<endgaps>yes</endgaps>
+<substring>yes</substring>
+<minsites>2</minsites>
+<maxsites>30</maxsites>
+<wnsites>0.8</wnsites>
+<spmap>uni</spmap>
+<spfuzz>0.5</spfuzz>
+<prior>dirichlet</prior>
+<beta>0.01</beta>
+<maxiter>50</maxiter>
+<distance>0.001</distance>
+<num_sequences>30</num_sequences>
+<num_positions>1500</num_positions>
+<seed>0</seed>
+<ctfrac>-1</ctfrac>
+<maxwords>-1</maxwords>
+<strands>forward</strands>
+<priors_file>prior30.plib</priors_file>
+<reason_for_stopping>Stopped because requested number of motifs (1) found.</reason_for_stopping>
+<background_frequencies source="dataset with add-one prior applied">
+<alphabet_array>
+<value letter_id="A">0.294</value>
+<value letter_id="C">0.231</value>
+<value letter_id="G">0.257</value>
+<value letter_id="T">0.217</value>
+</alphabet_array>
+</background_frequencies>
+</model>
+<motifs>
+<motif id="motif_1" name="GGSRTATAAAA" alt="MEME-1" width="11" sites="30" ic="13.0" re="12.2" llr="254" e_value="5.1e-040" bayes_threshold="5.2854" elapsed_time="0.376000">
+<scores>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">-14</value>
+<value letter_id="C">-179</value>
+<value letter_id="G">114</value>
+<value letter_id="T">-112</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">3</value>
+<value letter_id="C">-1155</value>
+<value letter_id="G">137</value>
+<value letter_id="T">-270</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-114</value>
+<value letter_id="C">20</value>
+<value letter_id="G">86</value>
+<value letter_id="T">-71</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">3</value>
+<value letter_id="C">-279</value>
+<value letter_id="G">122</value>
+<value letter_id="T">-170</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-1155</value>
+<value letter_id="C">-1155</value>
+<value letter_id="G">-295</value>
+<value letter_id="T">215</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">156</value>
+<value letter_id="C">-179</value>
+<value letter_id="G">-1155</value>
+<value letter_id="T">-170</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">-1155</value>
+<value letter_id="C">-1155</value>
+<value letter_id="G">-1155</value>
+<value letter_id="T">220</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">172</value>
+<value letter_id="C">-279</value>
+<value letter_id="G">-1155</value>
+<value letter_id="T">-1155</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">125</value>
+<value letter_id="C">-1155</value>
+<value letter_id="G">-1155</value>
+<value letter_id="T">46</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">167</value>
+<value letter_id="C">-179</value>
+<value letter_id="G">-1155</value>
+<value letter_id="T">-1155</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">144</value>
+<value letter_id="C">-1155</value>
+<value letter_id="G">-63</value>
+<value letter_id="T">-270</value>
+</alphabet_array>
+</alphabet_matrix>
+</scores>
+<probabilities>
+<alphabet_matrix>
+<alphabet_array>
+<value letter_id="A">0.266667</value>
+<value letter_id="C">0.066667</value>
+<value letter_id="G">0.566667</value>
+<value letter_id="T">0.100000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.300000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.666667</value>
+<value letter_id="T">0.033333</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.133333</value>
+<value letter_id="C">0.266667</value>
+<value letter_id="G">0.466667</value>
+<value letter_id="T">0.133333</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.300000</value>
+<value letter_id="C">0.033333</value>
+<value letter_id="G">0.600000</value>
+<value letter_id="T">0.066667</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.033333</value>
+<value letter_id="T">0.966667</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.866667</value>
+<value letter_id="C">0.066667</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.066667</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.000000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">1.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.966667</value>
+<value letter_id="C">0.033333</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.700000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.300000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.933333</value>
+<value letter_id="C">0.066667</value>
+<value letter_id="G">0.000000</value>
+<value letter_id="T">0.000000</value>
+</alphabet_array>
+<alphabet_array>
+<value letter_id="A">0.800000</value>
+<value letter_id="C">0.000000</value>
+<value letter_id="G">0.166667</value>
+<value letter_id="T">0.033333</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="plus" pvalue="4.51e-07" >
+<left_flank>AAGGCCAGGA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCCTGAGAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_23" position="15" strand="plus" pvalue="2.22e-06" >
+<left_flank>ATACCCAGGG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CCTCAGCAGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_13" position="13" strand="plus" pvalue="2.74e-06" >
+<left_flank>CCACCAGCTT</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGCCCTGTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_25" position="36" strand="plus" pvalue="4.86e-06" >
+<left_flank>ACAGGCCCTG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_21" position="7" strand="plus" pvalue="4.86e-06" >
+<left_flank>CCAAGGA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCCCCACAAA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_19" position="9" strand="plus" pvalue="4.86e-06" >
+<left_flank>CAGGCCCTG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCCCCAGCAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_9" position="13" strand="plus" pvalue="4.86e-06" >
+<left_flank>GATTCACTGA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GGCCCTCTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_28" position="32" strand="plus" pvalue="6.48e-06" >
+<left_flank>CCGGCGGGGC</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+</site>
+<right_flank>GGGGCGG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_20" position="4" strand="plus" pvalue="6.48e-06" >
+<left_flank>CAGA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+</site>
+<right_flank>GTTCCGACCA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_12" position="18" strand="plus" pvalue="6.48e-06" >
+<left_flank>CACCAGAGCT</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AGAAGGTTCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_15" position="21" strand="plus" pvalue="1.38e-05" >
+<left_flank>AATCACTGAG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GTCCCAGGGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_11" position="16" strand="plus" pvalue="1.38e-05" >
+<left_flank>CACTATTGAA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TTTCATTTGC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_0" position="39" strand="plus" pvalue="1.41e-05" >
+<left_flank>CCTCGGGACG</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank></right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_6" position="15" strand="plus" pvalue="1.61e-05" >
+<left_flank>CCCACTACTT</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCATTCTGAG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_22" position="2" strand="plus" pvalue="1.95e-05" >
+<left_flank>GA</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GCCAACATCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_14" position="17" strand="plus" pvalue="1.95e-05" >
+<left_flank>CCCACCAGCA</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>AAGCTCAGGA</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_18" position="37" strand="plus" pvalue="2.16e-05" >
+<left_flank>CGTGGTCGCG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_29" position="30" strand="plus" pvalue="3.04e-05" >
+<left_flank>GCTGCCGGTG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+</site>
+<right_flank>GCCCTGGCG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_4" position="12" strand="plus" pvalue="3.04e-05" >
+<left_flank>CAGGTCTAAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>CTTGGAGTCC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_5" position="0" strand="plus" pvalue="3.67e-05" >
+<left_flank></left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGGTCCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_1" position="27" strand="plus" pvalue="3.93e-05" >
+<left_flank>AGTCACAAGT</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>GGGTCGCACG</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_7" position="4" strand="plus" pvalue="5.65e-05" >
+<left_flank>TCAG</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ATGTTCCTGT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_3" position="14" strand="plus" pvalue="6.24e-05" >
+<left_flank>CCCAGGTTTC</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TCGCCGCACC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_16" position="22" strand="plus" pvalue="7.15e-05" >
+<left_flank>AGTTTCAGTT</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>attatataac</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_27" position="36" strand="plus" pvalue="1.39e-04" >
+<left_flank>TGCCTGGGTC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+</site>
+<right_flank>GCT</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_26" position="37" strand="plus" pvalue="1.39e-04" >
+<left_flank>TGCCTGGGCC</left_flank>
+<site>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="G"/>
+</site>
+<right_flank>GC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_17" position="2" strand="plus" pvalue="4.81e-04" >
+<left_flank>ga</left_flank>
+<site>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>ggggcctcac</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_8" position="13" strand="plus" pvalue="8.57e-04" >
+<left_flank>TATAACTCAG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>TAATTTGTAC</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_10" position="7" strand="plus" pvalue="1.47e-03" >
+<left_flank>aaactta</left_flank>
+<site>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="A"/>
+</site>
+<right_flank>acttaaaact</right_flank>
+</contributing_site>
+<contributing_site sequence_id="sequence_2" position="26" strand="plus" pvalue="2.64e-03" >
+<left_flank>GGTGGGGGTG</left_flank>
+<site>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="G"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="T"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="A"/>
+<letter_ref letter_id="C"/>
+<letter_ref letter_id="T"/>
+</site>
+<right_flank>GGTCCACTAT</right_flank>
+</contributing_site>
+</contributing_sites>
+</motif>
+</motifs>
+<scanned_sites_summary p_thresh="0.0001">
+<scanned_sites sequence_id="sequence_0" pvalue="5.63e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="39" pvalue="1.41e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_1" pvalue="1.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="27" pvalue="3.93e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_2" pvalue="1.00e-01" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_3" pvalue="2.49e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="6.24e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_4" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="12" pvalue="3.04e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_5" pvalue="1.47e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="0" pvalue="3.67e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_6" pvalue="6.45e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="1.61e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_7" pvalue="2.26e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="5.65e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_8" pvalue="3.37e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_9" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="4.86e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_10" pvalue="5.73e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_11" pvalue="5.52e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="16" pvalue="1.38e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_12" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="6.48e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_13" pvalue="1.10e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="2.74e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_14" pvalue="7.78e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="17" pvalue="1.95e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_15" pvalue="5.52e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="21" pvalue="1.38e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_16" pvalue="2.85e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="22" pvalue="7.15e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_17" pvalue="1.90e-02" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_18" pvalue="8.63e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="37" pvalue="2.16e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_19" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="9" pvalue="4.86e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_20" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="6.48e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_21" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="7" pvalue="4.86e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_22" pvalue="7.78e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="2" pvalue="1.95e-05"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_23" pvalue="8.89e-05" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="2.22e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_24" pvalue="1.80e-05" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="12" pvalue="4.51e-07"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_25" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="36" pvalue="4.86e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_26" pvalue="5.54e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_27" pvalue="5.54e-03" num_sites="0"></scanned_sites>
+<scanned_sites sequence_id="sequence_28" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="32" pvalue="6.48e-06"/>
+</scanned_sites>
+<scanned_sites sequence_id="sequence_29" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="30" pvalue="3.04e-05"/>
+</scanned_sites>
+</scanned_sites_summary>
+</MEME>
--- a/test-data/meme_output_txt_1.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-********************************************************************************
-MEME - Motif discovery tool
-********************************************************************************
-MEME version 4.11.2 (Release date: Thu May 05 14:58:55 2016 -0700)
-
-For further information on how to interpret these results or to get
-a copy of the MEME software please access http://meme-suite.org .
-
-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-suite.org .
-********************************************************************************
-
-
-********************************************************************************
-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= /tmp/tmpCNK6l0/files/000/dataset_22.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 /tmp/tmpCNK6l0/files/000/dataset_22.dat -o /tmp/tmpCNK6l0/job_working_directory/000/11/dataset_23_files -nostatus -maxsize 1000000 
-
-model:  mod=         zoops    nmotifs=         1    evt=           inf
-object function=  E-value of product of p-values
-width:  minw=            8    maxw=           50
-width:  wg=             11    ws=              1    endgaps=       yes
-nsites: minsites=        2    maxsites=       30    wnsites=       0.8
-theta:  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    shuffle=        -1
-
-sample: seed=            0    ctfrac=         -1    maxwords=       -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 MEME	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  0.72 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 requested number of motifs (1) found.
-********************************************************************************
-
-CPU: bigsky
-
-********************************************************************************
--- a/test-data/meme_output_txt_2.txt	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-********************************************************************************
-MEME - Motif discovery tool
-********************************************************************************
-MEME version 4.11.2 (Release date: Thu May 05 14:58:55 2016 -0700)
-
-For further information on how to interpret these results or to get
-a copy of the MEME software please access http://meme-suite.org .
-
-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-suite.org .
-********************************************************************************
-
-
-********************************************************************************
-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= Galaxy_FASTA_Input
-ALPHABET= ACGT
-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 /tmp/tmpCNK6l0/files/000/dataset_26.dat -o /tmp/tmpCNK6l0/job_working_directory/000/14/dataset_28_files -nostatus -maxsize 1000000 -sf Galaxy_FASTA_Input -dna -mod zoops -nmotifs 1 -wnsites 0.8 -evt inf -minw 8 -maxw 50 -wg 11 -ws 1 -maxiter 50 -distance 0.001 -prior dirichlet -b 0.01 -plib /tmp/tmpCNK6l0/files/000/dataset_27.dat -spmap uni -spfuzz 0.5 
-
-model:  mod=         zoops    nmotifs=         1    evt=           inf
-object function=  E-value of product of p-values
-width:  minw=            8    maxw=           50
-width:  wg=             11    ws=              1    endgaps=       yes
-nsites: minsites=        2    maxsites=       30    wnsites=       0.8
-theta:  spmap=         uni    spfuzz=        0.5
-global: substring=     yes    branching=      no    wbranch=        no
-em:     prior=   dirichlet    b=            0.01    maxiter=        50
-        distance=    0.001
-data:   n=            1500    N=              30    shuffle=        -1
-strands: +
-sample: seed=            0    ctfrac=         -1    maxwords=       -1
-Dirichlet mixture priors file: dataset_27.dat
-Letter frequencies in dataset:
-A 0.294 C 0.231 G 0.257 T 0.217 
-Background letter frequencies (from dataset with add-one prior applied):
-A 0.294 C 0.231 G 0.257 T 0.217 
-********************************************************************************
-
-
-********************************************************************************
-MOTIF  1 MEME	width =  11  sites =  30  llr = 254  E-value = 5.1e-040
-********************************************************************************
---------------------------------------------------------------------------------
-	Motif 1 Description
---------------------------------------------------------------------------------
-Simplified        A  3313:9:a798
-pos.-specific     C  1:3::1:::1:
-probability       G  6756::::::2
-matrix            T  1:11a1a:3::
-
-         bits    2.2       *    
-                 2.0     * *    
-                 1.8     * *    
-                 1.5     * ** * 
-Relative         1.3     * ** * 
-Entropy          1.1     ****** 
-(12.2 bits)      0.9  *  *******
-                 0.7  *  *******
-                 0.4 ** ********
-                 0.2 ***********
-                 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  4.51e-07 AAGGCCAGGA GGGGTATAAAA GCCTGAGAGC
-chr21_46031920_46031970_     16  2.22e-06 ATACCCAGGG AGGGTATAAAA CCTCAGCAGC
-chr21_32202076_32202126_     14  2.74e-06 CCACCAGCTT GAGGTATAAAA AGCCCTGTAC
-chr21_46057197_46057247_     37  4.86e-06 ACAGGCCCTG GGCATATAAAA GCC       
-chr21_45993530_45993580_      8  4.86e-06    CCAAGGA GGAGTATAAAA GCCCCACAAA
-chr21_45971413_45971463_     10  4.86e-06  CAGGCCCTG GGCATATAAAA GCCCCAGCAG
-chr21_31964683_31964733_     14  4.86e-06 GATTCACTGA GGCATATAAAA GGCCCTCTGC
-chr21_47517957_47518007_     33  6.48e-06 CCGGCGGGGC GGGGTATAAAG GGGGCGG   
-chr21_45978668_45978718_      5  6.48e-06       CAGA GGGGTATAAAG GTTCCGACCA
-chr21_32185595_32185645_     19  6.48e-06 CACCAGAGCT GGGATATATAA AGAAGGTTCT
-chr21_32410820_32410870_     22  1.38e-05 AATCACTGAG GATGTATAAAA GTCCCAGGGA
-chr21_31992870_31992920_     17  1.38e-05 CACTATTGAA GATGTATAAAA TTTCATTTGC
-chr21_19617074_19617124_     40  1.41e-05 CCTCGGGACG TGGGTATATAA           
-chr21_31914206_31914256_     16  1.61e-05 CCCACTACTT AGAGTATAAAA TCATTCTGAG
-chr21_46020421_46020471_      3  1.95e-05         GA GACATATAAAA GCCAACATCC
-chr21_32253899_32253949_     18  1.95e-05 CCCACCAGCA AGGATATATAA AAGCTCAGGA
-chr21_45705687_45705737_     38  2.16e-05 CGTGGTCGCG GGGGTATAACA GC        
-chr21_47575506_47575556_     31  3.04e-05 GCTGCCGGTG AGCGTATAAAG GCCCTGGCG 
-chr21_31744582_31744632_     13  3.04e-05 CAGGTCTAAG AGCATATATAA CTTGGAGTCC
-chr21_31768316_31768366_      1  3.67e-05          . AACGTATATAA ATGGTCCTGT
-chr21_26934381_26934431_     28  3.93e-05 AGTCACAAGT GAGTTATAAAA GGGTCGCACG
-chr21_31933633_31933683_      5  5.65e-05       TCAG AGTATATATAA ATGTTCCTGT
-chr21_31710037_31710087_     15  6.24e-05 CCCAGGTTTC TGAGTATATAA TCGCCGCACC
-chr21_36411748_36411798_     23  7.15e-05 AGTTTCAGTT GGCATCtaaaa attatataac
-chr21_46102103_46102153_     37  1.39e-04 TGCCTGGGTC CAGGTATAAAG GCT       
-chr21_46086869_46086919_     38  1.39e-04 TGCCTGGGCC CAGGTATAAAG GC        
-chr21_37838750_37838800_      3  4.81e-04         ga tggttttataa ggggcctcac
-chr21_31962741_31962791_     14  8.57e-04 TATAACTCAG GTTGGATAAAA TAATTTGTAC
-chr21_31973364_31973414_      8  1.47e-03    aaactta aaactctataa acttaaaact
-chr21_28217753_28217803_     27  2.64e-03 GGTGGGGGTG GGGGTTTCACT GGTCCACTAT
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
-	Motif 1 block diagrams
---------------------------------------------------------------------------------
-SEQUENCE NAME            POSITION P-VALUE  MOTIF DIAGRAM
--------------            ----------------  -------------
-chr21_46046964_46047014_          4.5e-07  12_[+1]_27
-chr21_46031920_46031970_          2.2e-06  15_[+1]_24
-chr21_32202076_32202126_          2.7e-06  13_[+1]_26
-chr21_46057197_46057247_          4.9e-06  36_[+1]_3
-chr21_45993530_45993580_          4.9e-06  7_[+1]_32
-chr21_45971413_45971463_          4.9e-06  9_[+1]_30
-chr21_31964683_31964733_          4.9e-06  13_[+1]_26
-chr21_47517957_47518007_          6.5e-06  32_[+1]_7
-chr21_45978668_45978718_          6.5e-06  4_[+1]_35
-chr21_32185595_32185645_          6.5e-06  18_[+1]_21
-chr21_32410820_32410870_          1.4e-05  21_[+1]_18
-chr21_31992870_31992920_          1.4e-05  16_[+1]_23
-chr21_19617074_19617124_          1.4e-05  39_[+1]
-chr21_31914206_31914256_          1.6e-05  15_[+1]_24
-chr21_46020421_46020471_          1.9e-05  2_[+1]_37
-chr21_32253899_32253949_          1.9e-05  17_[+1]_22
-chr21_45705687_45705737_          2.2e-05  37_[+1]_2
-chr21_47575506_47575556_            3e-05  30_[+1]_9
-chr21_31744582_31744632_            3e-05  12_[+1]_27
-chr21_31768316_31768366_          3.7e-05  [+1]_39
-chr21_26934381_26934431_          3.9e-05  27_[+1]_12
-chr21_31933633_31933683_          5.6e-05  4_[+1]_35
-chr21_31710037_31710087_          6.2e-05  14_[+1]_25
-chr21_36411748_36411798_          7.1e-05  22_[+1]_17
-chr21_46102103_46102153_          0.00014  36_[+1]_3
-chr21_46086869_46086919_          0.00014  37_[+1]_2
-chr21_37838750_37838800_          0.00048  2_[+1]_37
-chr21_31962741_31962791_          0.00086  13_[+1]_26
-chr21_31973364_31973414_           0.0015  7_[+1]_32
-chr21_28217753_28217803_           0.0026  26_[+1]_13
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
-	Motif 1 in BLOCKS format
---------------------------------------------------------------------------------
-BL   MOTIF 1 width=11 seqs=30
-chr21_46046964_46047014_ (   13) GGGGTATAAAA  1 
-chr21_46031920_46031970_ (   16) AGGGTATAAAA  1 
-chr21_32202076_32202126_ (   14) GAGGTATAAAA  1 
-chr21_46057197_46057247_ (   37) GGCATATAAAA  1 
-chr21_45993530_45993580_ (    8) GGAGTATAAAA  1 
-chr21_45971413_45971463_ (   10) GGCATATAAAA  1 
-chr21_31964683_31964733_ (   14) GGCATATAAAA  1 
-chr21_47517957_47518007_ (   33) GGGGTATAAAG  1 
-chr21_45978668_45978718_ (    5) GGGGTATAAAG  1 
-chr21_32185595_32185645_ (   19) GGGATATATAA  1 
-chr21_32410820_32410870_ (   22) GATGTATAAAA  1 
-chr21_31992870_31992920_ (   17) GATGTATAAAA  1 
-chr21_19617074_19617124_ (   40) TGGGTATATAA  1 
-chr21_31914206_31914256_ (   16) AGAGTATAAAA  1 
-chr21_46020421_46020471_ (    3) GACATATAAAA  1 
-chr21_32253899_32253949_ (   18) AGGATATATAA  1 
-chr21_45705687_45705737_ (   38) GGGGTATAACA  1 
-chr21_47575506_47575556_ (   31) AGCGTATAAAG  1 
-chr21_31744582_31744632_ (   13) AGCATATATAA  1 
-chr21_31768316_31768366_ (    1) AACGTATATAA  1 
-chr21_26934381_26934431_ (   28) GAGTTATAAAA  1 
-chr21_31933633_31933683_ (    5) AGTATATATAA  1 
-chr21_31710037_31710087_ (   15) TGAGTATATAA  1 
-chr21_36411748_36411798_ (   23) GGCATCTAAAA  1 
-chr21_46102103_46102153_ (   37) CAGGTATAAAG  1 
-chr21_46086869_46086919_ (   38) CAGGTATAAAG  1 
-chr21_37838750_37838800_ (    3) TGGTTTTATAA  1 
-chr21_31962741_31962791_ (   14) GTTGGATAAAA  1 
-chr21_31973364_31973414_ (    8) AAACTCTATAA  1 
-chr21_28217753_28217803_ (   27) GGGGTTTCACT  1 
-//
-
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
-	Motif 1 position-specific scoring matrix
---------------------------------------------------------------------------------
-log-odds matrix: alength= 4 w= 11 n= 1200 bayes= 5.2854 E= 5.1e-040 
-   -14   -179    114   -112 
-     3  -1155    137   -270 
-  -114     20     86    -71 
-     3   -279    122   -170 
- -1155  -1155   -295    215 
-   156   -179  -1155   -170 
- -1155  -1155  -1155    220 
-   172   -279  -1155  -1155 
-   125  -1155  -1155     46 
-   167   -179  -1155  -1155 
-   144  -1155    -63   -270 
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
-	Motif 1 position-specific probability matrix
---------------------------------------------------------------------------------
-letter-probability matrix: alength= 4 w= 11 nsites= 30 E= 5.1e-040 
- 0.266667  0.066667  0.566667  0.100000 
- 0.300000  0.000000  0.666667  0.033333 
- 0.133333  0.266667  0.466667  0.133333 
- 0.300000  0.033333  0.600000  0.066667 
- 0.000000  0.000000  0.033333  0.966667 
- 0.866667  0.066667  0.000000  0.066667 
- 0.000000  0.000000  0.000000  1.000000 
- 0.966667  0.033333  0.000000  0.000000 
- 0.700000  0.000000  0.000000  0.300000 
- 0.933333  0.066667  0.000000  0.000000 
- 0.800000  0.000000  0.166667  0.033333 
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
-	Motif 1 regular expression
---------------------------------------------------------------------------------
-[GA][GA][GC][GA]TATA[AT]AA
---------------------------------------------------------------------------------
-
-
-
-
-Time  0.32 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_         5.63e-04  39_[+1(1.41e-05)]
-chr21_26934381_26934431_         1.57e-03  27_[+1(3.93e-05)]_12
-chr21_28217753_28217803_         1.00e-01  50
-chr21_31710037_31710087_         2.49e-03  14_[+1(6.24e-05)]_25
-chr21_31744582_31744632_         1.22e-03  12_[+1(3.04e-05)]_27
-chr21_31768316_31768366_         1.47e-03  [+1(3.67e-05)]_39
-chr21_31914206_31914256_         6.45e-04  15_[+1(1.61e-05)]_24
-chr21_31933633_31933683_         2.26e-03  4_[+1(5.65e-05)]_35
-chr21_31962741_31962791_         3.37e-02  50
-chr21_31964683_31964733_         1.95e-04  13_[+1(4.86e-06)]_26
-chr21_31973364_31973414_         5.73e-02  50
-chr21_31992870_31992920_         5.52e-04  16_[+1(1.38e-05)]_23
-chr21_32185595_32185645_         2.59e-04  18_[+1(6.48e-06)]_21
-chr21_32202076_32202126_         1.10e-04  13_[+1(2.74e-06)]_26
-chr21_32253899_32253949_         7.78e-04  17_[+1(1.95e-05)]_22
-chr21_32410820_32410870_         5.52e-04  21_[+1(1.38e-05)]_18
-chr21_36411748_36411798_         2.85e-03  22_[+1(7.15e-05)]_17
-chr21_37838750_37838800_         1.90e-02  50
-chr21_45705687_45705737_         8.63e-04  37_[+1(2.16e-05)]_2
-chr21_45971413_45971463_         1.95e-04  9_[+1(4.86e-06)]_30
-chr21_45978668_45978718_         2.59e-04  4_[+1(6.48e-06)]_35
-chr21_45993530_45993580_         1.95e-04  7_[+1(4.86e-06)]_32
-chr21_46020421_46020471_         7.78e-04  2_[+1(1.95e-05)]_37
-chr21_46031920_46031970_         8.89e-05  15_[+1(2.22e-06)]_24
-chr21_46046964_46047014_         1.80e-05  12_[+1(4.51e-07)]_27
-chr21_46057197_46057247_         1.95e-04  36_[+1(4.86e-06)]_3
-chr21_46086869_46086919_         5.54e-03  50
-chr21_46102103_46102153_         5.54e-03  50
-chr21_47517957_47518007_         2.59e-04  32_[+1(6.48e-06)]_7
-chr21_47575506_47575556_         1.22e-03  30_[+1(3.04e-05)]_9
---------------------------------------------------------------------------------
-
-********************************************************************************
-
-
-********************************************************************************
-Stopped because requested number of motifs (1) found.
-********************************************************************************
-
-CPU: bigsky
-
-********************************************************************************
--- a/test-data/meme_output_xml_1.xml	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1285 +0,0 @@
-<?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 name CDATA #REQUIRED>
-<!ELEMENT ambigs (letter*)>
-<!ELEMENT letter EMPTY>
-<!ATTLIST letter id ID #REQUIRED>
-<!ATTLIST letter symbol CDATA #REQUIRED>
-<!ATTLIST letter equals CDATA #IMPLIED>
-<!ATTLIST letter aliases CDATA #IMPLIED>
-<!ATTLIST letter complement CDATA #IMPLIED>
-<!ATTLIST letter name CDATA #IMPLIED>
-<!ATTLIST letter colour CDATA #IMPLIED>
-<!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.11.2" release="Thu May 05 14:58:55 2016 -0700">
-<training_set datafile="/Users/gvk/work/git_workspace/galaxy/database/files/002/dataset_2490.dat" length="30">
-<alphabet name="Protein" like="protein">
-<letter id="A" symbol="A" name="Alanine" colour="0000CC"/>
-<letter id="C" symbol="C" name="Cysteine" colour="0000CC"/>
-<letter id="D" symbol="D" name="Aspartic acid" colour="FF00FF"/>
-<letter id="E" symbol="E" name="Glutamic acid" colour="FF00FF"/>
-<letter id="F" symbol="F" name="Phenylalanine" colour="0000CC"/>
-<letter id="G" symbol="G" name="Glycine" colour="FFB300"/>
-<letter id="H" symbol="H" name="Histidine" colour="FFCCCC"/>
-<letter id="I" symbol="I" name="Isoleucine" colour="0000CC"/>
-<letter id="K" symbol="K" name="Lysine" colour="CC0000"/>
-<letter id="L" symbol="L" name="Leucine" colour="0000CC"/>
-<letter id="M" symbol="M" name="Methionine" colour="0000CC"/>
-<letter id="N" symbol="N" name="Asparagine" colour="008000"/>
-<letter id="P" symbol="P" name="Proline" colour="FFFF00"/>
-<letter id="Q" symbol="Q" name="Glutamine" colour="008000"/>
-<letter id="R" symbol="R" name="Arginine" colour="CC0000"/>
-<letter id="S" symbol="S" name="Serine" colour="008000"/>
-<letter id="T" symbol="T" name="Threonine" colour="008000"/>
-<letter id="V" symbol="V" name="Valine" colour="0000CC"/>
-<letter id="W" symbol="W" name="Tryptophan" colour="0000CC"/>
-<letter id="Y" symbol="Y" name="Tyrosine" colour="33E6CC"/>
-<letter id="X" symbol="X" aliases="*." equals="ACDEFGHIKLMNPQRSTVWY" name="Any amino acid"/>
-<letter id="B" symbol="B" equals="DN" name="Asparagine or Aspartic acid"/>
-<letter id="Z" symbol="Z" equals="EQ" name="Glutamine or Glutamic acid"/>
-<letter id="J" symbol="J" equals="IL" name="Leucine or Isoleucine"/>
-</alphabet>
-<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="A">0.294</value>
-<value letter_id="C">0.231</value>
-<value letter_id="D">0.000</value>
-<value letter_id="E">0.000</value>
-<value letter_id="F">0.000</value>
-<value letter_id="G">0.257</value>
-<value letter_id="H">0.000</value>
-<value letter_id="I">0.000</value>
-<value letter_id="K">0.000</value>
-<value letter_id="L">0.000</value>
-<value letter_id="M">0.000</value>
-<value letter_id="N">0.000</value>
-<value letter_id="P">0.000</value>
-<value letter_id="Q">0.000</value>
-<value letter_id="R">0.000</value>
-<value letter_id="S">0.000</value>
-<value letter_id="T">0.217</value>
-<value letter_id="V">0.000</value>
-<value letter_id="W">0.000</value>
-<value letter_id="Y">0.000</value>
-</alphabet_array>
-</letter_frequencies>
-</training_set>
-<model>
-<command_line>meme /Users/gvk/work/git_workspace/galaxy/database/files/002/dataset_2490.dat -o /Users/gvk/work/git_workspace/galaxy/database/job_working_directory/001/1912/dataset_2530_files -nostatus </command_line>
-<host>MacBook-Pro-2.local</host>
-<type>zoops</type>
-<nmotifs>1</nmotifs>
-<evalue_threshold>inf</evalue_threshold>
-<object_function>E-value of product of p-values</object_function>
-<use_llr>0</use_llr>
-<min_width>8</min_width>
-<max_width>50</max_width>
-<wg>11</wg>
-<ws>1</ws>
-<endgaps>yes</endgaps>
-<substring>yes</substring>
-<minsites>2</minsites>
-<maxsites>30</maxsites>
-<wnsites>0.8</wnsites>
-<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>
-<ctfrac>-1</ctfrac>
-<maxwords>-1</maxwords>
-<strands>none</strands>
-<priors_file>prior30.plib</priors_file>
-<reason_for_stopping>Stopped because requested number of motifs (1) found.</reason_for_stopping>
-<background_frequencies source="dataset with add-one prior applied">
-<alphabet_array>
-<value letter_id="A">0.291</value>
-<value letter_id="C">0.229</value>
-<value letter_id="D">0.001</value>
-<value letter_id="E">0.001</value>
-<value letter_id="F">0.001</value>
-<value letter_id="G">0.255</value>
-<value letter_id="H">0.001</value>
-<value letter_id="I">0.001</value>
-<value letter_id="K">0.001</value>
-<value letter_id="L">0.001</value>
-<value letter_id="M">0.001</value>
-<value letter_id="N">0.001</value>
-<value letter_id="P">0.001</value>
-<value letter_id="Q">0.001</value>
-<value letter_id="R">0.001</value>
-<value letter_id="S">0.001</value>
-<value letter_id="T">0.215</value>
-<value letter_id="V">0.001</value>
-<value letter_id="W">0.001</value>
-<value letter_id="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="0.533107">
-<scores>
-<alphabet_matrix>
-<alphabet_array>
-<value letter_id="A">-32</value>
-<value letter_id="C">-680</value>
-<value letter_id="D">91</value>
-<value letter_id="E">77</value>
-<value letter_id="F">7</value>
-<value letter_id="G">138</value>
-<value letter_id="H">-20</value>
-<value letter_id="I">55</value>
-<value letter_id="K">64</value>
-<value letter_id="L">107</value>
-<value letter_id="M">11</value>
-<value letter_id="N">150</value>
-<value letter_id="P">142</value>
-<value letter_id="Q">72</value>
-<value letter_id="R">87</value>
-<value letter_id="S">396</value>
-<value letter_id="T">-148</value>
-<value letter_id="V">221</value>
-<value letter_id="W">-140</value>
-<value letter_id="Y">-36</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-11</value>
-<value letter_id="C">-680</value>
-<value letter_id="D">89</value>
-<value letter_id="E">76</value>
-<value letter_id="F">7</value>
-<value letter_id="G">137</value>
-<value letter_id="H">-21</value>
-<value letter_id="I">55</value>
-<value letter_id="K">63</value>
-<value letter_id="L">107</value>
-<value letter_id="M">10</value>
-<value letter_id="N">149</value>
-<value letter_id="P">141</value>
-<value letter_id="Q">71</value>
-<value letter_id="R">87</value>
-<value letter_id="S">396</value>
-<value letter_id="T">-239</value>
-<value letter_id="V">220</value>
-<value letter_id="W">-140</value>
-<value letter_id="Y">-36</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-79</value>
-<value letter_id="C">41</value>
-<value letter_id="D">4</value>
-<value letter_id="E">21</value>
-<value letter_id="F">-7</value>
-<value letter_id="G">44</value>
-<value letter_id="H">-62</value>
-<value letter_id="I">42</value>
-<value letter_id="K">-5</value>
-<value letter_id="L">99</value>
-<value letter_id="M">0</value>
-<value letter_id="N">99</value>
-<value letter_id="P">138</value>
-<value letter_id="Q">52</value>
-<value letter_id="R">42</value>
-<value letter_id="S">399</value>
-<value letter_id="T">-46</value>
-<value letter_id="V">223</value>
-<value letter_id="W">-173</value>
-<value letter_id="Y">-68</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">11</value>
-<value letter_id="C">-677</value>
-<value letter_id="D">48</value>
-<value letter_id="E">47</value>
-<value letter_id="F">-2</value>
-<value letter_id="G">127</value>
-<value letter_id="H">-43</value>
-<value letter_id="I">46</value>
-<value letter_id="K">27</value>
-<value letter_id="L">101</value>
-<value letter_id="M">3</value>
-<value letter_id="N">124</value>
-<value letter_id="P">138</value>
-<value letter_id="Q">60</value>
-<value letter_id="R">62</value>
-<value letter_id="S">397</value>
-<value letter_id="T">-235</value>
-<value letter_id="V">220</value>
-<value letter_id="W">-160</value>
-<value letter_id="Y">-55</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-596</value>
-<value letter_id="C">-820</value>
-<value letter_id="D">12</value>
-<value letter_id="E">-21</value>
-<value letter_id="F">-53</value>
-<value letter_id="G">-267</value>
-<value letter_id="H">-74</value>
-<value letter_id="I">37</value>
-<value letter_id="K">16</value>
-<value letter_id="L">44</value>
-<value letter_id="M">-37</value>
-<value letter_id="N">98</value>
-<value letter_id="P">31</value>
-<value letter_id="Q">9</value>
-<value letter_id="R">19</value>
-<value letter_id="S">319</value>
-<value letter_id="T">212</value>
-<value letter_id="V">127</value>
-<value letter_id="W">-193</value>
-<value letter_id="Y">-95</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">165</value>
-<value letter_id="C">-261</value>
-<value letter_id="D">70</value>
-<value letter_id="E">110</value>
-<value letter_id="F">77</value>
-<value letter_id="G">-521</value>
-<value letter_id="H">-4</value>
-<value letter_id="I">147</value>
-<value letter_id="K">95</value>
-<value letter_id="L">201</value>
-<value letter_id="M">90</value>
-<value letter_id="N">121</value>
-<value letter_id="P">124</value>
-<value letter_id="Q">91</value>
-<value letter_id="R">107</value>
-<value letter_id="S">425</value>
-<value letter_id="T">-527</value>
-<value letter_id="V">314</value>
-<value letter_id="W">-95</value>
-<value letter_id="Y">8</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-838</value>
-<value letter_id="C">-990</value>
-<value letter_id="D">-89</value>
-<value letter_id="E">-149</value>
-<value letter_id="F">-151</value>
-<value letter_id="G">-841</value>
-<value letter_id="H">-161</value>
-<value letter_id="I">-117</value>
-<value letter_id="K">-113</value>
-<value letter_id="L">-66</value>
-<value letter_id="M">-209</value>
-<value letter_id="N">-68</value>
-<value letter_id="P">-69</value>
-<value letter_id="Q">-129</value>
-<value letter_id="R">-91</value>
-<value letter_id="S">111</value>
-<value letter_id="T">221</value>
-<value letter_id="V">-55</value>
-<value letter_id="W">-255</value>
-<value letter_id="Y">-173</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">176</value>
-<value letter_id="C">-858</value>
-<value letter_id="D">-79</value>
-<value letter_id="E">-103</value>
-<value letter_id="F">-115</value>
-<value letter_id="G">-717</value>
-<value letter_id="H">-148</value>
-<value letter_id="I">-95</value>
-<value letter_id="K">-108</value>
-<value letter_id="L">-17</value>
-<value letter_id="M">-162</value>
-<value letter_id="N">-61</value>
-<value letter_id="P">-12</value>
-<value letter_id="Q">-95</value>
-<value letter_id="R">-69</value>
-<value letter_id="S">193</value>
-<value letter_id="T">-737</value>
-<value letter_id="V">52</value>
-<value letter_id="W">-240</value>
-<value letter_id="Y">-153</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">134</value>
-<value letter_id="C">-686</value>
-<value letter_id="D">0</value>
-<value letter_id="E">16</value>
-<value letter_id="F">-12</value>
-<value letter_id="G">-553</value>
-<value letter_id="H">-68</value>
-<value letter_id="I">44</value>
-<value letter_id="K">-8</value>
-<value letter_id="L">96</value>
-<value letter_id="M">-9</value>
-<value letter_id="N">88</value>
-<value letter_id="P">124</value>
-<value letter_id="Q">41</value>
-<value letter_id="R">36</value>
-<value letter_id="S">384</value>
-<value letter_id="T">11</value>
-<value letter_id="V">216</value>
-<value letter_id="W">-177</value>
-<value letter_id="Y">-71</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">165</value>
-<value letter_id="C">-261</value>
-<value letter_id="D">70</value>
-<value letter_id="E">110</value>
-<value letter_id="F">77</value>
-<value letter_id="G">-521</value>
-<value letter_id="H">-4</value>
-<value letter_id="I">147</value>
-<value letter_id="K">95</value>
-<value letter_id="L">201</value>
-<value letter_id="M">90</value>
-<value letter_id="N">121</value>
-<value letter_id="P">124</value>
-<value letter_id="Q">91</value>
-<value letter_id="R">107</value>
-<value letter_id="S">425</value>
-<value letter_id="T">-527</value>
-<value letter_id="V">314</value>
-<value letter_id="W">-95</value>
-<value letter_id="Y">8</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">147</value>
-<value letter_id="C">-614</value>
-<value letter_id="D">89</value>
-<value letter_id="E">129</value>
-<value letter_id="F">93</value>
-<value letter_id="G">-121</value>
-<value letter_id="H">12</value>
-<value letter_id="I">160</value>
-<value letter_id="K">113</value>
-<value letter_id="L">217</value>
-<value letter_id="M">108</value>
-<value letter_id="N">144</value>
-<value letter_id="P">144</value>
-<value letter_id="Q">111</value>
-<value letter_id="R">125</value>
-<value letter_id="S">447</value>
-<value letter_id="T">-241</value>
-<value letter_id="V">332</value>
-<value letter_id="W">-81</value>
-<value letter_id="Y">22</value>
-</alphabet_array>
-</alphabet_matrix>
-</scores>
-<probabilities>
-<alphabet_matrix>
-<alphabet_array>
-<value letter_id="A">0.240000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.680000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.080000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.280000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.680000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.040000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.160000</value>
-<value letter_id="C">0.320000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.360000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.160000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.320000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.640000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.040000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.000000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.040000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.960000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.960000</value>
-<value letter_id="C">0.040000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.000000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.000000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">1.000000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">1.000000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.000000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.760000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.240000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.960000</value>
-<value letter_id="C">0.040000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.000000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="Y">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.840000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="D">0.000000</value>
-<value letter_id="E">0.000000</value>
-<value letter_id="F">0.000000</value>
-<value letter_id="G">0.120000</value>
-<value letter_id="H">0.000000</value>
-<value letter_id="I">0.000000</value>
-<value letter_id="K">0.000000</value>
-<value letter_id="L">0.000000</value>
-<value letter_id="M">0.000000</value>
-<value letter_id="N">0.000000</value>
-<value letter_id="P">0.000000</value>
-<value letter_id="Q">0.000000</value>
-<value letter_id="R">0.000000</value>
-<value letter_id="S">0.000000</value>
-<value letter_id="T">0.040000</value>
-<value letter_id="V">0.000000</value>
-<value letter_id="W">0.000000</value>
-<value letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="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>
--- a/test-data/meme_output_xml_2.xml	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,977 +0,0 @@
-<?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 name CDATA #REQUIRED>
-<!ELEMENT ambigs (letter*)>
-<!ELEMENT letter EMPTY>
-<!ATTLIST letter id ID #REQUIRED>
-<!ATTLIST letter symbol CDATA #REQUIRED>
-<!ATTLIST letter equals CDATA #IMPLIED>
-<!ATTLIST letter aliases CDATA #IMPLIED>
-<!ATTLIST letter complement CDATA #IMPLIED>
-<!ATTLIST letter name CDATA #IMPLIED>
-<!ATTLIST letter colour CDATA #IMPLIED>
-<!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.11.2" release="Thu May 05 14:58:55 2016 -0700">
-<training_set datafile="Galaxy_FASTA_Input" length="30">
-<alphabet name="DNA" like="dna">
-<letter id="A" symbol="A" complement="T" name="Adenine" colour="CC0000"/>
-<letter id="C" symbol="C" complement="G" name="Cytosine" colour="0000CC"/>
-<letter id="G" symbol="G" complement="C" name="Guanine" colour="FFB300"/>
-<letter id="T" symbol="T" aliases="U" complement="A" name="Thymine" colour="008000"/>
-<letter id="N" symbol="N" aliases="X." equals="ACGT" name="Any base"/>
-<letter id="V" symbol="V" equals="ACG" name="Not T"/>
-<letter id="H" symbol="H" equals="ACT" name="Not G"/>
-<letter id="D" symbol="D" equals="AGT" name="Not C"/>
-<letter id="B" symbol="B" equals="CGT" name="Not A"/>
-<letter id="M" symbol="M" equals="AC" name="Amino"/>
-<letter id="R" symbol="R" equals="AG" name="Purine"/>
-<letter id="W" symbol="W" equals="AT" name="Weak"/>
-<letter id="S" symbol="S" equals="CG" name="Strong"/>
-<letter id="Y" symbol="Y" equals="CT" name="Pyrimidine"/>
-<letter id="K" symbol="K" equals="GT" name="Keto"/>
-</alphabet>
-<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="A">0.294</value>
-<value letter_id="C">0.231</value>
-<value letter_id="G">0.257</value>
-<value letter_id="T">0.217</value>
-</alphabet_array>
-</letter_frequencies>
-</training_set>
-<model>
-<command_line>meme /Users/gvk/work/git_workspace/galaxy/database/files/002/dataset_2490.dat -o /Users/gvk/work/git_workspace/galaxy/database/job_working_directory/001/1929/dataset_2578_files -nostatus -sf Galaxy_FASTA_Input -dna -mod zoops -nmotifs 1 -wnsites 0.8 -minw 8 -maxw 50 -wg 11 -ws 1 -maxiter 50 -distance 0.001 -prior dirichlet -b 0.01 -plib /Users/gvk/work/git_workspace/galaxy/database/files/002/dataset_2577.dat -spmap uni -spfuzz 0.5 </command_line>
-<host>MacBook-Pro-2.local</host>
-<type>zoops</type>
-<nmotifs>1</nmotifs>
-<evalue_threshold>inf</evalue_threshold>
-<object_function>E-value of product of p-values</object_function>
-<use_llr>0</use_llr>
-<min_width>8</min_width>
-<max_width>50</max_width>
-<wg>11</wg>
-<ws>1</ws>
-<endgaps>yes</endgaps>
-<substring>yes</substring>
-<minsites>2</minsites>
-<maxsites>30</maxsites>
-<wnsites>0.8</wnsites>
-<spmap>uni</spmap>
-<spfuzz>0.5</spfuzz>
-<prior>dirichlet</prior>
-<beta>0.01</beta>
-<maxiter>50</maxiter>
-<distance>0.001</distance>
-<num_sequences>30</num_sequences>
-<num_positions>1500</num_positions>
-<seed>0</seed>
-<ctfrac>-1</ctfrac>
-<maxwords>-1</maxwords>
-<strands>forward</strands>
-<priors_file>dataset_2577.dat</priors_file>
-<reason_for_stopping>Stopped because requested number of motifs (1) found.</reason_for_stopping>
-<background_frequencies source="dataset with add-one prior applied">
-<alphabet_array>
-<value letter_id="A">0.294</value>
-<value letter_id="C">0.231</value>
-<value letter_id="G">0.257</value>
-<value letter_id="T">0.217</value>
-</alphabet_array>
-</background_frequencies>
-</model>
-<motifs>
-<motif id="motif_1" name="1" width="11" sites="30" ic="13.0" re="12.2" llr="254" e_value="5.1e-040" bayes_threshold="5.2854" elapsed_time="0.168106">
-<scores>
-<alphabet_matrix>
-<alphabet_array>
-<value letter_id="A">-14</value>
-<value letter_id="C">-179</value>
-<value letter_id="G">114</value>
-<value letter_id="T">-112</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">3</value>
-<value letter_id="C">-1155</value>
-<value letter_id="G">137</value>
-<value letter_id="T">-270</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-114</value>
-<value letter_id="C">20</value>
-<value letter_id="G">86</value>
-<value letter_id="T">-71</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">3</value>
-<value letter_id="C">-279</value>
-<value letter_id="G">122</value>
-<value letter_id="T">-170</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-1155</value>
-<value letter_id="C">-1155</value>
-<value letter_id="G">-295</value>
-<value letter_id="T">215</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">156</value>
-<value letter_id="C">-179</value>
-<value letter_id="G">-1155</value>
-<value letter_id="T">-170</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">-1155</value>
-<value letter_id="C">-1155</value>
-<value letter_id="G">-1155</value>
-<value letter_id="T">220</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">172</value>
-<value letter_id="C">-279</value>
-<value letter_id="G">-1155</value>
-<value letter_id="T">-1155</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">125</value>
-<value letter_id="C">-1155</value>
-<value letter_id="G">-1155</value>
-<value letter_id="T">46</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">167</value>
-<value letter_id="C">-179</value>
-<value letter_id="G">-1155</value>
-<value letter_id="T">-1155</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">144</value>
-<value letter_id="C">-1155</value>
-<value letter_id="G">-63</value>
-<value letter_id="T">-270</value>
-</alphabet_array>
-</alphabet_matrix>
-</scores>
-<probabilities>
-<alphabet_matrix>
-<alphabet_array>
-<value letter_id="A">0.266667</value>
-<value letter_id="C">0.066667</value>
-<value letter_id="G">0.566667</value>
-<value letter_id="T">0.100000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.300000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="G">0.666667</value>
-<value letter_id="T">0.033333</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.133333</value>
-<value letter_id="C">0.266667</value>
-<value letter_id="G">0.466667</value>
-<value letter_id="T">0.133333</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.300000</value>
-<value letter_id="C">0.033333</value>
-<value letter_id="G">0.600000</value>
-<value letter_id="T">0.066667</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.000000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="G">0.033333</value>
-<value letter_id="T">0.966667</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.866667</value>
-<value letter_id="C">0.066667</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="T">0.066667</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.000000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="T">1.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.966667</value>
-<value letter_id="C">0.033333</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="T">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.700000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="T">0.300000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.933333</value>
-<value letter_id="C">0.066667</value>
-<value letter_id="G">0.000000</value>
-<value letter_id="T">0.000000</value>
-</alphabet_array>
-<alphabet_array>
-<value letter_id="A">0.800000</value>
-<value letter_id="C">0.000000</value>
-<value letter_id="G">0.166667</value>
-<value letter_id="T">0.033333</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="plus" pvalue="4.51e-07" >
-<left_flank>AAGGCCAGGA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GCCTGAGAGC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_23" position="15" strand="plus" pvalue="2.22e-06" >
-<left_flank>ATACCCAGGG</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>CCTCAGCAGC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_13" position="13" strand="plus" pvalue="2.74e-06" >
-<left_flank>CCACCAGCTT</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>AGCCCTGTAC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_25" position="36" strand="plus" pvalue="4.86e-06" >
-<left_flank>ACAGGCCCTG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GCC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_21" position="7" strand="plus" pvalue="4.86e-06" >
-<left_flank>CCAAGGA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GCCCCACAAA</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_19" position="9" strand="plus" pvalue="4.86e-06" >
-<left_flank>CAGGCCCTG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GCCCCAGCAG</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_9" position="13" strand="plus" pvalue="4.86e-06" >
-<left_flank>GATTCACTGA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GGCCCTCTGC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_28" position="32" strand="plus" pvalue="6.48e-06" >
-<left_flank>CCGGCGGGGC</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-</site>
-<right_flank>GGGGCGG</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_20" position="4" strand="plus" pvalue="6.48e-06" >
-<left_flank>CAGA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-</site>
-<right_flank>GTTCCGACCA</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_12" position="18" strand="plus" pvalue="6.48e-06" >
-<left_flank>CACCAGAGCT</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>AGAAGGTTCT</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_15" position="21" strand="plus" pvalue="1.38e-05" >
-<left_flank>AATCACTGAG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GTCCCAGGGA</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_11" position="16" strand="plus" pvalue="1.38e-05" >
-<left_flank>CACTATTGAA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>TTTCATTTGC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_0" position="39" strand="plus" pvalue="1.41e-05" >
-<left_flank>CCTCGGGACG</left_flank>
-<site>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank></right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_6" position="15" strand="plus" pvalue="1.61e-05" >
-<left_flank>CCCACTACTT</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>TCATTCTGAG</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_22" position="2" strand="plus" pvalue="1.95e-05" >
-<left_flank>GA</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GCCAACATCC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_14" position="17" strand="plus" pvalue="1.95e-05" >
-<left_flank>CCCACCAGCA</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>AAGCTCAGGA</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_18" position="37" strand="plus" pvalue="2.16e-05" >
-<left_flank>CGTGGTCGCG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_29" position="30" strand="plus" pvalue="3.04e-05" >
-<left_flank>GCTGCCGGTG</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-</site>
-<right_flank>GCCCTGGCG</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_4" position="12" strand="plus" pvalue="3.04e-05" >
-<left_flank>CAGGTCTAAG</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>CTTGGAGTCC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_5" position="0" strand="plus" pvalue="3.67e-05" >
-<left_flank></left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>ATGGTCCTGT</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_1" position="27" strand="plus" pvalue="3.93e-05" >
-<left_flank>AGTCACAAGT</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>GGGTCGCACG</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_7" position="4" strand="plus" pvalue="5.65e-05" >
-<left_flank>TCAG</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>ATGTTCCTGT</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_3" position="14" strand="plus" pvalue="6.24e-05" >
-<left_flank>CCCAGGTTTC</left_flank>
-<site>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>TCGCCGCACC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_16" position="22" strand="plus" pvalue="7.15e-05" >
-<left_flank>AGTTTCAGTT</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>attatataac</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_27" position="36" strand="plus" pvalue="1.39e-04" >
-<left_flank>TGCCTGGGTC</left_flank>
-<site>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-</site>
-<right_flank>GCT</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_26" position="37" strand="plus" pvalue="1.39e-04" >
-<left_flank>TGCCTGGGCC</left_flank>
-<site>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="G"/>
-</site>
-<right_flank>GC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_17" position="2" strand="plus" pvalue="4.81e-04" >
-<left_flank>ga</left_flank>
-<site>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>ggggcctcac</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_8" position="13" strand="plus" pvalue="8.57e-04" >
-<left_flank>TATAACTCAG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>TAATTTGTAC</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_10" position="7" strand="plus" pvalue="1.47e-03" >
-<left_flank>aaactta</left_flank>
-<site>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="A"/>
-</site>
-<right_flank>acttaaaact</right_flank>
-</contributing_site>
-<contributing_site sequence_id="sequence_2" position="26" strand="plus" pvalue="2.64e-03" >
-<left_flank>GGTGGGGGTG</left_flank>
-<site>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="G"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="T"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="A"/>
-<letter_ref letter_id="C"/>
-<letter_ref letter_id="T"/>
-</site>
-<right_flank>GGTCCACTAT</right_flank>
-</contributing_site>
-</contributing_sites>
-</motif>
-</motifs>
-<scanned_sites_summary p_thresh="0.0001">
-<scanned_sites sequence_id="sequence_0" pvalue="5.63e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="39" pvalue="1.41e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_1" pvalue="1.57e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="27" pvalue="3.93e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_2" pvalue="1.00e-01" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_3" pvalue="2.49e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="14" pvalue="6.24e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_4" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="12" pvalue="3.04e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_5" pvalue="1.47e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="0" pvalue="3.67e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_6" pvalue="6.45e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="1.61e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_7" pvalue="2.26e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="5.65e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_8" pvalue="3.37e-02" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_9" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="4.86e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_10" pvalue="5.73e-02" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_11" pvalue="5.52e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="16" pvalue="1.38e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_12" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="18" pvalue="6.48e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_13" pvalue="1.10e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="13" pvalue="2.74e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_14" pvalue="7.78e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="17" pvalue="1.95e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_15" pvalue="5.52e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="21" pvalue="1.38e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_16" pvalue="2.85e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="22" pvalue="7.15e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_17" pvalue="1.90e-02" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_18" pvalue="8.63e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="37" pvalue="2.16e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_19" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="9" pvalue="4.86e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_20" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="4" pvalue="6.48e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_21" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="7" pvalue="4.86e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_22" pvalue="7.78e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="2" pvalue="1.95e-05"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_23" pvalue="8.89e-05" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="15" pvalue="2.22e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_24" pvalue="1.80e-05" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="12" pvalue="4.51e-07"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_25" pvalue="1.95e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="36" pvalue="4.86e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_26" pvalue="5.54e-03" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_27" pvalue="5.54e-03" num_sites="0"></scanned_sites>
-<scanned_sites sequence_id="sequence_28" pvalue="2.59e-04" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="32" pvalue="6.48e-06"/>
-</scanned_sites>
-<scanned_sites sequence_id="sequence_29" pvalue="1.22e-03" num_sites="1"><scanned_site motif_id="motif_1" strand="plus" position="30" pvalue="3.04e-05"/>
-</scanned_sites>
-</scanned_sites_summary>
-</MEME>
--- a/test-data/meme_psp_gen_reports_output.tabular	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-540 bases or amino acids
-0.5	0.5	4	4
-0.5	0.5	6	6
-0.5	0.5	7	7
-0.5	0.5	8	8
-0.5	0.5	9	9
-0.5	0.5	10	10
-0.5	0.5	11	11
-0.5	0.5	12	12
-0.5	0.5	13	13
-0.5	0.5	14	14
-0.5	0.5	15	15
-0.5	0.5	16	16
-0.5	0.5	17	17
-0.5	0.5	18	18
-0.5	0.5	19	19
-0.5	0.5	20	20
-
-score 0.9 occurred 483 times
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_psp_output_test1.memepsp	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,6 @@
+>BBP_PIEBR 20 scaledmin = 0.1 scaledmax = 0.9
+0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+>ICYA_MANSE 20 scaledmin = 0.1 scaledmax = 0.9
+0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+>LACB_BOVIN 20 scaledmin = 0.1 scaledmax = 0.9
+0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/meme_psp_output_test1.tabular	Thu May 17 14:11:15 2018 -0400
@@ -0,0 +1,21 @@
+meme_psp_input_pos.fa: 540 bases or amino acids
+meme_psp_input_neg.fa: 540 bases or amino acids
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	4	4
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	5	5
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	6	6
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	7	7
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	8	8
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	9	9
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	10	10
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	11	11
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	12	12
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	13	13
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	14	14
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	15	15
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	16	16
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	17	17
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	18	18
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	19	19
+meme_psp_input_pos.fa	meme_psp_input_neg.fa	0.5	0.5	20	20
+
+score 0.9 occurred 483 times
--- a/test-data/meme_psp_protein_input.fasta	Wed Apr 25 12:13:08 2018 -0400
+++ b/test-data/meme_psp_protein_input.fasta	Thu May 17 14:11:15 2018 -0400
@@ -3,13 +3,11 @@
 DGKKASVYNSFVSNGVKEYMEGDLEIAPDAKYTKQGKYVMTFKFGQRVVN
 LVPWVLATDYKNYAINYNCDYHPDKKAHSIHAWILSKSKVLEGNTKEVVD
 NVLKTFSHLIDASKFISNDFSEAACQYSTTYSLTGPDRH
-
 >LACB_BOVIN 
 MKCLLLALALTCGAQALIVTQTMKGLDIQKVAGTWYSLAMAASDISLLDA
 QSAPLRVYVEELKPTPEGDLEILLQKWENGECAQKKIIAEKTKIPAVFKI
 DALNENKVLVLDTDYKKYLLFCMENSAEPEQSLACQCLVRTPEVDDEALE
 KFDKALKALPMHIRLSFNPTQLEEQCHI
-
 >BBP_PIEBR 
 NVYHDGACPEVKPVDNFDWSNYHGKWWEVAKYPNSVEKYGKCGWAEYTPE
 GKSVKVSNYHVIHGKEYFIEGTAYPVGDSKIGKIYHKLTYGGVTKENVFN
--- a/test-data/motif1.gff	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-##gff-version 3
-phiX174	fimo	polypeptide_motif	1	11	78.3	+	.	Name=1;ID=1-57-phiX174;pvalue=1.46e-08;sequence=GAGTTTTATCG;
-phiX174	fimo	polypeptide_motif	3	13	57.5	+	.	Name=1;ID=1-471-phiX174;pvalue=1.79e-06;sequence=GTTTTATCGCT;
-phiX174	fimo	polypeptide_motif	7	17	 45	+	.	Name=1;ID=1-1378-phiX174;pvalue=3.18e-05;sequence=TATCGCTTCCA;
-phiX174	fimo	polypeptide_motif	10	20	53.9	+	.	Name=1;ID=1-605-phiX174;pvalue=4.1e-06;sequence=CGCTTCCATGA;
-phiX174	fimo	polypeptide_motif	17	27	40.2	+	.	Name=1;ID=1-1887-phiX174;pvalue=9.55e-05;sequence=ATGACGCAGAA;
-phiX174	fimo	polypeptide_motif	18	28	45.3	+	.	Name=1;ID=1-1349-phiX174;pvalue=2.98e-05;sequence=TGACGCAGAAG;
-phiX174	fimo	polypeptide_motif	19	29	55.8	+	.	Name=1;ID=1-527-phiX174;pvalue=2.6e-06;sequence=GACGCAGAAGT;
-phiX174	fimo	polypeptide_motif	21	31	41.5	+	.	Name=1;ID=1-1705-phiX174;pvalue=7.07e-05;sequence=CGCAGAAGTTA;
-phiX174	fimo	polypeptide_motif	22	32	44.6	+	.	Name=1;ID=1-1404-phiX174;pvalue=3.44e-05;sequence=GCAGAAGTTAA;
-phiX174	fimo	polypeptide_motif	24	34	79.1	+	.	Name=1;ID=1-53-phiX174;pvalue=1.23e-08;sequence=AGAAGTTAACA;
-phiX174	fimo	polypeptide_motif	25	35	45.3	+	.	Name=1;ID=1-1347-phiX174;pvalue=2.97e-05;sequence=GAAGTTAACAC;
-phiX174	fimo	polypeptide_motif	26	36	59.2	+	.	Name=1;ID=1-417-phiX174;pvalue=1.19e-06;sequence=AAGTTAACACT;
-phiX174	fimo	polypeptide_motif	30	40	44.7	+	.	Name=1;ID=1-1399-phiX174;pvalue=3.4e-05;sequence=TAACACTTTCG;
-phiX174	fimo	polypeptide_motif	37	47	72.4	+	.	Name=1;ID=1-98-phiX174;pvalue=5.79e-08;sequence=TTCGGATATTT;
-phiX174	fimo	polypeptide_motif	39	49	65.3	+	.	Name=1;ID=1-213-phiX174;pvalue=2.92e-07;sequence=CGGATATTTCT;
-phiX174	fimo	polypeptide_motif	41	51	55.3	+	.	Name=1;ID=1-548-phiX174;pvalue=2.97e-06;sequence=GATATTTCTGA;
-phiX174	fimo	polypeptide_motif	43	53	58.4	+	.	Name=1;ID=1-442-phiX174;pvalue=1.43e-06;sequence=TATTTCTGATG;
-phiX174	fimo	polypeptide_motif	46	56	53.7	+	.	Name=1;ID=1-617-phiX174;pvalue=4.23e-06;sequence=TTCTGATGAGT;
-phiX174	fimo	polypeptide_motif	50	60	45.4	+	.	Name=1;ID=1-1333-phiX174;pvalue=2.86e-05;sequence=GATGAGTCGAA;
-phiX174	fimo	polypeptide_motif	51	61	48.4	+	.	Name=1;ID=1-1094-phiX174;pvalue=1.44e-05;sequence=ATGAGTCGAAA;
-phiX174	fimo	polypeptide_motif	52	62	83.9	+	.	Name=1;ID=1-22-phiX174;pvalue=4.06e-09;sequence=TGAGTCGAAAA;
-phiX174	fimo	polypeptide_motif	53	63	53.9	+	.	Name=1;ID=1-601-phiX174;pvalue=4.03e-06;sequence=GAGTCGAAAAA;
-phiX174	fimo	polypeptide_motif	54	64	62.9	+	.	Name=1;ID=1-297-phiX174;pvalue=5.16e-07;sequence=AGTCGAAAAAT;
-phiX174	fimo	polypeptide_motif	55	65	52.8	+	.	Name=1;ID=1-675-phiX174;pvalue=5.26e-06;sequence=GTCGAAAAATT;
-phiX174	fimo	polypeptide_motif	56	66	41.4	+	.	Name=1;ID=1-1713-phiX174;pvalue=7.2e-05;sequence=TCGAAAAATTA;
-phiX174	fimo	polypeptide_motif	58	68	43.4	+	.	Name=1;ID=1-1500-phiX174;pvalue=4.56e-05;sequence=GAAAAATTATC;
-phiX174	fimo	polypeptide_motif	59	69	59.6	+	.	Name=1;ID=1-409-phiX174;pvalue=1.1e-06;sequence=AAAAATTATCT;
-phiX174	fimo	polypeptide_motif	61	71	61.8	+	.	Name=1;ID=1-329-phiX174;pvalue=6.52e-07;sequence=AAATTATCTTG;
-phiX174	fimo	polypeptide_motif	63	73	59.2	+	.	Name=1;ID=1-419-phiX174;pvalue=1.2e-06;sequence=ATTATCTTGAT;
-phiX174	fimo	polypeptide_motif	65	75	53.3	+	.	Name=1;ID=1-643-phiX174;pvalue=4.66e-06;sequence=TATCTTGATAA;
-phiX174	fimo	polypeptide_motif	66	76	51.8	+	.	Name=1;ID=1-737-phiX174;pvalue=6.54e-06;sequence=ATCTTGATAAA;
-phiX174	fimo	polypeptide_motif	67	77	73.2	+	.	Name=1;ID=1-89-phiX174;pvalue=4.78e-08;sequence=TCTTGATAAAG;
-phiX174	fimo	polypeptide_motif	69	79	63.8	+	.	Name=1;ID=1-268-phiX174;pvalue=4.15e-07;sequence=TTGATAAAGCA;
-phiX174	fimo	polypeptide_motif	71	81	40.2	+	.	Name=1;ID=1-1882-phiX174;pvalue=9.49e-05;sequence=GATAAAGCAGG;
-phiX174	fimo	polypeptide_motif	73	83	45.4	+	.	Name=1;ID=1-1334-phiX174;pvalue=2.87e-05;sequence=TAAAGCAGGAA;
-phiX174	fimo	polypeptide_motif	74	84	50.9	+	.	Name=1;ID=1-832-phiX174;pvalue=8.05e-06;sequence=AAAGCAGGAAT;
-phiX174	fimo	polypeptide_motif	76	86	52.2	+	.	Name=1;ID=1-710-phiX174;pvalue=5.96e-06;sequence=AGCAGGAATTA;
-phiX174	fimo	polypeptide_motif	78	88	51.8	+	.	Name=1;ID=1-741-phiX174;pvalue=6.65e-06;sequence=CAGGAATTACT;
-phiX174	fimo	polypeptide_motif	79	89	 45	+	.	Name=1;ID=1-1369-phiX174;pvalue=3.16e-05;sequence=AGGAATTACTA;
-phiX174	fimo	polypeptide_motif	80	90	43.3	+	.	Name=1;ID=1-1511-phiX174;pvalue=4.63e-05;sequence=GGAATTACTAC;
-phiX174	fimo	polypeptide_motif	81	91	59.8	+	.	Name=1;ID=1-402-phiX174;pvalue=1.05e-06;sequence=GAATTACTACT;
-phiX174	fimo	polypeptide_motif	82	92	46.9	+	.	Name=1;ID=1-1205-phiX174;pvalue=2.03e-05;sequence=AATTACTACTG;
-phiX174	fimo	polypeptide_motif	88	98	41.2	+	.	Name=1;ID=1-1744-phiX174;pvalue=7.51e-05;sequence=TACTGCTTGTT;
-phiX174	fimo	polypeptide_motif	91	101	53.6	+	.	Name=1;ID=1-621-phiX174;pvalue=4.33e-06;sequence=TGCTTGTTTAC;
-phiX174	fimo	polypeptide_motif	92	102	44.8	+	.	Name=1;ID=1-1388-phiX174;pvalue=3.31e-05;sequence=GCTTGTTTACG;
-phiX174	fimo	polypeptide_motif	93	103	43.2	+	.	Name=1;ID=1-1525-phiX174;pvalue=4.82e-05;sequence=CTTGTTTACGA;
-phiX174	fimo	polypeptide_motif	95	105	61.9	+	.	Name=1;ID=1-327-phiX174;pvalue=6.5e-07;sequence=TGTTTACGAAT;
-phiX174	fimo	polypeptide_motif	96	106	42.9	+	.	Name=1;ID=1-1553-phiX174;pvalue=5.08e-05;sequence=GTTTACGAATT;
-phiX174	fimo	polypeptide_motif	98	108	45.4	+	.	Name=1;ID=1-1340-phiX174;pvalue=2.9e-05;sequence=TTACGAATTAA;
-phiX174	fimo	polypeptide_motif	99	109	73.5	+	.	Name=1;ID=1-88-phiX174;pvalue=4.48e-08;sequence=TACGAATTAAA;
-phiX174	fimo	polypeptide_motif	100	110	 53	+	.	Name=1;ID=1-661-phiX174;pvalue=4.99e-06;sequence=ACGAATTAAAT;
-phiX174	fimo	polypeptide_motif	102	112	75.6	+	.	Name=1;ID=1-72-phiX174;pvalue=2.75e-08;sequence=GAATTAAATCG;
-phiX174	fimo	polypeptide_motif	104	114	52.2	+	.	Name=1;ID=1-713-phiX174;pvalue=6.05e-06;sequence=ATTAAATCGAA;
-phiX174	fimo	polypeptide_motif	106	116	59.6	+	.	Name=1;ID=1-407-phiX174;pvalue=1.09e-06;sequence=TAAATCGAAGT;
-phiX174	fimo	polypeptide_motif	112	122	41.6	+	.	Name=1;ID=1-1683-phiX174;pvalue=6.85e-05;sequence=GAAGTGGACTG;
-phiX174	fimo	polypeptide_motif	114	124	45.3	+	.	Name=1;ID=1-1342-phiX174;pvalue=2.92e-05;sequence=AGTGGACTGCT;
-phiX174	fimo	polypeptide_motif	118	128	56.2	+	.	Name=1;ID=1-512-phiX174;pvalue=2.38e-06;sequence=GACTGCTGGCG;
-phiX174	fimo	polypeptide_motif	122	132	51.4	+	.	Name=1;ID=1-774-phiX174;pvalue=7.15e-06;sequence=GCTGGCGGAAA;
-phiX174	fimo	polypeptide_motif	123	133	43.1	+	.	Name=1;ID=1-1533-phiX174;pvalue=4.93e-05;sequence=CTGGCGGAAAA;
-phiX174	fimo	polypeptide_motif	124	134	48.6	+	.	Name=1;ID=1-1085-phiX174;pvalue=1.38e-05;sequence=TGGCGGAAAAT;
-phiX174	fimo	polypeptide_motif	125	135	68.3	+	.	Name=1;ID=1-146-phiX174;pvalue=1.49e-07;sequence=GGCGGAAAATG;
-phiX174	fimo	polypeptide_motif	126	136	46.4	+	.	Name=1;ID=1-1243-phiX174;pvalue=2.27e-05;sequence=GCGGAAAATGA;
-phiX174	fimo	polypeptide_motif	128	138	58.3	+	.	Name=1;ID=1-446-phiX174;pvalue=1.48e-06;sequence=GGAAAATGAGA;
-phiX174	fimo	polypeptide_motif	129	139	43.2	+	.	Name=1;ID=1-1522-phiX174;pvalue=4.78e-05;sequence=GAAAATGAGAA;
-phiX174	fimo	polypeptide_motif	130	140	54.1	+	.	Name=1;ID=1-595-phiX174;pvalue=3.92e-06;sequence=AAAATGAGAAA;
-phiX174	fimo	polypeptide_motif	131	141	 76	+	.	Name=1;ID=1-68-phiX174;pvalue=2.49e-08;sequence=AAATGAGAAAA;
-phiX174	fimo	polypeptide_motif	132	142	51.2	+	.	Name=1;ID=1-800-phiX174;pvalue=7.57e-06;sequence=AATGAGAAAAT;
-phiX174	fimo	polypeptide_motif	133	143	56.2	+	.	Name=1;ID=1-513-phiX174;pvalue=2.41e-06;sequence=ATGAGAAAATT;
-phiX174	fimo	polypeptide_motif	134	144	41.1	+	.	Name=1;ID=1-1761-phiX174;pvalue=7.83e-05;sequence=TGAGAAAATTC;
-phiX174	fimo	polypeptide_motif	135	145	50.3	+	.	Name=1;ID=1-910-phiX174;pvalue=9.39e-06;sequence=GAGAAAATTCG;
-phiX174	fimo	polypeptide_motif	136	146	43.3	+	.	Name=1;ID=1-1517-phiX174;pvalue=4.66e-05;sequence=AGAAAATTCGA;
-phiX174	fimo	polypeptide_motif	139	149	54.2	+	.	Name=1;ID=1-588-phiX174;pvalue=3.75e-06;sequence=AAATTCGACCT;
-phiX174	fimo	polypeptide_motif	141	151	42.2	+	.	Name=1;ID=1-1625-phiX174;pvalue=6.01e-05;sequence=ATTCGACCTAT;
-phiX174	fimo	polypeptide_motif	143	153	 50	+	.	Name=1;ID=1-938-phiX174;pvalue=9.94e-06;sequence=TCGACCTATCC;
-phiX174	fimo	polypeptide_motif	145	155	44.6	+	.	Name=1;ID=1-1403-phiX174;pvalue=3.42e-05;sequence=GACCTATCCTT;
-phiX174	fimo	polypeptide_motif	155	165	51.3	+	.	Name=1;ID=1-787-phiX174;pvalue=7.35e-06;sequence=TGCGCAGCTCG;
-phiX174	fimo	polypeptide_motif	157	167	51.1	+	.	Name=1;ID=1-807-phiX174;pvalue=7.68e-06;sequence=CGCAGCTCGAG;
-phiX174	fimo	polypeptide_motif	159	169	44.5	+	.	Name=1;ID=1-1420-phiX174;pvalue=3.56e-05;sequence=CAGCTCGAGAA;
-phiX174	fimo	polypeptide_motif	160	170	 40	+	.	Name=1;ID=1-1921-phiX174;pvalue=9.89e-05;sequence=AGCTCGAGAAG;
-phiX174	fimo	polypeptide_motif	166	176	60.9	+	.	Name=1;ID=1-365-phiX174;pvalue=8.02e-07;sequence=AGAAGCTCTTA;
-phiX174	fimo	polypeptide_motif	168	178	62.3	+	.	Name=1;ID=1-311-phiX174;pvalue=5.87e-07;sequence=AAGCTCTTACT;
-phiX174	fimo	polypeptide_motif	181	191	49.9	+	.	Name=1;ID=1-946-phiX174;pvalue=1.01e-05;sequence=GCGACCTTTCG;
-phiX174	fimo	polypeptide_motif	187	197	52.5	+	.	Name=1;ID=1-694-phiX174;pvalue=5.64e-06;sequence=TTTCGCCATCA;
-phiX174	fimo	polypeptide_motif	191	201	46.6	+	.	Name=1;ID=1-1232-phiX174;pvalue=2.2e-05;sequence=GCCATCAACTA;
-phiX174	fimo	polypeptide_motif	194	204	76.4	+	.	Name=1;ID=1-67-phiX174;pvalue=2.29e-08;sequence=ATCAACTAACG;
-phiX174	fimo	polypeptide_motif	201	211	40.1	+	.	Name=1;ID=1-1908-phiX174;pvalue=9.77e-05;sequence=AACGATTCTGT;
-phiX174	fimo	polypeptide_motif	203	213	 63	+	.	Name=1;ID=1-291-phiX174;pvalue=5e-07;sequence=CGATTCTGTCA;
-phiX174	fimo	polypeptide_motif	205	215	53.8	+	.	Name=1;ID=1-610-phiX174;pvalue=4.16e-06;sequence=ATTCTGTCAAA;
-phiX174	fimo	polypeptide_motif	206	216	59.1	+	.	Name=1;ID=1-421-phiX174;pvalue=1.23e-06;sequence=TTCTGTCAAAA;
-phiX174	fimo	polypeptide_motif	207	217	 68	+	.	Name=1;ID=1-153-phiX174;pvalue=1.58e-07;sequence=TCTGTCAAAAA;
-phiX174	fimo	polypeptide_motif	209	219	49.6	+	.	Name=1;ID=1-988-phiX174;pvalue=1.09e-05;sequence=TGTCAAAAACT;
-phiX174	fimo	polypeptide_motif	210	220	40.8	+	.	Name=1;ID=1-1810-phiX174;pvalue=8.33e-05;sequence=GTCAAAAACTG;
-phiX174	fimo	polypeptide_motif	213	223	59.7	+	.	Name=1;ID=1-404-phiX174;pvalue=1.06e-06;sequence=AAAAACTGACG;
-phiX174	fimo	polypeptide_motif	223	233	 42	+	.	Name=1;ID=1-1654-phiX174;pvalue=6.36e-05;sequence=GCGTTGGATGA;
-phiX174	fimo	polypeptide_motif	225	235	61.4	+	.	Name=1;ID=1-349-phiX174;pvalue=7.16e-07;sequence=GTTGGATGAGG;
-phiX174	fimo	polypeptide_motif	227	237	40.3	+	.	Name=1;ID=1-1874-phiX174;pvalue=9.32e-05;sequence=TGGATGAGGAG;
-phiX174	fimo	polypeptide_motif	228	238	49.9	+	.	Name=1;ID=1-947-phiX174;pvalue=1.01e-05;sequence=GGATGAGGAGA;
-phiX174	fimo	polypeptide_motif	229	239	 45	+	.	Name=1;ID=1-1370-phiX174;pvalue=3.16e-05;sequence=GATGAGGAGAA;
-phiX174	fimo	polypeptide_motif	230	240	44.8	+	.	Name=1;ID=1-1395-phiX174;pvalue=3.33e-05;sequence=ATGAGGAGAAG;
--- a/test-data/output.memepsp	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
->BBP_PIEBR 20 scaledmin = 0.1 scaledmax = 0.9
-0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0.006488825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
->ICYA_MANSE 20 scaledmin = 0.1 scaledmax = 0.9
-0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0.005878511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
->LACB_BOVIN 20 scaledmin = 0.1 scaledmax = 0.9
-0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0.006284916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
--- a/test-data/phiX.fasta	Wed Apr 25 12:13:08 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
->phiX174
-GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTT
-GATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAA
-ATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTG
-TCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTA
-GATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATC
-TGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTT
-TCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTT
-CGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCT
-TGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCG
-TCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTAC
-GGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTA
-CGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCAGAAGGAG
-TGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACT
-AAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC
-CCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCA
-TCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGAC
-TCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA
-CTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAA
-GGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTT
-GGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACA
-ACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGC
-TCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTT
-TCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC
-ATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCGTGATGTTATTTCTTCATTTGGAGGTAAAAC
-CTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTT
-GATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGC
-CGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGAC
-TAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTG
-TATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGT
-TTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGA
-AGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGAT
-TATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCGTTT
-ATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGAGTGTGAGGTTATAAC
-GCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGC
-TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGT
-TCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTA
-TATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTG
-TCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGC
-CTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTG
-AATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGC
-CGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGT
-TTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTG
-CTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAA
-AGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCT
-GGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTG
-GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGA
-TAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTAT
-CTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGG
-TTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
-GATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGAC
-CAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTA
-TGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCA
-AACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGAC
-TTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTT
-CTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGA
-TACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCG
-TCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTT
-CTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTAT
-TGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC
-ATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATG
-TTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGA
-ATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGG
-GACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCC
-CTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATT
-GCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTACTATTCAGCGTTTGATGAATGCAATGCGACAG
-GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTT
-ATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCG
-CAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGC
-CGTCTTCATTTCCATGCGGTGCATTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTC
-GTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
-CGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAG
-CCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA
-TGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACT
-TCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTG
-TCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGC
-AGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACC
-TGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCA
-