Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

120 lines (96 sloc) 3.437 kb
"""Testing code for Restriction enzyme classes of Biopython.
"""
import unittest
from Bio.Restriction import *
from Bio.Seq import Seq
from Bio.Alphabet.IUPAC import IUPACAmbiguousDNA
class SimpleEnzyme(unittest.TestCase):
"""Tests for dealing with basic enzymes using the Restriction package.
"""
def setUp(self):
base_seq = Seq("AAAA", IUPACAmbiguousDNA())
self.ecosite_seq = base_seq + Seq(EcoRI.site,
IUPACAmbiguousDNA()) + base_seq
def tearDown(self):
pass
def test_eco_cutting(self):
"""Test basic cutting with EcoRI.
"""
assert EcoRI.site == 'GAATTC'
assert EcoRI.is_blunt() == False
assert EcoRI.is_5overhang() == True
assert EcoRI.is_3overhang() == False
assert EcoRI.elucidate() == "G^AATT_C"
assert EcoRI.search(self.ecosite_seq) == [6]
parts = EcoRI.catalyse(self.ecosite_seq)
assert len(parts) == 2
assert parts[1].tostring() == "AATTCAAAA"
parts = EcoRI.catalyze(self.ecosite_seq)
assert len(parts) == 2
def test_circular_sequences(self):
"""Deal with cutting circular sequences.
"""
parts = EcoRI.catalyse(self.ecosite_seq, linear = False)
assert len(parts) == 1
locations = EcoRI.search(parts[0], linear = False)
assert locations == [1]
class EnzymeComparison(unittest.TestCase):
"""Tests for comparing various enzymes.
"""
def setUp(self):
pass
def tearDown(self):
pass
def test_basic_isochizomers(self):
"""Test to be sure isochizomer and neoschizomers are as expected.
"""
assert Acc65I.isoschizomers() == [Asp718I, KpnI]
assert Acc65I.elucidate() == 'G^GTAC_C'
assert Asp718I.elucidate() == 'G^GTAC_C'
assert KpnI.elucidate() == 'G_GTAC^C'
def test_comparisons(self):
"""Comparison operators between iso and neoschizomers.
"""
assert Acc65I == Acc65I
assert Acc65I != KpnI
assert not(Acc65I == Asp718I)
assert not(Acc65I != Asp718I)
assert Acc65I != EcoRI
assert Acc65I >> KpnI
assert not(Acc65I >> Asp718I)
assert Acc65I % Asp718I
assert Acc65I % Acc65I
assert not(Acc65I % KpnI)
class RestrictionBatches(unittest.TestCase):
"""Tests for dealing with batches of restriction enzymes.
"""
def setUp(self):
pass
def tearDown(self):
pass
def test_creating_batch(self):
"""Creating and modifying a restriction batch.
"""
batch = RestrictionBatch([EcoRI])
batch.add(KpnI)
batch += EcoRV
assert len(batch) == 3
batch.get(EcoRV)
try:
batch.get(SmaI)
raise AssertionError("No error with non-existent enzyme.")
except ValueError:
pass
batch.remove(EcoRV)
assert len(batch) == 2
def test_batch_analysis(self):
"""Sequence analysis with a restriction batch.
"""
seq = Seq("AAAA" + EcoRV.site + "AAAA" + EcoRI.site + "AAAA",
IUPACAmbiguousDNA())
batch = RestrictionBatch([EcoRV, EcoRI])
hits = batch.search(seq)
assert hits[EcoRV] == [8] and hits[EcoRI] == [16]
if __name__ == "__main__":
runner = unittest.TextTestRunner(verbosity = 2)
unittest.main(testRunner=runner)
Jump to Line
Something went wrong with that request. Please try again.