# HG changeset patch # User iuc # Date 1752528806 0 # Node ID faa378fa0c8198f692cea0fe5f129e1906e33123 # Parent 7ce0fe11b411ed692f1f645a842f2b7d03cb5c8d planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/meme commit 89ee0af6e955ff964b7984d77ad536e0a9154278 diff -r 7ce0fe11b411 -r faa378fa0c81 macros.xml --- a/macros.xml Thu Aug 29 10:20:10 2024 +0000 +++ b/macros.xml Mon Jul 14 21:33:26 2025 +0000 @@ -1,6 +1,6 @@ 0 - 5.5.6 + 5.5.8 23.0 diff -r 7ce0fe11b411 -r faa378fa0c81 meme.xml --- a/meme.xml Thu Aug 29 10:20:10 2024 +0000 +++ b/meme.xml Mon Jul 14 21:33:26 2025 +0000 @@ -18,8 +18,12 @@ -maxsize 1000000 #if str( $options_type.options_type_selector ) == 'advanced': -sf '${ str( $options_type.sf ).replace( " ", "_" ) }' - -${options_type.alphabet_type.alphabet_type_selector} - -mod '${options_type.mod_type.mod_type_selector}' + #if str( $options_type.alphabet_type.alphabet_type_selector ) != 'alph': + -${options_type.alphabet_type.alphabet_type_selector} + #end if + #if str( $options_type.alphabet_type.alphabet_type_selector ) != 'alph': + -mod '${options_type.mod_type.mod_type_selector}' + #end if -nmotifs '${options_type.nmotifs}' -wnsites '${options_type.wnsites}' #if $options_type.evt < float('inf'): @@ -54,6 +58,8 @@ #end if #if str( $options_type.alphabet_type.alphabet_type_selector ) == 'dna': ${options_type.alphabet_type.revcomp} ${options_type.alphabet_type.pal} + #elif str( $options_type.alphabet_type.alphabet_type_selector ) == 'alph': + -alph '${options_type.alphabet_type.alphabet_file}' #end if -maxiter '${options_type.maxiter}' -distance '${options_type.distance}' @@ -94,6 +100,7 @@ + @@ -185,6 +192,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -255,7 +311,7 @@ - + @@ -285,7 +341,7 @@ - + @@ -293,16 +349,40 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + .. class:: warningmark **WARNING: This tool is only available for non-commercial use. Use for educational, research and non-profit purposes is permitted. diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/alphabet.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/alphabet.txt Mon Jul 14 21:33:26 2025 +0000 @@ -0,0 +1,13 @@ +ALPHABET "DNA with covalent modifications" DNA-LIKE + +# Core uppercase symbols +A "Adenine" 8510A8 ~ T "Thymine" A89610 +C "Cytosine" A50026 ~ G "Guanine" 313695 + +# Covalent modifications +m "5-Methylcytosine" D73027 ~ 1 "Guanine:5-Methylcytosine" 4575B4 +h "5-Hydroxymethylcytosine" F46D43 ~ 2 "Guanine:5-Hydroxymethylcytosine" 74ADD1 +f "5-Formylcytosine" FDAE61 ~ 3 "Guanine:5-Formylcytosine" ABD9E9 +c "5-Carboxylcytosine" FEE090 ~ 4 "Guanine:5-Carboxylcytosine" E0F3F8 +a "N6-methyladenine" 8510A8 ~ t "Thymine_lowercase" 756BB1 +g "modified_g" 00897B ~ 5 "cytosine_lowercase" 53698A diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_input_m.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/meme_input_m.fasta Mon Jul 14 21:33:26 2025 +0000 @@ -0,0 +1,66 @@ +>chr21_19617074_19617124_+ +AAAAATTATTACTAGGGAGGGGGCCGGAACCTCGGGACGTGGGTATATAA +>chr21_26934381_26934431_+ +GCGCCTGGTCGGTTATGAGTCACAAGTGAGTTATAAAAGGGTCGCACGTT +>chr21_28217753_28217803_- +CAAAGGGGAGGAGTGGGGTGGGGGTGGGGGTTTCACTGGTmCACTATAAA +>chr21_31710037_31710087_- +AACACCCAGGTTTCTGAGTATATAATCGCCGCACCAAAGAATTTAATTTT +>chr21_31744582_31744632_- +CCmAGGTCTAAGAGCATATATAACTTGGAGTCCAGACTATGACATTCAAA +>chr21_31768316_31768366_+ +AACGTATATAAATGGTCCTGTCCAGATGTGGCATGCAAACTmAGAATCTT +>chr21_31914206_31914256_- +TGACACCCACTACTTAGAGTATAAAATCATTCTGAGAAGTTAGAGACACC +>chr21_31933633_31933683_- +TCAGAGTATATATAAATGTTCCTGTCCAGTCACAGTCACCAAACTGACCT +>chr21_31962741_31962791_- +ACATATAACTCAGGTTGGATAAAATAATTTGTACAAATCAGGAGAGTCAA +>chr21_31964683_31964733_+ +TCTGATTCACTGAGGCATATAAAAGGCCCTCTGCGGAGAAGTGTCCATAC +>chr21_31973364_31973414_+ +aaacttaaaactctataaacttaaaactCTAGAATCTGATCCTGCTATAC +>chr21_31992870_31992920_+ +CTCATACACTATTGAAGATGTATAAAATTTCATTTGCAGATGGTGACATT +>chr21_32185595_32185645_- +TCACCACCCACCAGAGCTGGGATATATAAAGAAGGTTCTGAGACTAGGAA +>chr21_32202076_32202126_- +TGCCCACCAGCTTGAGGTATAAAAAGCCCTGTACGGGAAGAGACCTTCAT +>chr21_32253899_32253949_- +AGCCCCACCCACCAGCAAGGATATATAAAAGCTCAGGAGTCTGGAGTGAC +>chr21_32410820_32410870_- +TCTACCCCACTAATCACTGAGGATGTATAAAAGTCCCAGGGAAGCTGGTG +>chr21_36411748_36411798_- +ATAGTTCTGTATAGTTTCAGTTGGCATCtaaaaattatataactttattt +>chr21_37838750_37838800_- +gatggttttataaggggcctcaccctcggctcagccctcattcttctcct +>chr21_45705687_45705737_+ +CCGGGGCGGAGCGGCCTTTGCTCTTTGCGTGGTCGCGGGGGTATAACAGC +>chr21_45971413_45971463_- +CAGGCCCTGGGCATATAAAAGCCCCAGCAGCCAACAGGctcacacacaca +>chr21_45978668_45978718_- +CAGAGGGGTATAAAGGTTCCGACCACTCAGAGGCCTGGCACGAtcactca +>chr21_45993530_45993580_+ +CCAAGGAGGAGTATAAAAGCCCCACAAACCCGAGCACCTCACTCACTCGC +>chr21_46020421_46020471_+ +GAGACATATAAAAGCCAACATCCCTGAGCACCTAACACACGGactcactc +>chr21_46031920_46031970_+ +GGAAAATACCCAGGGAGGGTATAAAACCTCAGCAGCCAGGGCACACAAAC +>chr21_46046964_46047014_+ +ACAAGGCCAGGAGGGGTATAAAAGCCTGAGAGCCCCAAGAACctcacaca +>chr21_46057197_46057247_+ +ATTGCTGAGTCTCCTGCTGGGAAAACACAGGCCCTGGGCATATAAAAGCC +>chr21_46086869_46086919_- +GACAGGTGTGCTTCTGTGCTGTGGGGATGCCTGGGCCCAGGTATAAAGGC +>chr21_46102103_46102153_- +AGGTGTGTGCTTCTGTGCTGTGGGGATGCCTGGGTCCAGGTATAAAGGCT +>chr21_47517957_47518007_+ +CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGmGG +>chr21_47517957_47518007_+ +CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGCGG +>chr21_47517957_47518007_+ +CCTGGCGGCGGGGCGGGTCAGGCCGGCGGGGCGGGGTATAAAGGGGGCGG +>chr21_47575506_47575556_- +TGAGAAGCCGGTGGGGAGGTGmTGCCGGTGAGCGTATAAAGGCCCTGGCG +>chr21_47575506_47575556_- +TGAGAAGCmGGTGGGGAGGTGCTGCCGGTGAGCGTATAAAGGCCCTGGCG diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_custom.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/meme_output_custom.html Mon Jul 14 21:33:26 2025 +0000 @@ -0,0 +1,276 @@ + "options": { + "mod": "zoops", + "revcomp": false, + "nmotifs": 1, + "objfun": "E-value of product of p-values", + "spfun": "E-value of product of p-values", + "minw": 8, + "maxw": 50, + "minsites": 2, + "maxsites": 30, + "wnsites": 0.8, + "spmap": "uni", + "spfuzz": 0.5, + "searchsize": 1500, + "maxsize": 1000000, + "norand": "no", + "csites": 1000, + "hsfrac": 0, + "prior": "dirichlet", + "b": 0.01, + "maxiter": 50, + "distance": 0.001, + "wg": 11, + "ws": 1, + "noendgaps": false, + "substring": true, + "seed": 0, + "brief": 1000 + }, + "alphabet": { + "name": "DNA with covalent modifications", + "like": "dna", + "ncore": 16, + "symbols": [ + { + "symbol": "A", + "name": "Adenine", + "colour": "8510A8", + "complement": "T" + }, { + "symbol": "C", + "name": "Cytosine", + "colour": "A50026", + "complement": "G" + }, { + "symbol": "G", + "name": "Guanine", + "colour": "313695", + "complement": "C" + }, { + "symbol": "T", + "name": "Thymine", + "colour": "A89610", + "complement": "A" + }, { + "symbol": "a", + "name": "N6-methyladenine", + "colour": "8510A8", + "complement": "t" + }, { + "symbol": "c", + "name": "5-Carboxylcytosine", + "colour": "FEE090", + "complement": "4" + }, { + "symbol": "f", + "name": "5-Formylcytosine", + "colour": "FDAE61", + "complement": "3" + }, { + "symbol": "g", + "name": "modified_g", + "colour": "00897B", + "complement": "5" + }, { + "symbol": "h", + "name": "5-Hydroxymethylcytosine", + "colour": "F46D43", + "complement": "2" + }, { + "symbol": "m", + "name": "5-Methylcytosine", + "colour": "D73027", + "complement": "1" + }, { + "symbol": "t", + "name": "Thymine_lowercase", + "colour": "756BB1", + "complement": "a" + }, { + "symbol": "1", + "name": "Guanine:5-Methylcytosine", + "colour": "4575B4", + "complement": "m" + }, { + "symbol": "2", + "name": "Guanine:5-Hydroxymethylcytosine", + "colour": "74ADD1", + "complement": "h" + }, { + "symbol": "3", + "name": "Guanine:5-Formylcytosine", + "colour": "ABD9E9", + "complement": "f" + }, { + "symbol": "4", + "name": "Guanine:5-Carboxylcytosine", + "colour": "E0F3F8", + "complement": "c" + }, { + "symbol": "5", + "name": "cytosine_lowercase", + "colour": "53698A", + "complement": "g" + }, { + "symbol": "?", + "equals": "ACGTacfghmt12345" + } + ] + }, + "background": { + "source": "--sequences--", + "order": 0, + "freqs": [ + 0.263, 0.2, 0.249, 0.189, 0.0297, 0.027, 0.00066, 0.00726, + 0.00066, 0.00396, 0.0277, 0.00066, 0.00066, 0.00066, 0.00066, + 0.00066 + ] + }, + "sequence_db": { + "primary_source": "Galaxy_FASTA_Input", + "primary_count": 30, + "primary_positions": 1500, + "control_source": "--none--", + "control_count": 0, + "control_positions": 0, + "freqs": [ + 0.265, 0.201, 0.251, 0.19, 0.0293, 0.0267, 0, 0.00667, 0, 0.00333, + 0.0273, 0, 0, 0, 0, 0 + ], + "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": "taCaaACAGtataactctcac", + "alt": "MEME-1", + "len": 21, + "nsites": 5, + "evalue": "4.6e-028", + "ic": 55.7, + "re": 68.0, + "llr": 236, + "bt": 7.73664, \ No newline at end of file diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_custom.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/meme_output_custom.txt Mon Jul 14 21:33:26 2025 +0000 @@ -0,0 +1,61 @@ +******************************************************************************** +MEME - Motif discovery tool +******************************************************************************** +MEME version 5.5.8 (Release date: Thu May 15 15:01:46 2025 -0700) + +For further information on how to interpret these results please access https://meme-suite.org/meme. +To get a copy of the MEME Suite software please access https://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. +******************************************************************************** + + +******************************************************************************** +ALPHABET "DNA with covalent modifications" DNA-LIKE +******************************************************************************** +A "Adenine" 8510A8 ~ T "Thymine" A89610 +C "Cytosine" A50026 ~ G "Guanine" 313695 +a "N6-methyladenine" 8510A8 ~ t "Thymine_lowercase" 756BB1 +c "5-Carboxylcytosine" FEE090 ~ 4 "Guanine:5-Carboxylcytosine" E0F3F8 +f "5-Formylcytosine" FDAE61 ~ 3 "Guanine:5-Formylcytosine" ABD9E9 +g "modified_g" 00897B ~ 5 "cytosine_lowercase" 53698A +h "5-Hydroxymethylcytosine" F46D43 ~ 2 "Guanine:5-Hydroxymethylcytosine" 74ADD1 +m "5-Methylcytosine" D73027 ~ 1 "Guanine:5-Methylcytosine" 4575B4 +? = ACGTacfghmt12345 +******************************************************************************** + +******************************************************************************** +TRAINING SET +******************************************************************************** +PRIMARY SEQUENCES= Galaxy_FASTA_Input +CONTROL SEQUENCES= --none-- +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 +******************************************************************************** \ No newline at end of file diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_custom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/meme_output_custom.xml Mon Jul 14 21:33:26 2025 +0000 @@ -0,0 +1,946 @@ + + +61 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +443 +-897 +-897 +-897 +-897 +-897 + + +-897 +0 +-31 +-897 +375 +-897 +-897 +-897 +-897 +-897 +285 +-897 +-897 +-897 +-897 +-897 + + +-897 +100 +-897 +-897 +375 +-897 +-897 +-897 +-897 +-897 +285 +-897 +-897 +-897 +-897 +-897 + + +-897 +0 +-897 +8 +433 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +61 +-897 +-897 +-897 +433 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +61 +-897 +-897 +-897 +375 +-897 +-897 +478 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +100 +-897 +-897 +-897 +288 +-897 +478 +-897 +-897 +285 +-897 +-897 +-897 +-897 +-897 + + +61 +-897 +-897 +-897 +-897 +-897 +-897 +478 +-897 +-897 +385 +-897 +-897 +-897 +-897 +-897 + + +-897 +0 +-31 +-897 +275 +288 +-897 +478 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-39 +-897 +-31 +-897 +-897 +288 +-897 +-897 +-897 +-897 +385 +-897 +-897 +-897 +-897 +-897 + + +-897 +0 +-897 +-897 +375 +388 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-31 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +485 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-31 +-897 +375 +388 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +507 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +275 +488 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +275 +388 +-897 +-897 +-897 +-897 +385 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +-897 +447 +-897 +-897 +-897 +-897 +385 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +375 +-897 +-897 +-897 +-897 +-897 +443 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +375 +447 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +375 +-897 +-897 +478 +-897 +-897 +385 +-897 +-897 +-897 +-897 +-897 + + +-897 +-897 +-897 +-897 +275 +388 +-897 +478 +-897 +-897 +285 +-897 +-897 +-897 +-897 +-897 + + + + + + +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.600000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.200000 +0.200000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.400000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.200000 +0.000000 +0.200000 +0.600000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.400000 +0.000000 +0.000000 +0.000000 +0.600000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.400000 +0.000000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.200000 +0.000000 +0.200000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.200000 +0.200000 +0.000000 +0.200000 +0.200000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.200000 +0.000000 +0.200000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.200000 +0.000000 +0.000000 +0.400000 +0.400000 +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.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.800000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.000000 +0.200000 +0.000000 +0.400000 +0.400000 +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 +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.200000 +0.800000 +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.200000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.600000 +0.000000 +0.000000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.000000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.600000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.000000 +0.000000 +0.000000 +0.400000 +0.600000 +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.400000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.400000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + +0.000000 +0.000000 +0.000000 +0.000000 +0.200000 +0.400000 +0.000000 +0.200000 +0.000000 +0.000000 +0.200000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 + + + + +[tA][aCGt][Cat][aCT][aA][Aag][Ccgt][Atg][CGacg][tAGc][acC][tG][acG]a[ca][cta][ct][ta][ca][atg][cagt] + + + +gatggttt + + + + + + + + + + + + + + + + + + + + + + + +ctcagccctc + + +AGTTGGCATC + + + + + + + + + + + + + + + + + + + + + + + +t + + +aaac + + + + + + + + + + + + + + + + + + + + + + + +actCTAGAAT + + +AAGCCCCAGC + + + + + + + + + + + + + + + + + + + + + + + +a + + +ATCCCTGAGC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_test1.html --- a/test-data/meme_output_test1.html Thu Aug 29 10:20:10 2024 +0000 +++ b/test-data/meme_output_test1.html Mon Jul 14 21:33:26 2025 +0000 @@ -1,73 +1,124 @@ - - - -
-
-
MEME version
- - (Release date: )
-
- -
-
-
Command line
- - -
-
- - - + "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 + } + ] + }, \ No newline at end of file diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_test1.txt --- a/test-data/meme_output_test1.txt Thu Aug 29 10:20:10 2024 +0000 +++ b/test-data/meme_output_test1.txt Mon Jul 14 21:33:26 2025 +0000 @@ -1,39 +1,207 @@ +model: mod= zoops nmotifs= 1 evt= inf +objective function: em= E-value of product of p-values + starts= E-value of product of p-values +width: minw= 8 maxw= 50 +nsites: minsites= 2 maxsites= 30 wnsites= 0.8 +theta: spmap= pam spfuzz= 120 +em: prior= megap b= 7500 maxiter= 50 + distance= 1e-05 +trim: wg= 11 ws= 1 endgaps= yes +data: n= 1500 N= 30 +sample: seed= 0 hsfrac= 0 + searchsize= 1500 norand= no csites= 1000 +Dirichlet mixture priors file: prior30.plib +Letter frequencies in dataset: +A 0.294 C 0.231 D 0 E 0 F 0 G 0.257 H 0 I 0 K 0 +L 0 M 0 N 0 P 0 Q 0 R 0 S 0 T 0.217 V 0 +W 0 Y 0 +Background letter frequencies (from file dataset with add-one prior applied): +A 0.291 C 0.229 D 0.000658 E 0.000658 F 0.000658 G 0.255 H 0.000658 I 0.000658 K 0.000658 +L 0.000658 M 0.000658 N 0.000658 P 0.000658 Q 0.000658 R 0.000658 S 0.000658 T 0.215 V 0.000658 +W 0.000658 Y 0.000658 +Background model order: 0 ******************************************************************************** -SUMMARY OF MOTIFS + + +******************************************************************************** +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 +-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- - Combined block diagrams: non-overlapping sites with p-value < 0.0001 + Motif GGGGTATAAAA MEME-1 block diagrams -------------------------------------------------------------------------------- -SEQUENCE NAME COMBINED P-VALUE MOTIF DIAGRAM +SEQUENCE NAME POSITION 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 +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 +-------------------------------------------------------------------------------- \ No newline at end of file diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_test1.xml --- a/test-data/meme_output_test1.xml Thu Aug 29 10:20:10 2024 +0000 +++ b/test-data/meme_output_test1.xml Mon Jul 14 21:33:26 2025 +0000 @@ -1,3 +1,924 @@ + +-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 + + + + + + +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 + + + + +[GA][GA][GC][GA]TATA[AT]AA + + + +AAGGCCAGGA + + + + + + + + + + + + + +GCCTGAGAGC + + +ACAGGCCCTG + + + + + + + + + + + + + +GCC + + +CAGGCCCTG + + + + + + + + + + + + + +GCCCCAGCAG + + +GATTCACTGA + + + + + + + + + + + + + +GGCCCTCTGC + + +CCAAGGA + + + + + + + + + + + + + +GCCCCACAAA + + +CCACCAGCTT + + + + + + + + + + + + + +AGCCCTGTAC + + +ATACCCAGGG + + + + + + + + + + + + + +CCTCAGCAGC + + +AATCACTGAG + + + + + + + + + + + + + +GTCCCAGGGA + + +CACCAGAGCT + + + + + + + + + + + + + +AGAAGGTTCT + + +CACTATTGAA + + + + + + + + + + + + + +TTTCATTTGC + + +GA + + + + + + + + + + + + + +GCCAACATCC + + +CCGGCGGGGC + + + + + + + + + + + + + +GGGGCGG + + +CAGA + + + + + + + + + + + + + +GTTCCGACCA + + +CCCACTACTT + + + + + + + + + + + + + +TCATTCTGAG + + +CACCAGCAAG + + + + + + + + + + + + + +GCTCAGGAGT + + +CAGGTCTAAG + + + + + + + + + + + + + +CTTGGAGTCC + + +CCTCGGGACG + + + + + + + + + + + + + + + + +CGTGGTCGCG + + + + + + + + + + + + + +GC + + + + + + + + + + + + + + + + +ATGGTCCTGT + + +GCTGCCGGTG + + + + + + + + + + + + + +GCCCTGGCG + + +AGTCACAAGT + + + + + + + + + + + + + +GGGTCGCACG + + +CCCAGGTTTC + + + + + + + + + + + + + +TCGCCGCACC + + +AGTTTCAGTT + + + + + + + + + + + + + +attatataac + + +TC + + + + + + + + + + + + + +AAATGTTCCT + + +TATAACTCAG + + + + + + + + + + + + + +TAATTTGTAC + + + diff -r 7ce0fe11b411 -r faa378fa0c81 test-data/meme_output_test2.html --- a/test-data/meme_output_test2.html Thu Aug 29 10:20:10 2024 +0000 +++ b/test-data/meme_output_test2.html Mon Jul 14 21:33:26 2025 +0000 @@ -1,3 +1,9508 @@ + * 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 available 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("Cannot refine a help popup when one is not shown!"); + var pop = lookup_help_popup(popup_id); + var act_id = popup_id + '_act'; + var activator = document.getElementById(act_id); + help_popup(activator, popup_id); + } + 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, is_new) { + var th = document.createElement("th"); + if (node) th.appendChild(node); + if (help_topic && help_topic !== "") th.appendChild(help_button(help_topic)); + if (is_new && is_new !== "") { + var br = document.createElement("span"); + br.innerHTML = "
"; + th.appendChild(br); + var new_icon = document.createElement("img"); + new_icon.src = new_icon_src; + new_icon.alt = "NEW"; + th.appendChild(new_icon); + } + 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, is_new) { + 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, is_new); +} + +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; +} + +// +// Function to create an HTML paragraph describing the +// MEME Suite background model source. +// +function make_background_source(title, source, text) { + var paraNode = document.createElement("P"); + var titleNode = document.createElement("B"); + var textNode1 = document.createTextNode("\u00A0\u00A0\u00A0\u00A0" + title + ": "); + titleNode.appendChild(textNode1); + var source_text = ((source == "--motif--") ? "the (first) motif file" : (source == "--nrdb--") ? "an old version of the NCBI non-redundant database" : (source == "--uniform--") ? "the uniform model" : (source == "--query--") ? "the query file" : (source == "--sequences--") ? "built from the (primary) sequences" : (source == "--control--") ? "built from the control (negative) sequences" : ((source == "--negatives--") ? "built from the negative (control) sequences" : "the file '" + source + "'")); + if (text) { return source_text; } + var textNode2 = document.createTextNode(source_text); + paraNode.appendChild(titleNode); + paraNode.appendChild(textNode2); + return paraNode; +} + +// Function to create a help button +function make_help_button(container, help_topic) { + container.appendChild(help_button(help_topic)); +} + +// Function to toggle display. +function change_display(id) { + var element=document.getElementById(id); + element.style.display=(element.style.display=='none') ? element.style.display='inline' : element.style.display='none'; +} + + + + + + + + + + + + + + + + + + + + +
+

