def helper(name): in_path = examples / name out_path = tmp_path / in_path.name in_dna = snap.parse(examples / name) snap.write(out_path, in_dna) out_dna = snap.parse(out_path) print('input...') yield in_dna print('output...') yield out_dna
def test_extract_traces(examples, tmp_path): dna = snap.parse(examples / 'puc19_bsai_abc.dna') dna.extract_traces(tmp_path) assert (tmp_path / 'puc19_bsai_a.ztr').exists() assert (tmp_path / 'puc19_bsai_b.ztr').exists() assert (tmp_path / 'puc19_bsai_c.ztr').exists()
def test_replace_target(examples): dna = snap.parse(examples / 'puc19_bsai_ab.dna') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b'] dna.replace_trace(examples / 'puc19_bsai_b', examples / 'puc19_bsai_c.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_c']
def test_sort_traces(examples): dna = snap.parse(examples / 'puc19_bsai_abc.dna') assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b', 'puc19_bsai_c'] dna.sort_traces(reverse=True) assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_c', 'puc19_bsai_b', 'puc19_bsai_a']
def test_insert_trace(examples): dna = snap.parse(examples / 'puc19_bsai_ab.dna') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b'] dna.insert_trace(1, examples / 'puc19_bsai_c.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_c', 'puc19_bsai_b']
def test_remove_trace_dups(examples): dna = snap.parse(examples / 'puc19_bsai_ab.dna') dna.append_trace(examples / 'puc19_bsai_a.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b', 'puc19_bsai_a'] dna.remove_trace('puc19_bsai_a') assert dna.count_traces() == count_seq_blocks(dna) == 1 assert dna.trace_names == ['puc19_bsai_b']
def test_remove_feature(examples): dna = snap.parse(examples / 't7_promoter.dna') assert dna.count_features() == 1 dna.remove_feature('T7 promoter') assert dna.count_features() == 0 with pytest.raises(snap.FeatureNotFound): dna.remove_feature('T7 promoter') with pytest.raises(snap.FeatureNotFound): dna.remove_feature('Does not exist')
def test_add_feature(examples): dna = snap.parse(examples / 't7_promoter.dna') assert dna.count_features() == 1 feat = snap.Feature() feat.name = 'Blah' feat.segments = [snap.FeatureSegment()] feat.segments[0].range = 2, 18 feat.segments[0].color = '#ff0000' dna.add_feature(feat) assert dna.count_features() == 2
def test_clear_traces(examples): dna = snap.parse(examples / 'puc19_bsai_abc.dna') assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b', 'puc19_bsai_c'] dna.clear_traces() assert dna.count_traces() == count_seq_blocks(dna) == 0 assert dna.trace_names == [] # Not an error to clar an empty sequence. dna.clear_traces() assert dna.count_traces() == count_seq_blocks(dna) == 0 assert dna.trace_names == []
def test_remove_trace(examples): dna = snap.parse(examples / 'puc19_bsai_abc.dna') assert dna.count_traces() == count_seq_blocks(dna) == 3 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b', 'puc19_bsai_c'] dna.remove_trace('puc19_bsai_b') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_c'] dna.remove_trace('puc19_bsai_c') assert dna.count_traces() == count_seq_blocks(dna) == 1 assert dna.trace_names == ['puc19_bsai_a'] dna.remove_trace(examples / 'puc19_bsai_a.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 0 assert dna.trace_names == [] with pytest.raises(ValueError): dna.remove_trace('xxx')
def test_add_trace(examples): dna = snap.parse(examples / 'puc19_bsai.dna') assert dna.count_traces() == count_seq_blocks(dna) == 0 assert dna.trace_names == [] dna.add_trace(examples / 'puc19_bsai_a.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 1 assert dna.trace_names == ['puc19_bsai_a'] dna.add_trace(examples / 'puc19_bsai_a.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 1 assert dna.trace_names == ['puc19_bsai_a'] dna.add_trace(examples / 'puc19_bsai_b.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b'] dna.add_trace(examples / 'puc19_bsai_b.ab1') assert dna.count_traces() == count_seq_blocks(dna) == 2 assert dna.trace_names == ['puc19_bsai_a', 'puc19_bsai_b']
suggested by NEB above, which is interesting because this sequence is presumably optimized to be short (as it’s already on the long-side for a PCR primer). It’s also worth noting that the aaaaaat 3’ of the SD sequence creates a 6 bp spacing, 1 bp longer than ideal. Again, it’s not clear what the rationale for this is."""), ), ), Block( name={ k: " ".join(["Zif268"] + ([] if k == 'wt' else [k.upper()])) for k in names }, sequence={ k: reverse_translate( snap.parse(f'zif268_{k}.prot').protein_sequence, forbidden_seqs=restriction_sites, include_stop=False, ) for k in names }, type='CDS', color=colors['blue'], directionality='forward', is_translated=True, ), # 3' BsaI site for Golden Gate cloning. Block('tGAGACCa'), ]
def test_trace_names(examples, path, names): dna = snap.parse(examples / path) assert dna.trace_names == names
def test_have_trace(examples, path, name, has_trace): dna = snap.parse(examples / path) assert dna.has_trace(name) == has_trace
def test_count_traces(examples, path, count): dna = snap.parse(examples / path) assert dna.count_traces() == count
def test_get_feature(examples): dna = snap.parse(examples / 't7_promoter.dna') feat = dna.get_feature("T7 promoter") assert feat.name == "T7 promoter" assert feat.type == 'promoter'
def test_clear_features(examples): dna = snap.parse(examples / 't7_promoter.dna') assert dna.count_features() == 1 dna.clear_features() assert dna.count_features() == 0
def _seq_from_tag(dir, tag): if path := _path_from_tag(dir, tag): return snap.parse(path).dna_sequence
def get_plasmid_seq(tag): dna = snap.parse(get_plasmid_path(tag)) return DnaSeq(dna.sequence)