mirror of
https://github.com/biopython/biopython.git
synced 2025-10-21 06:23:48 +08:00
Reverted unwanted changes (mostly arrays in tests, but also some whitespace in doctests). Remaining changes are standardising spacing between module docstring and imports, and lower-case \x<hex> in strings.
93 lines
3.2 KiB
Python
93 lines
3.2 KiB
Python
# This code is part of the Biopython distribution and governed by its
|
|
# license. Please see the LICENSE file that should have been included
|
|
# as part of this package.
|
|
|
|
|
|
"""Tests of the transcription and translation methods of Seq objects."""
|
|
|
|
import unittest
|
|
|
|
from Bio import Seq
|
|
|
|
|
|
class TestTranscriptionTranslation(unittest.TestCase):
|
|
def test_transcription(self):
|
|
s = "ATA"
|
|
dna = Seq.Seq(s)
|
|
rna = dna.transcribe()
|
|
self.assertEqual(rna, "AUA")
|
|
s = "GAAAATTCATTTTCTTTGGACTTTCTCTGAAATCCGAGTCCTAGGAAAGATGCGTGAGATTCTTCATATT"
|
|
dna = Seq.Seq(s)
|
|
rna = dna.transcribe()
|
|
self.assertEqual(
|
|
rna,
|
|
"GAAAAUUCAUUUUCUUUGGACUUUCUCUGAAAUCCGAGUCCUAGGAAAGAUGCGUGAGAUUCUUCAUAUU",
|
|
)
|
|
s = "GAAAAUUCAUUUUCUUUGGACUUUCUCUGAAAUCCGAGUCCUAGGAAAGAUGCGUGAGAUUCUUCAUAUU"
|
|
rna = Seq.Seq(s)
|
|
dna = rna.back_transcribe()
|
|
self.assertEqual(
|
|
dna,
|
|
"GAAAATTCATTTTCTTTGGACTTTCTCTGAAATCCGAGTCCTAGGAAAGATGCGTGAGATTCTTCATATT",
|
|
)
|
|
|
|
def test_translation(self):
|
|
s = ""
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate(to_stop=True)
|
|
self.assertEqual(protein, "")
|
|
s = "TAA"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate(to_stop=True)
|
|
self.assertEqual(protein, "")
|
|
s = "GAAAATTCATTTTCTTTGGACTTTCTCTGAAATCCGAGTCCTAGGAAAGATGCGTGAGATTCTTCA"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate(to_stop=True)
|
|
self.assertEqual(protein, "ENSFSLDFL")
|
|
s = "GAA"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate(15, to_stop=True)
|
|
self.assertEqual(protein, "E")
|
|
s = "ATA"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate("Vertebrate Mitochondrial", to_stop=True)
|
|
self.assertEqual(protein, "M")
|
|
s = "GAAAATTCATTTTCTTTGGACTTTCTCTGAAATCCGAGTCCTAGGAAAGATGCGTGAGATTCTTCATAT"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate("SGC8", to_stop=True)
|
|
self.assertEqual(protein, "ENSFSLDFLWNPSPSNDAWDSSY")
|
|
|
|
def test_dna_rna_translation(self):
|
|
s = "TCAAAAAGGTGCATCTAGATG"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate(to_stop=True)
|
|
self.assertEqual(protein, "SKRCI")
|
|
gapped_protein = dna.translate()
|
|
self.assertEqual(gapped_protein, "SKRCI*M")
|
|
# The table used here has "AGG" as a stop codon:
|
|
p2 = dna.translate(table=2, to_stop=True)
|
|
self.assertEqual(p2, "SK")
|
|
p2 = dna.translate(table=2)
|
|
self.assertEqual(p2, "SK*CI*M")
|
|
p2 = dna.translate(table=2, stop_symbol="+")
|
|
self.assertEqual(p2, "SK+CI+M")
|
|
r = s.replace("T", "U")
|
|
rna = Seq.Seq(r)
|
|
protein = rna.translate(to_stop=True)
|
|
self.assertEqual(protein, "SKRCI")
|
|
gapped_protein = rna.translate()
|
|
self.assertEqual(gapped_protein, "SKRCI*M")
|
|
|
|
def test_ambiguous(self):
|
|
s = "RATGATTARAATYTA"
|
|
dna = Seq.Seq(s)
|
|
protein = dna.translate("Vertebrate Mitochondrial")
|
|
self.assertEqual(protein, "BD*NL")
|
|
stop_protein = dna.translate("SGC1", to_stop=True)
|
|
self.assertEqual(stop_protein, "BD")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
runner = unittest.TextTestRunner(verbosity=2)
|
|
unittest.main(testRunner=runner)
|