MEME results in plain text format.

+
[ + close ]
+
+
+

MEME results in XML format.

+
[ + close ]
+
+
+

Help poup.

+
[ + close ]
+
+ +
+

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 greyed out.

+

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.

+

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).

+
[ + close ]
+
+
+

The number of sites contributing to the construction of the motif.

+
[ + close ]
+
+
+

The width of the motif. Each motif describes a pattern of a fixed + width, as no gaps are allowed in MEME motifs.

+
[ + close ]
+
+
+ + +
+
+ +
[ + close ]
+
+
+

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.).

+
[ + close ]
+
+
+

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 motif. + This is equal relative entropy of the motif relative to a uniform + background frequency model.

+
[ + close ]
+
+
+

The relative entropy of the motif.

+ +

re = llr / (sites * ln(2))

+
[ + close ]
+
+
+

The Bayes Threshold.

+
[ + close ]
+
+
+

The strand used for the motif site.

+
+
+
+
The motif site was found in the sequence as it was supplied.
+
-
+
The motif site was found in the reverse complement of the supplied sequence.
+
+
[ + close ]
+
+
+

The position in the sequence where the motif site starts. If a motif + started right at the beginning of a sequence it would be described as + starting at position 1.

+
[ + close ]
+
+
+

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.

+
[ + close ]
+
+
+

