From 4e68a7ea8d8c572eaa48d4018b4d7b8e14d80afa Mon Sep 17 00:00:00 2001 From: Michiel de Hoon Date: Thu, 3 Jan 2013 21:01:17 +0900 Subject: [PATCH] Making the different parsers work uniformly --- Bio/Motif/AlignAce.py | 15 +- Bio/Motif/MAST.py | 8 +- Bio/Motif/MEME.py | 37 ++- Bio/Motif/TRANSFAC.py | 21 +- Bio/Motif/__init__.py | 91 +++--- Doc/Tutorial.tex | 6 +- Tests/test_Motif.py | 664 +++++++++++++++++++++--------------------- 7 files changed, 433 insertions(+), 409 deletions(-) diff --git a/Bio/Motif/AlignAce.py b/Bio/Motif/AlignAce.py index 429d9e78fb5..6f1b3b8e094 100644 --- a/Bio/Motif/AlignAce.py +++ b/Bio/Motif/AlignAce.py @@ -11,11 +11,20 @@ from Bio.Seq import Seq -class Record(object): +class Record(list): def __init__(self): - self.motifs=[] self.parameters = None + @property + def motifs(self): + import warnings + warnings.warn("""\ +The .motifs attribute is now obsolete, and will be deprecated and removed +in a future release of Biopython. This class now inherits from list, so +instead of record.motifs[i], please use record[i]. +""", PendingDeprecationWarning) + return self + def read(handle): """read(handle)""" @@ -50,7 +59,7 @@ def read(handle): motif.score = float(line.split()[-1]) motif.number = number motif.mask = mask - record.motifs.append(motif) + record.append(motif) elif len(line.split("\t"))==4: seq = Seq(line.split("\t")[0],IUPAC.unambiguous_dna) instances.append(seq) diff --git a/Bio/Motif/MAST.py b/Bio/Motif/MAST.py index 4792142eee4..3fe68042966 100644 --- a/Bio/Motif/MAST.py +++ b/Bio/Motif/MAST.py @@ -5,17 +5,17 @@ # as part of this package. from Bio.Alphabet import IUPAC -from Bio.Motif.MEME import MEMEMotif +from Bio.Motif import MEME class Record(object): """The class for holding the results from a MAST run. A MAST.Record holds data about matches between motifs and sequences. - The motifs held by the Record are objects of the class MEMEMotif. + The motifs held by the Record are objects of the class MEME.Motif. Methods: - get_motif_by_name (motif_name): returns a MEMEMotif with the given + get_motif_by_name (motif_name): returns a MEME.Motif with the given name. """ @@ -82,7 +82,7 @@ def __read_database_and_motifs(record, handle): if not line.strip(): break words = line.strip().split() - motif = MEMEMotif(record.alphabet) + motif = MEME.Motif(record.alphabet) motif.name = words[0] motif.length = int(words[1]) # words[2] contains the best possible match diff --git a/Bio/Motif/MEME.py b/Bio/Motif/MEME.py index 76bfbefb90c..3a3418dcb62 100644 --- a/Bio/Motif/MEME.py +++ b/Bio/Motif/MEME.py @@ -6,7 +6,7 @@ from Bio.Alphabet import IUPAC from Bio import Seq -from Bio.Motif import Motif +from Bio.Motif import Motif as BaseMotif def read(handle): @@ -17,12 +17,12 @@ def read(handle): >>> f = open("meme.output.txt") >>> from Bio.Motif import MEME >>> record = MEME.read(f) - >>> for motif in record.motifs: + >>> for motif in record: ... for instance in motif.instances: ... print instance.motif_name, instance.sequence_name, instance.strand, instance.pvalue """ - record = MEMERecord() + record = Record() __read_version(record, handle) __read_datafile(record, handle) __read_alphabet(record, handle) @@ -39,12 +39,12 @@ def read(handle): length, num_occurrences, evalue = __read_motif_statistics(line) name = __read_motif_name(handle) instances = __read_motif_sequences(handle, name, alphabet, length, revcomp) - motif = MEMEMotif(alphabet, instances) + motif = Motif(alphabet, instances) motif.length = length motif.num_occurrences = num_occurrences motif.evalue = evalue motif.name = name - record.motifs.append(motif) + record.append(motif) __skip_unused_lines(handle) try: line = handle.next() @@ -57,7 +57,7 @@ def read(handle): return record -class MEMEMotif(Motif): +class Motif(BaseMotif): """A subclass of Motif used in parsing MEME (and MAST) output. This subclass defines functions and data specific to MEME motifs. @@ -68,7 +68,7 @@ class MEMEMotif(Motif): (DEPRECATION PENDING) """ def __init__(self, alphabet=None, instances=None): - Motif.__init__(self, alphabet, instances) + BaseMotif.__init__(self, alphabet, instances) self.evalue = 0.0 def _numoccurrences(self, number): @@ -91,7 +91,7 @@ def add_instance_from_values(self, name = 'default', pvalue = 1, sequence = 'ATA import warnings warnings.warn("This function is now obsolete, and will be deprecated and removed " "in a future release of Biopython.", PendingDeprecationWarning) - inst = MEMEInstance(sequence,self.alphabet) + inst = Instance(sequence,self.alphabet) inst._pvalue(pvalue) inst._seqname(name) inst._start(start) @@ -115,7 +115,7 @@ def _evalue(self, evalue): self.evalue = evalue -class MEMEInstance(Seq.Seq): +class Instance(Seq.Seq): """A class describing the instances of a MEME motif, and the data thereof. """ def __init__(self,*args,**kwds): @@ -173,23 +173,32 @@ def _length(self, length): self.length = length -class MEMERecord(object): +class Record(list): """A class for holding the results of a MEME run. - A MEMERecord is an object that holds the results from running + A Record is an object that holds the results from running MEME. It implements no methods of its own. """ def __init__(self): """__init__ (self)""" - self.motifs = [] self.version = "" self.datafile = "" self.command = "" self.alphabet = None self.sequences = [] + @property + def motifs(self): + import warnings + warnings.warn("""\ +The .motifs attribute is now obsolete, and will be deprecated and removed +in a future release of Biopython. This class now inherits from list, so +instead of record.motifs[i], please use record[i]. +""", PendingDeprecationWarning) + return self + def get_motif_by_name(self, name): - for m in self.motifs: + for m in self: if m.name == name: return m @@ -335,7 +344,7 @@ def __read_motif_sequences(handle, motif_name, alphabet, length, revcomp): strand = '+' sequence = words[4] assert len(sequence)==length - instance = MEMEInstance(sequence, alphabet) + instance = Instance(sequence, alphabet) instance.motif_name = motif_name instance.sequence_name = words[0] instance.start = int(words[1]) diff --git a/Bio/Motif/TRANSFAC.py b/Bio/Motif/TRANSFAC.py index 9c2c513fc19..92a898950e4 100644 --- a/Bio/Motif/TRANSFAC.py +++ b/Bio/Motif/TRANSFAC.py @@ -81,18 +81,27 @@ def __str__(self): return format(self, "transfac") -class Record(object): +class Record(list): """A Bio.Motif.TRANSFAC.Record stores the information in a TRANSFAC -matrix table. +matrix table. The record inherits from a list containing the individual +motifs. Attributes: o version: The version number, corresponding to the 'VV' field in the TRANSFAC file; - o motifs: The list of motifs. """ def __init__(self): self.version = None - self.motifs = [] + + @property + def motifs(self): + import warnings + warnings.warn("""\ +The .motifs attribute is now obsolete, and will be deprecated and removed +in a future release of Biopython. This class now inherits from list, so +instead of record.motifs[i], please use record[i]. +""", PendingDeprecationWarning) + return self def __str__(self): blocks = [] @@ -103,7 +112,7 @@ def __str__(self): // """ % self.version blocks.append(block) - for motif in self.motifs: + for motif in self: block = str(motif) blocks.append(block) text = "".join(blocks) @@ -119,7 +128,7 @@ def read(handle): line = line.strip() if line=='//': if motif is not None: - record.motifs.append(motif) + record.append(motif) motif = None status = None elif line=='XX': diff --git a/Bio/Motif/__init__.py b/Bio/Motif/__init__.py index 116f2cecd16..7193a5c6ea5 100644 --- a/Bio/Motif/__init__.py +++ b/Bio/Motif/__init__.py @@ -10,23 +10,11 @@ It also includes functionality for parsing AlignACE and MEME programs. """ from Bio.Motif._Motif import Motif -from Bio.Motif.AlignAce import read as _AlignAce_read -from Bio.Motif.MEME import read as _MEME_read -from Bio.Motif import Jaspar -from Bio.Motif.Thresholds import ScoreDistribution -from Bio.Alphabet import IUPAC -from Bio.Seq import Seq - - -def _from_pfm(handle): - return Motif()._from_jaspar_pfm(handle) - - -def _from_sites(handle): - return Motif()._from_jaspar_sites(handle) def create(instances, alphabet=None): + from Bio.Alphabet import IUPAC + from Bio.Seq import Seq for instance in instances: try: a = instance.alphabet @@ -52,13 +40,16 @@ def parse(handle,format): """Parses an output file of motif finding programs. Currently supported formats: - - AlignAce - - MEME - - You can also use single-motif formats, although the Bio.Motif.read() - function is simpler to use in this situation. - - jaspar-pfm - - jaspar-sites + - AlignAce: AlignAce output file format + - MEME: MEME output file motif + - TRANSFAC: TRANSFAC database file format + - pfm: JASPAR-style position-frequency matrix + - sites: JASPAR-style sites file + - jaspar-pfm: JASPAR-style position-frequency matrix [DEPRECATED] + - jaspar-sites: JASPAR-style sites file [DEPRECATED] + As files in the pfm and sites formats contain only a single motif, + it is easier to use Bio.Motif.read() instead of Bio.Motif.parse() + for those. For example: @@ -82,30 +73,38 @@ def parse(handle,format): GAGGCCGGGGAT CGACTCGTGCTTAGAAGG """ - if format in ('pfm', 'sites'): - yield Jaspar.read(handle, format) - elif format=="AlignAce": - record = _AlignAce_read(handle) - for m in record.motifs: - yield m + if format=="AlignAce": + from Bio.Motif import AlignAce + record = AlignAce.read(handle) + return record elif format=="MEME": - record = _MEME_read(handle) - for m in record.motifs: - yield m + from Bio.Motif import MEME + record = MEME.read(handle) + return record + elif format=="TRANSFAC": + from Bio.Motif import TRANSFAC + record = TRANSFAC.read(handle) + return record + elif format in ('pfm', 'sites'): + from Bio.Motif import Jaspar + motif = Jaspar.read(handle, format) elif format=="jaspar-pfm": - yield _from_pfm(handle) + motif = Motif()._from_jaspar_pfm(handle) elif format=="jaspar-sites": - yield _from_sites(handle) + motif = Motif()._from_jaspar_sites(handle) else: raise ValueError("Unknown format %s" % format) + # Treat the single-motif formats + motifs = [motif] + return motifs def read(handle,format): """Reads a motif from a handle using a specified file-format. This supports the same formats as Bio.Motif.parse(), but - only for files containing exactly one record. For example, - reading a pfm file: + only for files containing exactly one motif. For example, + reading a JASPAR-style pfm file: >>> from Bio import Motif >>> motif = Motif.read(open("Motif/SRF.pfm"), "pfm") @@ -128,32 +127,26 @@ def read(handle,format): ... ValueError: More than one motif found in handle - If however you want the first record from a file containing - multiple records this function would raise an exception (as + If however you want the first motif from a file containing + multiple motifs this function would raise an exception (as shown in the example above). Instead use: >>> from Bio import Motif - >>> motif = Motif.parse(open("Motif/alignace.out"),"AlignAce").next() + >>> motifs = Motif.parse(open("Motif/alignace.out"),"AlignAce") + >>> motif = motifs[0] >>> motif.consensus Seq('TCTACGATTGAG', IUPACUnambiguousDNA()) Use the Bio.Motif.parse(handle, format) function if you want to read multiple records from the handle. """ - iterator = parse(handle, format) - try: - first = iterator.next() - except StopIteration: - first = None - if first is None: + motifs = parse(handle, format) + if len(motifs)==0: raise ValueError("No motifs found in handle") - try: - second = iterator.next() - except StopIteration: - second = None - if second is not None: + if len(motifs) > 1: raise ValueError("More than one motif found in handle") - return first + motif = motifs[0] + return motif if __name__ == "__main__": diff --git a/Doc/Tutorial.tex b/Doc/Tutorial.tex index 58bbdf26f0e..97683da13ee 100644 --- a/Doc/Tutorial.tex +++ b/Doc/Tutorial.tex @@ -80,7 +80,7 @@ \author{Jeff Chang, Brad Chapman, Iddo Friedberg, Thomas Hamelryck, \\ Michiel de Hoon, Peter Cock, Tiago Antao, Eric Talevich, Bartek Wilczy\'{n}ski} -\date{Last Update -- 29 December 2012 (Biopython 1.60+)} +\date{Last Update -- 3 January 2013 (Biopython 1.60+)} %Hack to get the logo at the start of the HTML front page: %(hopefully this isn't going to be too wide for most people) @@ -11026,6 +11026,10 @@ \subsubsection*{JASPAR} GCCCATATATGG \end{verbatim} +\subsubsection*{MEME} + +\subsubsection*{TRANSFAC} + \subsection{Writing motifs} Speaking of exporting, let's look at export functions. We can export to fasta: %cont-doctest diff --git a/Tests/test_Motif.py b/Tests/test_Motif.py index 1e4fd762c6f..c752c79db00 100644 --- a/Tests/test_Motif.py +++ b/Tests/test_Motif.py @@ -62,340 +62,340 @@ def test_alignace_parsing(self): self.assertEqual(record.sequences[7], "SEQ8; M: CTCAATCGTAGA at 172") self.assertEqual(record.sequences[8], "SEQ9; M: CTCAATCGTAGA at 93") self.assertEqual(record.sequences[9], "SEQ10; M: CTCAATCGTAGA at 3") - self.assertEqual(len(record.motifs), 16) - self.assertEqual(record.motifs[0].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[0].instances), 11) - self.assertEqual(str(record.motifs[0].instances[0]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[1]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[2]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[3]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[4]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[5]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[6]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[7]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[8]), "TCTACGATTGAG") - self.assertEqual(str(record.motifs[0].instances[9]), "TCAAAGATAGAG") - self.assertEqual(str(record.motifs[0].instances[10]), "TCTACGATTGAG") - self.assertEqual(record.motifs[0].mask, (1,1,0,1,1,1,1,1,0,1,1,1)) - self.assertAlmostEqual(record.motifs[0].score, 57.9079) - self.assertEqual(record.motifs[1].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[1].instances), 22) - self.assertEqual(str(record.motifs[1].instances[0]), "GCGAAGGAAGCAGCGCGTGTG") - self.assertEqual(str(record.motifs[1].instances[1]), "GGCACCGCCTCTACGATTGAG") - self.assertEqual(str(record.motifs[1].instances[2]), "CAGAGCTTAGCATTGAACGCG") - self.assertEqual(str(record.motifs[1].instances[3]), "CTAATGAAAGCAATGAGAGTG") - self.assertEqual(str(record.motifs[1].instances[4]), "CTTGTGCCCTCTAAGCGTCCG") - self.assertEqual(str(record.motifs[1].instances[5]), "GAGCACGACGCTTTGTACCTG") - self.assertEqual(str(record.motifs[1].instances[6]), "CGGCACTTAGCAGCGTATCGT") - self.assertEqual(str(record.motifs[1].instances[7]), "CTGGTTTCATCTACGATTGAG") - self.assertEqual(str(record.motifs[1].instances[8]), "GGGCCAATAGCGGCGCCGGAG") - self.assertEqual(str(record.motifs[1].instances[9]), "GTGGAGTTATCTTAGTGCGCG") - self.assertEqual(str(record.motifs[1].instances[10]), "GAGAGGTTATCTACGATTGAG") - self.assertEqual(str(record.motifs[1].instances[11]), "CTGCTCCCCGCATACAGCGCG") - self.assertEqual(str(record.motifs[1].instances[12]), "CAGAACCGAGGTCCGGTACGG") - self.assertEqual(str(record.motifs[1].instances[13]), "GTGCCCCAAGCTTACCCAGGG") - self.assertEqual(str(record.motifs[1].instances[14]), "CGCCTCTGATCTACGATTGAG") - self.assertEqual(str(record.motifs[1].instances[15]), "GTGCTCATAGGGACGTCGCGG") - self.assertEqual(str(record.motifs[1].instances[16]), "CTGCCCCCCGCATAGTAGGGG") - self.assertEqual(str(record.motifs[1].instances[17]), "GTAAAGAAATCGATGTGCCAG") - self.assertEqual(str(record.motifs[1].instances[18]), "CACCTGCAATTGCTGGCAGCG") - self.assertEqual(str(record.motifs[1].instances[19]), "GGCGGGCCATCCCTGTATGAA") - self.assertEqual(str(record.motifs[1].instances[20]), "CTCCAGGTCGCATGGAGAGAG") - self.assertEqual(str(record.motifs[1].instances[21]), "CCTCGGATCGCTTGGGAAGAG") - self.assertEqual(record.motifs[1].mask, (1,0,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,1)) - self.assertAlmostEqual(record.motifs[1].score, 19.6235) + self.assertEqual(len(record), 16) + self.assertEqual(record[0].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[0].instances), 11) + self.assertEqual(str(record[0].instances[0]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[1]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[2]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[3]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[4]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[5]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[6]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[7]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[8]), "TCTACGATTGAG") + self.assertEqual(str(record[0].instances[9]), "TCAAAGATAGAG") + self.assertEqual(str(record[0].instances[10]), "TCTACGATTGAG") + self.assertEqual(record[0].mask, (1,1,0,1,1,1,1,1,0,1,1,1)) + self.assertAlmostEqual(record[0].score, 57.9079) + self.assertEqual(record[1].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[1].instances), 22) + self.assertEqual(str(record[1].instances[0]), "GCGAAGGAAGCAGCGCGTGTG") + self.assertEqual(str(record[1].instances[1]), "GGCACCGCCTCTACGATTGAG") + self.assertEqual(str(record[1].instances[2]), "CAGAGCTTAGCATTGAACGCG") + self.assertEqual(str(record[1].instances[3]), "CTAATGAAAGCAATGAGAGTG") + self.assertEqual(str(record[1].instances[4]), "CTTGTGCCCTCTAAGCGTCCG") + self.assertEqual(str(record[1].instances[5]), "GAGCACGACGCTTTGTACCTG") + self.assertEqual(str(record[1].instances[6]), "CGGCACTTAGCAGCGTATCGT") + self.assertEqual(str(record[1].instances[7]), "CTGGTTTCATCTACGATTGAG") + self.assertEqual(str(record[1].instances[8]), "GGGCCAATAGCGGCGCCGGAG") + self.assertEqual(str(record[1].instances[9]), "GTGGAGTTATCTTAGTGCGCG") + self.assertEqual(str(record[1].instances[10]), "GAGAGGTTATCTACGATTGAG") + self.assertEqual(str(record[1].instances[11]), "CTGCTCCCCGCATACAGCGCG") + self.assertEqual(str(record[1].instances[12]), "CAGAACCGAGGTCCGGTACGG") + self.assertEqual(str(record[1].instances[13]), "GTGCCCCAAGCTTACCCAGGG") + self.assertEqual(str(record[1].instances[14]), "CGCCTCTGATCTACGATTGAG") + self.assertEqual(str(record[1].instances[15]), "GTGCTCATAGGGACGTCGCGG") + self.assertEqual(str(record[1].instances[16]), "CTGCCCCCCGCATAGTAGGGG") + self.assertEqual(str(record[1].instances[17]), "GTAAAGAAATCGATGTGCCAG") + self.assertEqual(str(record[1].instances[18]), "CACCTGCAATTGCTGGCAGCG") + self.assertEqual(str(record[1].instances[19]), "GGCGGGCCATCCCTGTATGAA") + self.assertEqual(str(record[1].instances[20]), "CTCCAGGTCGCATGGAGAGAG") + self.assertEqual(str(record[1].instances[21]), "CCTCGGATCGCTTGGGAAGAG") + self.assertEqual(record[1].mask, (1,0,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,1)) + self.assertAlmostEqual(record[1].score, 19.6235) - self.assertEqual(record.motifs[2].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[2].instances), 18) - self.assertEqual(str(record.motifs[2].instances[0]), "GTGCGCGAAGGAAGCAGCGCG") - self.assertEqual(str(record.motifs[2].instances[1]), "CAGAGCTTAGCATTGAACGCG") - self.assertEqual(str(record.motifs[2].instances[2]), "GTGCCCGATGACCACCCGTCG") - self.assertEqual(str(record.motifs[2].instances[3]), "GCCCTCTAAGCGTCCGCGGAT") - self.assertEqual(str(record.motifs[2].instances[4]), "GAGCACGACGCTTTGTACCTG") - self.assertEqual(str(record.motifs[2].instances[5]), "CGGCACTTAGCAGCGTATCGT") - self.assertEqual(str(record.motifs[2].instances[6]), "GGGCCAATAGCGGCGCCGGAG") - self.assertEqual(str(record.motifs[2].instances[7]), "GCGCACTAAGATAACTCCACG") - self.assertEqual(str(record.motifs[2].instances[8]), "CGGCCCGTTGTCCAGCAGACG") - self.assertEqual(str(record.motifs[2].instances[9]), "CTGCTCCCCGCATACAGCGCG") - self.assertEqual(str(record.motifs[2].instances[10]), "GTGCCCCAAGCTTACCCAGGG") - self.assertEqual(str(record.motifs[2].instances[11]), "GTGCTCATAGGGACGTCGCGG") - self.assertEqual(str(record.motifs[2].instances[12]), "CTGCCCCCCGCATAGTAGGGG") - self.assertEqual(str(record.motifs[2].instances[13]), "CGCCGCCATGCGACGCAGAGG") - self.assertEqual(str(record.motifs[2].instances[14]), "AACCTCTAAGCATACTCTACG") - self.assertEqual(str(record.motifs[2].instances[15]), "GACCTGGAGGCTTAGACTTGG") - self.assertEqual(str(record.motifs[2].instances[16]), "GCGCTCTTCCCAAGCGATCCG") - self.assertEqual(str(record.motifs[2].instances[17]), "GGGCCGTCAGCTCTCAAGTCT") - self.assertEqual(record.motifs[2].mask, (1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,1,1)) - self.assertAlmostEqual(record.motifs[2].score, 19.1804) + self.assertEqual(record[2].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[2].instances), 18) + self.assertEqual(str(record[2].instances[0]), "GTGCGCGAAGGAAGCAGCGCG") + self.assertEqual(str(record[2].instances[1]), "CAGAGCTTAGCATTGAACGCG") + self.assertEqual(str(record[2].instances[2]), "GTGCCCGATGACCACCCGTCG") + self.assertEqual(str(record[2].instances[3]), "GCCCTCTAAGCGTCCGCGGAT") + self.assertEqual(str(record[2].instances[4]), "GAGCACGACGCTTTGTACCTG") + self.assertEqual(str(record[2].instances[5]), "CGGCACTTAGCAGCGTATCGT") + self.assertEqual(str(record[2].instances[6]), "GGGCCAATAGCGGCGCCGGAG") + self.assertEqual(str(record[2].instances[7]), "GCGCACTAAGATAACTCCACG") + self.assertEqual(str(record[2].instances[8]), "CGGCCCGTTGTCCAGCAGACG") + self.assertEqual(str(record[2].instances[9]), "CTGCTCCCCGCATACAGCGCG") + self.assertEqual(str(record[2].instances[10]), "GTGCCCCAAGCTTACCCAGGG") + self.assertEqual(str(record[2].instances[11]), "GTGCTCATAGGGACGTCGCGG") + self.assertEqual(str(record[2].instances[12]), "CTGCCCCCCGCATAGTAGGGG") + self.assertEqual(str(record[2].instances[13]), "CGCCGCCATGCGACGCAGAGG") + self.assertEqual(str(record[2].instances[14]), "AACCTCTAAGCATACTCTACG") + self.assertEqual(str(record[2].instances[15]), "GACCTGGAGGCTTAGACTTGG") + self.assertEqual(str(record[2].instances[16]), "GCGCTCTTCCCAAGCGATCCG") + self.assertEqual(str(record[2].instances[17]), "GGGCCGTCAGCTCTCAAGTCT") + self.assertEqual(record[2].mask, (1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,1,1)) + self.assertAlmostEqual(record[2].score, 19.1804) - self.assertEqual(record.motifs[3].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[3].instances), 16) - self.assertEqual(str(record.motifs[3].instances[0]), "GCCCCAAGCTTACCCAGGGAC") - self.assertEqual(str(record.motifs[3].instances[1]), "GCCGTCTGCTGGACAACGGGC") - self.assertEqual(str(record.motifs[3].instances[2]), "GCCGACGGGTGGTCATCGGGC") - self.assertEqual(str(record.motifs[3].instances[3]), "GCCAATAGCGGCGCCGGAGTC") - self.assertEqual(str(record.motifs[3].instances[4]), "GCCCCCCGCATAGTAGGGGGA") - self.assertEqual(str(record.motifs[3].instances[5]), "GCCCGTACCGGACCTCGGTTC") - self.assertEqual(str(record.motifs[3].instances[6]), "GCCTCATGTACCGGAAGGGAC") - self.assertEqual(str(record.motifs[3].instances[7]), "GACACGCGCCTGGGAGGGTTC") - self.assertEqual(str(record.motifs[3].instances[8]), "GCCTTTGGCCTTGGATGAGAA") - self.assertEqual(str(record.motifs[3].instances[9]), "GGCCCTCGGATCGCTTGGGAA") - self.assertEqual(str(record.motifs[3].instances[10]), "GCATGTTGGGAATCCGCGGAC") - self.assertEqual(str(record.motifs[3].instances[11]), "GACACGCGCTGTATGCGGGGA") - self.assertEqual(str(record.motifs[3].instances[12]), "GCCAGGTACAAAGCGTCGTGC") - self.assertEqual(str(record.motifs[3].instances[13]), "GCGATCAGCTTGTGGGCGTGC") - self.assertEqual(str(record.motifs[3].instances[14]), "GACAAATCGGATACTGGGGCA") - self.assertEqual(str(record.motifs[3].instances[15]), "GCACTTAGCAGCGTATCGTTA") - self.assertEqual(record.motifs[3].mask, (1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,0,1)) - self.assertAlmostEqual(record.motifs[3].score, 18.0097) - self.assertEqual(record.motifs[4].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[4].instances), 15) - self.assertEqual(str(record.motifs[4].instances[0]), "CGGCACAGAGCTT") - self.assertEqual(str(record.motifs[4].instances[1]), "ATCCGCGGACGCT") - self.assertEqual(str(record.motifs[4].instances[2]), "CGCCTGGGAGGGT") - self.assertEqual(str(record.motifs[4].instances[3]), "CGGAAGGGACGTT") - self.assertEqual(str(record.motifs[4].instances[4]), "ACACACAGACGGT") - self.assertEqual(str(record.motifs[4].instances[5]), "TGCCAGAGAGGTT") - self.assertEqual(str(record.motifs[4].instances[6]), "AGACTGAGACGTT") - self.assertEqual(str(record.motifs[4].instances[7]), "AATCGTAGAGGAT") - self.assertEqual(str(record.motifs[4].instances[8]), "CGTCTCGTAGGGT") - self.assertEqual(str(record.motifs[4].instances[9]), "CGTCGCGGAGGAT") - self.assertEqual(str(record.motifs[4].instances[10]), "CTTCTTAGACGCT") - self.assertEqual(str(record.motifs[4].instances[11]), "CGACGCAGAGGAT") - self.assertEqual(str(record.motifs[4].instances[12]), "ATGCTTAGAGGTT") - self.assertEqual(str(record.motifs[4].instances[13]), "AGACTTGGGCGAT") - self.assertEqual(str(record.motifs[4].instances[14]), "CGACCTGGAGGCT") - self.assertEqual(record.motifs[4].mask, (1,1,0,1,0,1,1,1,1,1,1,0,1)) - self.assertAlmostEqual(record.motifs[4].score, 16.8287) - self.assertEqual(record.motifs[5].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[5].instances), 18) - self.assertEqual(str(record.motifs[5].instances[0]), "GTGCGCGAAGGAAGCAGCGCGTG") - self.assertEqual(str(record.motifs[5].instances[1]), "TTGAGCCGAGTAAAGGGCTGGTG") - self.assertEqual(str(record.motifs[5].instances[2]), "CAATGCTAAGCTCTGTGCCGACG") - self.assertEqual(str(record.motifs[5].instances[3]), "CAACTCTCTATGTAGTGCCCGAG") - self.assertEqual(str(record.motifs[5].instances[4]), "CGACGCTTTGTACCTGGCTTGCG") - self.assertEqual(str(record.motifs[5].instances[5]), "CGAGTCAATGACACGCGCCTGGG") - self.assertEqual(str(record.motifs[5].instances[6]), "CGATACGCTGCTAAGTGCCGTCC") - self.assertEqual(str(record.motifs[5].instances[7]), "CCGGGCCAATAGCGGCGCCGGAG") - self.assertEqual(str(record.motifs[5].instances[8]), "CCACGCTTCGACACGTGGTATAG") - self.assertEqual(str(record.motifs[5].instances[9]), "CCGAGCCTCATGTACCGGAAGGG") - self.assertEqual(str(record.motifs[5].instances[10]), "CTGCTCCCCGCATACAGCGCGTG") - self.assertEqual(str(record.motifs[5].instances[11]), "CCGAGGTCCGGTACGGGCAAGCC") - self.assertEqual(str(record.motifs[5].instances[12]), "GTGCTCATAGGGACGTCGCGGAG") - self.assertEqual(str(record.motifs[5].instances[13]), "CCCTACTATGCGGGGGGCAGGTC") - self.assertEqual(str(record.motifs[5].instances[14]), "GCCAGCAATTGCAGGTGGTCGTG") - self.assertEqual(str(record.motifs[5].instances[15]), "CTCTGCGTCGCATGGCGGCGTGG") - self.assertEqual(str(record.motifs[5].instances[16]), "GGAGGCTTAGACTTGGGCGATAC") - self.assertEqual(str(record.motifs[5].instances[17]), "GCATGGAGAGAGATCCGGAGGAG") - self.assertEqual(record.motifs[5].mask, (1,0,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,1,0,1)) - self.assertAlmostEqual(record.motifs[5].score, 15.0441) - self.assertEqual(record.motifs[6].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[6].instances), 20) - self.assertEqual(str(record.motifs[6].instances[0]), "GCGCGTGTGTGTAAC") - self.assertEqual(str(record.motifs[6].instances[1]), "GCACAGAGCTTAGCA") - self.assertEqual(str(record.motifs[6].instances[2]), "GGTGGTCATCGGGCA") - self.assertEqual(str(record.motifs[6].instances[3]), "GCGCGTGTCATTGAC") - self.assertEqual(str(record.motifs[6].instances[4]), "GGACGGCACTTAGCA") - self.assertEqual(str(record.motifs[6].instances[5]), "GCGCGTCCCGGGCCA") - self.assertEqual(str(record.motifs[6].instances[6]), "GCTCGGCCCGTTGTC") - self.assertEqual(str(record.motifs[6].instances[7]), "GCGCGTGTCCTTTAA") - self.assertEqual(str(record.motifs[6].instances[8]), "GCTGATCGCTGCTCC") - self.assertEqual(str(record.motifs[6].instances[9]), "GCCCGTACCGGACCT") - self.assertEqual(str(record.motifs[6].instances[10]), "GGACGTCGCGGAGGA") - self.assertEqual(str(record.motifs[6].instances[11]), "GCGGGGGGCAGGTCA") - self.assertEqual(str(record.motifs[6].instances[12]), "GGACGTACTGGCACA") - self.assertEqual(str(record.motifs[6].instances[13]), "GCAGGTGGTCGTGCA") - self.assertEqual(str(record.motifs[6].instances[14]), "GCGCATACCTTAACA") - self.assertEqual(str(record.motifs[6].instances[15]), "GCACGGGACTTCAAC") - self.assertEqual(str(record.motifs[6].instances[16]), "GCACGTAGCTGGTAA") - self.assertEqual(str(record.motifs[6].instances[17]), "GCTCGTCTATGGTCA") - self.assertEqual(str(record.motifs[6].instances[18]), "GCGCATGCTGGATCC") - self.assertEqual(str(record.motifs[6].instances[19]), "GGCCGTCAGCTCTCA") - self.assertEqual(record.motifs[6].mask, (1,1,0,1,1,1,1,0,1,0,1,0,0,1,1)) - self.assertAlmostEqual(record.motifs[6].score, 13.3145) - self.assertEqual(record.motifs[7].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[7].instances), 20) - self.assertEqual(str(record.motifs[7].instances[0]), "GAACCGAGGTCCGGTACGGGC") - self.assertEqual(str(record.motifs[7].instances[1]), "GCCCCCCGCATAGTAGGGGGA") - self.assertEqual(str(record.motifs[7].instances[2]), "GTCCCTGGGTAAGCTTGGGGC") - self.assertEqual(str(record.motifs[7].instances[3]), "ACTCCACGCTTCGACACGTGG") - self.assertEqual(str(record.motifs[7].instances[4]), "ATCCTCTGCGTCGCATGGCGG") - self.assertEqual(str(record.motifs[7].instances[5]), "GTTCAATGCTAAGCTCTGTGC") - self.assertEqual(str(record.motifs[7].instances[6]), "GCTCATAGGGACGTCGCGGAG") - self.assertEqual(str(record.motifs[7].instances[7]), "GTCCCGGGCCAATAGCGGCGC") - self.assertEqual(str(record.motifs[7].instances[8]), "GCACTTAGCAGCGTATCGTTA") - self.assertEqual(str(record.motifs[7].instances[9]), "GGCCCTCGGATCGCTTGGGAA") - self.assertEqual(str(record.motifs[7].instances[10]), "CTGCTGGACAACGGGCCGAGC") - self.assertEqual(str(record.motifs[7].instances[11]), "GGGCACTACATAGAGAGTTGC") - self.assertEqual(str(record.motifs[7].instances[12]), "AGCCTCCAGGTCGCATGGAGA") - self.assertEqual(str(record.motifs[7].instances[13]), "AATCGTAGATCAGAGGCGAGA") - self.assertEqual(str(record.motifs[7].instances[14]), "GAACTCCACTAAGACTTGAGA") - self.assertEqual(str(record.motifs[7].instances[15]), "GAGCAGCGATCAGCTTGTGGG") - self.assertEqual(str(record.motifs[7].instances[16]), "GCCAGGTACAAAGCGTCGTGC") - self.assertEqual(str(record.motifs[7].instances[17]), "AGTCAATGACACGCGCCTGGG") - self.assertEqual(str(record.motifs[7].instances[18]), "GGTCATGGAATCTTATGTAGC") - self.assertEqual(str(record.motifs[7].instances[19]), "GTAGATAACAGAGGTCGGGGG") - self.assertEqual(record.motifs[7].mask, (1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1)) - self.assertAlmostEqual(record.motifs[7].score, 11.6098) - self.assertEqual(record.motifs[8].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[8].instances), 14) - self.assertEqual(str(record.motifs[8].instances[0]), "CCGAGTAAAGGGCTG") - self.assertEqual(str(record.motifs[8].instances[1]), "GTGGTCATCGGGCAC") - self.assertEqual(str(record.motifs[8].instances[2]), "GATAACAGAGGTCGG") - self.assertEqual(str(record.motifs[8].instances[3]), "CGGCGCCGGAGTCTG") - self.assertEqual(str(record.motifs[8].instances[4]), "GCGCGTCCCGGGCCA") - self.assertEqual(str(record.motifs[8].instances[5]), "CTGGACAACGGGCCG") - self.assertEqual(str(record.motifs[8].instances[6]), "CGGATACTGGGGCAG") - self.assertEqual(str(record.motifs[8].instances[7]), "GGGAGCAGCGATCAG") - self.assertEqual(str(record.motifs[8].instances[8]), "CAGAACCGAGGTCCG") - self.assertEqual(str(record.motifs[8].instances[9]), "GGGTCCCTGGGTAAG") - self.assertEqual(str(record.motifs[8].instances[10]), "GTGCTCATAGGGACG") - self.assertEqual(str(record.motifs[8].instances[11]), "GAGATCCGGAGGAGG") - self.assertEqual(str(record.motifs[8].instances[12]), "GCGATCCGAGGGCCG") - self.assertEqual(str(record.motifs[8].instances[13]), "GAGTTCACATGGCTG") - self.assertEqual(record.motifs[8].mask, (1,0,1,0,0,1,1,0,1,1,1,1,1,0,1)) - self.assertAlmostEqual(record.motifs[8].score, 11.2943) - self.assertEqual(record.motifs[9].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[9].instances), 18) - self.assertEqual(str(record.motifs[9].instances[0]), "TAGAGGCGGTG") - self.assertEqual(str(record.motifs[9].instances[1]), "GCTAAGCTCTG") - self.assertEqual(str(record.motifs[9].instances[2]), "TGGAAGCAGTG") - self.assertEqual(str(record.motifs[9].instances[3]), "GCGAGGCTGTG") - self.assertEqual(str(record.motifs[9].instances[4]), "ACGACGCTTTG") - self.assertEqual(str(record.motifs[9].instances[5]), "GGGACGCGCAC") - self.assertEqual(str(record.motifs[9].instances[6]), "TCGAAGCGTGG") - self.assertEqual(str(record.motifs[9].instances[7]), "TGTATGCGGGG") - self.assertEqual(str(record.motifs[9].instances[8]), "GGTAAGCTTGG") - self.assertEqual(str(record.motifs[9].instances[9]), "TGTACGCTGGG") - self.assertEqual(str(record.motifs[9].instances[10]), "ACTATGCGGGG") - self.assertEqual(str(record.motifs[9].instances[11]), "GGTATGCGCTG") - self.assertEqual(str(record.motifs[9].instances[12]), "GGTACCCGGAG") - self.assertEqual(str(record.motifs[9].instances[13]), "GCGACGCAGAG") - self.assertEqual(str(record.motifs[9].instances[14]), "TGGCGGCGTGG") - self.assertEqual(str(record.motifs[9].instances[15]), "TCTAGGCGGGC") - self.assertEqual(str(record.motifs[9].instances[16]), "AGTATGCTTAG") - self.assertEqual(str(record.motifs[9].instances[17]), "TGGAGGCTTAG") - self.assertEqual(record.motifs[9].mask, (1,1,1,1,0,1,1,1,1,1,1)) - self.assertAlmostEqual(record.motifs[9].score, 9.7924) - self.assertEqual(record.motifs[10].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[10].instances), 13) - self.assertEqual(str(record.motifs[10].instances[0]), "GCACAGAGCTTAGCATTGAAC") - self.assertEqual(str(record.motifs[10].instances[1]), "GTCCGCGGATTCCCAACATGC") - self.assertEqual(str(record.motifs[10].instances[2]), "ATACACAGCCTCGCAAGCCAG") - self.assertEqual(str(record.motifs[10].instances[3]), "GGCCCGGGACGCGCACTAAGA") - self.assertEqual(str(record.motifs[10].instances[4]), "GCCCGTTGTCCAGCAGACGGC") - self.assertEqual(str(record.motifs[10].instances[5]), "GAGCAGCGATCAGCTTGTGGG") - self.assertEqual(str(record.motifs[10].instances[6]), "GAACCGAGGTCCGGTACGGGC") - self.assertEqual(str(record.motifs[10].instances[7]), "GTCCCTGGGTAAGCTTGGGGC") - self.assertEqual(str(record.motifs[10].instances[8]), "GACCTGCCCCCCGCATAGTAG") - self.assertEqual(str(record.motifs[10].instances[9]), "AACCAGCGCATACCTTAACAG") - self.assertEqual(str(record.motifs[10].instances[10]), "ATCCTCTGCGTCGCATGGCGG") - self.assertEqual(str(record.motifs[10].instances[11]), "GACCATAGACGAGCATCAAAG") - self.assertEqual(str(record.motifs[10].instances[12]), "GGCCCTCGGATCGCTTGGGAA") - self.assertEqual(record.motifs[10].mask, (1,0,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,1)) - self.assertAlmostEqual(record.motifs[10].score, 9.01393) - self.assertEqual(record.motifs[11].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[11].instances), 16) - self.assertEqual(str(record.motifs[11].instances[0]), "GCCGTCCGTC") - self.assertEqual(str(record.motifs[11].instances[1]), "GGCGTGCGCG") - self.assertEqual(str(record.motifs[11].instances[2]), "GGCGCGTGTC") - self.assertEqual(str(record.motifs[11].instances[3]), "AGCGCGTGTG") - self.assertEqual(str(record.motifs[11].instances[4]), "GCGGTGCGTG") - self.assertEqual(str(record.motifs[11].instances[5]), "AGCGCGTGTC") - self.assertEqual(str(record.motifs[11].instances[6]), "AGCGTCCGCG") - self.assertEqual(str(record.motifs[11].instances[7]), "ACCGTCTGTG") - self.assertEqual(str(record.motifs[11].instances[8]), "GCCATGCGAC") - self.assertEqual(str(record.motifs[11].instances[9]), "ACCACCCGTC") - self.assertEqual(str(record.motifs[11].instances[10]), "GGCGCCGGAG") - self.assertEqual(str(record.motifs[11].instances[11]), "ACCACGTGTC") - self.assertEqual(str(record.motifs[11].instances[12]), "GGCTTGCGAG") - self.assertEqual(str(record.motifs[11].instances[13]), "GCGATCCGAG") - self.assertEqual(str(record.motifs[11].instances[14]), "AGTGCGCGTC") - self.assertEqual(str(record.motifs[11].instances[15]), "AGTGCCCGAG") - self.assertEqual(record.motifs[11].mask, (1,1,1,1,1,1,1,1,1,1)) - self.assertAlmostEqual(record.motifs[11].score, 7.51121) - self.assertEqual(record.motifs[12].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[12].instances), 16) - self.assertEqual(str(record.motifs[12].instances[0]), "GCCGACGGGTGGTCATCGGG") - self.assertEqual(str(record.motifs[12].instances[1]), "GCACGACGCTTTGTACCTGG") - self.assertEqual(str(record.motifs[12].instances[2]), "CCTGGGAGGGTTCAATAACG") - self.assertEqual(str(record.motifs[12].instances[3]), "GCGCGTCCCGGGCCAATAGC") - self.assertEqual(str(record.motifs[12].instances[4]), "GCCGTCTGCTGGACAACGGG") - self.assertEqual(str(record.motifs[12].instances[5]), "GTCCCTTCCGGTACATGAGG") - self.assertEqual(str(record.motifs[12].instances[6]), "GCTGCTCCCCGCATACAGCG") - self.assertEqual(str(record.motifs[12].instances[7]), "GCCCCAAGCTTACCCAGGGA") - self.assertEqual(str(record.motifs[12].instances[8]), "ACCGGCTGACGCTAATACGG") - self.assertEqual(str(record.motifs[12].instances[9]), "GCGGGGGGCAGGTCATTACA") - self.assertEqual(str(record.motifs[12].instances[10]), "GCTGGCAGCGTCTAAGAAGG") - self.assertEqual(str(record.motifs[12].instances[11]), "GCAGGTGGTCGTGCAATACG") - self.assertEqual(str(record.motifs[12].instances[12]), "GCTGGTTGAAGTCCCGTGCG") - self.assertEqual(str(record.motifs[12].instances[13]), "GCACGTAGCTGGTAAATAGG") - self.assertEqual(str(record.motifs[12].instances[14]), "GCGGCGTGGATTTCATACAG") - self.assertEqual(str(record.motifs[12].instances[15]), "CCTGGAGGCTTAGACTTGGG") - self.assertEqual(record.motifs[12].mask, (1,1,0,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,1)) - self.assertAlmostEqual(record.motifs[12].score, 5.63667) - self.assertEqual(record.motifs[13].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[13].instances), 15) - self.assertEqual(str(record.motifs[13].instances[0]), "GCCGACGGGTGGTCATCGGG") - self.assertEqual(str(record.motifs[13].instances[1]), "ATCCGCGGACGCTTAGAGGG") - self.assertEqual(str(record.motifs[13].instances[2]), "ACGCTTTGTACCTGGCTTGC") - self.assertEqual(str(record.motifs[13].instances[3]), "ACGGACGGCACTTAGCAGCG") - self.assertEqual(str(record.motifs[13].instances[4]), "GCCGTCTGCTGGACAACGGG") - self.assertEqual(str(record.motifs[13].instances[5]), "ACACACAGACGGTTGAAAGG") - self.assertEqual(str(record.motifs[13].instances[6]), "GCCGATAGTGCTTAAGTTCG") - self.assertEqual(str(record.motifs[13].instances[7]), "CTTGCCCGTACCGGACCTCG") - self.assertEqual(str(record.motifs[13].instances[8]), "ACCGGCTGACGCTAATACGG") - self.assertEqual(str(record.motifs[13].instances[9]), "GCCCCCCGCATAGTAGGGGG") - self.assertEqual(str(record.motifs[13].instances[10]), "GCTGGCAGCGTCTAAGAAGG") - self.assertEqual(str(record.motifs[13].instances[11]), "GCAGGTGGTCGTGCAATACG") - self.assertEqual(str(record.motifs[13].instances[12]), "ACGCACGGGACTTCAACCAG") - self.assertEqual(str(record.motifs[13].instances[13]), "GCACGTAGCTGGTAAATAGG") - self.assertEqual(str(record.motifs[13].instances[14]), "ATCCTCTGCGTCGCATGGCG") - self.assertEqual(record.motifs[13].mask, (1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,1,1)) - self.assertAlmostEqual(record.motifs[13].score, 3.89842) - self.assertEqual(record.motifs[14].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[14].instances), 14) - self.assertEqual(str(record.motifs[14].instances[0]), "GAGGCTGTGTAT") - self.assertEqual(str(record.motifs[14].instances[1]), "GAGGTCGGGGGT") - self.assertEqual(str(record.motifs[14].instances[2]), "GACGGACGGCAC") - self.assertEqual(str(record.motifs[14].instances[3]), "TTGGCCCGGGAC") - self.assertEqual(str(record.motifs[14].instances[4]), "GAGGCTCGGCCC") - self.assertEqual(str(record.motifs[14].instances[5]), "CACGCGCTGTAT") - self.assertEqual(str(record.motifs[14].instances[6]), "TAGGCCAGGTAT") - self.assertEqual(str(record.motifs[14].instances[7]), "GAGGTCCGGTAC") - self.assertEqual(str(record.motifs[14].instances[8]), "TACGCTGGGGAT") - self.assertEqual(str(record.motifs[14].instances[9]), "GTCGCGGAGGAT") - self.assertEqual(str(record.motifs[14].instances[10]), "TACGCACGGGAC") - self.assertEqual(str(record.motifs[14].instances[11]), "TACTCCGGGTAC") - self.assertEqual(str(record.motifs[14].instances[12]), "GACGCAGAGGAT") - self.assertEqual(str(record.motifs[14].instances[13]), "TAGGCGGGCCAT") - self.assertEqual(record.motifs[14].mask, (1,1,1,1,1,0,1,1,1,0,1,1)) - self.assertAlmostEqual(record.motifs[14].score, 3.33444) - self.assertEqual(record.motifs[15].alphabet, IUPAC.unambiguous_dna) - self.assertEqual(len(record.motifs[15].instances), 21) - self.assertEqual(str(record.motifs[15].instances[0]), "CGGCTCAATCGTAGAGGC") - self.assertEqual(str(record.motifs[15].instances[1]), "CGACGGGTGGTCATCGGG") - self.assertEqual(str(record.motifs[15].instances[2]), "CGCTTAGAGGGCACAAGC") - self.assertEqual(str(record.motifs[15].instances[3]), "TGACACGCGCCTGGGAGG") - self.assertEqual(str(record.motifs[15].instances[4]), "CGATACGCTGCTAAGTGC") - self.assertEqual(str(record.motifs[15].instances[5]), "CGTCCCGGGCCAATAGCG") - self.assertEqual(str(record.motifs[15].instances[6]), "CCACGCTTCGACACGTGG") - self.assertEqual(str(record.motifs[15].instances[7]), "CGTCTGCTGGACAACGGG") - self.assertEqual(str(record.motifs[15].instances[8]), "ACACAGACGGTTGAAAGG") - self.assertEqual(str(record.motifs[15].instances[9]), "TGCTCCCCGCATACAGCG") - self.assertEqual(str(record.motifs[15].instances[10]), "TGAGGCTTGCCCGTACCG") - self.assertEqual(str(record.motifs[15].instances[11]), "TGCCCCAAGCTTACCCAG") - self.assertEqual(str(record.motifs[15].instances[12]), "CGGCTGACGCTAATACGG") - self.assertEqual(str(record.motifs[15].instances[13]), "CGCGACGTCCCTATGAGC") - self.assertEqual(str(record.motifs[15].instances[14]), "TGCCCCCCGCATAGTAGG") - self.assertEqual(str(record.motifs[15].instances[15]), "CGTTGCCTTCTTAGACGC") - self.assertEqual(str(record.motifs[15].instances[16]), "TGACTCAATCGTAGACCC") - self.assertEqual(str(record.motifs[15].instances[17]), "AGTCCCGTGCGTATGTGG") - self.assertEqual(str(record.motifs[15].instances[18]), "AGGCTCGCACGTAGCTGG") - self.assertEqual(str(record.motifs[15].instances[19]), "CCACGCCGCCATGCGACG") - self.assertEqual(str(record.motifs[15].instances[20]), "AGCCTCCAGGTCGCATGG") - self.assertEqual(record.motifs[15].mask, (1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1)) - self.assertAlmostEqual(record.motifs[15].score, 1.0395) + self.assertEqual(record[3].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[3].instances), 16) + self.assertEqual(str(record[3].instances[0]), "GCCCCAAGCTTACCCAGGGAC") + self.assertEqual(str(record[3].instances[1]), "GCCGTCTGCTGGACAACGGGC") + self.assertEqual(str(record[3].instances[2]), "GCCGACGGGTGGTCATCGGGC") + self.assertEqual(str(record[3].instances[3]), "GCCAATAGCGGCGCCGGAGTC") + self.assertEqual(str(record[3].instances[4]), "GCCCCCCGCATAGTAGGGGGA") + self.assertEqual(str(record[3].instances[5]), "GCCCGTACCGGACCTCGGTTC") + self.assertEqual(str(record[3].instances[6]), "GCCTCATGTACCGGAAGGGAC") + self.assertEqual(str(record[3].instances[7]), "GACACGCGCCTGGGAGGGTTC") + self.assertEqual(str(record[3].instances[8]), "GCCTTTGGCCTTGGATGAGAA") + self.assertEqual(str(record[3].instances[9]), "GGCCCTCGGATCGCTTGGGAA") + self.assertEqual(str(record[3].instances[10]), "GCATGTTGGGAATCCGCGGAC") + self.assertEqual(str(record[3].instances[11]), "GACACGCGCTGTATGCGGGGA") + self.assertEqual(str(record[3].instances[12]), "GCCAGGTACAAAGCGTCGTGC") + self.assertEqual(str(record[3].instances[13]), "GCGATCAGCTTGTGGGCGTGC") + self.assertEqual(str(record[3].instances[14]), "GACAAATCGGATACTGGGGCA") + self.assertEqual(str(record[3].instances[15]), "GCACTTAGCAGCGTATCGTTA") + self.assertEqual(record[3].mask, (1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,0,1)) + self.assertAlmostEqual(record[3].score, 18.0097) + self.assertEqual(record[4].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[4].instances), 15) + self.assertEqual(str(record[4].instances[0]), "CGGCACAGAGCTT") + self.assertEqual(str(record[4].instances[1]), "ATCCGCGGACGCT") + self.assertEqual(str(record[4].instances[2]), "CGCCTGGGAGGGT") + self.assertEqual(str(record[4].instances[3]), "CGGAAGGGACGTT") + self.assertEqual(str(record[4].instances[4]), "ACACACAGACGGT") + self.assertEqual(str(record[4].instances[5]), "TGCCAGAGAGGTT") + self.assertEqual(str(record[4].instances[6]), "AGACTGAGACGTT") + self.assertEqual(str(record[4].instances[7]), "AATCGTAGAGGAT") + self.assertEqual(str(record[4].instances[8]), "CGTCTCGTAGGGT") + self.assertEqual(str(record[4].instances[9]), "CGTCGCGGAGGAT") + self.assertEqual(str(record[4].instances[10]), "CTTCTTAGACGCT") + self.assertEqual(str(record[4].instances[11]), "CGACGCAGAGGAT") + self.assertEqual(str(record[4].instances[12]), "ATGCTTAGAGGTT") + self.assertEqual(str(record[4].instances[13]), "AGACTTGGGCGAT") + self.assertEqual(str(record[4].instances[14]), "CGACCTGGAGGCT") + self.assertEqual(record[4].mask, (1,1,0,1,0,1,1,1,1,1,1,0,1)) + self.assertAlmostEqual(record[4].score, 16.8287) + self.assertEqual(record[5].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[5].instances), 18) + self.assertEqual(str(record[5].instances[0]), "GTGCGCGAAGGAAGCAGCGCGTG") + self.assertEqual(str(record[5].instances[1]), "TTGAGCCGAGTAAAGGGCTGGTG") + self.assertEqual(str(record[5].instances[2]), "CAATGCTAAGCTCTGTGCCGACG") + self.assertEqual(str(record[5].instances[3]), "CAACTCTCTATGTAGTGCCCGAG") + self.assertEqual(str(record[5].instances[4]), "CGACGCTTTGTACCTGGCTTGCG") + self.assertEqual(str(record[5].instances[5]), "CGAGTCAATGACACGCGCCTGGG") + self.assertEqual(str(record[5].instances[6]), "CGATACGCTGCTAAGTGCCGTCC") + self.assertEqual(str(record[5].instances[7]), "CCGGGCCAATAGCGGCGCCGGAG") + self.assertEqual(str(record[5].instances[8]), "CCACGCTTCGACACGTGGTATAG") + self.assertEqual(str(record[5].instances[9]), "CCGAGCCTCATGTACCGGAAGGG") + self.assertEqual(str(record[5].instances[10]), "CTGCTCCCCGCATACAGCGCGTG") + self.assertEqual(str(record[5].instances[11]), "CCGAGGTCCGGTACGGGCAAGCC") + self.assertEqual(str(record[5].instances[12]), "GTGCTCATAGGGACGTCGCGGAG") + self.assertEqual(str(record[5].instances[13]), "CCCTACTATGCGGGGGGCAGGTC") + self.assertEqual(str(record[5].instances[14]), "GCCAGCAATTGCAGGTGGTCGTG") + self.assertEqual(str(record[5].instances[15]), "CTCTGCGTCGCATGGCGGCGTGG") + self.assertEqual(str(record[5].instances[16]), "GGAGGCTTAGACTTGGGCGATAC") + self.assertEqual(str(record[5].instances[17]), "GCATGGAGAGAGATCCGGAGGAG") + self.assertEqual(record[5].mask, (1,0,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,1,0,1)) + self.assertAlmostEqual(record[5].score, 15.0441) + self.assertEqual(record[6].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[6].instances), 20) + self.assertEqual(str(record[6].instances[0]), "GCGCGTGTGTGTAAC") + self.assertEqual(str(record[6].instances[1]), "GCACAGAGCTTAGCA") + self.assertEqual(str(record[6].instances[2]), "GGTGGTCATCGGGCA") + self.assertEqual(str(record[6].instances[3]), "GCGCGTGTCATTGAC") + self.assertEqual(str(record[6].instances[4]), "GGACGGCACTTAGCA") + self.assertEqual(str(record[6].instances[5]), "GCGCGTCCCGGGCCA") + self.assertEqual(str(record[6].instances[6]), "GCTCGGCCCGTTGTC") + self.assertEqual(str(record[6].instances[7]), "GCGCGTGTCCTTTAA") + self.assertEqual(str(record[6].instances[8]), "GCTGATCGCTGCTCC") + self.assertEqual(str(record[6].instances[9]), "GCCCGTACCGGACCT") + self.assertEqual(str(record[6].instances[10]), "GGACGTCGCGGAGGA") + self.assertEqual(str(record[6].instances[11]), "GCGGGGGGCAGGTCA") + self.assertEqual(str(record[6].instances[12]), "GGACGTACTGGCACA") + self.assertEqual(str(record[6].instances[13]), "GCAGGTGGTCGTGCA") + self.assertEqual(str(record[6].instances[14]), "GCGCATACCTTAACA") + self.assertEqual(str(record[6].instances[15]), "GCACGGGACTTCAAC") + self.assertEqual(str(record[6].instances[16]), "GCACGTAGCTGGTAA") + self.assertEqual(str(record[6].instances[17]), "GCTCGTCTATGGTCA") + self.assertEqual(str(record[6].instances[18]), "GCGCATGCTGGATCC") + self.assertEqual(str(record[6].instances[19]), "GGCCGTCAGCTCTCA") + self.assertEqual(record[6].mask, (1,1,0,1,1,1,1,0,1,0,1,0,0,1,1)) + self.assertAlmostEqual(record[6].score, 13.3145) + self.assertEqual(record[7].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[7].instances), 20) + self.assertEqual(str(record[7].instances[0]), "GAACCGAGGTCCGGTACGGGC") + self.assertEqual(str(record[7].instances[1]), "GCCCCCCGCATAGTAGGGGGA") + self.assertEqual(str(record[7].instances[2]), "GTCCCTGGGTAAGCTTGGGGC") + self.assertEqual(str(record[7].instances[3]), "ACTCCACGCTTCGACACGTGG") + self.assertEqual(str(record[7].instances[4]), "ATCCTCTGCGTCGCATGGCGG") + self.assertEqual(str(record[7].instances[5]), "GTTCAATGCTAAGCTCTGTGC") + self.assertEqual(str(record[7].instances[6]), "GCTCATAGGGACGTCGCGGAG") + self.assertEqual(str(record[7].instances[7]), "GTCCCGGGCCAATAGCGGCGC") + self.assertEqual(str(record[7].instances[8]), "GCACTTAGCAGCGTATCGTTA") + self.assertEqual(str(record[7].instances[9]), "GGCCCTCGGATCGCTTGGGAA") + self.assertEqual(str(record[7].instances[10]), "CTGCTGGACAACGGGCCGAGC") + self.assertEqual(str(record[7].instances[11]), "GGGCACTACATAGAGAGTTGC") + self.assertEqual(str(record[7].instances[12]), "AGCCTCCAGGTCGCATGGAGA") + self.assertEqual(str(record[7].instances[13]), "AATCGTAGATCAGAGGCGAGA") + self.assertEqual(str(record[7].instances[14]), "GAACTCCACTAAGACTTGAGA") + self.assertEqual(str(record[7].instances[15]), "GAGCAGCGATCAGCTTGTGGG") + self.assertEqual(str(record[7].instances[16]), "GCCAGGTACAAAGCGTCGTGC") + self.assertEqual(str(record[7].instances[17]), "AGTCAATGACACGCGCCTGGG") + self.assertEqual(str(record[7].instances[18]), "GGTCATGGAATCTTATGTAGC") + self.assertEqual(str(record[7].instances[19]), "GTAGATAACAGAGGTCGGGGG") + self.assertEqual(record[7].mask, (1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1)) + self.assertAlmostEqual(record[7].score, 11.6098) + self.assertEqual(record[8].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[8].instances), 14) + self.assertEqual(str(record[8].instances[0]), "CCGAGTAAAGGGCTG") + self.assertEqual(str(record[8].instances[1]), "GTGGTCATCGGGCAC") + self.assertEqual(str(record[8].instances[2]), "GATAACAGAGGTCGG") + self.assertEqual(str(record[8].instances[3]), "CGGCGCCGGAGTCTG") + self.assertEqual(str(record[8].instances[4]), "GCGCGTCCCGGGCCA") + self.assertEqual(str(record[8].instances[5]), "CTGGACAACGGGCCG") + self.assertEqual(str(record[8].instances[6]), "CGGATACTGGGGCAG") + self.assertEqual(str(record[8].instances[7]), "GGGAGCAGCGATCAG") + self.assertEqual(str(record[8].instances[8]), "CAGAACCGAGGTCCG") + self.assertEqual(str(record[8].instances[9]), "GGGTCCCTGGGTAAG") + self.assertEqual(str(record[8].instances[10]), "GTGCTCATAGGGACG") + self.assertEqual(str(record[8].instances[11]), "GAGATCCGGAGGAGG") + self.assertEqual(str(record[8].instances[12]), "GCGATCCGAGGGCCG") + self.assertEqual(str(record[8].instances[13]), "GAGTTCACATGGCTG") + self.assertEqual(record[8].mask, (1,0,1,0,0,1,1,0,1,1,1,1,1,0,1)) + self.assertAlmostEqual(record[8].score, 11.2943) + self.assertEqual(record[9].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[9].instances), 18) + self.assertEqual(str(record[9].instances[0]), "TAGAGGCGGTG") + self.assertEqual(str(record[9].instances[1]), "GCTAAGCTCTG") + self.assertEqual(str(record[9].instances[2]), "TGGAAGCAGTG") + self.assertEqual(str(record[9].instances[3]), "GCGAGGCTGTG") + self.assertEqual(str(record[9].instances[4]), "ACGACGCTTTG") + self.assertEqual(str(record[9].instances[5]), "GGGACGCGCAC") + self.assertEqual(str(record[9].instances[6]), "TCGAAGCGTGG") + self.assertEqual(str(record[9].instances[7]), "TGTATGCGGGG") + self.assertEqual(str(record[9].instances[8]), "GGTAAGCTTGG") + self.assertEqual(str(record[9].instances[9]), "TGTACGCTGGG") + self.assertEqual(str(record[9].instances[10]), "ACTATGCGGGG") + self.assertEqual(str(record[9].instances[11]), "GGTATGCGCTG") + self.assertEqual(str(record[9].instances[12]), "GGTACCCGGAG") + self.assertEqual(str(record[9].instances[13]), "GCGACGCAGAG") + self.assertEqual(str(record[9].instances[14]), "TGGCGGCGTGG") + self.assertEqual(str(record[9].instances[15]), "TCTAGGCGGGC") + self.assertEqual(str(record[9].instances[16]), "AGTATGCTTAG") + self.assertEqual(str(record[9].instances[17]), "TGGAGGCTTAG") + self.assertEqual(record[9].mask, (1,1,1,1,0,1,1,1,1,1,1)) + self.assertAlmostEqual(record[9].score, 9.7924) + self.assertEqual(record[10].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[10].instances), 13) + self.assertEqual(str(record[10].instances[0]), "GCACAGAGCTTAGCATTGAAC") + self.assertEqual(str(record[10].instances[1]), "GTCCGCGGATTCCCAACATGC") + self.assertEqual(str(record[10].instances[2]), "ATACACAGCCTCGCAAGCCAG") + self.assertEqual(str(record[10].instances[3]), "GGCCCGGGACGCGCACTAAGA") + self.assertEqual(str(record[10].instances[4]), "GCCCGTTGTCCAGCAGACGGC") + self.assertEqual(str(record[10].instances[5]), "GAGCAGCGATCAGCTTGTGGG") + self.assertEqual(str(record[10].instances[6]), "GAACCGAGGTCCGGTACGGGC") + self.assertEqual(str(record[10].instances[7]), "GTCCCTGGGTAAGCTTGGGGC") + self.assertEqual(str(record[10].instances[8]), "GACCTGCCCCCCGCATAGTAG") + self.assertEqual(str(record[10].instances[9]), "AACCAGCGCATACCTTAACAG") + self.assertEqual(str(record[10].instances[10]), "ATCCTCTGCGTCGCATGGCGG") + self.assertEqual(str(record[10].instances[11]), "GACCATAGACGAGCATCAAAG") + self.assertEqual(str(record[10].instances[12]), "GGCCCTCGGATCGCTTGGGAA") + self.assertEqual(record[10].mask, (1,0,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,1)) + self.assertAlmostEqual(record[10].score, 9.01393) + self.assertEqual(record[11].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[11].instances), 16) + self.assertEqual(str(record[11].instances[0]), "GCCGTCCGTC") + self.assertEqual(str(record[11].instances[1]), "GGCGTGCGCG") + self.assertEqual(str(record[11].instances[2]), "GGCGCGTGTC") + self.assertEqual(str(record[11].instances[3]), "AGCGCGTGTG") + self.assertEqual(str(record[11].instances[4]), "GCGGTGCGTG") + self.assertEqual(str(record[11].instances[5]), "AGCGCGTGTC") + self.assertEqual(str(record[11].instances[6]), "AGCGTCCGCG") + self.assertEqual(str(record[11].instances[7]), "ACCGTCTGTG") + self.assertEqual(str(record[11].instances[8]), "GCCATGCGAC") + self.assertEqual(str(record[11].instances[9]), "ACCACCCGTC") + self.assertEqual(str(record[11].instances[10]), "GGCGCCGGAG") + self.assertEqual(str(record[11].instances[11]), "ACCACGTGTC") + self.assertEqual(str(record[11].instances[12]), "GGCTTGCGAG") + self.assertEqual(str(record[11].instances[13]), "GCGATCCGAG") + self.assertEqual(str(record[11].instances[14]), "AGTGCGCGTC") + self.assertEqual(str(record[11].instances[15]), "AGTGCCCGAG") + self.assertEqual(record[11].mask, (1,1,1,1,1,1,1,1,1,1)) + self.assertAlmostEqual(record[11].score, 7.51121) + self.assertEqual(record[12].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[12].instances), 16) + self.assertEqual(str(record[12].instances[0]), "GCCGACGGGTGGTCATCGGG") + self.assertEqual(str(record[12].instances[1]), "GCACGACGCTTTGTACCTGG") + self.assertEqual(str(record[12].instances[2]), "CCTGGGAGGGTTCAATAACG") + self.assertEqual(str(record[12].instances[3]), "GCGCGTCCCGGGCCAATAGC") + self.assertEqual(str(record[12].instances[4]), "GCCGTCTGCTGGACAACGGG") + self.assertEqual(str(record[12].instances[5]), "GTCCCTTCCGGTACATGAGG") + self.assertEqual(str(record[12].instances[6]), "GCTGCTCCCCGCATACAGCG") + self.assertEqual(str(record[12].instances[7]), "GCCCCAAGCTTACCCAGGGA") + self.assertEqual(str(record[12].instances[8]), "ACCGGCTGACGCTAATACGG") + self.assertEqual(str(record[12].instances[9]), "GCGGGGGGCAGGTCATTACA") + self.assertEqual(str(record[12].instances[10]), "GCTGGCAGCGTCTAAGAAGG") + self.assertEqual(str(record[12].instances[11]), "GCAGGTGGTCGTGCAATACG") + self.assertEqual(str(record[12].instances[12]), "GCTGGTTGAAGTCCCGTGCG") + self.assertEqual(str(record[12].instances[13]), "GCACGTAGCTGGTAAATAGG") + self.assertEqual(str(record[12].instances[14]), "GCGGCGTGGATTTCATACAG") + self.assertEqual(str(record[12].instances[15]), "CCTGGAGGCTTAGACTTGGG") + self.assertEqual(record[12].mask, (1,1,0,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,1)) + self.assertAlmostEqual(record[12].score, 5.63667) + self.assertEqual(record[13].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[13].instances), 15) + self.assertEqual(str(record[13].instances[0]), "GCCGACGGGTGGTCATCGGG") + self.assertEqual(str(record[13].instances[1]), "ATCCGCGGACGCTTAGAGGG") + self.assertEqual(str(record[13].instances[2]), "ACGCTTTGTACCTGGCTTGC") + self.assertEqual(str(record[13].instances[3]), "ACGGACGGCACTTAGCAGCG") + self.assertEqual(str(record[13].instances[4]), "GCCGTCTGCTGGACAACGGG") + self.assertEqual(str(record[13].instances[5]), "ACACACAGACGGTTGAAAGG") + self.assertEqual(str(record[13].instances[6]), "GCCGATAGTGCTTAAGTTCG") + self.assertEqual(str(record[13].instances[7]), "CTTGCCCGTACCGGACCTCG") + self.assertEqual(str(record[13].instances[8]), "ACCGGCTGACGCTAATACGG") + self.assertEqual(str(record[13].instances[9]), "GCCCCCCGCATAGTAGGGGG") + self.assertEqual(str(record[13].instances[10]), "GCTGGCAGCGTCTAAGAAGG") + self.assertEqual(str(record[13].instances[11]), "GCAGGTGGTCGTGCAATACG") + self.assertEqual(str(record[13].instances[12]), "ACGCACGGGACTTCAACCAG") + self.assertEqual(str(record[13].instances[13]), "GCACGTAGCTGGTAAATAGG") + self.assertEqual(str(record[13].instances[14]), "ATCCTCTGCGTCGCATGGCG") + self.assertEqual(record[13].mask, (1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,1,1)) + self.assertAlmostEqual(record[13].score, 3.89842) + self.assertEqual(record[14].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[14].instances), 14) + self.assertEqual(str(record[14].instances[0]), "GAGGCTGTGTAT") + self.assertEqual(str(record[14].instances[1]), "GAGGTCGGGGGT") + self.assertEqual(str(record[14].instances[2]), "GACGGACGGCAC") + self.assertEqual(str(record[14].instances[3]), "TTGGCCCGGGAC") + self.assertEqual(str(record[14].instances[4]), "GAGGCTCGGCCC") + self.assertEqual(str(record[14].instances[5]), "CACGCGCTGTAT") + self.assertEqual(str(record[14].instances[6]), "TAGGCCAGGTAT") + self.assertEqual(str(record[14].instances[7]), "GAGGTCCGGTAC") + self.assertEqual(str(record[14].instances[8]), "TACGCTGGGGAT") + self.assertEqual(str(record[14].instances[9]), "GTCGCGGAGGAT") + self.assertEqual(str(record[14].instances[10]), "TACGCACGGGAC") + self.assertEqual(str(record[14].instances[11]), "TACTCCGGGTAC") + self.assertEqual(str(record[14].instances[12]), "GACGCAGAGGAT") + self.assertEqual(str(record[14].instances[13]), "TAGGCGGGCCAT") + self.assertEqual(record[14].mask, (1,1,1,1,1,0,1,1,1,0,1,1)) + self.assertAlmostEqual(record[14].score, 3.33444) + self.assertEqual(record[15].alphabet, IUPAC.unambiguous_dna) + self.assertEqual(len(record[15].instances), 21) + self.assertEqual(str(record[15].instances[0]), "CGGCTCAATCGTAGAGGC") + self.assertEqual(str(record[15].instances[1]), "CGACGGGTGGTCATCGGG") + self.assertEqual(str(record[15].instances[2]), "CGCTTAGAGGGCACAAGC") + self.assertEqual(str(record[15].instances[3]), "TGACACGCGCCTGGGAGG") + self.assertEqual(str(record[15].instances[4]), "CGATACGCTGCTAAGTGC") + self.assertEqual(str(record[15].instances[5]), "CGTCCCGGGCCAATAGCG") + self.assertEqual(str(record[15].instances[6]), "CCACGCTTCGACACGTGG") + self.assertEqual(str(record[15].instances[7]), "CGTCTGCTGGACAACGGG") + self.assertEqual(str(record[15].instances[8]), "ACACAGACGGTTGAAAGG") + self.assertEqual(str(record[15].instances[9]), "TGCTCCCCGCATACAGCG") + self.assertEqual(str(record[15].instances[10]), "TGAGGCTTGCCCGTACCG") + self.assertEqual(str(record[15].instances[11]), "TGCCCCAAGCTTACCCAG") + self.assertEqual(str(record[15].instances[12]), "CGGCTGACGCTAATACGG") + self.assertEqual(str(record[15].instances[13]), "CGCGACGTCCCTATGAGC") + self.assertEqual(str(record[15].instances[14]), "TGCCCCCCGCATAGTAGG") + self.assertEqual(str(record[15].instances[15]), "CGTTGCCTTCTTAGACGC") + self.assertEqual(str(record[15].instances[16]), "TGACTCAATCGTAGACCC") + self.assertEqual(str(record[15].instances[17]), "AGTCCCGTGCGTATGTGG") + self.assertEqual(str(record[15].instances[18]), "AGGCTCGCACGTAGCTGG") + self.assertEqual(str(record[15].instances[19]), "CCACGCCGCCATGCGACG") + self.assertEqual(str(record[15].instances[20]), "AGCCTCCAGGTCGCATGG") + self.assertEqual(record[15].mask, (1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1)) + self.assertAlmostEqual(record[15].score, 1.0395) def test_pfm_parsing(self): """Test to be sure that Motif can parse pfm files.