def test_join_UnknownSeq(self): """Checks if UnknownSeq join correctly concatenates sequence with the spacer.""" spacer1 = UnknownSeq(5, character="-") spacer2 = UnknownSeq(0, character="-") spacers = [spacer1, spacer2] self.assertEqual( "-" * 15, spacer1.join([UnknownSeq(5, character="-"), UnknownSeq(5, character="-")]), ) self.assertEqual( "N" * 5 + "-" * 10, spacer1.join([Seq("NNNNN"), UnknownSeq(5, character="-")]), ) example_strings = ["ATG", "ATG", "ATG", "ATG"] example_strings_seqs = ["ATG", "ATG", Seq("ATG"), "ATG"] # strings with empty spacer str_concatenated = spacer2.join(example_strings) self.assertEqual(str_concatenated, "".join(example_strings)) for spacer in spacers: seq_concatenated = spacer.join(example_strings_seqs) self.assertEqual(seq_concatenated, str(spacer).join(example_strings)) # Now try single sequence arguments, should join the letters for target in example_strings + example_strings_seqs: self.assertEqual( str(spacer).join(str(target)), str(spacer.join(target)) )
def test_join_UnknownSeq(self): """Checks if UnknownSeq join correctly concatenates sequence with the spacer.""" # Only expect it to take Seq objects and/or strings in an iterable! spacer1 = UnknownSeq(0, character="-", alphabet=generic_dna) spacers = [ spacer1, UnknownSeq(5, character="-", alphabet=generic_dna), UnknownSeq(5, character="-", alphabet=generic_nucleotide) ] example_strings = ["ATG", "ATG", "ATG", "ATG"] example_strings_seqs = ["ATG", "ATG", Seq("ATG", generic_dna), "ATG"] # strings with empty spacer str_concatenated = spacer1.join(example_strings) self.assertEqual(str(str_concatenated), "".join(example_strings)) self.assertEqual(str_concatenated.alphabet, spacer1.alphabet) for spacer in spacers: seq_concatenated = spacer.join(example_strings_seqs) self.assertEqual(str(seq_concatenated), str(spacer).join(example_strings)) self.assertEqual(seq_concatenated.alphabet, spacer.alphabet)
def test_join_UnknownSeq_mixed_alpha(self): """Check UnknownSeq can join incompatible alphabets.""" spacer = UnknownSeq(5, character="-", alphabet=generic_dna) self.assertEqual( "-" * 15, spacer.join([ UnknownSeq(5, character="-", alphabet=generic_rna), UnknownSeq(5, character="-", alphabet=generic_rna), ]), ) self.assertEqual( "N" * 5 + "-" * 10, spacer.join([ Seq("NNNNN", generic_protein), UnknownSeq(5, character="-", alphabet=generic_protein), ]), )
def test_join_UnknownSeq_with_file(self): """Checks if UnknownSeq join correctly concatenates sequence from a file with the spacer.""" filename = 'Fasta/f003' seqlist = [record.seq for record in SeqIO.parse(filename, 'fasta')] seqlist_as_strings = [str(_) for _ in seqlist] spacer = UnknownSeq(0, character="-", alphabet=generic_dna) spacer1 = UnknownSeq(5, character="-", alphabet=generic_dna) # seq objects with spacer seq_concatenated = spacer.join(seqlist) # seq objects with empty spacer seq_concatenated1 = spacer1.join(seqlist) ref_data = ref_data1 = "" ref_data = str(spacer).join(seqlist_as_strings) ref_data1 = str(spacer1).join(seqlist_as_strings) self.assertEqual(str(seq_concatenated), ref_data) self.assertEqual(str(seq_concatenated1), ref_data1) with self.assertRaises(TypeError): spacer.join(SeqIO.parse(filename, 'fasta'))