예제 #1
0
    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
예제 #2
0
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()
예제 #3
0
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']
예제 #4
0
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']
예제 #5
0
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']
예제 #6
0
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']
예제 #7
0
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')
예제 #8
0
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
예제 #9
0
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 == []
예제 #10
0
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')
예제 #11
0
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']
예제 #12
0
                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'),
]
예제 #13
0
def test_trace_names(examples, path, names):
    dna = snap.parse(examples / path)
    assert dna.trace_names == names
예제 #14
0
def test_have_trace(examples, path, name, has_trace):
    dna = snap.parse(examples / path)
    assert dna.has_trace(name) == has_trace
예제 #15
0
def test_count_traces(examples, path, count):
    dna = snap.parse(examples / path)
    assert dna.count_traces() == count
예제 #16
0
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'
예제 #17
0
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
예제 #18
0
def _seq_from_tag(dir, tag):
    if path := _path_from_tag(dir, tag):
        return snap.parse(path).dna_sequence
예제 #19
0
def get_plasmid_seq(tag):
    dna = snap.parse(get_plasmid_path(tag))
    return DnaSeq(dna.sequence)