def test_creating_batch(self): """Creating and modifying a restriction batch. """ batch = RestrictionBatch([EcoRI]) batch.add(KpnI) batch += EcoRV self.assertEqual(len(batch), 3) # The usual way to test batch membership self.assertIn(EcoRV, batch) self.assertIn(EcoRI, batch) self.assertIn(KpnI, batch) self.assertNotIn(SmaI, batch) # Syntax sugar for the above self.assertIn('EcoRV', batch) self.assertNotIn('SmaI', batch) batch.get(EcoRV) self.assertRaises(ValueError, batch.get, SmaI) batch.remove(EcoRV) self.assertEqual(len(batch), 2) self.assertNotIn(EcoRV, batch) self.assertNotIn('EcoRV', batch)
def test_creating_batch(self): """Creating and modifying a restriction batch.""" batch = RestrictionBatch([EcoRI]) batch.add(KpnI) batch += EcoRV self.assertEqual(len(batch), 3) # The usual way to test batch membership self.assertIn(EcoRV, batch) self.assertIn(EcoRI, batch) self.assertIn(KpnI, batch) self.assertNotIn(SmaI, batch) # Syntax sugar for the above self.assertIn('EcoRV', batch) self.assertNotIn('SmaI', batch) batch.get(EcoRV) self.assertRaises(ValueError, batch.get, SmaI) batch.remove(EcoRV) self.assertEqual(len(batch), 2) self.assertNotIn(EcoRV, batch) self.assertNotIn('EcoRV', batch) # Create a batch with suppliers and other supplier related methods # These tests may be 'update sensitive' since company names and # products may change often... batch = RestrictionBatch((), ('S')) # Sigma self.assertEqual(batch.current_suppliers(), ['Sigma Chemical Corporation']) self.assertIn(EcoRI, batch) self.assertNotIn(AanI, batch) batch.add_supplier('B') # Life Technologies self.assertIn(AanI, batch)
def test_creating_batch(self): """Creating and modifying a restriction batch.""" batch = RestrictionBatch() self.assertEqual(batch.suppl_codes()['N'], 'New England Biolabs') self.assertTrue(batch.is_restriction(EcoRI)) batch = RestrictionBatch([EcoRI]) batch.add(KpnI) batch += EcoRV self.assertEqual(len(batch), 3) self.assertEqual(batch.elements(), ['EcoRI', 'EcoRV', 'KpnI']) # Problem with Python 3, as sequence of list may be different: # self.assertEqual(batch.as_string(), ['EcoRI', 'KpnI', 'EcoRV']) self.assertIn('EcoRI', batch.as_string()) # The usual way to test batch membership self.assertIn(EcoRV, batch) self.assertIn(EcoRI, batch) self.assertIn(KpnI, batch) self.assertNotIn(SmaI, batch) # Syntax sugar for the above self.assertIn('EcoRV', batch) self.assertNotIn('SmaI', batch) batch.get(EcoRV) self.assertRaises(ValueError, batch.get, SmaI) batch.get(SmaI, add=True) self.assertEqual(len(batch), 4) batch.remove(SmaI) batch.remove(EcoRV) self.assertEqual(len(batch), 2) self.assertNotIn(EcoRV, batch) self.assertNotIn('EcoRV', batch) # Creating a batch by addition of restriction enzymes new_batch = EcoRI + KpnI self.assertEqual(batch, new_batch) # or by addition of a batch with an enzyme another_new_batch = new_batch + EcoRV new_batch += EcoRV self.assertEqual(another_new_batch, new_batch) self.assertRaises(TypeError, EcoRI.__add__, 1) # Create a batch with suppliers and other supplier related methods # These tests may be 'update sensitive' since company names and # products may change often... batch = RestrictionBatch((), ('S')) # Sigma self.assertEqual(batch.current_suppliers(), ['Sigma Chemical Corporation']) self.assertIn(EcoRI, batch) self.assertNotIn(AanI, batch) batch.add_supplier('B') # Life Technologies self.assertIn(AanI, batch)
def apply_restricts(dna, restricts, circular=False): '''Applies restriction site cleavage to forward and reverse strands.''' out_dnas = [dna] for restrict in restricts: batch = RestrictionBatch() batch.add(str(restrict)) restrict = batch.get(str(restrict)) out_dnas = _apply_restrict_to_dnas(out_dnas, restrict, circular) return out_dnas