A motif site with the 10 flanking letters on either side.

+

When the site is not on the given strand then the site + and both flanks are reverse complemented so they align.

+
[ + close ]
+
+ +
+

The name of the sequences as given in the FASTA file.

+

The number to the left of the sequence name is the position + of the sequence in the input sequence file.

+
[ + close ]
+
+ +
+

These are the motif sites predicted by MEME and used to build the motif.

+

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.

+
[ + close ]
+
+ +
+

These are the motif sites predicted by MEME plus + any additional sites detected using a motif scanning + algorithm.

+

These MEME sites are shown in solid color and + additional scanned sites are shown greyed out. + Hovering the cursor over a site will reveal details about the site. + Only sequences containing a predicted or scanned motif site are shown.

+

The scanned sites are predicted using a + log-odds scoring matrix constructed from the MEME sites. + Only scanned sites with position p-values less + than 0.0001 are shown.

+
[ + close ]
+
+ +
+

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.

+
[ + close ]
+
+ +
+

This is the combined match p-value.

+

The combined match p-value is defined as the probability that a + random sequence (with the same length and conforming to the background) + would have position p-values such that the product is smaller + or equal to the value calculated for the sequence under test.

+

The position p-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.

+

Hovering your mouse over a motif site in the motif location + block diagram will show its position p-value and other information + about the site.

