def initial_design() -> sc.Design:
    max_offset = 1295
    helices = [
        # below uses cadnano honeycomb coordinates
        # https://github.com/UC-Davis-molecular-computing/scadnano-python-package/blob/master/misc/cadnano-format-specs/v2.txt
        sc.Helix(grid_position=(1, 1), max_offset=max_offset),
        sc.Helix(grid_position=(0, 1), max_offset=max_offset),
        sc.Helix(grid_position=(0, 2), max_offset=max_offset),
        sc.Helix(grid_position=(1, 2), max_offset=max_offset),
        sc.Helix(grid_position=(2, 2), max_offset=max_offset),
        sc.Helix(grid_position=(2, 1), max_offset=max_offset),
    ]
    scafs = [
        sc.Strand([sc.Domain(helix=0, forward=True, start=16, end=1276)]),
        sc.Strand([sc.Domain(helix=1, forward=False, start=16, end=1276)]),
        sc.Strand([sc.Domain(helix=2, forward=True, start=12, end=1272)]),
        sc.Strand([sc.Domain(helix=3, forward=False, start=12, end=1272)]),
        sc.Strand([sc.Domain(helix=4, forward=True, start=19, end=1279)]),
        sc.Strand([sc.Domain(helix=5, forward=False, start=19, end=1279)]),
    ]
    staps = [
        sc.Strand([sc.Domain(helix=0, forward=False, start=42, end=1246)]),
        sc.Strand([sc.Domain(helix=1, forward=True, start=42, end=1246)]),
        sc.Strand([sc.Domain(helix=2, forward=False, start=42, end=1246)]),
        sc.Strand([sc.Domain(helix=3, forward=True, start=42, end=1246)]),
        sc.Strand([sc.Domain(helix=4, forward=False, start=42, end=1246)]),
        sc.Strand([sc.Domain(helix=5, forward=True, start=42, end=1246)]),
    ]
    strands = scafs + staps
    return sc.Design(helices=helices, strands=strands, grid=sc.honeycomb)
def create_design() -> sc.Design:
    length = 16
    helices = [sc.Helix(max_offset=length, grid_position=(h, v))
               for v in range(-4, 6) for h in range(-4, 6)]
    design = sc.Design(helices=helices, strands=[], grid=sc.honeycomb)

    return design
Пример #3
0
def create_design():
    length = 10
    helices = [
        sc.Helix(max_offset=length,
                 position=sc.Position3D(x=0, y=0, z=2.5),
                 pitch=0,
                 roll=0,
                 yaw=0),
        sc.Helix(max_offset=length,
                 position=sc.Position3D(x=3, y=3, z=0),
                 pitch=0,
                 roll=0,
                 yaw=0),
        sc.Helix(max_offset=length,
                 position=sc.Position3D(x=8, y=-3, z=0),
                 pitch=0,
                 roll=0,
                 yaw=0),
        sc.Helix(max_offset=length,
                 position=sc.Position3D(x=11, y=1, z=0),
                 pitch=0,
                 roll=0,
                 yaw=0),
    ]
    stap_ss = sc.Domain(0, True, 0, length)
    scaf_ss = sc.Domain(0, False, 0, length)
    stap = sc.Strand([stap_ss])
    scaf = sc.Strand([scaf_ss], color=sc.default_scaffold_color)
    strands = [stap, scaf]
    design = sc.Design(helices=helices, strands=strands, grid=sc.Grid.none)

    return design
Пример #4
0
def create_design() -> sc.Design:
    blue = sc.Color(r=0, g=0, b=255)
    black = sc.Color(r=0, g=0, b=0)
    red = sc.Color(r=255, g=0, b=0)
    green = sc.Color(r=0, g=150, b=0)
    cols = 8
    rows = 8
    helices = [sc.Helix(major_tick_distance=10) for _ in range(rows + 1)]
    strands = []
    for col in range(cols):
        for row in range(rows):
            helix = row
            forward = row % 2 == 0
            if forward:
                offset = col * 20
                ss1 = sc.Domain(helix, forward, offset, offset + 20)
                ss2 = sc.Domain(helix + 1, forward, offset + 20, offset + 40)
            else:
                offset = col * 20
                ss2 = sc.Domain(helix, forward, offset + 10, offset + 30)
                ss1 = sc.Domain(helix + 1, forward, offset + 30, offset + 50)
            if forward:
                color = blue if col % 2 == 0 else black
            else:
                color = red if col % 2 == 0 else green
            strand = sc.Strand([ss1, ss2], color=color)
            strands.append(strand)

    design = sc.Design(helices=helices, strands=strands, grid=sc.square)

    return design
