def test_nondegenerates_gap_mixed_case(self): exp = [ NucleotideSequence('-A.a'), NucleotideSequence('-A.c'), NucleotideSequence('-C.a'), NucleotideSequence('-C.c') ] obs = sorted(NucleotideSequence('-M.m').nondegenerates(), key=str) self.assertEqual(obs, exp)
def test_eq(self): self.assertTrue(self.b1 == self.b1) self.assertTrue(self.b2 == self.b2) self.assertTrue(self.b3 == self.b3) self.assertTrue(self.b1 != self.b3) self.assertTrue(self.b1 != self.b2) self.assertTrue(self.b2 != self.b3) # identicial sequences of the same type are equal, even if they have # different ids and/or descriptions self.assertTrue( BiologicalSequence('ACGT') == BiologicalSequence('ACGT')) self.assertTrue( BiologicalSequence('ACGT', id='a') == BiologicalSequence('ACGT', id='b')) self.assertTrue( BiologicalSequence('ACGT', description='c') == BiologicalSequence( 'ACGT', description='d')) self.assertTrue( BiologicalSequence('ACGT', id='a', description='c') == BiologicalSequence('ACGT', id='b', description='d')) # different type causes sequences to not be equal self.assertFalse( BiologicalSequence('ACGT') == NucleotideSequence('ACGT'))
def test_nondegenerates_mixed_degens(self): exp = [ NucleotideSequence('AGC'), NucleotideSequence('AGT'), NucleotideSequence('AGU'), NucleotideSequence('GGC'), NucleotideSequence('GGT'), NucleotideSequence('GGU') ] obs = sorted(NucleotideSequence('RGY').nondegenerates(), key=str) self.assertEqual(obs, exp)
def test_sequence_collection_to_fastq_kwargs_passed(self): for components, kwargs_expected_fp in self.valid_files: for kwargs, expected_fp in kwargs_expected_fp: obj = SequenceCollection([ NucleotideSequence(c[2], id=c[0], description=c[1], quality=c[3]) for c in components ]) fh = StringIO() _sequence_collection_to_fastq(obj, fh, **kwargs) observed = fh.getvalue() fh.close() with open(expected_fp, 'U') as f: expected = f.read() self.assertEqual(observed, expected)
def test_nondegenerates_all_degens(self): # Same chars. exp = [ NucleotideSequence('CC'), NucleotideSequence('CG'), NucleotideSequence('GC'), NucleotideSequence('GG') ] # Sort based on sequence string, as order is not guaranteed. obs = sorted(NucleotideSequence('SS').nondegenerates(), key=str) self.assertEqual(obs, exp) # Different chars. exp = [ NucleotideSequence('AC'), NucleotideSequence('AG'), NucleotideSequence('GC'), NucleotideSequence('GG') ] obs = sorted(NucleotideSequence('RS').nondegenerates(), key=str) self.assertEqual(obs, exp) # Odd number of chars. obs = list(NucleotideSequence('NNN').nondegenerates()) self.assertEqual(len(obs), 5**3)
def test_nondegenerates_invalid(self): with self.assertRaises(BiologicalSequenceError): list(NucleotideSequence('AZA').nondegenerates())
def setUp(self): self.empty = NucleotideSequence('') self.b1 = NucleotideSequence('GATTACA') self.b2 = NucleotideSequence('ACCGGUACC', id="test-seq-2", description="A test sequence")
def test_lower(self): b = NucleotideSequence('GAt.ACa-', id='x', description='42') expected = NucleotideSequence('gat.aca-', id='x', description='42') self.assertEqual(b.lower(), expected)
def test_upper(self): b = NucleotideSequence('GAt.ACa-', id='x', description='42') expected = NucleotideSequence('GAT.ACA-', id='x', description='42') self.assertEqual(b.upper(), expected)