+
[ + close ]
+
+ +
+

Use this button to download the "Motif Locations" block diagrams + as a PDF image suitable for publication. +

+

+ Only the block diagrams currently visible in the inner scrolling + window (below) will be included in the image, and the numbers to + the left of each sequence name will not be included in the image. + You can change the size of the inner scrolling by moving the bottom + of the main document window up and down. You can display more + diagrams by making your browser's font size smaller. +

+
[ + close ]
+
+ +
+

Use this button to download the "Motif Locations" block diagrams + as a SVG image use in HTML documents. +

+

+ Only the block diagrams currently visible in the inner scrolling + window (below) will be included in the image, and the numbers to + the left of each sequence name will not be included in the image. + You can change the size of the inner scrolling by moving the bottom + of the main document window up and down. You can display more + diagrams by making your browser's font size smaller. +

+
[ + close ]
+
+ +
+

+ This button will only function if your browser was + connected to the internet when you loaded this page. +

+

+ To use this button, make sure your browser is connected to the internet + and then reload this page. (You may need to do a "hard refresh" to clear the cache. + On Mac, hold down the Shift key and click the Reload button. + On Windows/Linux, hold down Ctrl and press F5.) +

+
[ + close ]
+
+ +
+

This diagram shows the location of motif sites.

+

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 p-value of the site, truncated at + the height for a p-value of 1e-10.