Пример #5
0
def create_design():
    # left staple
    stap_left_ss1 = sc.Domain(helix=1, forward=True, start=0, end=16)
    stap_left_ss0 = sc.Domain(helix=0, forward=False, start=0, end=16)
    stap_left = sc.Strand(domains=[stap_left_ss1, stap_left_ss0])

    # right staple
    stap_right_ss0 = sc.Domain(helix=0, forward=False, start=16, end=32)
    stap_right_ss1 = sc.Domain(helix=1, forward=True, start=16, end=32)
    stap_right = sc.Strand(domains=[stap_right_ss0, stap_right_ss1])

    # scaffold
    scaf_ss1_left = sc.Domain(helix=1, forward=False, start=0, end=16)
    scaf_ss0 = sc.Domain(helix=0, forward=True, start=0, end=32)
    loopout = sc.Loopout(length=3)
    scaf_ss1_right = sc.Domain(helix=1, forward=False, start=16, end=32)
    scaf = sc.Strand(domains=[scaf_ss1_left, scaf_ss0, loopout, scaf_ss1_right], is_scaffold=True)

    # whole design
    design = sc.Design(strands=[scaf, stap_left, stap_right], grid=sc.square)

    # deletions and insertions added to design so they can be added to both strands on a helix
    design.add_deletion(helix=0, offset=11)
    design.add_deletion(helix=0, offset=12)
    design.add_deletion(helix=0, offset=24)
    design.add_deletion(helix=1, offset=12)
    design.add_deletion(helix=1, offset=24)

    design.add_insertion(helix=0, offset=6, length=1)
    design.add_insertion(helix=0, offset=18, length=2)
    design.add_insertion(helix=1, offset=6, length=3)
    design.add_insertion(helix=1, offset=18, length=4)
    
    return design