+

For complementable alphabets (like DNA), sites on the + positive strand are shown above the line, + sites on the negative strand are shown below.

+

Placing the cursor + over a motif site will reveal more information about the site + including its position p-value. (See the help + for the p-value column for an explanation of position + p-values.)

+
[ + close ]
+
+ +
+

The name of the file(s) of sequences input to MEME.

+
[ + close ]
+
+
+

The position specific priors file used by MEME to find the motifs.

+
[ + close ]
+
+
+

The alphabet used by the sequences.

+
[ + close ]
+
+
+

The number of FASTA sequences provided in this input file.

+
[ + close ]
+
+
+

The number of characters in the sequences provided in this FASTA input file.

+
[ + close ]
+
+ +
+

The name of the alphabet symbol.

+
[ + close ]
+
+
+

The frequency of the alphabet symbol in the dataset.

+
[ + close ]
+
+
+

The frequency of the alphabet symbol as defined by the background model.

+
[ + close ]
+
+ + +
+
+
+ + +
+
+ + + +
+ + + + + +
Motif1
p-value8.23e-7
Start23
End33
+
+ +
+
Scanned Site
+ + + + + + +
Motif1
p-value8.23e-7
Start23
End33
+
+ +
+
+
+ . +
+
+
+
+
+
+ E-value: + +
+
+
+ Site Count: + +
+
+
+ Width: + +
+
+
+
+ +
+
+ StandardReverse + Complement +
+
+
+ Log Likelihood Ratio: + +
+
+
+ Information Content: + +
+
+
+ Relative Entropy: + +
+
+
+ Bayes Threshold: + +
+
+
+
+
+ +
+ + + +
+ +