def create_design():
    num_helices = 16
    bases = 48
    helices = [sc.Helix() for _ in range(num_helices)]
    strands = []
    for bot in range(num_helices // 2):
        top = num_helices - bot - 1
        helix_top = helices[bot]
        helix_bot = helices[top]

        stap_left_ss_top = sc.Domain(top, True, 0, bases // 3)
        stap_left_ss_bot = sc.Domain(bot, False, 0, bases // 3)
        stap_mid_ss_bot = sc.Domain(bot, False, bases // 3, bases * 2 // 3)
        stap_mid_ss_top = sc.Domain(top, True, bases // 3, bases * 2 // 3)
        stap_right_ss_top = sc.Domain(top, True, bases * 2 // 3, bases)
        stap_right_ss_bot = sc.Domain(bot, False, bases * 2 // 3, bases)
        stap_left = sc.Strand([stap_left_ss_bot, stap_left_ss_top])
        stap_mid = sc.Strand([stap_mid_ss_top, stap_mid_ss_bot])
        stap_right = sc.Strand([stap_right_ss_bot, stap_right_ss_top])
        strands.append(stap_left)
        strands.append(stap_mid)
        strands.append(stap_right)

    design = sc.Design(helices=helices, strands=strands, grid=sc.square)

    return design
Пример #7
0
def precursor_scaffolds() -> sc.Design:

    #2D design has to be topologically a circle

    helices = [sc.Helix(max_offset=int(block * cmax)) for _ in range(maxhelix)]
    scaffolds = []
    for helix in range(len(img)):
        if (1 in img[helix]):
            for dom in range(len(img[helix])):
                if (img[helix][dom] == 1) and (img[helix][dom - 1] == 0):
                    start = block * dom
                if (img[helix][dom] == 0) and (img[helix][dom - 1] == 1):
                    end = block * dom

                    scaffolds.append(
                        sc.Strand([
                            sc.Domain(helix=2 * helix,
                                      forward=((2 * helix) % 2 == 0),
                                      start=start,
                                      end=end)
                        ]))
                    scaffolds.append(
                        sc.Strand([
                            sc.Domain(helix=(2 * helix) + 1,
                                      forward=((2 * helix + 1) % 2 == 0),
                                      start=start,
                                      end=end)
                        ]))
    return sc.Design(helices=helices, strands=scaffolds, grid=sc.square)
def create_design() -> sc.Design:
    helices = []
    num_helices, max_bases = 30, 2000
    for _ in range(num_helices):
        helices.append(sc.Helix(max_bases))
    design = sc.Design(helices=helices, strands=[], grid=sc.square)

    return design
def create_design():
    length = 16
    helices = [
        sc.Helix(max_offset=length, grid_position=(h, v)) for v in range(10)
        for h in range(10)
    ]
    design = sc.Design(helices=helices, strands=[], grid=sc.hexagonal)

    return design
Пример #10
0
def create_design() -> sc.Design:
    helices = [sc.Helix(max_offset=24) for _ in range(2)]
    design = sc.Design(helices=helices, grid=sc.square)

    design.strand(0, 0).move(8).cross(1).move(-8).as_circular()
    design.strand(0, 8).move(8).loopout(1, 5).move(-8).as_circular()
    design.strand(0, 16).move(8).cross(1).move(-8)

    return design
Пример #11
0
def create_design() -> sc.Design:
    ss_f = sc.Domain(helix=0, forward=True, start=0, end=10)
    loop = sc.Loopout(length=5)
    ss_r = sc.Domain(helix=0, forward=False, start=0, end=10)
    hairpin = sc.Strand([ss_f, loop, ss_r])
    design = sc.Design(strands=[hairpin], grid=sc.square)

    design.assign_dna(hairpin, 'AAAAACCCCCTGCAT')

    return design
def create_design() -> sc.Design:
    helices = [
        sc.Helix(idx=2, max_offset=20),
        sc.Helix(idx=3, max_offset=20),
        sc.Helix(idx=5, max_offset=20),
        sc.Helix(idx=7, max_offset=20),
        sc.Helix(idx=11, max_offset=20),
    ]
    design = sc.Design(helices=helices, strands=[])
    # design.set_helices_view_order([5, 2, 11, 3, 7])
    return design
Пример #13
0
def create_design():
    length = 9
    helices = [sc.Helix(max_offset=length, roll=90)]
    stap_ss = sc.Domain(0, True, 0, length)
    scaf_ss = sc.Domain(0, False, 0, length)
    stap = sc.Strand([stap_ss])
    scaf = sc.Strand([scaf_ss], color=sc.default_scaffold_color)
    strands = [stap, scaf]
    design = sc.Design(helices=helices, strands=strands, grid=sc.square)
    design.assign_dna(scaf, 'AACT' * (length // 4))

    return design
def create_design() -> sc.Design:
    length = 10
    stap_ss = sc.Domain(0, True, 0, length)
    scaf_ss = sc.Domain(0, False, 0, length)
    stap = sc.Strand([stap_ss])
    scaf = sc.Strand([scaf_ss], color=sc.default_scaffold_color)
    strands = [stap, scaf]
    design = sc.Design(strands=strands, grid=sc.square)
    insertion_length = 4
    design.add_insertion(helix=0, offset=2, length=insertion_length)
    design.add_insertion(helix=0, offset=8, length=insertion_length)
    scaf.set_dna_sequence('AG' + 'A' * (length + 2 * insertion_length - 2))
    stap.set_dna_sequence('ATTCTCTTGCTTTTTTCA')

    return design
Пример #15
0
def create_design() -> sc.Design:
    # multiple-domain
    ss0_1 = sc.Domain(helix=0, forward=False, start=0, end=4)
    ss1 = sc.Domain(helix=1, forward=True, start=0, end=8)
    ss0_2 = sc.Domain(helix=0, forward=False, start=4, end=8)
    strand_multi = sc.Strand(domains=[ss0_1, ss1, ss0_2])

    # single domain
    ss0_single = sc.Domain(helix=0, forward=True, start=0, end=8)
    strand_single = sc.Strand(domains=[ss0_single])

    # whole design
    design = sc.Design(strands=[strand_multi, strand_single], grid=sc.square)

    return design
def create_design() -> sc.Design:
    helices = [sc.Helix(max_offset=288) for _ in range(24)]
    design = sc.Design(helices=helices, grid=sc.square)

    add_scaffold_precursors(design)
    add_scaffold_crossovers(design)

    add_staple_precursors(design)
    add_staple_crossovers(design)
    add_staple_nicks(design)

    add_twist_correction_deletions(design)
    design.assign_m13_to_scaffold()

    return design
Пример #17
0
def main():
    helices = [sc.Helix(0, 25), sc.Helix(1, 25)]

    s1_left_ss0 = sc.Domain(0, sc.reverse, 0, 5)
    s1_ss1 = sc.Domain(0, sc.forward, 0, 15)
    s1_right_ss0 = sc.Domain(0, sc.reverse, 5, 15)
    s1 = sc.Strand([s1_left_ss0, s1_ss1, s1_right_ss0])

    s2_ss1 = sc.Domain(0, sc.forward, 10, 20)
    s2_ss0 = sc.Domain(0, sc.reverse, 10, 20)
    s2 = sc.Strand([s2_ss1, s2_ss0])

    strands = [s1, s2]
    design = sc.Design(helices=helices, strands=strands, grid=sc.square)

    return design
Пример #18
0
def create_design():
    length = 30
    helices = [
        sc.Helix(min_offset=0, max_offset=length, grid_position=(0, 0)),
        sc.Helix(min_offset=1, max_offset=length, grid_position=(0, 1)),
        sc.Helix(min_offset=2, max_offset=length, grid_position=(0, 2)),
        sc.Helix(min_offset=3, max_offset=length, grid_position=(0, 3)),
    ]
    stap_ss = sc.Domain(0, True, 0, length - 1)
    scaf_ss = sc.Domain(0, False, 0, length - 1)
    stap = sc.Strand([stap_ss])
    scaf = sc.Strand([scaf_ss], color=sc.default_scaffold_color)
    strands = [stap, scaf]
    design = sc.Design(helices=helices, strands=strands, grid=sc.Grid.square)

    return design
Пример #19
0
def create_design():
    length = 9
    helices = [
        sc.Helix(max_offset=length,
                 major_ticks=[2, 5],
                 position=sc.Position3D(x=1, y=2, z=3),
                 pitch=90)
    ]
    stap_ss = sc.Domain(0, True, 0, length)
    scaf_ss = sc.Domain(0, False, 0, length)
    stap = sc.Strand([stap_ss])
    scaf = sc.Strand([scaf_ss], color=sc.default_scaffold_color)
    strands = [stap, scaf]
    design = sc.Design(helices=helices, strands=strands, grid=sc.Grid.none)
    design.assign_dna(scaf, 'AACT' * (length // 4))

    return design
Пример #20
0
def create_design():
    stap_left_ss1 = sc.Domain(1, True, 0, 16)
    stap_left_ss0 = sc.Domain(0, False, 0, 16)
    stap_right_ss0 = sc.Domain(0, False, 16, 32)
    stap_right_ss1 = sc.Domain(1, True, 16, 32)
    scaf_ss1_left = sc.Domain(1, False, 0, 16)
    scaf_ss0 = sc.Domain(0, True, 0, 32)
    scaf_ss1_right = sc.Domain(1, False, 16, 32)
    stap_left = sc.Strand([stap_left_ss1, stap_left_ss0])
    stap_right = sc.Strand([stap_right_ss0, stap_right_ss1])
    scaf = sc.Strand([scaf_ss1_left, scaf_ss0, scaf_ss1_right],
                     color=sc.default_scaffold_color)
    strands = [scaf, stap_left, stap_right]
    design = sc.Design(strands=strands, grid=sc.square)
    design.add_deletion(helix=0, offset=11)
    design.add_deletion(helix=0, offset=12)
    design.add_deletion(helix=0, offset=24)
    design.add_deletion(helix=1, offset=12)
    design.add_deletion(helix=1, offset=24)
    design.add_insertion(helix=0, offset=29, length=1)
    design.add_insertion(helix=1, offset=2, length=1)
    design.assign_dna(scaf, 'AACT' * 16)

    # biotin_mod_5p = dataclasses.replace(mod.biotin_5p, font_size=30)
    # cy3_mod_3p = dataclasses.replace(mod.cy3_3p, font_size=30)

    stap_left.set_modification_5p(mod.biotin_5p)
    stap_left.set_modification_3p(mod.cy3_3p)
    stap_left.set_modification_internal(9, mod.cy3_int)
    stap_left.set_modification_internal(10, mod.biotin_int)
    stap_left.set_modification_internal(11, mod.cy3_int)
    stap_left.set_modification_internal(12, mod.cy5_int)
    stap_left.set_modification_internal(4, mod.cy3_int)
    stap_left.set_modification_internal(26, mod.cy5_int)

    stap_right.set_modification_5p(mod.cy5_5p)
    stap_right.set_modification_internal(5, mod.cy3_int)
    stap_right.set_modification_3p(mod.biotin_3p)

    scaf.set_modification_5p(mod.biotin_5p)
    scaf.set_modification_3p(mod.cy3_3p)
    scaf.set_modification_internal(5, mod.cy5_int)
    scaf.set_modification_internal(32, mod.cy3_int)

    return design
Пример #21
0
def create_design() -> sc.Design:
    ss1_r = sc.Domain(0, True, 0, 4)
    ss2_r = sc.Domain(0, True, 4, 8)
    ss3_r = sc.Domain(0, True, 8, 12)
    ss_l = sc.Domain(0, False, 0, 12)

    s1_r = sc.Strand([ss1_r], idt=sc.IDTFields(), name='s1_r')
    s2_r = sc.Strand([ss2_r], idt=sc.IDTFields(), name='s1_r')
    s3_r = sc.Strand([ss3_r], idt=sc.IDTFields(), name='s1_r')
    s_l = sc.Strand([ss_l], idt=sc.IDTFields(), name='s_l')

    strands = [s1_r, s2_r, s3_r, s_l]

    design = sc.Design(strands=strands, grid=sc.square)

    design.assign_dna(s_l, 'AGTT'*3)

    return design
Пример #22
0
def create_helices(shape_outline, lattice, hex_or_square) -> sc.Design:
    """Given the outline, complete lattice, and if the lattice is hex or square, creates the base helices without any strands"""
    if hex_or_square == 'hex':
        grid_type = sc.hexagonal
    elif hex_or_square == 'square':
        grid_type = sc.square
    else:
        raise Exception("Error in create_helices(), input for hex_or_square must be eihter 'hex' or 'square'")

    max_offset = sc_general.find_max(shape_outline)
    size = len(lattice)
    helices = []
    for i in range(size):
        position = lattice[i]
        helices.append(sc.Helix(max_offset = max_offset, grid_position = position))
    design = sc.Design(helices = helices, strands = [], grid = grid_type)

    return design
def create_design() -> sc.Design:
    num_domains = 9
    helices = [sc.Helix(max_offset=(num_domains) * 8)]
    design: sc.Design = sc.Design(helices=helices, strands=[], grid=sc.square)
    design.strand(0, (num_domains - 1) * 8) \
        .move(-8).with_domain_name('domain 8*') \
        .move(-8).with_domain_name('domain 7*') \
        .move(-8).with_domain_name('domain 6*') \
        .move(-8).with_domain_name('domain 5*') \
        .move(-8).with_domain_name('domain 4*') \
        .move(-8).with_domain_name('domain 3*') \
        .move(-8).with_domain_name('domain 2*') \
        .move(-8).with_domain_name('domain 1*') \
        .with_name('bottom strand')

    # domain names match
    design.strand(
        0, 0).move(8).with_domain_name('domain 1').with_name('top strand 1')

    # domains are aligns but names mismatch
    design.strand(
        0, 8).move(8).with_domain_name('domain 50').with_name('top strand 2')

    # domain names match
    design.strand(
        0, 16).move(8).with_domain_name('domain 3').with_name('top strand 3')

    # domain names are the same, not complementary
    design.strand(
        0, 24).move(8).with_domain_name('domain 4*').with_name('top strand 4')

    # domain names match but domains are mis-aligned
    design.strand(
        0, 32).move(9).with_domain_name('domain 5').with_name('top strand 5')

    # domain names match but domains are mis-aligned
    design.strand(
        0, 48).move(7).with_domain_name('domain 7').with_name('top strand 7')

    # no overlap so no mismatch
    design.strand(
        0, 64).move(8).with_domain_name('domain 9').with_name('top strand 9')

    return design
Пример #24
0
def create_design():
    NUM_HELICES = 8
    WIDTH = 16
    doms = [sc.Domain(h, h % 2 == 0, 0, WIDTH) for h in range(NUM_HELICES)]
    strand = sc.Strand(doms)
    design = sc.Design(strands=[strand], grid=sc.square)
    design.add_deletion(helix=0, offset=11)
    design.add_deletion(helix=0, offset=12)
    design.add_deletion(helix=1, offset=12)
    design.add_insertion(helix=1, offset=4, length=1)
    design.assign_dna(strand, 'T' * (NUM_HELICES * WIDTH))

    strand.set_modification_5p(mod.biotin_5p)
    strand.set_modification_3p(mod.cy3_3p)
    for h in range(NUM_HELICES):
        strand.set_modification_internal(WIDTH * h + 5, mod.cy3_int)
        strand.set_modification_internal(WIDTH * h + 10, mod.biotin_int)

    return design
Пример #25
0
def create_design() -> sc.Design:
    length = 16
    helices = [
        sc.Helix(major_tick_distance=4, max_offset=length, position=sc.Position3D(x=0, y=0, z=0),
                 min_offset=0),
        sc.Helix(major_tick_distance=4, max_offset=length, position=sc.Position3D(x=3, y=3, z=0),
                 min_offset=8),
        sc.Helix(major_tick_distance=4, max_offset=length, position=sc.Position3D(x=8, y=-3, z=2.5),
                 min_offset=0),
        sc.Helix(major_tick_distance=4, max_offset=length, position=sc.Position3D(x=11, y=1, z=2.5),
                 min_offset=8),
    ]
    design = sc.Design(helices=helices, strands=[
        sc.Strand([sc.Domain(0, True, 0, length)]),
        sc.Strand([sc.Domain(1, True, 8, length)]),
        sc.Strand([sc.Domain(2, True, 0, length)]),
        sc.Strand([sc.Domain(3, True, 8, length)]),
    ], grid=sc.Grid.none)

    return design
def create_design() -> sc.Design:
    # helices
    helices = [sc.Helix(max_offset=48), sc.Helix(max_offset=48)]

    # whole design
    design = sc.Design(helices=helices, strands=[], grid=sc.square)

    design.strand(1, 8).to(24).cross(0).to(8) # left staple
    design.strand(0, 40).to(24).cross(1).to(40).with_modification_5p(mod.biotin_5p) # right staple
    design.strand(1, 24).to(8).cross(0).to(40).loopout(1, 3).to(24).as_scaffold()

    # deletions and insertions added to design are added to both strands on a helix
    design.add_deletion(helix=1, offset=20)
    design.add_insertion(helix=0, offset=14, length=1)
    design.add_insertion(helix=0, offset=26, length=2)

    # also assigns complement to strands other than scaf bound to it
    design.assign_dna(design.scaffold, 'AACGT' * 18)

    return design
Пример #27
0
def create_design():
    stap_left_ss1 = sc.Domain(1, True, 0, 16)
    stap_left_ss0 = sc.Domain(0, False, 0, 16)
    stap_right_ss0 = sc.Domain(0, False, 16, 32)
    stap_right_ss1 = sc.Domain(1, True, 16, 32)
    scaf_ss1_left = sc.Domain(1, False, 0, 16)
    scaf_ss0 = sc.Domain(0, True, 0, 32)
    scaf_ss1_right = sc.Domain(1, False, 16, 32)
    stap_left = sc.Strand([stap_left_ss1, stap_left_ss0])
    stap_right = sc.Strand([stap_right_ss0, stap_right_ss1])
    scaf = sc.Strand([scaf_ss1_left, scaf_ss0, scaf_ss1_right], color=sc.default_scaffold_color)
    strands = [stap_left, stap_right, scaf]
    design = sc.Design(strands=strands, grid=sc.square)
    design.add_deletion(helix=0, offset=11)
    design.add_deletion(helix=0, offset=12)
    design.add_deletion(helix=0, offset=24)
    design.add_deletion(helix=1, offset=12)
    design.add_deletion(helix=1, offset=24)
    design.assign_dna(scaf, 'AACT' * 16)

    return design
def create_design():
    # helices
    helices = [sc.Helix(max_offset=48), sc.Helix(max_offset=48)]

    # left staple
    stap_left_ss1 = sc.Domain(helix=1, forward=True, start=8, end=24)
    stap_left_ss0 = sc.Domain(helix=0, forward=False, start=8, end=24)
    stap_left = sc.Strand(domains=[stap_left_ss1, stap_left_ss0],
                          label='left staple')

    # right staple
    stap_right_ss0 = sc.Domain(helix=0, forward=False, start=24, end=40)
    stap_right_ss1 = sc.Domain(helix=1, forward=True, start=24, end=40)
    stap_right = sc.Strand(domains=[stap_right_ss0, stap_right_ss1],
                           label='right staple')

    # scaffold
    scaf_ss1_left = sc.Domain(helix=1, forward=False, start=8, end=24)
    scaf_ss0 = sc.Domain(helix=0, forward=True, start=8, end=40)
    loopout = sc.Loopout(length=3)
    scaf_ss1_right = sc.Domain(helix=1, forward=False, start=24, end=40)
    scaf = sc.Strand(
        domains=[scaf_ss1_left, scaf_ss0, loopout, scaf_ss1_right],
        is_scaffold=True,
        label='scaffold label')

    # whole design
    design = sc.Design(helices=helices,
                       strands=[scaf, stap_left, stap_right],
                       grid=sc.square)

    # deletions and insertions added to design are added to both strands on a helix
    design.add_deletion(helix=1, offset=20)
    design.add_insertion(helix=0, offset=14, length=1)
    design.add_insertion(helix=0, offset=26, length=2)

    # also assigns complement to strands other than scaf bound to it
    design.assign_dna(scaf, 'AACGT' * 18)

    return design
def create_design() -> sc.Design:
    num_strands = 208
    start = 0
    strands = []
    plate = 1
    row_idx = 0
    col_idx = 0

    for s in range(1, num_strands + 1):
        ss_f = sc.Domain(helix=0, forward=True, start=start, end=start + 10)
        ss_r = sc.Domain(helix=1, forward=False, start=start, end=start + 10)

        row = ROWS[row_idx]
        col = COLS[col_idx]
        well = f'{row}{col}'
        idt = sc.IDTFields(plate=f'plate{plate}', well=well)

        strand = sc.Strand(domains=[ss_f, ss_r], idt=idt, name=f'staple{s}')
        strands.append(strand)
        row_idx += 1
        if row_idx == len(ROWS):
            row_idx = 0
            col_idx += 1
            if col_idx == len(COLS):
                col_idx = 0
                plate += 1
        start += 10

    scaffold = sc.Strand([
        sc.Domain(helix=0, forward=False, start=0, end=start),
        sc.Domain(helix=1, forward=True, start=0, end=start)
    ],
                         is_scaffold=True)
    strands.append(scaffold)
    design = sc.Design(strands=strands, grid=sc.square)
    design.assign_m13_to_scaffold()

    return design
Пример #30
0
def create_design() -> sc.Design:
    ss_f0 = sc.Domain(helix=0, forward=True, start=0, end=8)
    hairpin0 = sc.Loopout(length=5)
    ss_r0 = sc.Domain(helix=0, forward=False, start=0, end=8)

    crossover_like_loopout = sc.Loopout(length=5)
    ss_f1 = sc.Domain(helix=1, forward=True, start=0, end=8)

    long_range_loopout = sc.Loopout(length=10)
    ss_r2 = sc.Domain(helix=2, forward=False, start=16, end=24)
    hairpin2 = sc.Loopout(length=20)
    ss_f2 = sc.Domain(helix=2, forward=True, start=16, end=32)
    hairpin2_2 = sc.Loopout(length=1)
    ss_r2_2 = sc.Domain(helix=2, forward=False, start=24, end=32)

    strand = sc.Strand([
        ss_f0, hairpin0, ss_r0, crossover_like_loopout, ss_f1,
        long_range_loopout, ss_r2, hairpin2, ss_f2, hairpin2_2, ss_r2_2
    ])

    design = sc.Design(strands=[strand], grid=sc.square)
    t5 = 'TTTAC'
    t10 = 'TTTACTTACG'
    t20 = 'TTTTTTTTTTACGTTGCAGG'
    design.assign_dna(
        strand, f'ACGACGAC '
        f'{t5} '
        f'???????? '
        f'{t5} '
        f'GACGACGA '
        f'{t10} '
        f'CACGACGA '
        f'{t20} '
        f'???????? '
        f'ACGACGAC '
        f'T')

    return design