+ For further information on how to interpret these results please access + https://meme-suite.org/meme/doc/meme.html.
+ To get a copy of the MEME software please access + https://meme-suite.org. +

+

+
+ +
+ Discovered Motifs +   |   + Motif Locations +   |   + Inputs & Settings +   |   + Program Information +   |   + Results in Text Format  +   |   + Results in XML Format  + +
+ + +

Your browser does not support canvas!

+ +

Discovered Motifs

+
+

Please wait... Loading...

+

If the page has fully loaded and this message does not disappear then an error may have occurred.

+
+

Motif Locations

+
+

Please wait... Loading...

+

If the page has fully loaded and this message does not disappear then an error may have occurred.

+
+

Inputs & Settings

+
+

Sequences

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Role
Source
PSP Source
Alphabet
Sequence Count
Total Size
Primary Sequences
Control Sequences
+ +

Background Model

+ + + + +

Other Settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Motif Site Distribution + ZOOPS: Zero or one site per sequence + OOPS: Exactly one site per sequence + ANR: Any number of sites per sequence +
Objective Function
Starting Point Function
Site Strand Handling + This alphabet only has one strand + Sites must be on the given strand + Sites may be on either strand +
Maximum Number of Motifs
Motif E-value Threshold
Minimum Motif Width
Maximum Motif Width
Minimum Sites per Motif
Maximum Sites per Motif
Bias on Number of Sites
Sequence Prior + Simple Dirichlet + Dirichlet Mixture + Mega-weight Dirichlet Mixture + Mega-weight Dirichlet Mixture Plus + Add One +
Sequence Prior Source
Sequence Prior Strength
EM Starting Point Source + From substrings in input sequences + From strings on command line (-cons) +
EM Starting Point Map Type + Uniform + Point Accepted Mutation +
EM Starting Point Fuzz
EM Maximum Iterations
EM Improvement Threshold
Maximum Search Size
Maximum Number of Sites for E-values
Trim Gap Open Cost
Trim Gap Extend Cost
End Gap Treatment + No cost + Same cost as other gaps +
+ + Show Advanced Settings + Hide Advanced Settings + +