diff --git a/examples/1_staple_1_helix_origami_position_nondefault.py b/examples/1_staple_1_helix_origami_position_nondefault.py index 5bb0129b..bb1c887e 100644 --- a/examples/1_staple_1_helix_origami_position_nondefault.py +++ b/examples/1_staple_1_helix_origami_position_nondefault.py @@ -10,7 +10,7 @@ def create_design(): 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 = sc.Design(helices=helices, strands=strands, grid=sc.Grid.none) design.assign_dna(scaf, 'AACT' * (length // 4)) return design diff --git a/examples/24_helix_origami_rectangle_twist_corrected.sc b/examples/24_helix_origami_rectangle_twist_corrected.sc index bd6b4a79..ecb3af72 100644 --- a/examples/24_helix_origami_rectangle_twist_corrected.sc +++ b/examples/24_helix_origami_rectangle_twist_corrected.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 304, "grid_position": [0, 0]}, diff --git a/examples/24_helix_rectangle_twist_corrected.sc b/examples/24_helix_rectangle_twist_corrected.sc index ce6fa603..c0061337 100644 --- a/examples/24_helix_rectangle_twist_corrected.sc +++ b/examples/24_helix_rectangle_twist_corrected.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "e", "helices": [ {"max_offset": 304, "grid_position": [0, -3]}, diff --git a/examples/helix_groups.py b/examples/helix_groups.py index 87c89894..c94cc00d 100644 --- a/examples/helix_groups.py +++ b/examples/helix_groups.py @@ -1,50 +1,76 @@ import scadnano as sc + def create_design(): + include_rot = False + include_rot = True n = 'north' e = 'east' s = 'south' w = 'west' helices = [ - sc.Helix(max_offset=20, group=n, grid_position=(1, 1)), # 0 - sc.Helix(max_offset=21, group=n, grid_position=(0, 1)), # 1 - sc.Helix(max_offset=19, group=n, grid_position=(0, 2)), # 2 - sc.Helix(max_offset=18, group=n, grid_position=(1, 2)), # 3 - sc.Helix(max_offset=17, group=n, grid_position=(2, 2)), # 4 - sc.Helix(max_offset=16, group=n, grid_position=(2, 1)), # 5 - sc.Helix(max_offset=24, group=s), # 6 - sc.Helix(max_offset=25, group=s), # 7 - sc.Helix(max_offset=26, group=w, position=sc.Position3D(x=0, y=0, z=0)), # 8 - sc.Helix(max_offset=27, group=w, position=sc.Position3D(x=0, y=2.5, z=0)), # 9 - sc.Helix(idx=13, max_offset=22, group=e), # 13 - sc.Helix(idx=15, max_offset=23, group=e), # 15 + sc.Helix(max_offset=20, group=n, grid_position=(0, 0)), # 0 + sc.Helix(max_offset=21, group=n, grid_position=(1, 0)), # 1 + sc.Helix(max_offset=19, group=n, grid_position=(1, 1)), # 2 + sc.Helix(max_offset=18, group=n, grid_position=(0, 1)), # 3 + sc.Helix(max_offset=17, group=n, grid_position=(-1, 1)), # 4 + sc.Helix(max_offset=16, group=n, grid_position=(-1, 0)), # 5 + sc.Helix(max_offset=24, group=s), # 6 + sc.Helix(max_offset=25, group=s), # 7 + sc.Helix(max_offset=26, group=w, position=sc.Position3D(x=0, y=0, z=0)), # 8 + sc.Helix(max_offset=27, group=w, position=sc.Position3D(x=0, y=3, z=0)), # 9 ] - group_north = sc.HelixGroup(position=sc.Position3D(x=0, y=-200, z=0), grid=sc.honeycomb) - group_south = sc.HelixGroup(position=sc.Position3D(x=0, y=70, z=0), helices_view_order=[7, 6], + if include_rot: + helices.extend([ + sc.Helix(max_offset=26, group='r', grid_position=(0, 0)), # 10 + sc.Helix(max_offset=27, group='r', grid_position=(0, 1)), # 11 + ]) + helices.extend([ + sc.Helix(idx=13, max_offset=22, group=e), # 13 + sc.Helix(idx=15, max_offset=23, group=e), # 15 + ]) + + group_north = sc.HelixGroup(position=sc.Position3D(x=0, y=-10, z=0), grid=sc.honeycomb) + group_south = sc.HelixGroup(position=sc.Position3D(x=0, y=10, z=0), helices_view_order=[7, 6], grid=sc.square) - group_east = sc.HelixGroup(position=sc.Position3D(x=0, y=0, z=100), pitch=45, grid=sc.square) - group_west = sc.HelixGroup() + group_east = sc.HelixGroup(position=sc.Position3D(x=10, y=0, z=0), grid=sc.square) + group_west = sc.HelixGroup(position=sc.Position3D(x=-10, y=0, z=0), grid=sc.Grid.none) groups = { n: group_north, e: group_east, s: group_south, w: group_west, } + + if include_rot: + group_rot = sc.HelixGroup(position=sc.Position3D(x=10, y=10, z=0), pitch=45, grid=sc.square) + groups['r'] = group_rot + design = sc.Design(helices=helices, groups=groups, strands=[]) - design.strand(0, 0).to(8)\ - .cross(1).to(0)\ - .cross(2).to(8)\ - .cross(3).to(0)\ - .cross(4).to(8)\ + design.strand(0, 0).to(8) \ + .cross(1).to(0) \ + .cross(2).to(8) \ + .cross(3).to(0) \ + .cross(4).to(8) \ .cross(5).to(0) + design.strand(4, 10).to(13) + design.strand(6, 0).to(8).cross(7).to(0) design.strand(8, 0).to(8).cross(9).to(0) design.strand(13, 0).to(8).cross(15).to(0) + design.strand(8, 8).to(11) + design.strand(13, 8).to(11) + + + if include_rot: + design.strand(10, 0).to(8).cross(11).to(0) + return design + if __name__ == '__main__': design = create_design() design.write_scadnano_file(directory='output_designs') diff --git a/examples/output_designs/16_helix_origami_barrel_from_algoSST_paper.sc b/examples/output_designs/16_helix_origami_barrel_from_algoSST_paper.sc index 01a0c9e8..17992dd9 100644 --- a/examples/output_designs/16_helix_origami_barrel_from_algoSST_paper.sc +++ b/examples/output_designs/16_helix_origami_barrel_from_algoSST_paper.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ { diff --git a/examples/output_designs/16_helix_origami_rectangle.sc b/examples/output_designs/16_helix_origami_rectangle.sc index c363a634..50e5b0cb 100644 --- a/examples/output_designs/16_helix_origami_rectangle.sc +++ b/examples/output_designs/16_helix_origami_rectangle.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/16_helix_origami_rectangle_idt.sc b/examples/output_designs/16_helix_origami_rectangle_idt.sc index 92a1b609..02a2482a 100644 --- a/examples/output_designs/16_helix_origami_rectangle_idt.sc +++ b/examples/output_designs/16_helix_origami_rectangle_idt.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/16_helix_origami_rectangle_no_seq.sc b/examples/output_designs/16_helix_origami_rectangle_no_seq.sc index b530c221..ea5c31c2 100644 --- a/examples/output_designs/16_helix_origami_rectangle_no_seq.sc +++ b/examples/output_designs/16_helix_origami_rectangle_no_seq.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/16_helix_origami_rectangle_no_seq_no_twist.sc b/examples/output_designs/16_helix_origami_rectangle_no_seq_no_twist.sc index af18b177..af33e13d 100644 --- a/examples/output_designs/16_helix_origami_rectangle_no_seq_no_twist.sc +++ b/examples/output_designs/16_helix_origami_rectangle_no_seq_no_twist.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/16_helix_origami_rectangle_no_twist.sc b/examples/output_designs/16_helix_origami_rectangle_no_twist.sc index 130c5250..a373b8c1 100644 --- a/examples/output_designs/16_helix_origami_rectangle_no_twist.sc +++ b/examples/output_designs/16_helix_origami_rectangle_no_twist.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/16_helix_origami_rectangle_seed_tiles_grow_from_top.sc b/examples/output_designs/16_helix_origami_rectangle_seed_tiles_grow_from_top.sc index 3a74746d..daaa0762 100644 --- a/examples/output_designs/16_helix_origami_rectangle_seed_tiles_grow_from_top.sc +++ b/examples/output_designs/16_helix_origami_rectangle_seed_tiles_grow_from_top.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ { diff --git a/examples/output_designs/16_helix_origami_rectangle_shifted_seam_no_seq.sc b/examples/output_designs/16_helix_origami_rectangle_shifted_seam_no_seq.sc index 85fc390e..ee8d78b2 100644 --- a/examples/output_designs/16_helix_origami_rectangle_shifted_seam_no_seq.sc +++ b/examples/output_designs/16_helix_origami_rectangle_shifted_seam_no_seq.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 448, "grid_position": [0, 0]}, diff --git a/examples/output_designs/1_staple_1_helix_origami.sc b/examples/output_designs/1_staple_1_helix_origami.sc index 2d866bea..d69910df 100644 --- a/examples/output_designs/1_staple_1_helix_origami.sc +++ b/examples/output_designs/1_staple_1_helix_origami.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ { diff --git a/examples/output_designs/1_staple_1_helix_origami_mismatches.sc b/examples/output_designs/1_staple_1_helix_origami_mismatches.sc index 806263ac..79edc8ea 100644 --- a/examples/output_designs/1_staple_1_helix_origami_mismatches.sc +++ b/examples/output_designs/1_staple_1_helix_origami_mismatches.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]} diff --git a/examples/output_designs/1_staple_1_helix_origami_position_nondefault.sc b/examples/output_designs/1_staple_1_helix_origami_position_nondefault.sc index b89565d0..ae69ba1d 100644 --- a/examples/output_designs/1_staple_1_helix_origami_position_nondefault.sc +++ b/examples/output_designs/1_staple_1_helix_origami_position_nondefault.sc @@ -1,6 +1,6 @@ { - "version": "0.10.1", - "grid": "square", + "version": "0.11.0", + "grid": "none", "helices": [ { "position": {"x": 1, "y": 2, "z": 3}, diff --git a/examples/output_designs/1_staple_1_helix_origami_roll.sc b/examples/output_designs/1_staple_1_helix_origami_roll.sc index 40b84278..adf02995 100644 --- a/examples/output_designs/1_staple_1_helix_origami_roll.sc +++ b/examples/output_designs/1_staple_1_helix_origami_roll.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0], "roll": 90} diff --git a/examples/output_designs/2_helix_2_strands_multiple_substrands_no_seq.sc b/examples/output_designs/2_helix_2_strands_multiple_substrands_no_seq.sc index 49a02c06..4f3aa98b 100644 --- a/examples/output_designs/2_helix_2_strands_multiple_substrands_no_seq.sc +++ b/examples/output_designs/2_helix_2_strands_multiple_substrands_no_seq.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_modifications.sc b/examples/output_designs/2_staple_2_helix_modifications.sc index f1eeea7f..907f762d 100644 --- a/examples/output_designs/2_staple_2_helix_modifications.sc +++ b/examples/output_designs/2_staple_2_helix_modifications.sc @@ -1,16 +1,22 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, {"grid_position": [0, 1]} ], "modifications_in_design": { - "/5Biosg/": { - "display_text": "B", - "idt_text": "/5Biosg/", + "/3Cy3Sp/": { + "display_text": "Cy3", + "idt_text": "/3Cy3Sp/", "display_connector": false, - "location": "5'" + "location": "3'" + }, + "/iCy5/": { + "display_text": "Cy5", + "idt_text": "/iCy5/", + "display_connector": false, + "location": "internal" }, "/iBiodT/": { "display_text": "B", @@ -25,12 +31,6 @@ "display_connector": false, "location": "5'" }, - "/iCy5/": { - "display_text": "Cy5", - "idt_text": "/iCy5/", - "display_connector": false, - "location": "internal" - }, "/iCy3/": { "display_text": "Cy3", "idt_text": "/iCy3/", @@ -43,11 +43,11 @@ "display_connector": false, "location": "3'" }, - "/3Cy3Sp/": { - "display_text": "Cy3", - "idt_text": "/3Cy3Sp/", + "/5Biosg/": { + "display_text": "B", + "idt_text": "/5Biosg/", "display_connector": false, - "location": "3'" + "location": "5'" } }, "strands": [ diff --git a/examples/output_designs/2_staple_2_helix_origami_6bases_wide.sc b/examples/output_designs/2_staple_2_helix_origami_6bases_wide.sc index 71ee21ba..abbe91fe 100644 --- a/examples/output_designs/2_staple_2_helix_origami_6bases_wide.sc +++ b/examples/output_designs/2_staple_2_helix_origami_6bases_wide.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions.sc b/examples/output_designs/2_staple_2_helix_origami_deletions.sc index f358aa00..d4187658 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions.sc index 809e35ea..1b2219d2 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 48, "grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_labels.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_labels.sc index 7aba6c8a..4243d482 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_labels.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_labels.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 48, "grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods.sc index 51d62189..57555ea9 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 48, "grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods_chained_methods.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods_chained_methods.sc index ff72a1f6..a3b76941 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods_chained_methods.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_mods_chained_methods.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 48, "grid_position": [0, 0]}, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_new_geometry.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_new_geometry.sc index d07d3144..e76b1bb3 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_new_geometry.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_new_geometry.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "geometry": { "rise_per_base_pair": 0.2, diff --git a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_no_seq.sc b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_no_seq.sc index edd8a72e..2d935d0e 100644 --- a/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_no_seq.sc +++ b/examples/output_designs/2_staple_2_helix_origami_deletions_insertions_no_seq.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/3_helix_deletions_insertions.sc b/examples/output_designs/3_helix_deletions_insertions.sc index ecc6378f..86f377f8 100644 --- a/examples/output_designs/3_helix_deletions_insertions.sc +++ b/examples/output_designs/3_helix_deletions_insertions.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 64, "grid_position": [0, 0]}, diff --git a/examples/output_designs/4_helix_grid_none.sc b/examples/output_designs/4_helix_grid_none.sc index 20d274c0..f221aa48 100644 --- a/examples/output_designs/4_helix_grid_none.sc +++ b/examples/output_designs/4_helix_grid_none.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "none", "helices": [ { diff --git a/examples/output_designs/4_helix_grid_none_min_offset_position_x_nondefault.sc b/examples/output_designs/4_helix_grid_none_min_offset_position_x_nondefault.sc index c61362b7..682c5cbc 100644 --- a/examples/output_designs/4_helix_grid_none_min_offset_position_x_nondefault.sc +++ b/examples/output_designs/4_helix_grid_none_min_offset_position_x_nondefault.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "none", "helices": [ { diff --git a/examples/output_designs/4_helix_min_offsets_nonzero.sc b/examples/output_designs/4_helix_min_offsets_nonzero.sc index 5459bc80..537610a3 100644 --- a/examples/output_designs/4_helix_min_offsets_nonzero.sc +++ b/examples/output_designs/4_helix_min_offsets_nonzero.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 30, "grid_position": [0, 0]}, diff --git a/examples/output_designs/56_helix_origami_rectangle.sc b/examples/output_designs/56_helix_origami_rectangle.sc index 2ecdd4e2..334ba0bf 100644 --- a/examples/output_designs/56_helix_origami_rectangle.sc +++ b/examples/output_designs/56_helix_origami_rectangle.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 160, "grid_position": [0, 0]}, diff --git a/examples/output_designs/64_helix_origami_rectangle.sc b/examples/output_designs/64_helix_origami_rectangle.sc index e63c9d31..862ff3a0 100644 --- a/examples/output_designs/64_helix_origami_rectangle.sc +++ b/examples/output_designs/64_helix_origami_rectangle.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 128, "grid_position": [0, 0]}, diff --git a/examples/output_designs/6_helix_6_col_origami_rectangle.sc b/examples/output_designs/6_helix_6_col_origami_rectangle.sc index 3f68747e..f0cbbcb6 100644 --- a/examples/output_designs/6_helix_6_col_origami_rectangle.sc +++ b/examples/output_designs/6_helix_6_col_origami_rectangle.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/6_helix_bundle_honeycomb.sc b/examples/output_designs/6_helix_bundle_honeycomb.sc index cdebf040..6f1b3bdf 100644 --- a/examples/output_designs/6_helix_bundle_honeycomb.sc +++ b/examples/output_designs/6_helix_bundle_honeycomb.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "honeycomb", "helices": [ {"max_offset": 1295, "grid_position": [1, 1]}, @@ -11,6 +11,7 @@ ], "strands": [ { + "color": "#57bb00", "sequence": "CATTTCTCCGAAGAGACGCATTTCACATGTGGGCCTTGAATC", "domains": [ {"helix": 3, "forward": true, "start": 56, "end": 70}, @@ -19,6 +20,7 @@ ] }, { + "color": "#007200", "sequence": "ACGCTCGCCCTGCTCAATGTCCCGCCAAGAATTGTCAACCTT", "domains": [ {"helix": 2, "forward": false, "start": 70, "end": 84}, @@ -27,6 +29,7 @@ ] }, { + "color": "#7300de", "sequence": "ATCTCTGACCTCCTAGTCGGGAAACCTGGCACGAATATAGTT", "domains": [ {"helix": 4, "forward": false, "start": 56, "end": 70}, @@ -35,6 +38,7 @@ ] }, { + "color": "#03b6a2", "sequence": "GGGAGTGACTCTATCAACTCGTCGGTGGTCGTGCCAGCTGCA", "domains": [ {"helix": 1, "forward": true, "start": 70, "end": 84}, @@ -43,6 +47,7 @@ ] }, { + "color": "#32b86c", "sequence": "TGTGAATTCATGGGGATGTTCTTCTAAGGGAGGAGAAGCCAG", "domains": [ {"helix": 3, "forward": true, "start": 98, "end": 112}, @@ -51,6 +56,7 @@ ] }, { + "color": "#f7931e", "sequence": "GCTGCAAGGCGATGCCTCTTCGCTATTAAAGGGCGATCGGTG", "domains": [ {"helix": 2, "forward": false, "start": 112, "end": 126}, @@ -59,6 +65,7 @@ ] }, { + "color": "#b8056c", "sequence": "CGCGCACGACTTAAAACGCGCGGGGAGACCAAGCTTTCTCCC", "domains": [ {"helix": 4, "forward": false, "start": 98, "end": 112}, @@ -67,6 +74,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GGTTAAGTTGGGTAAACGACGGCCAGTGGGCGGTTTGCGTAT", "domains": [ {"helix": 1, "forward": true, "start": 112, "end": 126}, @@ -75,6 +83,7 @@ ] }, { + "color": "#320096", "sequence": "AAAGCGCCATTCCGTGGTGCCGGAAACCCCTTTCCGGCACCG", "domains": [ {"helix": 3, "forward": true, "start": 140, "end": 154}, @@ -83,6 +92,7 @@ ] }, { + "color": "#57bb00", "sequence": "ATGGGCGCATCGTCGCGGATTGACCGTATCTCCGTGGGAACA", "domains": [ {"helix": 2, "forward": false, "start": 154, "end": 168}, @@ -91,6 +101,7 @@ ] }, { + "color": "#cc0000", "sequence": "AAGCCATTCAGGCTGTTTTTCTTTTCACACTCCAGCCAGCAG", "domains": [ {"helix": 4, "forward": false, "start": 140, "end": 154}, @@ -99,6 +110,7 @@ ] }, { + "color": "#007200", "sequence": "CTTAACCGTGCATCCTCAGGAAGATCGCCAGTGAGACGGGCA", "domains": [ {"helix": 1, "forward": true, "start": 154, "end": 168}, @@ -107,6 +119,7 @@ ] }, { + "color": "#7300de", "sequence": "ATCAACATTAAACCTTCCTGTAGCCAGCGATAATTCGCGTCT", "domains": [ {"helix": 3, "forward": true, "start": 182, "end": 196}, @@ -115,6 +128,7 @@ ] }, { + "color": "#32b86c", "sequence": "AAACGTTAATATCCAAAAACAGGAAGATGATAATCAGAAAAG", "domains": [ {"helix": 2, "forward": false, "start": 196, "end": 210}, @@ -123,6 +137,7 @@ ] }, { + "color": "#f74308", "sequence": "CCTGTGAGCGAGTATTCACCGCCTGGCCCGCCATCAAAAACG", "domains": [ {"helix": 4, "forward": false, "start": 182, "end": 196}, @@ -131,6 +146,7 @@ ] }, { + "color": "#f7931e", "sequence": "GGTTTGTTAAAATTTTAACCAATAGGAACTGAGAGAGTTGCA", "domains": [ {"helix": 1, "forward": true, "start": 196, "end": 210}, @@ -139,6 +155,7 @@ ] }, { + "color": "#b8056c", "sequence": "ATCGTAAAACTAAAGAGAATCGATGAACGTAGTCTGGAGCAA", "domains": [ {"helix": 3, "forward": true, "start": 224, "end": 238}, @@ -147,6 +164,7 @@ ] }, { + "color": "#320096", "sequence": "AACCGTTCTAGCAAAGGCCGGAGACAGTGATTCAAAAGGGTG", "domains": [ {"helix": 2, "forward": false, "start": 238, "end": 252}, @@ -155,6 +173,7 @@ ] }, { + "color": "#888888", "sequence": "AGGCATGTCAATCACTGGTTTGCCCCAGTCATTGCCTGAGTA", "domains": [ {"helix": 4, "forward": false, "start": 224, "end": 238}, @@ -163,6 +182,7 @@ ] }, { + "color": "#57bb00", "sequence": "ACTGATAAATTAATCAAAGGCTATCAGGCAGGCGAAAATCCT", "domains": [ {"helix": 1, "forward": true, "start": 238, "end": 252}, @@ -171,6 +191,7 @@ ] }, { + "color": "#cc0000", "sequence": "ATATTTTAAATGAAAATTTTTAGAACCCCTTCAACGCAAGGA", "domains": [ {"helix": 3, "forward": true, "start": 266, "end": 280}, @@ -179,6 +200,7 @@ ] }, { + "color": "#7300de", "sequence": "TAAAGCCTCAGAAATCATACAGGCAAGGGCATTAACATCCAA", "domains": [ {"helix": 2, "forward": false, "start": 280, "end": 294}, @@ -187,6 +209,7 @@ ] }, { + "color": "#333333", "sequence": "TACAATGCCTGAGTCCGAAATCGGCAAAGAAGCCTTTATTAT", "domains": [ {"helix": 4, "forward": false, "start": 266, "end": 280}, @@ -195,6 +218,7 @@ ] }, { + "color": "#32b86c", "sequence": "TAGCATAAAGCTAAATACTTTTGCGGGAATCCCTTATAAATC", "domains": [ {"helix": 1, "forward": true, "start": 280, "end": 294}, @@ -203,6 +227,7 @@ ] }, { + "color": "#f74308", "sequence": "GAGCTGAAAAGGCATATTTTCATTTGGGAAATAACCTGTTTA", "domains": [ {"helix": 3, "forward": true, "start": 308, "end": 322}, @@ -211,6 +236,7 @@ ] }, { + "color": "#b8056c", "sequence": "TTCATTCCATATTATGTTTTAAATATGCTAATGCTGTAGCTC", "domains": [ {"helix": 2, "forward": false, "start": 322, "end": 336}, @@ -219,6 +245,7 @@ ] }, { + "color": "#03b6a2", "sequence": "AATGGCATCAATTCAGATAGGGTTGAGTCGCAAATGGTCAAC", "domains": [ {"helix": 4, "forward": false, "start": 308, "end": 322}, @@ -227,6 +254,7 @@ ] }, { + "color": "#320096", "sequence": "GCAACAGTTGATTCCATTAGATACATTTGTTGTTCCAGTTTG", "domains": [ {"helix": 1, "forward": true, "start": 322, "end": 336}, @@ -235,6 +263,7 @@ ] }, { + "color": "#888888", "sequence": "TCATTTTTGCGGCAGCTCCTTTTGATAAGAGAGAGTACCTTT", "domains": [ {"helix": 3, "forward": true, "start": 350, "end": 364}, @@ -243,6 +272,7 @@ ] }, { + "color": "#cc0000", "sequence": "CCCGAAAGACTTTTGAAGCAAAGCGGATCCCTGACTATTATA", "domains": [ {"helix": 2, "forward": false, "start": 364, "end": 378}, @@ -251,6 +281,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GTATGGCTTAGAGCTATTAAAGAACGTGAGGTCAGGATTAGT", "domains": [ {"helix": 4, "forward": false, "start": 350, "end": 364}, @@ -259,6 +290,7 @@ ] }, { + "color": "#7300de", "sequence": "AACAAATATCGCGTAAGCAAACTCCAACGACTCCAACGTCAA", "domains": [ {"helix": 1, "forward": true, "start": 364, "end": 378}, @@ -267,6 +299,7 @@ ] }, { + "color": "#333333", "sequence": "AAAACGAGAATGCCATGCTTTAAACAGTCAATTGAATCCCCC", "domains": [ {"helix": 3, "forward": true, "start": 392, "end": 406}, @@ -275,6 +308,7 @@ ] }, { + "color": "#f74308", "sequence": "AAAAGAAGTTTTAAAGACGACGATAAAATCATAACCCTCGTT", "domains": [ {"helix": 2, "forward": false, "start": 406, "end": 420}, @@ -283,6 +317,7 @@ ] }, { + "color": "#007200", "sequence": "TAACCATAAATCAATCTATCAGGGCGATTCATAAATATTCAA", "domains": [ {"helix": 4, "forward": false, "start": 392, "end": 406}, @@ -291,6 +326,7 @@ ] }, { + "color": "#b8056c", "sequence": "TCGCCAGAGGGGGTATACTGCGGAATCGGGCCCACTACGTGA", "domains": [ {"helix": 1, "forward": true, "start": 406, "end": 420}, @@ -299,6 +335,7 @@ ] }, { + "color": "#03b6a2", "sequence": "GCCAAAAGGAATATCTAATGCAGATACATAGGAATACCACAT", "domains": [ {"helix": 3, "forward": true, "start": 434, "end": 448}, @@ -307,6 +344,7 @@ ] }, { + "color": "#888888", "sequence": "TTGGGAAGAAAAAAGCGATTTTAAGAACCATTGTGAATTACC", "domains": [ {"helix": 2, "forward": false, "start": 448, "end": 462}, @@ -315,6 +353,7 @@ ] }, { + "color": "#f7931e", "sequence": "TTTACGAGGCATAGCAAGTTTTTTGGGGAGTTGAGATTTAGA", "domains": [ {"helix": 4, "forward": false, "start": 434, "end": 448}, @@ -323,6 +362,7 @@ ] }, { + "color": "#cc0000", "sequence": "TCATCTACGTTAATTAGAAAGATTCATCTCGAGGTGCCGTAA", "domains": [ {"helix": 1, "forward": true, "start": 448, "end": 462}, @@ -331,6 +371,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GTAAATTGGGCTGAGAAACACCAGAACGGAAGGCTTGCCCTG", "domains": [ {"helix": 3, "forward": true, "start": 476, "end": 490}, @@ -339,6 +380,7 @@ ] }, { + "color": "#333333", "sequence": "GACCTTCATCAAGACAGATGAACGGTGTACCAACTTTGAAAG", "domains": [ {"helix": 2, "forward": false, "start": 490, "end": 504}, @@ -347,6 +389,7 @@ ] }, { + "color": "#57bb00", "sequence": "AGTGAGATGGTTTAACCCTAAAGGGAGCATTCAGTGAATAAC", "domains": [ {"helix": 4, "forward": false, "start": 476, "end": 490}, @@ -355,6 +398,7 @@ ] }, { + "color": "#f74308", "sequence": "ACGAGTAATCTTGATAACAAAGCTGCTCCCCCGATTTAGAGC", "domains": [ {"helix": 1, "forward": true, "start": 490, "end": 504}, @@ -363,6 +407,7 @@ ] }, { + "color": "#007200", "sequence": "ACGAGGCGCAGACACCATGTTACTTAGCTCAAATCCGCGACC", "domains": [ {"helix": 3, "forward": true, "start": 518, "end": 532}, @@ -371,6 +416,7 @@ ] }, { + "color": "#03b6a2", "sequence": "TCATCTTTGACCCTACCTAAAACGAAAGGCCACTACGAAGGC", "domains": [ {"helix": 2, "forward": false, "start": 532, "end": 546}, @@ -379,6 +425,7 @@ ] }, { + "color": "#32b86c", "sequence": "ACCGGTCAATCATACGGCGAACGTGGCGTAAATTGTGTCGAT", "domains": [ {"helix": 4, "forward": false, "start": 518, "end": 532}, @@ -387,6 +434,7 @@ ] }, { + "color": "#888888", "sequence": "TGCCCAGCGATTATGTATCATCGCCTGAAGAAAGGAAGGGAA", "domains": [ {"helix": 1, "forward": true, "start": 532, "end": 546}, @@ -395,6 +443,7 @@ ] }, { + "color": "#f7931e", "sequence": "CATGAGGAAGTTAAGAGGACTAAAGACTAACGGCTACAGAGG", "domains": [ {"helix": 3, "forward": true, "start": 560, "end": 574}, @@ -403,6 +452,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GAGGCTTGCAGGTTCAACCATCGCCCACTTGCGCCGACAATG", "domains": [ {"helix": 2, "forward": false, "start": 574, "end": 588}, @@ -411,6 +461,7 @@ ] }, { + "color": "#320096", "sequence": "ACTCCATTAAACGGCGGGCGCTAGGGCGCGAGGGTAGCAAAG", "domains": [ {"helix": 4, "forward": false, "start": 560, "end": 574}, @@ -419,6 +470,7 @@ ] }, { + "color": "#333333", "sequence": "CTGAGTTAAAGGCCAGACAGCATCGGAACTGGCAAGTGTAGC", "domains": [ {"helix": 1, "forward": true, "start": 574, "end": 588}, @@ -427,6 +479,7 @@ ] }, { + "color": "#57bb00", "sequence": "TTTCGAGGTGAAGTATCGGTTTATCAGCGTAGGAGCCTTTAA", "domains": [ {"helix": 3, "forward": true, "start": 602, "end": 616}, @@ -435,6 +488,7 @@ ] }, { + "color": "#007200", "sequence": "AGTGAGAATAGAGTATGGGATTTTGCTAAGTAAATGAATTTT", "domains": [ {"helix": 2, "forward": false, "start": 616, "end": 630}, @@ -443,6 +497,7 @@ ] }, { + "color": "#7300de", "sequence": "CTTTTCTTAAACAGTAACCACCACACCCAAAGGCTCCAAACA", "domains": [ {"helix": 4, "forward": false, "start": 602, "end": 616}, @@ -451,6 +506,7 @@ ] }, { + "color": "#03b6a2", "sequence": "TTAAGGAACAACTAAAAATCTCCAAAAAGCCGCGCTTAATGC", "domains": [ {"helix": 1, "forward": true, "start": 616, "end": 630}, @@ -459,6 +515,7 @@ ] }, { + "color": "#32b86c", "sequence": "GCGTAACGATCTTCAGACAGCCCTCATAAAGCCTGTAGCATT", "domains": [ {"helix": 3, "forward": true, "start": 644, "end": 658}, @@ -467,6 +524,7 @@ ] }, { + "color": "#f7931e", "sequence": "CACCCTCATTTTACAGAACCGCCACCCTTTTAGTACCGCCAC", "domains": [ {"helix": 2, "forward": false, "start": 658, "end": 672}, @@ -475,6 +533,7 @@ ] }, { + "color": "#b8056c", "sequence": "CCAAAGTTTTGTCGCGTACTATGGTTGCACAAACTACAACTA", "domains": [ {"helix": 4, "forward": false, "start": 644, "end": 658}, @@ -483,6 +542,7 @@ ] }, { + "color": "#aaaa00", "sequence": "CCCAGGGATAGCAAGTTTCGTCACCAGTTTTGACGAGCACGT", "domains": [ {"helix": 1, "forward": true, "start": 658, "end": 672}, @@ -491,6 +551,7 @@ ] }, { + "color": "#320096", "sequence": "GTATAGCCCGGACCTCGAGAGGGTTGATCAAGGCGGATAAGT", "domains": [ {"helix": 3, "forward": true, "start": 686, "end": 700}, @@ -499,6 +560,7 @@ ] }, { + "color": "#57bb00", "sequence": "TATTATTCTGAACGCGTATAAACAGTTAGCCTTGAGTAACAG", "domains": [ {"helix": 2, "forward": false, "start": 700, "end": 714}, @@ -507,6 +569,7 @@ ] }, { + "color": "#cc0000", "sequence": "TGATAGGTGTATCATCGTTAGAATCAGATTGCTCAGTACCTG", "domains": [ {"helix": 4, "forward": false, "start": 686, "end": 700}, @@ -515,6 +578,7 @@ ] }, { + "color": "#007200", "sequence": "GCACATGAAAGTATGGATTAGCGGGGTTGCGGGAGCTAAACA", "domains": [ {"helix": 1, "forward": true, "start": 700, "end": 714}, @@ -523,6 +587,7 @@ ] }, { + "color": "#7300de", "sequence": "ACAGGAGTGTACCCTACATGGCTTTTGATCGTTCCAGTAAGC", "domains": [ {"helix": 3, "forward": true, "start": 728, "end": 742}, @@ -531,6 +596,7 @@ ] }, { + "color": "#32b86c", "sequence": "GGTCAGACGATTCAACCAGAGCCGCCGCGCCGCCACCAGAAC", "domains": [ {"helix": 2, "forward": false, "start": 742, "end": 756}, @@ -539,6 +605,7 @@ ] }, { + "color": "#f74308", "sequence": "CATGGTAATAAGTTGGGATTTTAGACAGTCTGAATTTACCCT", "domains": [ {"helix": 4, "forward": false, "start": 728, "end": 742}, @@ -547,6 +614,7 @@ ] }, { + "color": "#f7931e", "sequence": "GTGGCCTTGATATTTGGAAAGCGCAGTCGAACGGTACGCCAG", "domains": [ {"helix": 1, "forward": true, "start": 742, "end": 756}, @@ -555,6 +623,7 @@ ] }, { + "color": "#b8056c", "sequence": "CCCTCAGAACCGGTCCTCCCTCAGAGCCTCGCCACCACCGGA", "domains": [ {"helix": 3, "forward": true, "start": 770, "end": 784}, @@ -563,6 +632,7 @@ ] }, { + "color": "#320096", "sequence": "GCGCGTTTTCATCGAGCGACAGAATCAAAGCAGCACCGTAAT", "domains": [ {"helix": 2, "forward": false, "start": 784, "end": 798}, @@ -571,6 +641,7 @@ ] }, { + "color": "#888888", "sequence": "CACCACCCTCAGAGTTTTTATAATCAGTACCGGAACCAGACT", "domains": [ {"helix": 4, "forward": false, "start": 770, "end": 784}, @@ -579,6 +650,7 @@ ] }, { + "color": "#57bb00", "sequence": "ACCGGCATTTTCGGTCATAATCAAAATCGAGGCCACCGAGTA", "domains": [ {"helix": 1, "forward": true, "start": 784, "end": 798}, @@ -587,6 +659,7 @@ ] }, { + "color": "#cc0000", "sequence": "TTAGCAAGGCCGTTCCAGTAGCACCATTTTAGAGCCAGCAAA", "domains": [ {"helix": 3, "forward": true, "start": 812, "end": 826}, @@ -595,6 +668,7 @@ ] }, { + "color": "#7300de", "sequence": "GAGGGAGGGAAGCAACCAGCGCCAAAGAAGAAAATTCATATG", "domains": [ {"helix": 2, "forward": false, "start": 826, "end": 840}, @@ -603,6 +677,7 @@ ] }, { + "color": "#333333", "sequence": "GTGAAACGTCACCATCACGCAAATTAACCATTTGGGAATTAG", "domains": [ {"helix": 4, "forward": false, "start": 812, "end": 826}, @@ -611,6 +686,7 @@ ] }, { + "color": "#32b86c", "sequence": "ATGTAAATATTGACTCACCGACTTGAGCCGTTGTAGCAATAC", "domains": [ {"helix": 1, "forward": true, "start": 826, "end": 840}, @@ -619,6 +695,7 @@ ] }, { + "color": "#f74308", "sequence": "AAGACACCACGGCAACATATAAAAGAAAAAATACATAAAGGT", "domains": [ {"helix": 3, "forward": true, "start": 854, "end": 868}, @@ -627,6 +704,7 @@ ] }, { + "color": "#b8056c", "sequence": "CGCAATAATAACCAGATAGCCGAACAAATTTTAAGAAAAGTA", "domains": [ {"helix": 2, "forward": false, "start": 868, "end": 882}, @@ -635,6 +713,7 @@ ] }, { + "color": "#03b6a2", "sequence": "AGAATAAGTTTATTATAACATCACTTGCCGTAGAAAATACAG", "domains": [ {"helix": 4, "forward": false, "start": 854, "end": 868}, @@ -643,6 +722,7 @@ ] }, { + "color": "#320096", "sequence": "GGGGAATACCCAAAAGTATGTTAGCAAACTGAGTAGAAGAAC", "domains": [ {"helix": 1, "forward": true, "start": 868, "end": 882}, @@ -651,6 +731,7 @@ ] }, { + "color": "#888888", "sequence": "AAACAATGAAATAACCCAATAATAAGAGTACAAGAATTGAGT", "domains": [ {"helix": 3, "forward": true, "start": 896, "end": 910}, @@ -659,6 +740,7 @@ ] }, { + "color": "#cc0000", "sequence": "AGCGCATTAGACAGTAGCAGCCTTTACATAACGTCAAAAATG", "domains": [ {"helix": 2, "forward": false, "start": 910, "end": 924}, @@ -667,6 +749,7 @@ ] }, { + "color": "#aaaa00", "sequence": "AAAGCAATAGCTATTTGCTGGTAATATCAGAGATAACCCAAG", "domains": [ {"helix": 4, "forward": false, "start": 896, "end": 910}, @@ -675,6 +758,7 @@ ] }, { + "color": "#7300de", "sequence": "TAGGGAGAATTAACAGCGCTAATATCAGCAGAACAATATTAC", "domains": [ {"helix": 1, "forward": true, "start": 910, "end": 924}, @@ -683,6 +767,7 @@ ] }, { + "color": "#333333", "sequence": "TTATTTATCCCAGTACAAAATAAACAGCAAGCCTAATTTGCC", "domains": [ {"helix": 3, "forward": true, "start": 938, "end": 952}, @@ -691,6 +776,7 @@ ] }, { + "color": "#f74308", "sequence": "TTAAATCAAGATTTTTTAGCGAACCTCCTCTAAGAACGCGAG", "domains": [ {"helix": 2, "forward": false, "start": 952, "end": 966}, @@ -699,6 +785,7 @@ ] }, { + "color": "#007200", "sequence": "GCATCCAAATAAGAACAGGAAAAACGCTCGTCTTTCCAGAAG", "domains": [ {"helix": 4, "forward": false, "start": 938, "end": 952}, @@ -707,6 +794,7 @@ ] }, { + "color": "#b8056c", "sequence": "AGTAGTTGCTATTTCCAACGCTAACGAGCATGGAAATACCTA", "domains": [ {"helix": 1, "forward": true, "start": 952, "end": 966}, @@ -715,6 +803,7 @@ ] }, { + "color": "#03b6a2", "sequence": "ATAGCAAGCAAAATGAATCATTACCGCGATTTTATTTTCATC", "domains": [ {"helix": 3, "forward": true, "start": 980, "end": 994}, @@ -723,6 +812,7 @@ ] }, { + "color": "#888888", "sequence": "CAATAATCGGCTAGAATATCCCATCCTAGTCCTGAACAAGAA", "domains": [ {"helix": 2, "forward": false, "start": 994, "end": 1008}, @@ -731,6 +821,7 @@ ] }, { + "color": "#f7931e", "sequence": "AATCAGATATAGAAATCGTCTGAAATGGAAGCAAGCCGTTTT", "domains": [ {"helix": 4, "forward": false, "start": 980, "end": 994}, @@ -739,6 +830,7 @@ ] }, { + "color": "#cc0000", "sequence": "GTGTCTTTCCTTATCACTCATCGAGAACATTATTTACATTGG", "domains": [ {"helix": 1, "forward": true, "start": 994, "end": 1008}, @@ -747,6 +839,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GCTAATGCAGAACGCAATAAACAACATGGTTCTGTCCAGACG", "domains": [ {"helix": 3, "forward": true, "start": 1022, "end": 1036}, @@ -755,6 +848,7 @@ ] }, { + "color": "#333333", "sequence": "CAACGCCAACATGACTCAACAGTAGGGCACCAGTATAAAGCC", "domains": [ {"helix": 2, "forward": false, "start": 1036, "end": 1050}, @@ -763,6 +857,7 @@ ] }, { + "color": "#57bb00", "sequence": "AACGCGCCTGTTTAACACGACCAGTAATAGGTAAAGTAATAT", "domains": [ {"helix": 4, "forward": false, "start": 1022, "end": 1036}, @@ -771,6 +866,7 @@ ] }, { + "color": "#f74308", "sequence": "ACGTAATTTAGGCAAAAGTACCGACAAAAAAAGGGACATTCT", "domains": [ {"helix": 1, "forward": true, "start": 1036, "end": 1050}, @@ -779,6 +875,7 @@ ] }, { + "color": "#007200", "sequence": "AAAGCCTGTTTAGCGAATCATAATTACTCCATAAGAATAAAC", "domains": [ {"helix": 3, "forward": true, "start": 1064, "end": 1078}, @@ -787,6 +884,7 @@ ] }, { + "color": "#03b6a2", "sequence": "TCAAATATATTTCGAAATCCAATCGCAAATATGTAAATGCTG", "domains": [ {"helix": 2, "forward": false, "start": 1078, "end": 1092}, @@ -795,6 +893,7 @@ ] }, { + "color": "#32b86c", "sequence": "ATGTATCATATGCGGAACCCTTCTGACCATAAGGCGTTAAAG", "domains": [ {"helix": 4, "forward": false, "start": 1064, "end": 1078}, @@ -803,6 +902,7 @@ ] }, { + "color": "#888888", "sequence": "ACTAGTTAATTTCACGACCGTGTGATAATGAAAGCGTAAGAA", "domains": [ {"helix": 1, "forward": true, "start": 1078, "end": 1092}, @@ -811,6 +911,7 @@ ] }, { + "color": "#f7931e", "sequence": "ACCTTTTTAACCCATCATAGGTCTGAGATTAGTGAATTTATC", "domains": [ {"helix": 3, "forward": true, "start": 1106, "end": 1120}, @@ -819,6 +920,7 @@ ] }, { + "color": "#aaaa00", "sequence": "AATCGTCGCTATAATAAATCAATATATGTTTAATGGAAACAG", "domains": [ {"helix": 2, "forward": false, "start": 1120, "end": 1134}, @@ -827,6 +929,7 @@ ] }, { + "color": "#320096", "sequence": "TATCCGGCTTAGGTAATATTTTTGAATGAGAAGAGTCAATTA", "domains": [ {"helix": 4, "forward": false, "start": 1106, "end": 1120}, @@ -835,6 +938,7 @@ ] }, { + "color": "#333333", "sequence": "AATAATTAATTTTCAGATTAAGACGCTGGCTATTAGTCTTTA", "domains": [ {"helix": 1, "forward": true, "start": 1120, "end": 1134}, @@ -843,6 +947,7 @@ ] }, { + "color": "#57bb00", "sequence": "AATTAATTACATATCAAACATCAAGAAAAAAAAGAAGATGAT", "domains": [ {"helix": 3, "forward": true, "start": 1148, "end": 1162}, @@ -851,6 +956,7 @@ ] }, { + "color": "#007200", "sequence": "AATAACGGATTCAAGAATATACAGTAACTCAGGTTTAACGTC", "domains": [ {"helix": 2, "forward": false, "start": 1162, "end": 1176}, @@ -859,6 +965,7 @@ ] }, { + "color": "#7300de", "sequence": "AGTTAACAATTTCAAGCCCTAAAACATCATTACCTGAGCAAA", "domains": [ {"helix": 4, "forward": false, "start": 1148, "end": 1162}, @@ -867,6 +974,7 @@ ] }, { + "color": "#03b6a2", "sequence": "GAGCCTGATTGCTTAATTATTCATTTCAGCCATTAAAAATAC", "domains": [ {"helix": 1, "forward": true, "start": 1162, "end": 1176}, @@ -875,6 +983,7 @@ ] }, { + "color": "#32b86c", "sequence": "TTGCACGTAAAACACTACCATATCAAAACAATGGAAGGGTTA", "domains": [ {"helix": 3, "forward": true, "start": 1190, "end": 1204}, @@ -883,6 +992,7 @@ ] }, { + "color": "#f7931e", "sequence": "GGAATTATCATCACTTATCATTTTGCGGTTAAAAGTTTGAGT", "domains": [ {"helix": 2, "forward": false, "start": 1204, "end": 1218}, @@ -891,6 +1001,7 @@ ] }, { + "color": "#b8056c", "sequence": "AACAGAAATAAAGAGCAGAAGATAAAACTACTTCTGAATAAA", "domains": [ {"helix": 4, "forward": false, "start": 1190, "end": 1204}, @@ -899,6 +1010,7 @@ ] }, { + "color": "#aaaa00", "sequence": "GAATATTCCTGATTGATTGTTTGGATTAAGAGGTGAGGCGGT", "domains": [ {"helix": 1, "forward": true, "start": 1204, "end": 1218}, @@ -907,6 +1019,7 @@ ] }, { + "color": "#cc0000", "sequence": "TTAATGACTGTAAGGATACCGACAGTGCTGTCTAATCTATTT", "domains": [ {"helix": 5, "forward": true, "start": 84, "end": 91}, @@ -916,6 +1029,7 @@ ] }, { + "color": "#888888", "sequence": "CTGCCATATCGGCCGTGTCCTTAGTGCTAATAACCCCGCTGT", "domains": [ {"helix": 0, "forward": false, "start": 91, "end": 98}, @@ -925,6 +1039,7 @@ ] }, { + "color": "#f74308", "sequence": "TGGGCGCGTTGTAAACGCCAGGGTTTTCAGAAAGGGGGATGT", "domains": [ {"helix": 5, "forward": true, "start": 126, "end": 133}, @@ -934,6 +1049,7 @@ ] }, { + "color": "#333333", "sequence": "TCACGACCAGGGTGGCGCAACTGTTGGGCGCCAGCTGGCGGC", "domains": [ {"helix": 0, "forward": false, "start": 133, "end": 140}, @@ -943,6 +1059,7 @@ ] }, { + "color": "#888888", "sequence": "ACAGCTGTATCGGCTGCCAGTTTGAGGGTTACGTTGGTGTAG", "domains": [ {"helix": 5, "forward": true, "start": 168, "end": 175}, @@ -952,6 +1069,7 @@ ] }, { + "color": "#03b6a2", "sequence": "ACGACAGATTGCCCACAACCCGTCGGATATGGGATAGGTCTC", "domains": [ {"helix": 0, "forward": false, "start": 175, "end": 182}, @@ -961,6 +1079,7 @@ ] }, { + "color": "#333333", "sequence": "GCAAGCGTCATTTTCGCATTAAATTTTTGGTATTTAAATTGT", "domains": [ {"helix": 5, "forward": true, "start": 210, "end": 217}, @@ -970,6 +1089,7 @@ ] }, { + "color": "#aaaa00", "sequence": "AATCAGCGTCCACGTATGTACCCCGGTTTGTATAAGCAAATA", "domains": [ {"helix": 0, "forward": false, "start": 217, "end": 224}, @@ -979,6 +1099,7 @@ ] }, { + "color": "#03b6a2", "sequence": "GTTTGATAGATCTAGCCGGAGAGGGTAGTCAATATGATATTC", "domains": [ {"helix": 5, "forward": true, "start": 252, "end": 259}, @@ -988,6 +1109,7 @@ ] }, { + "color": "#007200", "sequence": "TTTTGAGGGTGGTTAATGTGTAGGTAAACAAATCACCATCAT", "domains": [ {"helix": 0, "forward": false, "start": 259, "end": 266}, @@ -997,6 +1119,7 @@ ] }, { + "color": "#aaaa00", "sequence": "AAAAGAACCCTGTAATCGGTTGTACCAAGCAAAATTAAGCAA", "domains": [ {"helix": 5, "forward": true, "start": 294, "end": 301}, @@ -1006,6 +1129,7 @@ ] }, { + "color": "#f7931e", "sequence": "ATTATGATAGCCCGTACTAATAGTAGTACAAAGAATTAGCGC", "domains": [ {"helix": 0, "forward": false, "start": 301, "end": 308}, @@ -1015,6 +1139,7 @@ ] }, { + "color": "#007200", "sequence": "GAACAAGGTTTGACCCAATTCTGCGAACGAGTGTCTGGAAGT", "domains": [ {"helix": 5, "forward": true, "start": 336, "end": 343}, @@ -1024,6 +1149,7 @@ ] }, { + "color": "#57bb00", "sequence": "AGATTTAAGTCCACTTAATTGCTGAATAAACTAAAGTACGGG", "domains": [ {"helix": 0, "forward": false, "start": 343, "end": 350}, @@ -1033,6 +1159,7 @@ ] }, { + "color": "#f7931e", "sequence": "AGGGCGAAGACCGGTTTAATTCGAGCTTTCATTAAGAGGAAG", "domains": [ {"helix": 5, "forward": true, "start": 378, "end": 385}, @@ -1042,6 +1169,7 @@ ] }, { + "color": "#32b86c", "sequence": "GCGAACCAAAACCGAAATCAGGTCTTTATGCATCAAAAAGAG", "domains": [ {"helix": 0, "forward": false, "start": 385, "end": 392}, @@ -1051,6 +1179,7 @@ ] }, { + "color": "#57bb00", "sequence": "ACCATCAGCGTCCAAATAGTAAAATGTTTAAGAGGCTTTTGC", "domains": [ {"helix": 5, "forward": true, "start": 420, "end": 427}, @@ -1060,6 +1189,7 @@ ] }, { + "color": "#320096", "sequence": "CTGGATACCCAAATTAAGAGCAACACTAACCAAAATAGCGAC", "domains": [ {"helix": 0, "forward": false, "start": 427, "end": 434}, @@ -1069,6 +1199,7 @@ ] }, { + "color": "#32b86c", "sequence": "AGCACTATTACAGGAAAACGAACTAACGAGCCAGTCAGGACG", "domains": [ {"helix": 5, "forward": true, "start": 462, "end": 469}, @@ -1078,6 +1209,7 @@ ] }, { + "color": "#7300de", "sequence": "AACATTAAATCGGAATTTCAACTTTAATTGGCTCATTATATA", "domains": [ {"helix": 0, "forward": false, "start": 469, "end": 476}, @@ -1087,6 +1219,7 @@ ] }, { + "color": "#320096", "sequence": "TTGACGGATCAACGCAAGAACCGGATATCGCATAGGCTGGCT", "domains": [ {"helix": 5, "forward": true, "start": 504, "end": 511}, @@ -1096,6 +1229,7 @@ ] }, { + "color": "#b8056c", "sequence": "TACCCAAGGAAAGCAGGGAACCGAACTGACAGACCAGGCGGA", "domains": [ {"helix": 0, "forward": false, "start": 511, "end": 518}, @@ -1105,6 +1239,7 @@ ] }, { + "color": "#7300de", "sequence": "GAAAGCGGAGATTTACCAAGCGCGAAACTTACACTAAAACAC", "domains": [ {"helix": 5, "forward": true, "start": 546, "end": 553}, @@ -1114,6 +1249,7 @@ ] }, { + "color": "#cc0000", "sequence": "TACAACGAAAGGAGGTAAAATACGTAATAGGCAAAAGAATTT", "domains": [ {"helix": 0, "forward": false, "start": 553, "end": 560}, @@ -1123,6 +1259,7 @@ ] }, { + "color": "#b8056c", "sequence": "GGTCACGCAGCGAAGCTTTTGCGGGATCTTTATTCGGTCGCT", "domains": [ {"helix": 5, "forward": true, "start": 588, "end": 595}, @@ -1132,6 +1269,7 @@ ] }, { + "color": "#f74308", "sequence": "CCCTCAGCTGCGCGCTTGATACCGATAGGCATAACCGATAGC", "domains": [ {"helix": 0, "forward": false, "start": 595, "end": 602}, @@ -1141,6 +1279,7 @@ ] }, { + "color": "#cc0000", "sequence": "GCCGCTACACGTTGAAGGAATTGCGAATGTCAGTTTCAGCGG", "domains": [ {"helix": 5, "forward": true, "start": 630, "end": 637}, @@ -1150,6 +1289,7 @@ ] }, { + "color": "#888888", "sequence": "ATTTTTTCAGGGCGTCTTTCCAGACGTTAACAACTTTCAATA", "domains": [ {"helix": 0, "forward": false, "start": 637, "end": 644}, @@ -1159,6 +1299,7 @@ ] }, { + "color": "#f74308", "sequence": "ATAACGTACACTGAGCCCAATAGGAACCATCCTCAGAGCCAC", "domains": [ {"helix": 5, "forward": true, "start": 672, "end": 679}, @@ -1168,6 +1309,7 @@ ] }, { + "color": "#333333", "sequence": "TACCGTAGCTTTCCCCGTACTCAGGAGGCAGAACCGCCACAA", "domains": [ {"helix": 0, "forward": false, "start": 679, "end": 686}, @@ -1177,6 +1319,7 @@ ] }, { + "color": "#888888", "sequence": "GGAGGCCAGGATTATAAGAGGCTGAGACTGTATTTCGGAACC", "domains": [ {"helix": 5, "forward": true, "start": 714, "end": 721}, @@ -1186,6 +1329,7 @@ ] }, { + "color": "#03b6a2", "sequence": "CAAGAGAGATTAAATTAACGGGGTCAGTATGCCCCCTGCCAT", "domains": [ {"helix": 0, "forward": false, "start": 721, "end": 728}, @@ -1195,6 +1339,7 @@ ] }, { + "color": "#333333", "sequence": "AATCCTGGCCAGAACACAAACAAATAAAGCGAGGTTGAGGCA", "domains": [ {"helix": 5, "forward": true, "start": 756, "end": 763}, @@ -1204,6 +1349,7 @@ ] }, { + "color": "#aaaa00", "sequence": "CATTAAAAGAAGTGCCACCACCCTCAGACAGCATTGACAGCA", "domains": [ {"helix": 0, "forward": false, "start": 763, "end": 770}, @@ -1213,6 +1359,7 @@ ] }, { + "color": "#03b6a2", "sequence": "AAAGAGTCATCTTTTCATAGCCCCCTTAACCGTCAGACTGTA", "domains": [ {"helix": 5, "forward": true, "start": 798, "end": 805}, @@ -1222,6 +1369,7 @@ ] }, { + "color": "#007200", "sequence": "CGTTTGCCTGTCCAATGAAACCATCGATGTTTGCCTTTAGCA", "domains": [ {"helix": 0, "forward": false, "start": 805, "end": 812}, @@ -1231,6 +1379,7 @@ ] }, { + "color": "#aaaa00", "sequence": "TTCTTTGATCACCGGGAAATTATTCATTCGATTCAACCGATT", "domains": [ {"helix": 5, "forward": true, "start": 840, "end": 847}, @@ -1240,6 +1389,7 @@ ] }, { + "color": "#f7931e", "sequence": "GTGAATTATTAGTATTGTCACAATCAATCAAAAGGGCGACCA", "domains": [ {"helix": 0, "forward": false, "start": 847, "end": 854}, @@ -1249,6 +1399,7 @@ ] }, { + "color": "#007200", "sequence": "TCAAACTATTACGCAGAACTGGCATGATCAAAACCGAGGAAA", "domains": [ {"helix": 5, "forward": true, "start": 882, "end": 889}, @@ -1258,6 +1409,7 @@ ] }, { + "color": "#57bb00", "sequence": "ACTCCTTATCGGCCCTTACCGAAGCCCTGTTACCAGAAGGAG", "domains": [ {"helix": 0, "forward": false, "start": 889, "end": 896}, @@ -1267,6 +1419,7 @@ ] }, { + "color": "#f7931e", "sequence": "CGCCAGCGTAATTGTGAACACCCTGAACCATAAAAACAGGGA", "domains": [ {"helix": 5, "forward": true, "start": 924, "end": 931}, @@ -1276,6 +1429,7 @@ ] }, { + "color": "#32b86c", "sequence": "TCAGAGGCATTGCAAACGATTTTTTGTTGAGAGAATAACATA", "domains": [ {"helix": 0, "forward": false, "start": 931, "end": 938}, @@ -1285,6 +1439,7 @@ ] }, { + "color": "#57bb00", "sequence": "CATTTTGAATCTTATGCACCCAGCTACACCGGTTTTGAAGCC", "domains": [ {"helix": 5, "forward": true, "start": 966, "end": 973}, @@ -1294,6 +1449,7 @@ ] }, { + "color": "#320096", "sequence": "TATCCTGACGCTCAGGCTTATCCGGTATCGACTTGCGGGACA", "domains": [ {"helix": 0, "forward": false, "start": 973, "end": 980}, @@ -1303,6 +1459,7 @@ ] }, { + "color": "#32b86c", "sequence": "CAGATTCAGTACCGCATTCCAAGAACGGTTGTAGAAACCAAT", "domains": [ {"helix": 5, "forward": true, "start": 1008, "end": 1015}, @@ -1312,6 +1469,7 @@ ] }, { + "color": "#7300de", "sequence": "TAAACCAACCAGTCTCAACAATAGATAAATTTACGAGCATCA", "domains": [ {"helix": 0, "forward": false, "start": 1015, "end": 1022}, @@ -1321,6 +1479,7 @@ ] }, { + "color": "#320096", "sequence": "GGCCAACAGAATATGAGGCATTTTCGAGAGCGCCATATTTAA", "domains": [ {"helix": 5, "forward": true, "start": 1050, "end": 1057}, @@ -1330,6 +1489,7 @@ ] }, { + "color": "#b8056c", "sequence": "TAATAAGAGAGATATTATACAAATTCTTTTAATTGAGAATAA", "domains": [ {"helix": 0, "forward": false, "start": 1057, "end": 1064}, @@ -1339,6 +1499,7 @@ ] }, { + "color": "#7300de", "sequence": "TACGTGGGAAATACTCTTCTGACCTAAAGAGAGAAAACTTTT", "domains": [ {"helix": 5, "forward": true, "start": 1092, "end": 1099}, @@ -1348,6 +1509,7 @@ ] }, { + "color": "#cc0000", "sequence": "ATGGTTTCACAGACTGGGTTATATAACTGACAAAGAACGCCT", "domains": [ {"helix": 0, "forward": false, "start": 1099, "end": 1106}, @@ -1357,6 +1519,7 @@ ] }, { + "color": "#b8056c", "sequence": "ATGCGCGATAGCTTCCTTAGAATCCTTGACCTTGCTTCTGTA", "domains": [ {"helix": 5, "forward": true, "start": 1134, "end": 1141}, @@ -1366,6 +1529,7 @@ ] }, { + "color": "#f74308", "sequence": "CATAGCGAACTGATTTTGAATTACCTTTTGAGTGAATAACAA", "domains": [ {"helix": 0, "forward": false, "start": 1141, "end": 1148}, @@ -1375,6 +1539,7 @@ ] }, { + "color": "#cc0000", "sequence": "CGAACGAAGAGGCGTGAATACCAAGTTATTATCGGGAGAAAC", "domains": [ {"helix": 5, "forward": true, "start": 1176, "end": 1183}, @@ -1384,6 +1549,7 @@ ] }, { + "color": "#888888", "sequence": "ATCGCGCACCACCAAATTGCGTAGATTTAGTACCTTTTACAT", "domains": [ {"helix": 0, "forward": false, "start": 1183, "end": 1190}, @@ -1393,6 +1559,7 @@ ] }, { + "color": "#f74308", "sequence": "CAGTATTTAATCCTATCAGATGATGGCATCACCAGAAGGAGC", "domains": [ {"helix": 5, "forward": true, "start": 1218, "end": 1225}, @@ -1402,6 +1569,7 @@ ] }, { + "color": "#333333", "sequence": "ATCAATAAACACCGGAACGTTATTAATTAACAAAGAAACCGA", "domains": [ {"helix": 0, "forward": false, "start": 1225, "end": 1232}, @@ -1421,6 +1589,7 @@ ] }, { + "color": "#f74308", "sequence": "CCTGTGTGCTTTCCGGTTGGTGTAATGAACCTCGATAAAGAT", "domains": [ {"helix": 0, "forward": false, "start": 49, "end": 56}, @@ -1439,6 +1608,7 @@ ] }, { + "color": "#320096", "sequence": "CAACTCGTATTACAACTTTACAAACAATATGATTTAGAAGTA", "domains": [ {"helix": 3, "forward": true, "start": 1232, "end": 1246}, diff --git a/examples/output_designs/6_helix_origami_rectangle.sc b/examples/output_designs/6_helix_origami_rectangle.sc index c4a54466..eb4ca2b5 100644 --- a/examples/output_designs/6_helix_origami_rectangle.sc +++ b/examples/output_designs/6_helix_origami_rectangle.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 192, "grid_position": [0, 0]}, diff --git a/examples/output_designs/6_helix_origami_rectangle_helices_out_of_order.sc b/examples/output_designs/6_helix_origami_rectangle_helices_out_of_order.sc index a340501b..de0e6a63 100644 --- a/examples/output_designs/6_helix_origami_rectangle_helices_out_of_order.sc +++ b/examples/output_designs/6_helix_origami_rectangle_helices_out_of_order.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 192, "grid_position": [0, 0]}, diff --git a/examples/output_designs/empty.sc b/examples/output_designs/empty.sc index aab2617f..126033ec 100644 --- a/examples/output_designs/empty.sc +++ b/examples/output_designs/empty.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [], "strands": [] diff --git a/examples/output_designs/hairpin.sc b/examples/output_designs/hairpin.sc index 2846fffc..674ce6de 100644 --- a/examples/output_designs/hairpin.sc +++ b/examples/output_designs/hairpin.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]} diff --git a/examples/output_designs/helices_out_of_order_nonconsecutive.sc b/examples/output_designs/helices_out_of_order_nonconsecutive.sc index d6049b93..adcc96ab 100644 --- a/examples/output_designs/helices_out_of_order_nonconsecutive.sc +++ b/examples/output_designs/helices_out_of_order_nonconsecutive.sc @@ -1,12 +1,12 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "none", "helices": [ - {"max_offset": 20, "grid_position": [0, 2], "idx": 2}, - {"max_offset": 20, "grid_position": [0, 3], "idx": 3}, - {"max_offset": 20, "grid_position": [0, 5], "idx": 5}, - {"max_offset": 20, "grid_position": [0, 7], "idx": 7}, - {"max_offset": 20, "grid_position": [0, 11], "idx": 11} + {"max_offset": 20, "grid_position": null, "idx": 2}, + {"max_offset": 20, "grid_position": null, "idx": 3}, + {"max_offset": 20, "grid_position": null, "idx": 5}, + {"max_offset": 20, "grid_position": null, "idx": 7}, + {"max_offset": 20, "grid_position": null, "idx": 11} ], "strands": [] } \ No newline at end of file diff --git a/examples/output_designs/helix_groups.sc b/examples/output_designs/helix_groups.sc index 9657b1a7..c4879868 100644 --- a/examples/output_designs/helix_groups.sc +++ b/examples/output_designs/helix_groups.sc @@ -1,34 +1,38 @@ { - "version": "0.10.1", + "version": "0.11.0", "groups": { "north": { - "position": {"x": 0, "y": -200, "z": 0}, + "position": {"x": 0, "y": -10, "z": 0}, "grid": "honeycomb" }, "east": { - "position": {"x": 0, "y": 0, "z": 100}, - "pitch": 45, + "position": {"x": 10, "y": 0, "z": 0}, "grid": "square" }, "south": { - "position": {"x": 0, "y": 70, "z": 0}, + "position": {"x": 0, "y": 10, "z": 0}, "grid": "square", "helices_view_order": [7, 6] }, "west": { - "position": {"x": 0, "y": 0, "z": 0}, + "position": {"x": -10, "y": 0, "z": 0}, "grid": "none" + }, + "r": { + "position": {"x": 10, "y": 10, "z": 0}, + "pitch": 45, + "grid": "square" } }, "helices": [ - {"group": "north", "max_offset": 20, "grid_position": [1, 1], "idx": 0}, - {"group": "north", "max_offset": 21, "grid_position": [0, 1], "idx": 1}, - {"group": "north", "max_offset": 19, "grid_position": [0, 2], "idx": 2}, - {"group": "north", "max_offset": 18, "grid_position": [1, 2], "idx": 3}, - {"group": "north", "max_offset": 17, "grid_position": [2, 2], "idx": 4}, - {"group": "north", "max_offset": 16, "grid_position": [2, 1], "idx": 5}, - {"group": "south", "max_offset": 24, "grid_position": [0, 6], "idx": 6}, - {"group": "south", "max_offset": 25, "grid_position": [0, 7], "idx": 7}, + {"group": "north", "max_offset": 20, "grid_position": [0, 0], "idx": 0}, + {"group": "north", "max_offset": 21, "grid_position": [1, 0], "idx": 1}, + {"group": "north", "max_offset": 19, "grid_position": [1, 1], "idx": 2}, + {"group": "north", "max_offset": 18, "grid_position": [0, 1], "idx": 3}, + {"group": "north", "max_offset": 17, "grid_position": [-1, 1], "idx": 4}, + {"group": "north", "max_offset": 16, "grid_position": [-1, 0], "idx": 5}, + {"group": "south", "max_offset": 24, "grid_position": [0, 1], "idx": 6}, + {"group": "south", "max_offset": 25, "grid_position": [0, 0], "idx": 7}, { "group": "west", "max_offset": 26, @@ -38,11 +42,13 @@ { "group": "west", "max_offset": 27, - "position": {"x": 0, "y": 2.5, "z": 0}, + "position": {"x": 0, "y": 3, "z": 0}, "idx": 9 }, - {"group": "east", "max_offset": 22, "grid_position": [0, 13], "idx": 13}, - {"group": "east", "max_offset": 23, "grid_position": [0, 15], "idx": 15} + {"group": "r", "max_offset": 26, "grid_position": [0, 0], "idx": 10}, + {"group": "r", "max_offset": 27, "grid_position": [0, 1], "idx": 11}, + {"group": "east", "max_offset": 22, "grid_position": [0, 0], "idx": 13}, + {"group": "east", "max_offset": 23, "grid_position": [0, 1], "idx": 15} ], "strands": [ { @@ -58,24 +64,49 @@ }, { "color": "#57bb00", + "domains": [ + {"helix": 4, "forward": true, "start": 10, "end": 13} + ] + }, + { + "color": "#888888", "domains": [ {"helix": 6, "forward": true, "start": 0, "end": 8}, {"helix": 7, "forward": false, "start": 0, "end": 8} ] }, { - "color": "#888888", + "color": "#32b86c", "domains": [ {"helix": 8, "forward": true, "start": 0, "end": 8}, {"helix": 9, "forward": false, "start": 0, "end": 8} ] }, { - "color": "#32b86c", + "color": "#333333", "domains": [ {"helix": 13, "forward": true, "start": 0, "end": 8}, {"helix": 15, "forward": false, "start": 0, "end": 8} ] + }, + { + "color": "#320096", + "domains": [ + {"helix": 8, "forward": true, "start": 8, "end": 11} + ] + }, + { + "color": "#03b6a2", + "domains": [ + {"helix": 13, "forward": true, "start": 8, "end": 11} + ] + }, + { + "color": "#7300de", + "domains": [ + {"helix": 10, "forward": true, "start": 0, "end": 8}, + {"helix": 11, "forward": false, "start": 0, "end": 8} + ] } ] } \ No newline at end of file diff --git a/examples/output_designs/hex_lattice_10x10.sc b/examples/output_designs/hex_lattice_10x10.sc index 5ffb8d2f..70a9ee2a 100644 --- a/examples/output_designs/hex_lattice_10x10.sc +++ b/examples/output_designs/hex_lattice_10x10.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "hex", "helices": [ {"max_offset": 16, "grid_position": [0, 0]}, diff --git a/examples/output_designs/hex_lattice_10x10_with_negative.sc b/examples/output_designs/hex_lattice_10x10_with_negative.sc index 1f825bef..4980301b 100644 --- a/examples/output_designs/hex_lattice_10x10_with_negative.sc +++ b/examples/output_designs/hex_lattice_10x10_with_negative.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "hex", "helices": [ {"max_offset": 16, "grid_position": [-4, -4]}, diff --git a/examples/output_designs/honeycomb_lattice_10x10.sc b/examples/output_designs/honeycomb_lattice_10x10.sc index aec2ccb5..77db916d 100644 --- a/examples/output_designs/honeycomb_lattice_10x10.sc +++ b/examples/output_designs/honeycomb_lattice_10x10.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "honeycomb", "helices": [ {"max_offset": 16, "grid_position": [0, 0]}, diff --git a/examples/output_designs/honeycomb_lattice_10x10_with_negative.sc b/examples/output_designs/honeycomb_lattice_10x10_with_negative.sc index 04f6e11a..3a77728e 100644 --- a/examples/output_designs/honeycomb_lattice_10x10_with_negative.sc +++ b/examples/output_designs/honeycomb_lattice_10x10_with_negative.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "honeycomb", "helices": [ {"max_offset": 16, "grid_position": [-4, -4]}, diff --git a/examples/output_designs/idt-plates-explicit.sc b/examples/output_designs/idt-plates-explicit.sc index 45a51367..5ce41929 100644 --- a/examples/output_designs/idt-plates-explicit.sc +++ b/examples/output_designs/idt-plates-explicit.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/long_range_crossovers.sc b/examples/output_designs/long_range_crossovers.sc index a54aedfe..286d170f 100644 --- a/examples/output_designs/long_range_crossovers.sc +++ b/examples/output_designs/long_range_crossovers.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/loopouts_all_types.sc b/examples/output_designs/loopouts_all_types.sc index 045dbed0..6c078e67 100644 --- a/examples/output_designs/loopouts_all_types.sc +++ b/examples/output_designs/loopouts_all_types.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, diff --git a/examples/output_designs/many_big_helices.sc b/examples/output_designs/many_big_helices.sc index ab3bedc9..17459ccf 100644 --- a/examples/output_designs/many_big_helices.sc +++ b/examples/output_designs/many_big_helices.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 2000, "grid_position": [0, 0]}, diff --git a/examples/output_designs/many_helices_modifications.sc b/examples/output_designs/many_helices_modifications.sc index 6f0f0f4c..0564573a 100644 --- a/examples/output_designs/many_helices_modifications.sc +++ b/examples/output_designs/many_helices_modifications.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"grid_position": [0, 0]}, @@ -12,13 +12,6 @@ {"grid_position": [0, 7]} ], "modifications_in_design": { - "/iBiodT/": { - "display_text": "B", - "idt_text": "/iBiodT/", - "display_connector": false, - "location": "internal", - "allowed_bases": ["T"] - }, "/iCy3/": { "display_text": "Cy3", "idt_text": "/iCy3/", @@ -36,6 +29,13 @@ "idt_text": "/5Biosg/", "display_connector": false, "location": "5'" + }, + "/iBiodT/": { + "display_text": "B", + "idt_text": "/iBiodT/", + "display_connector": false, + "location": "internal", + "allowed_bases": ["T"] } }, "strands": [ diff --git a/examples/output_designs/very_large_origami.sc b/examples/output_designs/very_large_origami.sc index b24e9b11..24a98356 100644 --- a/examples/output_designs/very_large_origami.sc +++ b/examples/output_designs/very_large_origami.sc @@ -1,5 +1,5 @@ { - "version": "0.10.1", + "version": "0.11.0", "grid": "square", "helices": [ {"max_offset": 672, "grid_position": [0, 0]}, diff --git a/scadnano/scadnano.py b/scadnano/scadnano.py index 54ce7583..9154f204 100644 --- a/scadnano/scadnano.py +++ b/scadnano/scadnano.py @@ -44,7 +44,7 @@ # commented out for now to support Python 3.6, which does not support this feature # from __future__ import annotations -__version__ = "0.10.3" # version line; WARNING: do not remove or change this line or comment +__version__ = "0.11.0" # version line; WARNING: do not remove or change this line or comment import dataclasses from abc import abstractmethod, ABC @@ -59,12 +59,8 @@ import sys import os.path - default_scadnano_file_extension = 'sc' -StrandLabel = TypeVar('StrandLabel') -DomainLabel = TypeVar('DomainLabel') - def _pairwise(iterable): """s -> (s0,s1), (s1,s2), (s2, s3), ...""" @@ -708,8 +704,6 @@ def m13(rotation: int = 5587, variant: M13Variant = M13Variant.p7249): # Design keys version_key = 'version' grid_key = 'grid' -major_tick_distance_key = 'major_tick_distance' -major_ticks_key = 'major_ticks' helices_key = 'helices' strands_key = 'strands' scaffold_key = 'scaffold' @@ -734,6 +728,10 @@ def m13(rotation: int = 5587, variant: M13Variant = M13Variant.p7249): grid_position_key = 'grid_position' position_key = 'position' legacy_position_keys = ['origin'] +major_tick_distance_key = 'major_tick_distance' +major_ticks_key = 'major_ticks' +major_tick_start_key = 'major_tick_start' +major_tick_periodic_distances_key = 'major_tick_periodic_distances' group_key = 'group' # Position keys @@ -1002,21 +1000,24 @@ def to_json_serializable(self, suppress_indent: bool = True, **kwargs): return dct + def _assign_default_helices_view_order(self, helices_in_group: Dict[int, 'Helix']): + if self.helices_view_order is not None: + raise AssertionError('should not call _assign_default_helices_view_order if ' + 'HelixGroup.helices_view_order is not None, but it is ' + f'{self.helices_view_order}') + helix_idxs = list(helices_in_group.keys()) + self.helices_view_order = _check_helices_view_order_and_return(self.helices_view_order, helix_idxs) + @staticmethod def from_json(json_map: dict, **kwargs) -> 'HelixGroup': # remove quotes when Python 3.6 support dropped grid = optional_field(Grid.none, json_map, grid_key) - helix_idxs: List[int] = kwargs['helix_idxs'] - helices_view_order = json_map.get(helices_view_order_key, sorted(helix_idxs)) + num_helices: int = kwargs['num_helices'] + helices_view_order = json_map.get(helices_view_order_key) if helices_view_order is not None: - num_helices = len(helix_idxs) if len(helices_view_order) != num_helices: raise IllegalDesignError(f'length of helices ({num_helices}) does not match ' f'length of helices_view_order ({len(helices_view_order)})') - if sorted(helices_view_order) != sorted(helix_idxs): - raise IllegalDesignError(f'helices_view_order = {helices_view_order} is not a ' - f'permutation of the set of helices {helix_idxs}') - _check_helices_view_order_and_return(helices_view_order, helix_idxs) position_map = mandatory_field(HelixGroup, json_map, position_key, *legacy_position_keys) position = Position3D.from_json(position_map) @@ -1032,6 +1033,16 @@ def from_json(json_map: dict, **kwargs) -> 'HelixGroup': # remove quotes when P helices_view_order=helices_view_order, grid=grid) + def helices_view_order_inverse(self, idx: int) -> int: + """ + Given a :py:data:`Helix.idx` in this :any:`HelixGroup`, return its view order. + + :param idx: index of :any:`Helix` in this :any:`HelixGroup` + :return: view order of the :any:`Helix` + :raises ValueError: if `idx` is not the index of a :any:`Helix` in this :any:`HelixGroup` + """ + return self.helices_view_order.index(idx) + # def in_browser() -> bool: # """Test if this code is running in the browser. @@ -1067,20 +1078,57 @@ class Helix(_JSONSerializable): max_offset: int = None # type: ignore """Maximum offset (exclusive) of :any:`Domain` that can be drawn on this :any:`Helix`. + + Optional field. If unspecified, it is calculated when the :any:`Design` is instantiated as the largest :any:`Domain.end` offset of any :any:`Domain` in the design. """ min_offset: int = 0 """Minimum offset (inclusive) of :any:`Domain` that can be drawn on this :any:`Helix`. - If unspecified, it is set to 0. + + Optional field. Default value 0. """ + major_tick_start: int = None # type: ignore + """Offset of first major tick when not specifying :py:data:`Helix.major_ticks`. + Used in combination with either + :py:data:`Helix.major_tick_distance` or + :py:data:`Helix.major_tick_periodic_distances`. + + Optional field. + If not specified, is initialized to value :py:data:`Helix.min_offset`.""" + major_tick_distance: Optional[int] = None - """If non-None, overrides :any:`Design.major_tick_distance`.""" + """Distance between major ticks (bold) delimiting boundaries between bases. Major ticks will appear + in the visual interface at positions + + Optional field. + If 0 then no major ticks are drawn. + If not specified then the default value is assumed. + If the grid is :any:`Grid.square` then the default value is 8. + If the grid is :any:`Grid.hex` or :any:`Grid.honeycomb` then the default value is 7.""" + + major_tick_periodic_distances: Optional[List[int]] = None + """Periodic distances between major ticks. For example, setting + :py:data:`Helix.major_tick_periodic_distances` = [2, 3] and + :py:data:`Helix.major_tick_start` = 10 means that major ticks will appear at + 12, + 15, + 17, + 20, + 22, + 25, + 27, + 30, ... + + Optional field. + :py:data:`Helix.major_tick_distance` is equivalent to + the setting :py:data:`Helix.major_tick_periodic_distances` = [:py:data:`Helix.major_tick_distance`]. + """ major_ticks: Optional[List[int]] = None # type: ignore - """If not ``None``, overrides :any:`Design.major_tick_distance` and :any:`Helix.major_tick_distance` + """If not ``None``, overrides :any:`Helix.major_tick_distance` to specify a list of offsets at which to put major ticks.""" grid_position: Optional[Tuple[int, int]] = None # type: ignore @@ -1140,6 +1188,8 @@ class Helix(_JSONSerializable): _domains: List['Domain'] = field(default_factory=list) def __post_init__(self): + if self.major_tick_start is None: # type: ignore + self.major_tick_start = self.min_offset # type: ignore if self.grid_position is not None and self.position is not None: raise IllegalDesignError('exactly one of grid_position or position must be specified, ' 'but both are specified') @@ -1153,6 +1203,8 @@ def __post_init__(self): def to_json_serializable(self, suppress_indent: bool = True, **kwargs): dct: Any = dict() + grid: Grid = kwargs['grid'] + # if we have major ticks or position, it's harder to read Helix on one line, # so don't wrap it in NoIndent, but still wrap longer sub-objects in them use_no_indent_helix: bool = not (self.major_ticks is not None or self.position is not None) @@ -1160,9 +1212,12 @@ def to_json_serializable(self, suppress_indent: bool = True, **kwargs): if self.group != default_group_name: dct[group_key] = self.group - if self.min_offset != 0: + if not self.min_offset_is_default(): dct[min_offset_key] = self.min_offset + if not self.major_tick_start_is_default(): + dct[major_tick_start_key] = self.major_tick_start + dct[max_offset_key] = self.max_offset if self.position is None: @@ -1179,33 +1234,22 @@ def to_json_serializable(self, suppress_indent: bool = True, **kwargs): if not _is_close(self.yaw, default_yaw): dct[yaw_key] = self.yaw - if self.major_tick_distance is not None and self.major_tick_distance > 0: + if not self.major_tick_distance_is_default(grid): dct[major_tick_distance_key] = self.major_tick_distance - if self.major_ticks is not None: - ticks = self.major_ticks - dct[major_ticks_key] = NoIndent(ticks) if suppress_indent and not use_no_indent_helix else ticks + if not self.major_tick_periodic_distances_is_default(): + dct[major_tick_periodic_distances_key] = NoIndent( + self.major_tick_periodic_distances) if suppress_indent and not use_no_indent_helix else \ + self.major_tick_periodic_distances + + if not self.major_ticks_is_default(): + dct[major_ticks_key] = NoIndent( + self.major_ticks) if suppress_indent and not use_no_indent_helix else self.major_ticks dct[idx_on_helix_key] = self.idx return NoIndent(dct) if suppress_indent and use_no_indent_helix else dct - def default_grid_position(self): - return 0, self.idx - - def calculate_major_ticks(self, default_major_tick_distance_: int): - """ - Calculates full list of major tick marks, whether using `default_major_tick_distance` (from - :any:`Design`), :py:data:`Helix.major_tick_distance`, or :py:data:`Helix.major_ticks`. - They are used in reverse order to determine precedence. (e.g., :py:data:`Helix.major_ticks` - overrides :py:data:`Helix.major_tick_distance`, which overrides - `default_major_tick_distance` from :any:`Design`. - """ - if self.major_ticks is not None: - return self.major_ticks - distance = default_major_tick_distance_ if self.major_tick_distance is None else self.major_tick_distance - return list(range(self.min_offset, self.max_offset + 1, distance)) - @staticmethod def from_json(json_map: dict) -> 'Helix': # remove quotes when Python 3.6 support dropped grid_position = None @@ -1220,7 +1264,9 @@ def from_json(json_map: dict) -> 'Helix': # remove quotes when Python 3.6 suppo major_tick_distance = json_map.get(major_tick_distance_key) major_ticks = json_map.get(major_ticks_key) - min_offset = json_map.get(min_offset_key) + major_tick_start = json_map.get(major_tick_start_key) + major_tick_periodic_distances = json_map.get(major_tick_periodic_distances_key) + min_offset = optional_field(0, json_map, min_offset_key) max_offset = json_map.get(max_offset_key) idx = json_map.get(idx_on_helix_key) @@ -1236,6 +1282,8 @@ def from_json(json_map: dict) -> 'Helix': # remove quotes when Python 3.6 suppo return Helix( major_tick_distance=major_tick_distance, major_ticks=major_ticks, + major_tick_start=major_tick_start, + major_tick_periodic_distances=major_tick_periodic_distances, grid_position=grid_position, min_offset=min_offset, max_offset=max_offset, @@ -1247,6 +1295,38 @@ def from_json(json_map: dict) -> 'Helix': # remove quotes when Python 3.6 suppo group=group, ) + def default_grid_position(self) -> Tuple[int, int]: + if self.idx is None: + raise AssertionError('cannot call default_grid_position when idx is None') + return 0, self.idx + + def calculate_major_ticks(self, grid: Grid) -> List[int]: + """ + Calculates full list of major tick marks, whether using `default_major_tick_distance` (from + :any:`Design`), :py:data:`Helix.major_tick_distance`, or :py:data:`Helix.major_ticks`. + They are used in reverse order to determine precedence. (e.g., :py:data:`Helix.major_ticks` + overrides :py:data:`Helix.major_tick_distance`, which overrides + `default_major_tick_distance` from :any:`Design`. + """ + if self.major_tick_start is None: + raise AssertionError('major_tick_start should never be None') + if self.major_ticks is not None: + return self.major_ticks + elif self.major_tick_distance is not None: + return list(range(self.major_tick_start, self.max_offset + 1, self.major_tick_distance)) + elif self.major_tick_periodic_distances is not None: + ticks = [] + tick = self.major_tick_start + idx_period = 0 + while tick <= self.max_offset: + ticks.append(tick) + tick += self.major_tick_periodic_distances[idx_period] + idx_period = (idx_period + 1) % len(self.major_tick_periodic_distances) + return ticks + else: + distance = default_major_tick_distance(grid) + return list(range(self.major_tick_start, self.max_offset + 1, distance)) + @property def domains(self): """ @@ -1257,13 +1337,29 @@ def domains(self): """ return self._domains + def min_offset_is_default(self) -> bool: + return self.min_offset == 0 + + def major_tick_start_is_default(self) -> bool: + return self.major_tick_start == self.min_offset + + def major_tick_distance_is_default(self, grid: Grid) -> bool: + return (self.major_tick_distance is None + or default_major_tick_distance(grid) == self.major_tick_distance) + + def major_tick_periodic_distances_is_default(self) -> bool: + return self.major_tick_periodic_distances is None + + def major_ticks_is_default(self) -> bool: + return self.major_ticks is None + def _is_close(x1: float, x2: float): return abs(x1 - x2) < 0.00000001 @dataclass -class Domain(_JSONSerializable, Generic[DomainLabel]): +class Domain(_JSONSerializable): """ A maximal portion of a :any:`Strand` that is continguous on a single :any:`Helix`. A :any:`Strand` contains a list of :any:`Domain`'s (and also potentially :any:`Loopout`'s). @@ -1310,7 +1406,7 @@ class Domain(_JSONSerializable, Generic[DomainLabel]): This is the number of *extra* bases in addition to the base already at this position. The total number of bases at this offset is num_insertions+1.""" - label: DomainLabel = None + label: Any = None """Generic "label" object to associate to this :any:`Domain`. Useful for associating extra information with the :any:`Domain` that will be serialized, for example, @@ -1342,7 +1438,7 @@ def __str__(self): def strand(self) -> 'Strand': # remove quotes when Python 3.6 support dropped return self._parent_strand - def set_label(self, label: StrandLabel): + def set_label(self, label): """Sets label of this :any:`Domain`.""" self.label = label @@ -1419,8 +1515,8 @@ def dna_length(self) -> int: """Number of bases in this Domain.""" return self.end - self.start - len(self.deletions) + self._num_insertions() - def dna_length_in(self, left, right) -> int: - """Number of bases in this Domain between `left` and `right` (INCLUSIVE).""" + def dna_length_in(self, left: int, right: int) -> int: + """Number of bases in this Domain between offsets `left` and `right` (INCLUSIVE).""" if not left <= right + 1: raise ValueError(f'left = {left} and right = {right} but we should have left <= right + 1') if not self.start <= left: @@ -1451,7 +1547,7 @@ def dna_sequence_in(self, offset_left: int, offset_right: int) -> Optional[str]: unlike other parts of this API where the right endpoint is exclusive. This is to make the notion well-defined when one of the endpoints is on an offset with a deletion or insertion.""" - strand_seq = self._parent_strand.dna_sequence + strand_seq = self._parent_strand.dna_sequence if self._parent_strand is not None else None if strand_seq is None: return None @@ -1478,6 +1574,8 @@ def dna_sequence_in(self, offset_left: int, offset_right: int) -> Optional[str]: def get_seq_start_idx(self) -> int: """Starting DNA subsequence index for first base of this :any:`Domain` on its Parent :any:`Strand`'s DNA sequence.""" + if self._parent_strand is None: + raise ValueError('should not call this method if a Strand has not be associated to this Domain') domains = self._parent_strand.domains # index of self in parent strand's list of domains self_domain_idx = domains.index(self) @@ -1543,7 +1641,7 @@ def _between_5p_and_offset(self, offset_to_test: int, offset_edge: int) -> bool: # The type hint 'Domain' must be in quotes since Domain is not yet defined. # This is a "forward reference": https://www.python.org/dev/peps/pep-0484/#forward-references # remove quotes when Python 3.6 support dropped - # def overlaps(self, other: Domain[DomainLabel]) -> bool: + # def overlaps(self, other: Domain) -> bool: def overlaps(self, other: 'Domain') -> bool: r"""Indicates if this :any:`Domain`'s set of offsets (the set :math:`\{x \in \mathbb{N} \mid` @@ -1559,7 +1657,7 @@ def overlaps(self, other: 'Domain') -> bool: self.compute_overlap(other)[0] >= 0) # remove quotes when Python 3.6 support dropped - # def overlaps_illegally(self, other: Domain[DomainLabel]): + # def overlaps_illegally(self, other: Domain): def overlaps_illegally(self, other: 'Domain'): r"""Indicates if this :any:`Domain`'s set of offsets (the set :math:`\{x \in \mathbb{N} \mid` @@ -1575,7 +1673,7 @@ def overlaps_illegally(self, other: 'Domain'): self.compute_overlap(other)[0] >= 0) # remove quotes when Python 3.6 support dropped - # def compute_overlap(self, other: Domain[DomainLabel]) -> Tuple[int, int]: + # def compute_overlap(self, other: Domain) -> Tuple[int, int]: def compute_overlap(self, other: 'Domain') -> Tuple[int, int]: """Return [left,right) offset indicating overlap between this Domain and `other`. @@ -1825,7 +1923,7 @@ def __init__(self, design: 'Design', helix: int, offset: int): self.loopout_length: Optional[int] = None self.strand: Optional[Strand] = None self.just_moved_to_helix: bool = True - self.last_domain: Optional[Domain[DomainLabel]] = None + self.last_domain: Optional[Domain] = None # remove quotes when Python 3.6 support dropped def cross(self, helix: int, offset: int = None) -> 'StrandBuilder': @@ -2046,7 +2144,7 @@ def with_domain_sequence(self, sequence: str, assign_complement: bool = True) -> return self # remove quotes when Python 3.6 support dropped - def with_label(self, label: StrandLabel) -> 'StrandBuilder': + def with_label(self, label) -> 'StrandBuilder': """ Assigns `label` as label of the :any:`Strand` being built. @@ -2061,7 +2159,7 @@ def with_label(self, label: StrandLabel) -> 'StrandBuilder': return self # remove quotes when Python 3.6 support dropped - def with_domain_label(self, label: DomainLabel) -> 'StrandBuilder': + def with_domain_label(self, label) -> 'StrandBuilder': """ Assigns `label` as DNA sequence of the most recently created :any:`Domain` in the :any:`Strand` being built. This should be called immediately after a :any:`Domain` is created @@ -2087,7 +2185,7 @@ def with_domain_label(self, label: DomainLabel) -> 'StrandBuilder': @dataclass -class Strand(_JSONSerializable, Generic[StrandLabel, DomainLabel]): +class Strand(_JSONSerializable): """ Represents a single strand of DNA. @@ -2124,7 +2222,7 @@ class Strand(_JSONSerializable, Generic[StrandLabel, DomainLabel]): uses for the scaffold. """ - domains: List[Union[Domain[DomainLabel], Loopout]] + domains: List[Union[Domain, Loopout]] """:any:`Domain`'s (or :any:`Loopout`'s) composing this Strand. Each :any:`Domain` is contiguous on a single :any:`Helix` and could be either single-stranded or double-stranded, @@ -2179,7 +2277,7 @@ class Strand(_JSONSerializable, Generic[StrandLabel, DomainLabel]): So for an internal modified base on a sequence of length n, the allowed offsets are 0,...,n-1, and for an internal modification that goes between bases, the allowed offsets are 0,...,n-2.""" - label: StrandLabel = None + label: Any = None """Generic "label" object to associate to this :any:`Strand`. Useful for associating extra information with the Strand that will be serialized, for example, @@ -2189,7 +2287,7 @@ class Strand(_JSONSerializable, Generic[StrandLabel, DomainLabel]): """ # not serialized; efficient way to see a list of all domains on a given helix - _helix_idx_domain_map: Dict[int, List[Domain[DomainLabel]]] = field( + _helix_idx_domain_map: Dict[int, List[Domain]] = field( init=False, repr=False, compare=False, default=None) def to_json_serializable(self, suppress_indent: bool = True, **kwargs): @@ -2259,7 +2357,7 @@ def set_scaffold(self, is_scaf: bool = True): if is_scaf: self.color = default_scaffold_color - def set_label(self, label: StrandLabel): + def set_label(self, label): """Sets label of this :any:`Strand`.""" self.label = label @@ -2320,11 +2418,11 @@ def remove_modification_internal(self, idx: int): if idx in self.modifications_int: del self.modifications_int[idx] - def first_domain(self) -> Union[Domain[DomainLabel], Loopout]: + def first_domain(self) -> Union[Domain, Loopout]: """First domain (of type either :any:`Domain` or :any:`Loopout`) on this :any:`Strand`.""" return self.domains[0] - def last_domain(self) -> Union[Domain[DomainLabel], Loopout]: + def last_domain(self) -> Union[Domain, Loopout]: """Last domain (of type either :any:`Domain` or :any:`Loopout`) on this :any:`Strand`.""" return self.domains[-1] @@ -2358,7 +2456,7 @@ def dna_length(self) -> int: acc += domain.dna_length() return acc - def bound_domains(self) -> List[Domain[DomainLabel]]: + def bound_domains(self) -> List[Domain]: """:any:`Domain`'s of this :any:`Strand` that are not :any:`Loopout`'s.""" return [domain for domain in self.domains if domain.is_domain()] @@ -2502,7 +2600,7 @@ def insert_domain(self, order, domain): new_wildcards = DNA_base_wildcard * (end_idx - start_idx) self.dna_sequence = prefix + new_wildcards + suffix - def remove_domain(self, domain: Union[Domain[DomainLabel], Loopout]): + def remove_domain(self, domain: Union[Domain, Loopout]): # Only intended to be called by Design.remove_domain # remove relevant portion of DNA sequence to maintain its length @@ -2520,7 +2618,7 @@ def remove_domain(self, domain: Union[Domain[DomainLabel], Loopout]): if self.use_default_idt: self.set_default_idt() - def dna_index_start_domain(self, domain: Domain[DomainLabel]): + def dna_index_start_domain(self, domain: Domain): """ Returns index in DNA sequence of domain, e.g., if there are five domains @@ -2542,7 +2640,7 @@ def contains_loopouts(self) -> bool: return True return False - def first_bound_domain(self) -> Domain[DomainLabel]: + def first_bound_domain(self) -> Domain: """First :any:`Domain` (i.e., not a :any:`Loopout`) on this :any:`Strand`. Currently the first and last strand must not be :any:`Loopout`'s, so this should return the same @@ -2552,7 +2650,7 @@ def first_bound_domain(self) -> Domain[DomainLabel]: if domain.is_domain(): return domain - def last_bound_domain(self) -> Domain[DomainLabel]: + def last_bound_domain(self) -> Domain: """Last :any:`Domain` (i.e., not a :any:`Loopout`) on this :any:`Strand`. Currently the first and last strand must not be :any:`Loopout`'s, so this should return the same @@ -2937,15 +3035,26 @@ def _check_helices_view_order_and_return( if helices_view_order is None: identity = sorted(helix_idxs) helices_view_order = identity - _check_helices_view_order_is_bijection(helices_view_order, helix_idxs) + else: + _check_helices_view_order_is_bijection(helices_view_order, helix_idxs) return helices_view_order +def _check_helices_grid_legal(grid: Grid, helices: Iterable[Helix]): + for helix in helices: + if grid == Grid.none and helix.grid_position is not None: + raise IllegalDesignError( + f'grid is none, but Helix {helix.idx} has grid_position = {helix.grid_position}') + elif grid != Grid.none and helix.position is not None: + raise IllegalDesignError( + f'grid is not none, but Helix {helix.idx} has position = ${helix.position}') + + def _check_helices_view_order_is_bijection(helices_view_order: List[int], helix_idxs: Iterable[int]): if not (sorted(helices_view_order) == sorted(helix_idxs)): raise IllegalDesignError( f"The specified helices view order: {helices_view_order}\n " - f"is not a bijection on helices indices: {', '.join(helix_idxs)}.") + f"is not a bijection on helices indices: {helix_idxs}.") @dataclass @@ -2957,7 +3066,7 @@ class Design(_JSONSerializable): Required field.""" - helices: Dict[int, Helix] = None + helices: Dict[int, Helix] = None # type: ignore """All of the :any:`Helix`'s in this :any:`Design`. This is a dictionary mapping index to the :any:`Helix` with that index; if helices have indices 0, 1, ..., num_helices-1, then this can be used as a list of Helices. @@ -2967,27 +3076,9 @@ class Design(_JSONSerializable): stored in any :any:`Domain` in :py:data:`Design.strands`.""" - groups: Optional[Dict[str, HelixGroup]] = None + groups: Dict[str, HelixGroup] = None # type: ignore """:any:`HelixGroup`'s in this :any:`Design`.""" - grid: Grid = Grid.none - """Common choices for how to arrange helices relative to each other. - - Optional field; default is Grid.none. - - Should not be specified if :any:`HelixGroup`'s are being used.""" - - major_tick_distance: int = -1 - """Distance between major ticks (bold) delimiting boundaries between bases. - - Optional field. - If not specified, default value is 8 unless overridden by :py:data:`Design.grid`. - If 0 then no major ticks are drawn. - If negative then the default value is assumed, but `major_tick_distance` is not stored in the JSON file - when serialized. - If :any:`Design.grid` = :any:`Grid.square` then the default value is 8. - If :any:`Design.grid` = :any:`Grid.hex` or :any:`Grid.honeycomb` then the default value is 7.""" - geometry: Geometry = field(default_factory=lambda: Geometry()) """Controls some geometric/physical aspects of this :any:`Design`.""" @@ -3003,30 +3094,16 @@ def __init__(self, *, helices: Optional[Union[List[Helix], Dict[int, Helix]]] = None, groups: Optional[Dict[str, HelixGroup]] = None, strands: List[Strand] = None, - helix_template: Optional[Helix] = None, - num_helices: Optional[int] = None, - grid: Grid = Grid.none, - major_tick_distance: int = -1, + grid: Optional[Grid] = None, helices_view_order: List[int] = None, geometry: Geometry = None): """ - :param helices: List of :any:`Helix`'s; if missing, set based on either `helix_template` and - `num_helices`, or based on `strands`. - Mutually exclusive with `helix_template` and `num_helices` + :param helices: List of :any:`Helix`'s; if missing, set based on `strands`. :param groups: Dict mapping group name to :any:`HelixGroup`. Mutually exclusive with `helices_view_order`, and any non-none :any:`Grid`. If set, then each :any:`Helix` must have its :py:data:`Helix.group` field set to a group name that is one of the keys of this dict. :param strands: List of :any:`Strand`'s. If missing, will be empty. - :param helix_template: If specified, `num_helices` must be specified. - That many helices will be created, - modeled after this Helix. This Helix will not be any of them, so modifications to it will not - affect the :any:`Design` after it is created. The ``idx`` field of `helix_template` will be - ignored, and the ``idx`` fields of the created helices will be 0 through `num_helices` - 1. - Mutually exclusive with `helices`. - :param num_helices: Number of :any:`Helix`'s to create, each of which is copied from `helix_template`. - If specified, `helix_template` must be specified - Mutually exclusive with `helices`. :param grid: :any:`Grid` to use. :param major_tick_distance: regularly spaced major ticks between all helices. :any:`Helix.major_tick_distance` overrides this value for any :any:`Helix` in which it is @@ -3041,40 +3118,38 @@ def __init__(self, *, :param geometry: geometric physical parameters for visualization. If not specified, a default set of parameters from the literature are used. """ - if helices_view_order is not None and groups is not None: + using_groups = groups is not None + + if helices_view_order is not None and using_groups: raise IllegalDesignError('Design.helices_view_order and Design.groups are mutually exclusive. ' 'Set at most one of them.') + if grid is not None and using_groups: + raise IllegalDesignError('Design.grid and Design.groups are mutually exclusive. ' + 'Set at most one of them.') + + if grid is None and not using_groups: + # make sure we only set this if groups are not being used + grid = Grid.none + self.strands = [] if strands is None else strands - self.groups = groups - self.grid = grid - self.major_tick_distance = major_tick_distance self.color_cycler = ColorCycler() self.geometry = Geometry() if geometry is None else geometry - if self.major_tick_distance < 0 or self.major_tick_distance is None: - self.major_tick_distance = default_major_tick_distance(self.grid) - - if helices is not None and (helix_template is not None or num_helices is not None): - raise IllegalDesignError('helices is mutually exclusive with helix_template and num_helices; ' - 'you must specified the first, or the latter two') - - if (helix_template is not None and num_helices is None) or ( - helix_template is None and num_helices is not None): - raise IllegalDesignError('helix type must be specified if and only if num_helices is') - - if self.groups is None: + if groups is None: self.groups = {default_group_name: HelixGroup()} - elif self.grid != Grid.none: - raise IllegalDesignError('cannot use a non-none grid for whole Design when helix groups are ' - 'used; only the HelixGroups can have non-none grids in this case') + else: + self.groups = groups + if grid is not None: + raise IllegalDesignError('cannot use a non-none grid for whole Design when helix groups are ' + 'used; only the HelixGroups can have non-none grids in this case') + if helices_view_order is not None: + raise IllegalDesignError('cannot use helices_view_order for whole Design when helix groups ' + 'are used; only the HelixGroups can have helices_view_order ' + 'in this case') if helices is None: - if helix_template is not None and num_helices is not None: - helices = {idx: copy.deepcopy(helix_template) for idx in range(num_helices)} - for idx, helix in helices.items(): - helices[idx] = replace(helix, idx=idx) - elif len(self.strands) > 0: + if len(self.strands) > 0: max_helix_idx = max( domain.helix for strand in self.strands for domain in strand.bound_domains()) helices = {idx: Helix(idx=idx) for idx in range(max_helix_idx + 1)} @@ -3089,13 +3164,19 @@ def __init__(self, *, # set up helices_view_order in groups uses_default_group = self._has_default_groups() for name, group in self.groups.items(): - helix_idxs = self.helices_idxs_in_group(name) + helix_idxs_in_group = self.helices_idxs_in_group(name) if uses_default_group: helices_view_order_for_group = helices_view_order + grid_for_group = grid else: helices_view_order_for_group = group.helices_view_order + grid_for_group = group.grid group.helices_view_order = _check_helices_view_order_and_return(helices_view_order_for_group, - helix_idxs) + helix_idxs_in_group) + if grid_for_group is None: raise AssertionError() + group.grid = grid_for_group + helices_in_group = [self.helices[idx] for idx in helix_idxs_in_group] + _check_helices_grid_legal(group.grid, helices_in_group) self.__post_init__() @@ -3107,6 +3188,7 @@ def __post_init__(self): self._build_domains_on_helix_lists() self._set_helices_min_max_offsets(update=False) self._ensure_helix_groups_exist() + self._assign_default_helices_view_orders_to_groups() self._check_legal_design() if self.automatically_assign_color: @@ -3120,14 +3202,29 @@ def helices_view_order(self) -> List[int]: :return: helices_view_order of this :any:`Design` """ + group = self._get_default_group() + return group.helices_view_order + + @property + def grid(self) -> Grid: + """ + Return grid of this :any:`Design` if no :any:`HelixGroup`'s are being used, otherwise + raise a ValueError. + + :return: grid of this :any:`Design` + """ + group = self._get_default_group() + return group.grid + + def _get_default_group(self): + # Gets default group and raise exception if default group is not being used if not self._has_default_groups(): - raise ValueError('cannot access Design.helices_view_order when groups are used. ' - 'Access group.helices_view_order for each group instead.') + raise ValueError('The default group is not being used for this design.') if self.groups is None: raise AssertionError('Design.groups should not be None by this point') groups: List[HelixGroup] = list(self.groups.values()) group: HelixGroup = groups[0] - return group.helices_view_order + return group def helices_idxs_in_group(self, group_name: str) -> List[int]: """ @@ -3178,6 +3275,16 @@ def from_scadnano_json_str(json_str: str) -> 'Design': # remove quotes when Pyt except KeyError as e: raise IllegalDesignError(f'I was expecting a JSON key but did not find it: {e}') + @staticmethod + def _check_mutually_exclusive_fields(json_map: dict): + exclusive_pairs = [ + (grid_key, groups_key), + (helices_view_order_key, groups_key), + ] + for key1, key2 in exclusive_pairs: + if key1 in json_map and key2 in json_map: + raise IllegalDesignError(f'cannot specify both "{key1}" and "{key2}" in Design JSON') + @staticmethod def from_scadnano_json_map( json_map: dict) -> 'Design': # remove quotes when Python 3.6 support dropped @@ -3191,18 +3298,12 @@ def from_scadnano_json_map( """ # version = json_map.get(version_key, initial_version) # not sure what to do with version - grid = optional_field(Grid.none, json_map, grid_key) + Design._check_mutually_exclusive_fields(json_map) + + grid = optional_field(None, json_map, grid_key) grid_is_none = grid == Grid.none - if major_tick_distance_key in json_map: - major_tick_distance = json_map[major_tick_distance_key] - elif not grid_is_none: - if grid in [Grid.hex, Grid.honeycomb]: - major_tick_distance = 7 - else: - major_tick_distance = 8 - else: - major_tick_distance = -1 + using_groups = groups_key in json_map helices = [] deserialized_helices_list = json_map[helices_key] @@ -3212,28 +3313,23 @@ def from_scadnano_json_map( idx_default = 0 for helix_json in deserialized_helices_list: helix = Helix.from_json(helix_json) - if grid_is_none and groups_key not in json_map and grid_position_key in helix_json: + if not using_groups and grid_is_none and grid_position_key in helix_json: raise IllegalDesignError( f'grid is none, but Helix {idx_default} has grid_position = {helix_json[grid_position_key]}') - elif not grid_is_none and position_key in helix_json: + elif not using_groups and not grid_is_none and position_key in helix_json: raise IllegalDesignError( f'grid is not none, but Helix {idx_default} has position = ${helix_json[position_key]}') helices.append(helix) idx_default += 1 + # helix groups groups = None if groups_key in json_map: - if helices_view_order_key in json_map: - raise IllegalDesignError(f'cannot specify both {groups_key} and {helices_view_order_key} ' - f'in a Design') - if not grid_is_none: - raise IllegalDesignError(f'cannot specify {groups_key} and have a non-none Design-level ' - f'grid, but Design.grid is {grid}') groups_json = json_map[groups_key] groups = {} for name, group_json in groups_json.items(): - groups[name] = HelixGroup.from_json(group_json, helix_idxs=[helix.idx for helix in helices - if helix.group == name]) + num_helices_in_group = sum(1 for helix in helices if helix.group == name) + groups[name] = HelixGroup.from_json(group_json, num_helices=num_helices_in_group) # view order of helices helices_view_order = json_map.get(helices_view_order_key) @@ -3272,7 +3368,6 @@ def from_scadnano_json_map( groups=groups, strands=strands, grid=grid, - major_tick_distance=major_tick_distance, helices_view_order=helices_view_order, geometry=geometry, ) @@ -3296,12 +3391,12 @@ def to_json_serializable(self, suppress_indent: bool = True, **kwargs): helix_idxs=helix_idxs_in_group) dct[groups_key] = group_map - if self.major_tick_distance >= 0 and ( - self.major_tick_distance != default_major_tick_distance(self.grid)): - dct[major_tick_distance_key] = self.major_tick_distance - - dct[helices_key] = [helix.to_json_serializable(suppress_indent) for helix in - self.helices.values()] + helices_json = [] + for helix in self.helices.values(): + group = self.groups[helix.group] + helix_json = helix.to_json_serializable(suppress_indent, grid=group.grid) + helices_json.append(helix_json) + dct[helices_key] = helices_json # remove idx key from list of helices if they have the default index unwrapped_helices = list(dct[helices_key]) @@ -3866,9 +3961,12 @@ def _default_group(self) -> HelixGroup: return groups_list[0] def _set_helices_grid_positions(self): - for idx, helix in self.helices.items(): - if helix.grid_position is None: - helix.grid_position = helix.default_grid_position() + for name, group in self.groups.items(): + if group.grid != Grid.none: + for idx in self.helices_idxs_in_group(name): + helix = self.helices[idx] + if helix.grid_position is None: + helix.grid_position = (0, group.helices_view_order_inverse(idx)) def _set_helices_min_max_offsets(self, update: bool): """update = whether to overwrite existing Helix.max_offset and Helix.min_offset. @@ -3925,11 +4023,11 @@ def _check_helix_offsets(self): f'helix.max_offset = {helix.max_offset}' raise IllegalDesignError(err_msg) - def _check_strands_overlap_legally(self, domain_to_check: Domain[DomainLabel] = None): + def _check_strands_overlap_legally(self, domain_to_check: Domain = None): """If `Domain_to_check` is None, check all. Otherwise only check pairs where one is domain_to_check.""" - def err_msg(d1: Domain[DomainLabel], d2: Domain[DomainLabel], h_idx: int) -> str: + def err_msg(d1: Domain, d2: Domain, h_idx: int) -> str: return f"two domains overlap on helix {h_idx}: " \ f"\n{d1}\n and\n{d2}\n but have the same direction" @@ -3950,7 +4048,7 @@ def err_msg(d1: Domain[DomainLabel], d2: Domain[DomainLabel], h_idx: int) -> str offsets_data.append((domain.end, False, domain)) offsets_data.sort(key=lambda offset_data: offset_data[0]) - current_domains: List[Domain[DomainLabel]] = [] + current_domains: List[Domain] = [] for offset, is_start, domain in offsets_data: if is_start: if len(current_domains) >= 2: @@ -4057,7 +4155,7 @@ def domain_at(self, helix: int, offset: int, forward: bool): return domain return None - def domains_at(self, helix: int, offset: int) -> List[Domain[DomainLabel]]: + def domains_at(self, helix: int, offset: int) -> List[Domain]: """Return list of :any:`Domain`'s that overlap `offset` on helix with idx `helix`. If constructed properly, this list should have 0, 1, or 2 elements.""" @@ -4076,7 +4174,7 @@ def add_strand(self, strand: Strand): self._check_strand_references_legal_helices(strand) self.strands.append(strand) for domain in strand.domains: - if domain.is_domain(): + if isinstance(domain, Domain): self.helices[domain.helix].domains.append(domain) self._check_strands_overlap_legally(domain_to_check=domain) if self.automatically_assign_color: @@ -4086,10 +4184,10 @@ def remove_strand(self, strand: Strand): """Remove `strand` from this design.""" self.strands.remove(strand) for domain in strand.domains: - if domain.is_domain(): + if isinstance(domain, Domain): self.helices[domain.helix].domains.remove(domain) - def append_domain(self, strand: Strand, domain: Union[Domain[DomainLabel], Loopout]): + def append_domain(self, strand: Strand, domain: Union[Domain, Loopout]): """ Same as :any:`Design.insert_domain`, but inserts at end. @@ -4098,7 +4196,7 @@ def append_domain(self, strand: Strand, domain: Union[Domain[DomainLabel], Loopo """ self.insert_domain(strand, len(strand.domains), domain) - def insert_domain(self, strand: Strand, order: int, domain: Union[Domain[DomainLabel], Loopout]): + def insert_domain(self, strand: Strand, order: int, domain: Union[Domain, Loopout]): """Insert `Domain` into `strand` at index given by `order`. Uses same indexing as Python lists, e.g., ``design.insert_domain(strand, domain, 0)`` inserts ``domain`` as the new first :any:`Domain`.""" @@ -4115,7 +4213,7 @@ def insert_domain(self, strand: Strand, order: int, domain: Union[Domain[DomainL self.helices[domain.helix].domains.append(domain) self._check_strands_overlap_legally(domain_to_check=domain) - def remove_domain(self, strand: Strand, domain: Union[Domain[DomainLabel], Loopout]): + def remove_domain(self, strand: Strand, domain: Union[Domain, Loopout]): """Remove `Domain` from `strand`.""" assert strand in self.strands strand.remove_domain(domain) @@ -4181,13 +4279,13 @@ def add_insertion(self, helix: int, offset: int, length: int): if domain.contains_offset(offset): domain.insertions.append((offset, length)) - def set_start(self, domain: Domain[DomainLabel], start: int): + def set_start(self, domain: Domain, start: int): """Sets ``Domain.start`` to `start`.""" assert domain in (domain for strand in self.strands for domain in strand.domains) domain.set_start(start) self._check_strands_overlap_legally(domain) - def set_end(self, domain: Domain[DomainLabel], end: int): + def set_end(self, domain: Domain, end: int): """Sets ``Domain.end`` to `end`.""" assert domain in (domain for strand in self.strands for domain in strand.domains) domain.set_end(end) @@ -4589,7 +4687,7 @@ def export_cadnano_v2(self, directory: str = '.', filename=None): _write_file_same_name_as_running_python_script(contents, 'json', directory, filename) - def add_nick(self, helix: int, offset: int, forward: bool): + def add_nick(self, helix: int, offset: int, forward: bool, new_color: bool = True): """Add nick to :any:`Domain` on :any:`Helix` with index `helix`, in direction given by `forward`, at offset `offset`. The two :any:`Domain`'s created by this nick will have 5'/3' ends at offsets `offset` and `offset-1`. @@ -4612,6 +4710,15 @@ def add_nick(self, helix: int, offset: int, forward: bool): :py:data:`Domain.forward` = ``True``, :py:data:`Domain.start` = ``5``, :py:data:`Domain.end` = ``10``. + + :param helix: index of helix where nick will occur + :param offset: offset to nick (nick will be between offset and offset-1) + :param forward: forward or reverse :any:`Domain` on `helix` at `offset`? + :param new_color: whether to assign a new color to one of the :any:`Strand`'s resulting from the + nick. + If False, both :any:`Strand`'s created have the same color as the original + If True, one :any:`Strand` keeps the same color as the original and the other + is assigned a new color """ for domain_to_remove in self.domains_at(helix, offset): if domain_to_remove.forward == forward: @@ -4635,8 +4742,10 @@ def add_nick(self, helix: int, offset: int, forward: bool): domain_to_add_after = domain_left if strand.dna_sequence: - dna_sequence_before = ''.join(domain.dna_sequence() for domain in domains_before) - dna_sequence_after = ''.join(domain.dna_sequence() for domain in domains_after) + dna_sequence_before: str = ''.join( + domain.dna_sequence() for domain in domains_before) # ignore: typing + dna_sequence_after: str = ''.join( + domain.dna_sequence() for domain in domains_after) # ignore: typing dna_sequence_on_domain_left = domain_to_remove.dna_sequence_in( domain_to_remove.start, offset - 1) @@ -4661,10 +4770,11 @@ def add_nick(self, helix: int, offset: int, forward: bool): dna_sequence=dna_sequence_before_whole, color=strand.color, idt=strand.idt if idt_present else None) + color_after = next(self.color_cycler) if new_color else strand.color strand_after = Strand(domains=[domain_to_add_after] + domains_after, dna_sequence=dna_sequence_after_whole, - use_default_idt=idt_present) - + color=color_after, use_default_idt=idt_present) + self.helices[helix].domains.remove(domain_to_remove) self.helices[helix].domains.extend([domain_to_add_before, domain_to_add_after]) @@ -4872,7 +4982,8 @@ def _inline_deletions_insertions_on_helix(self, helix: Helix): dels_ins_offsets_sorted = sorted(dels_ins.keys()) # fix helix major ticks - major_ticks = sorted(helix.calculate_major_ticks(self.major_tick_distance)) + group = self.groups[helix.group] + major_ticks = sorted(helix.calculate_major_ticks(group.grid)) ################################################### # now that info is gathered, start changing things @@ -4942,6 +5053,12 @@ def _ensure_helix_groups_exist(self): def _has_default_groups(self): return len(self.groups) == 1 and default_group_name in self.groups + def _assign_default_helices_view_orders_to_groups(self): + for name, group in self.groups.items(): + if group.helices_view_order is None: + helices_in_group = {idx: helix for idx, helix in self.helices if helix.group == name} + group._assign_default_helices_view_order(helices_in_group) + def _find_index_pair_same_object(elts: Union[List, Dict]) -> Optional[Tuple]: # return pair of indices representing same object in elts, or None if they do not exist diff --git a/tests/scadnano_tests.py b/tests/scadnano_tests.py index 89157ebb..1b520a23 100644 --- a/tests/scadnano_tests.py +++ b/tests/scadnano_tests.py @@ -2172,18 +2172,18 @@ def setUp(self): s = 'south' w = 'west' helices = [ - sc.Helix(max_offset=20, group=n, grid_position=(1, 1)), # 0 - sc.Helix(max_offset=21, group=n, grid_position=(0, 1)), # 1 - sc.Helix(max_offset=19, group=n, grid_position=(0, 2)), # 2 - sc.Helix(max_offset=18, group=n, grid_position=(1, 2)), # 3 - sc.Helix(max_offset=17, group=n, grid_position=(2, 2)), # 4 - sc.Helix(max_offset=16, group=n, grid_position=(2, 1)), # 5 - sc.Helix(max_offset=24, group=s), # 6 - sc.Helix(max_offset=25, group=s), # 7 - sc.Helix(max_offset=26, group=w, position=sc.Position3D(x=0, y=0, z=0)), # 8 - sc.Helix(max_offset=27, group=w, position=sc.Position3D(x=0, y=2.5, z=0)), # 9 - sc.Helix(idx=13, max_offset=22, group=e), # 13 - sc.Helix(idx=15, max_offset=23, group=e), # 15 + sc.Helix(max_offset=20, group=n, grid_position=(1, 1)), # 0 + sc.Helix(max_offset=21, group=n, grid_position=(0, 1)), # 1 + sc.Helix(max_offset=19, group=n, grid_position=(0, 2)), # 2 + sc.Helix(max_offset=18, group=n, grid_position=(1, 2)), # 3 + sc.Helix(max_offset=17, group=n, grid_position=(2, 2)), # 4 + sc.Helix(max_offset=16, group=n, grid_position=(2, 1)), # 5 + sc.Helix(max_offset=24, group=s), # 6 + sc.Helix(max_offset=25, group=s), # 7 + sc.Helix(max_offset=26, group=w, position=sc.Position3D(x=0, y=0, z=0)), # 8 + sc.Helix(max_offset=27, group=w, position=sc.Position3D(x=0, y=2.5, z=0)), # 9 + sc.Helix(idx=13, max_offset=22, group=e), # 13 + sc.Helix(idx=15, max_offset=23, group=e), # 15 ] group_north = sc.HelixGroup(position=sc.Position3D(x=0, y=-200, z=0), grid=sc.honeycomb) group_south = sc.HelixGroup(position=sc.Position3D(x=0, y=70, z=0), helices_view_order=[7, 6], @@ -2206,8 +2206,81 @@ def test_helix_groups(self): self._asserts_for_fixture(self.design) def test_helix_groups_to_from_JSON(self): - json_str = self.design.to_json() - design_from_json = sc.Design.from_scadnano_json_str(json_str) + n = self.n + e = self.e + s = self.s + w = self.w + design_json_str = self.design.to_json() + + design_json_map = json.loads(design_json_str) + groups_map = design_json_map[sc.groups_key] + group_n = groups_map[n] + group_e = groups_map[e] + group_s = groups_map[s] + group_w = groups_map[w] + + pos_n = group_n[sc.position_key] + self.assertAlmostEqual(0, pos_n['x']) + self.assertAlmostEqual(-200, pos_n['y']) + self.assertAlmostEqual(0, pos_n['z']) + + pos_s = group_e[sc.position_key] + self.assertAlmostEqual(0, pos_s['x']) + self.assertAlmostEqual(0, pos_s['y']) + self.assertAlmostEqual(100, pos_s['z']) + + pos_w = group_s[sc.position_key] + self.assertAlmostEqual(0, pos_w['x']) + self.assertAlmostEqual(70, pos_w['y']) + self.assertAlmostEqual(0, pos_w['z']) + + pos_e = group_w[sc.position_key] + self.assertAlmostEqual(0, pos_e['x']) + self.assertAlmostEqual(0, pos_e['y']) + self.assertAlmostEqual(0, pos_e['z']) + + helices_map = design_json_map[sc.helices_key] + self.assertEqual(12, len(helices_map)) + helix0_map = helices_map[0] + helix1_map = helices_map[1] + helix2_map = helices_map[2] + helix3_map = helices_map[3] + helix4_map = helices_map[4] + helix5_map = helices_map[5] + helix6_map = helices_map[6] + helix7_map = helices_map[7] + helix8_map = helices_map[8] + helix9_map = helices_map[9] + helix13_map = helices_map[10] + helix15_map = helices_map[11] + + self.assertEqual(n, helix0_map[sc.group_key]) + self.assertEqual(n, helix1_map[sc.group_key]) + self.assertEqual(n, helix2_map[sc.group_key]) + self.assertEqual(n, helix3_map[sc.group_key]) + self.assertEqual(n, helix4_map[sc.group_key]) + self.assertEqual(n, helix5_map[sc.group_key]) + self.assertEqual(s, helix6_map[sc.group_key]) + self.assertEqual(s, helix7_map[sc.group_key]) + self.assertEqual(w, helix8_map[sc.group_key]) + self.assertEqual(w, helix9_map[sc.group_key]) + self.assertEqual(e, helix13_map[sc.group_key]) + self.assertEqual(e, helix15_map[sc.group_key]) + + self.assertEqual(0, helix0_map[sc.idx_on_helix_key]) + self.assertEqual(1, helix1_map[sc.idx_on_helix_key]) + self.assertEqual(2, helix2_map[sc.idx_on_helix_key]) + self.assertEqual(3, helix3_map[sc.idx_on_helix_key]) + self.assertEqual(4, helix4_map[sc.idx_on_helix_key]) + self.assertEqual(5, helix5_map[sc.idx_on_helix_key]) + self.assertEqual(6, helix6_map[sc.idx_on_helix_key]) + self.assertEqual(7, helix7_map[sc.idx_on_helix_key]) + self.assertEqual(8, helix8_map[sc.idx_on_helix_key]) + self.assertEqual(9, helix9_map[sc.idx_on_helix_key]) + self.assertEqual(13, helix13_map[sc.idx_on_helix_key]) + self.assertEqual(15, helix15_map[sc.idx_on_helix_key]) + + design_from_json = sc.Design.from_scadnano_json_str(design_json_str) self._asserts_for_fixture(design_from_json) def test_helix_groups_fail_nonexistent(self): @@ -2227,29 +2300,232 @@ def _asserts_for_fixture(self, design: sc.Design): w = self.w groups = design.groups if groups is None: - return # this makes MyPy shut up about how groups might be None + return # this makes MyPy shut up about how groups might be None self.assertEqual(4, len(groups)) - self.assertEqual([0, 1, 2, 3, 4, 5], groups[n].helices_view_order) - self.assertEqual([7, 6], groups[s].helices_view_order) - self.assertEqual([8, 9], groups[w].helices_view_order) - self.assertEqual([13, 15], groups[e].helices_view_order) + self.assertSequenceEqual([0, 1, 2, 3, 4, 5], groups[n].helices_view_order) + self.assertSequenceEqual([7, 6], groups[s].helices_view_order) + self.assertSequenceEqual([8, 9], groups[w].helices_view_order) + self.assertSequenceEqual([13, 15], groups[e].helices_view_order) self.assertEqual(sc.Grid.honeycomb, groups[n].grid) self.assertEqual(sc.Grid.square, groups[e].grid) self.assertEqual(sc.Grid.square, groups[s].grid) self.assertEqual(sc.Grid.none, groups[w].grid) - self.assertEqual(0, groups[n].pitch) + self.assertAlmostEqual(0, groups[n].pitch) self.assertAlmostEqual(45, groups[e].pitch) - self.assertEqual(0, groups[s].pitch) - self.assertEqual(0, groups[w].pitch) - + self.assertAlmostEqual(0, groups[s].pitch) + self.assertAlmostEqual(0, groups[w].pitch) + + # test auto-assignment of grid_positions based on helices view order + self.assertSequenceEqual([0, 1], design.helices[6].grid_position) + self.assertSequenceEqual([0, 0], design.helices[7].grid_position) + self.assertSequenceEqual([0, 0], design.helices[13].grid_position) + self.assertSequenceEqual([0, 1], design.helices[15].grid_position) + + def test_JSON_bad_uses_groups_and_top_level_grid(self): + json_str = ''' +{ + "grid": "none", + "groups": { + "north": { + "position": {"x": 0, "y": -200, "z": 0}, + "grid": "honeycomb" + }, + "east": { + "position": {"x": 0, "y": 0, "z": 100}, + "pitch": 45, + "grid": "square" + } + }, + "helices": [ + {"group": "north", "max_offset": 20, "grid_position": [1, 1]}, + {"group": "north", "max_offset": 21, "grid_position": [0, 1]}, + {"group": "east", "max_offset": 22, "grid_position": [0, 13]}, + {"group": "east", "max_offset": 23, "grid_position": [0, 15]} + ], + "strands": [ + { + "color": "#f74308", + "domains": [ + {"helix": 0, "forward": true, "start": 0, "end": 8}, + {"helix": 1, "forward": false, "start": 0, "end": 8} + ] + }, + { + "color": "#57bb00", + "domains": [ + {"helix": 2, "forward": true, "start": 0, "end": 8}, + {"helix": 3, "forward": false, "start": 0, "end": 8} + ] + } + ] +} + ''' + with self.assertRaises(sc.IllegalDesignError) as ex: + design = sc.Design.from_scadnano_json_str(json_str) + + def test_JSON_bad_uses_groups_and_top_level_helices_view_order(self): + json_str = ''' +{ + "helices_view_order": [3, 2, 1, 0], + "groups": { + "north": { + "position": {"x": 0, "y": -200, "z": 0}, + "grid": "honeycomb" + }, + "east": { + "position": {"x": 0, "y": 0, "z": 100}, + "pitch": 45, + "grid": "square" + } + }, + "helices": [ + {"group": "north", "max_offset": 20, "grid_position": [1, 1]}, + {"group": "north", "max_offset": 21, "grid_position": [0, 1]}, + {"group": "east", "max_offset": 22, "grid_position": [0, 13]}, + {"group": "east", "max_offset": 23, "grid_position": [0, 15]} + ], + "strands": [ + { + "color": "#f74308", + "domains": [ + {"helix": 0, "forward": true, "start": 0, "end": 8}, + {"helix": 1, "forward": false, "start": 0, "end": 8} + ] + }, + { + "color": "#57bb00", + "domains": [ + {"helix": 2, "forward": true, "start": 0, "end": 8}, + {"helix": 3, "forward": false, "start": 0, "end": 8} + ] + } + ] +} + ''' + with self.assertRaises(sc.IllegalDesignError) as ex: + design = sc.Design.from_scadnano_json_str(json_str) + + def test_JSON_bad_no_groups_but_helices_reference_groups(self): + json_str = ''' +{ + "grid": "square", + "helices": [ + {"group": "north", "max_offset": 20, "grid_position": [0, 0]}, + {"group": "north", "max_offset": 21, "grid_position": [0, 1]}, + {"group": "east", "max_offset": 22, "grid_position": [0, 2]}, + {"group": "east", "max_offset": 23, "grid_position": [0, 3]} + ], + "strands": [ + { + "color": "#f74308", + "domains": [ + {"helix": 0, "forward": true, "start": 0, "end": 8}, + {"helix": 1, "forward": false, "start": 0, "end": 8} + ] + }, + { + "color": "#57bb00", + "domains": [ + {"helix": 2, "forward": true, "start": 0, "end": 8}, + {"helix": 3, "forward": false, "start": 0, "end": 8} + ] + } + ] +} + +''' + with self.assertRaises(sc.IllegalDesignError) as ex: + design = sc.Design.from_scadnano_json_str(json_str) class TestJSON(unittest.TestCase): + def test_Helix_major_tick_start_default_min_offset(self): + helices = [ + sc.Helix(min_offset=10, max_offset=100), + sc.Helix(max_offset=100), + sc.Helix(major_tick_start=15), + ] + design = sc.Design(helices=helices, strands=[], grid=sc.square) + self.assertEqual(10, design.helices[0].major_tick_start) + self.assertEqual(0, design.helices[1].major_tick_start) + self.assertEqual(15, design.helices[2].major_tick_start) + + design_json_map = design.to_json_serializable(suppress_indent=False) + self.assertNotIn(sc.major_tick_start_key, design_json_map['helices'][0]) + self.assertNotIn(sc.major_tick_start_key, design_json_map['helices'][1]) + self.assertIn(sc.major_tick_start_key, design_json_map['helices'][2]) + self.assertEqual(15, design_json_map['helices'][2][sc.major_tick_start_key]) + + # this isn't related to major_tick_start, but it failed for some reason so let's check it + self.assertIn(sc.grid_position_key, design_json_map['helices'][0]) + self.assertIn(sc.grid_position_key, design_json_map['helices'][1]) + self.assertIn(sc.grid_position_key, design_json_map['helices'][2]) + self.assertSequenceEqual([0, 0], design_json_map['helices'][0][sc.grid_position_key]) + self.assertSequenceEqual([0, 1], design_json_map['helices'][1][sc.grid_position_key]) + self.assertSequenceEqual([0, 2], design_json_map['helices'][2][sc.grid_position_key]) + + design_json_str = json.dumps(design_json_map) + design = sc.Design.from_scadnano_json_str(design_json_str) + self.assertEqual(10, design.helices[0].major_tick_start) + self.assertEqual(0, design.helices[1].major_tick_start) + self.assertEqual(15, design.helices[2].major_tick_start) + + def test_Helix_major_tick_periodic_distances(self): + grid = sc.square + helices = [ + sc.Helix(major_tick_start=10, max_offset=30, major_tick_distance=5), + sc.Helix(major_tick_start=10, max_offset=30, major_tick_periodic_distances=[2, 3]), + sc.Helix(major_tick_start=10, max_offset=30, major_ticks=[10, 20, 30]), + sc.Helix(major_tick_start=10, max_offset=30), + sc.Helix(max_offset=30), + ] + design = sc.Design(helices=helices, strands=[], grid=grid) + self.assertEqual(10, design.helices[0].major_tick_start) + + self.assertSequenceEqual([10, 15, 20, 25, 30], design.helices[0].calculate_major_ticks(grid)) + self.assertSequenceEqual([10, 12, 15, 17, 20, 22, 25, 27, 30], + design.helices[1].calculate_major_ticks(grid)) + self.assertSequenceEqual([10, 20, 30], design.helices[2].calculate_major_ticks(grid)) + self.assertSequenceEqual([10, 18, 26], design.helices[3].calculate_major_ticks(grid)) + self.assertSequenceEqual([0, 8, 16, 24], design.helices[4].calculate_major_ticks(grid)) + + design_json_map = design.to_json_serializable(suppress_indent=False) + + h0 = design_json_map['helices'][0] + self.assertNotIn(sc.major_ticks_key, h0) + self.assertNotIn(sc.major_tick_periodic_distances_key, h0) + self.assertIn(sc.major_tick_distance_key, h0) + self.assertEqual(5, h0[sc.major_tick_distance_key]) + + h1 = design_json_map['helices'][1] + self.assertNotIn(sc.major_ticks_key, h1) + self.assertIn(sc.major_tick_periodic_distances_key, h1) + self.assertNotIn(sc.major_tick_distance_key, h1) + self.assertSequenceEqual([2, 3], h1[sc.major_tick_periodic_distances_key]) + + h2 = design_json_map['helices'][2] + self.assertIn(sc.major_ticks_key, h2) + self.assertNotIn(sc.major_tick_distance_key, h2) + self.assertNotIn(sc.major_tick_periodic_distances_key, h2) + self.assertSequenceEqual([10, 20, 30], h2[sc.major_ticks_key]) + + h3 = design_json_map['helices'][3] + self.assertNotIn(sc.major_ticks_key, h3) + self.assertNotIn(sc.major_tick_distance_key, h3) + self.assertNotIn(sc.major_tick_periodic_distances_key, h3) + self.assertIn(sc.major_tick_start_key, h3) + + h4 = design_json_map['helices'][4] + self.assertNotIn(sc.major_ticks_key, h4) + self.assertNotIn(sc.major_tick_distance_key, h4) + self.assertNotIn(sc.major_tick_periodic_distances_key, h4) + self.assertNotIn(sc.major_tick_start_key, h4) + def test_default_helices_view_order_with_nondefault_helix_idxs_in_default_order(self): helices = [sc.Helix(idx=1, max_offset=100), sc.Helix(idx=3, max_offset=100)] design = sc.Design(helices=helices, strands=[]) @@ -2259,7 +2535,6 @@ def test_default_helices_view_order_with_nondefault_helix_idxs_in_default_order( design_json_ser = design.to_json_serializable(suppress_indent=False) self.assertFalse(sc.helices_view_order_key in design_json_ser) - def test_default_helices_view_order_with_nondefault_helix_idxs_in_nondefault_order(self): helices = [sc.Helix(idx=1, max_offset=100), sc.Helix(idx=3, max_offset=100)] design = sc.Design(helices=helices, strands=[], helices_view_order=[3, 1]) @@ -2270,7 +2545,6 @@ def test_default_helices_view_order_with_nondefault_helix_idxs_in_nondefault_ord actual_view_order = design_json_ser[sc.helices_view_order_key] self.assertListEqual([3, 1], actual_view_order) - def test_strand_labels(self): helices = [sc.Helix(max_offset=100), sc.Helix(max_offset=100)] strand0_expected = sc.Strand([sc.Domain(0, True, 0, 10)], label={ @@ -2850,7 +3124,8 @@ def test_strand_references_nonexistent_helix(self): class TestInsertRemoveDomains(unittest.TestCase): def setUp(self) -> None: - self.design = sc.Design(helix_template=sc.Helix(max_offset=100), num_helices=4, strands=[]) + helices = [sc.Helix(max_offset=100) for _ in range(4)] + self.design = sc.Design(helices=helices, strands=[]) self.design.strand(0, 0).to(3).cross(1).to(0).cross(2).to(3).with_sequence('ACA TCT GTG') self.strand = self.design.strands[0] @@ -2863,7 +3138,8 @@ def test_3_helix_before_design(self): self.assertEqual(expected_strand_before, self.strand) def test_insert_domain_with_sequence(self): - design = sc.Design(helix_template=sc.Helix(max_offset=100), num_helices=4, strands=[]) + helices = [sc.Helix(max_offset=100) for _ in range(4)] + design = sc.Design(helices=helices, strands=[]) design.strand(0, 0).to(3).cross(1).to(0).cross(3).to(3).with_sequence('ACA TCT GTG') strand = design.strands[0] diff --git a/tests_inputs/cadnano_v2_export/.gitignore b/tests_inputs/cadnano_v2_export/.gitignore index e69de29b..b40fef57 100644 --- a/tests_inputs/cadnano_v2_export/.gitignore +++ b/tests_inputs/cadnano_v2_export/.gitignore @@ -0,0 +1 @@ +*.sc \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.dna b/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.dna deleted file mode 100644 index 074e6257..00000000 --- a/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.dna +++ /dev/null @@ -1,1878 +0,0 @@ -{ - "version": "0.9.9", - "grid": "square", - "helices": [ - {"max_offset": 448, "grid_position": [0, 0]}, - {"max_offset": 448, "grid_position": [0, 1]}, - {"max_offset": 448, "grid_position": [0, 2]}, - {"max_offset": 448, "grid_position": [0, 3]}, - {"max_offset": 448, "grid_position": [0, 4]}, - {"max_offset": 448, "grid_position": [0, 5]}, - {"max_offset": 448, "grid_position": [0, 6]}, - {"max_offset": 448, "grid_position": [0, 7]}, - {"max_offset": 448, "grid_position": [0, 8]}, - {"max_offset": 448, "grid_position": [0, 9]}, - {"max_offset": 448, "grid_position": [0, 10]}, - {"max_offset": 448, "grid_position": [0, 11]}, - {"max_offset": 448, "grid_position": [0, 12]}, - {"max_offset": 448, "grid_position": [0, 13]}, - {"max_offset": 448, "grid_position": [0, 14]}, - {"max_offset": 448, "grid_position": [0, 15]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "TTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTTGGGTGATGGTTCACGTAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCAGGCGGTGAAGGGCAATCAGCTGTTGCCCGTCTCACTGGTGAAAAGAAAAACCACCCTGGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGAATTCGAGCTCGGTACCCGGGGATCCTCTAGAGTCGACCTGCAGGCATGCAAGCTTGGCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCACCGATCGCCCTTCCCAACAGTTGCGCAGCCTGAATGGCGAATGGCGCTTTGCCTGGTTTCCGGCACCAGAAGCGGTGCCGGAAAGCTGGCTGGAGTGCGATCTTCCTGAGGCCGATACTGTCGTCGTCCCCTCAAACTGGCAGATGCACGGTTACGATGCGCCCATCTACACCAACGTGACCTATCCCATTACGGTCAATCCGCCGTTTGTTCCCACGGAGAATCCGACGGGTTGTTACTCGCTCACATTTAATGTTGATGAAAGCTGGCTACAGGAAGGCCAGACGCGAATTATTTTTGATGGCGTTCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAATGCGAATTTTAACAAAATATTAACGTTTACAATTTAAATATTTGCTTATACAATCTTCCTGTTTTTGGGGCTTTTCTGATTATCAACCGGGGTACATATGATTGACATGCTAGTTTTACGATTACCGTTCATCGATTCTCTTGTTTGCTCCAGACTCTCAGGCAATGACCTGATAGCCTTTGTAGATCTCTCAAAAATAGCTACCCTCTCCGGCATTAATTTATCAGCTAGAACGGTTGAATATCATATTGATGGTGATTTGACTGTCTCCGGCCTTTCTCACCCTTTTGAATCTTTACCTACACATTACTCAGGCATTGCATTTAAAATATATGAGGGTTCTAAAAATTTTTATCCTTGCGTTGAAATAAAGGCTTCTCCCGCAAAAGTATTACAGGGTCATAATGTTTTTGGTACAACCGATTTAGCTTTATGCTCTGAGGCTTTATTGCTTAATTTTGCTAATTCTTTGCCTTGCCTGTATGATTTATTGGATGTTAATGCTACTACTATTAGTAGAATTGATGCCACCTTTTCAGCTCGCGCCCCAAATGAAAATATAGCTAAACAGGTTATTGACCATTTGCGAAATGTATCTAATGGTCAAACTAAATCTACTCGTTCGCAGAATTGGGAATCAACTGTTATATGGAATGAAACTTCCAGACACCGTACTTTAGTTGCATATTTAAAACATGTTGAGCTACAGCATTATATTCAGCAATTAAGCTCTAAGCCATCCGCAAAAATGACCTCTTATCAAAAGGAGCAATTAAAGGTACTCTCTAATCCTGACCTGTTGGAGTTTGCTTCCGGTCTGGTTCGCTTTGAAGCTCGAATTAAAACGCGATATTTGAAGTCTTTCGGGCTTCCTCTTAATCTTTTTGATGCAATCCGCTTTGCTTCTGACTATAATAGTCAGGGTAAAGACCTGATTTTTGATTTATGGTCATTCTCGTTTTCTGAACTGTTTAAAGCATTTGAGGGGGATTCAATGAATATTTATGACGATTCCGCAGTATTGGACGCTATCCAGTCTAAACATTTTACTATTACCCCCTCTGGCAAAACTTCTTTTGCAAAAGCCTCTCGCTATTTTGGTTTTTATCGTCGTCTGGTAAACGAGGGTTATGATAGTGTTGCTCTTACTATGCCTCGTAATTCCTTTTGGCGTTATGTATCTGCATTAGTTGAATGTGGTATTCCTAAATCTCAACTGATGAATCTTTCTACCTGTAATAATGTTGTTCCGTTAGTTCGTTTTATTAACGTAGATTTTTCTTCCCAACGTCCTGACTGGTATAATGAGCCAGTTCTTAAAATCGCATAAGGTAATTCACAATGATTAAAGTTGAAATTAAACCATCTCAAGCCCAATTTACTACTCGTTCTGGTGTTTCTCGTCAGGGCAAGCCTTATTCACTGAATGAGCAGCTTTGTTACGTTGATTTGGGTAATGAATATCCGGTTCTTGTCAAGATTACTCTTGATGAAGGTCAGCCAGCCTATGCGCCTGGTCTGTACACCGTTCATCTGTCCTCTTTCAAAGTTGGTCAGTTCGGTTCCCTTATGATTGACCGTCTGCGCCTCGTTCCGGCTAAGTAACATGGAGCAGGTCGCGGATTTCGACACAATTTATCAGGCGATGATACAAATCTCCGTTGTACTTTGTTTCGCGCTTGGTATAATCGCTGGGGGTCAAAGATGAGTGTTTTAGTGTATTCTTTTGCCTCTTTCGTTTTAGGTTGGTGCCTTCGTAGTGGCATTACGTATTTTACCCGTTTAATGGAAACTTCCTCATGAAAAAGTCTTTAGTCCTCAAAGCCTCTGTAGCCGTTGCTACCCTCGTTCCGATGCTGTCTTTCGCTGCTGAGGGTGACGATCCCGCAAAAGCGGCCTTTAACTCCCTGCAAGCCTCAGCGACCGAATATATCGGTTATGCGTGGGCGATGGTTGTTGTCATTGTCGGCGCAACTATCGGTATCAAGCTGTTTAAGAAATTCACCTCGAAAGCAAGCTGATAAACCGATACAATTAAAGGCTCCTTTTGGAGCCTTTTTTTTGGAGATTTTCAACGTGAAAAAATTATTATTCGCAATTCCTTTAGTTGTTCCTTTCTATTCTCACTCCGCTGAAACTGTTGAAAGTTGTTTAGCAAAATCCCATACAGAAAATTCATTTACTAACGTCTGGAAAGACGACAAAACTTTAGATCGTTACGCTAACTATGAGGGCTGTCTGTGGAATGCTACAGGCGTTGTAGTTTGTACTGGTGACGAAACTCAGTGTTACGGTACATGGGTTCCTATTGGGCTTGCTATCCCTGAAAATGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTACTAAACCTCCTGAGTACGGTGATACACCTATTCCGGGCTATACTTATATCAACCCTCTCGACGGCACTTATCCGCCTGGTACTGAGCAAAACCCCGCTAATCCTAATCCTTCTCTTGAGGAGTCTCAGCCTCTTAATACTTTCATGTTTCAGAATAATAGGTTCCGAAATAGGCAGGGGGCATTAACTGTTTATACGGGCACTGTTACTCAAGGCACTGACCCCGTTAAAACTTATTACCAGTACACTCCTGTATCATCAAAAGCCATGTATGACGCTTACTGGAACGGTAAATTCAGAGACTGCGCTTTCCATTCTGGCTTTAATGAGGATTTATTTGTTTGTGAATATCAAGGCCAATCGTCTGACCTGCCTCAACCTCCTGTCAATGCTGGCGGCGGCTCTGGTGGTGGTTCTGGTGGCGGCTCTGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGCTCTGAGGGAGGCGGTTCCGGTGGTGGCTCTGGTTCCGGTGATTTTGATTATGAAAAGATGGCAAACGCTAATAAGGGGGCTATGACCGAAAATGCCGATGAAAACGCGCTACAGTCTGACGCTAAAGGCAAACTTGATTCTGTCGCTACTGATTACGGTGCTGCTATCGATGGTTTCATTGGTGACGTTTCCGGCCTTGCTAATGGTAATGGTGCTACTGGTGATTTTGCTGGCTCTAATTCCCAAATGGCTCAAGTCGGTGACGGTGATAATTCACCTTTAATGAATAATTTCCGTCAATATTTACCTTCCCTCCCTCAATCGGTTGAATGTCGCCCTTTTGTCTTTGGCGCTGGTAAACCATATGAATTTTCTATTGATTGTGACAAAATAAACTTATTCCGTGGTGTCTTTGCGTTTCTTTTATATGTTGCCACCTTTATGTATGTATTTTCTACGTTTGCTAACATACTGCGTAATAAGGAGTCTTAATCATGCCAGTTCTTTTGGGTATTCCGTTATTATTGCGTTTCCTCGGTTTCCTTCTGGTAACTTTGTTCGGCTATCTGCTTACTTTTCTTAAAAAGGGCTTCGGTAAGATAGCTATTGCTATTTCATTGTTTCTTGCTCTTATTATTGGGCTTAACTCAATTCTTGTGGGTTATCTCTCTGATATTAGCGCTCAATTACCCTCTGACTTTGTTCAGGGTGTTCAGTTAATTCTCCCGTCTAATGCGCTTCCCTGTTTTTATGTTATTCTCTCTGTAAAGGCTGCTATTTTCATTTTTGACGTTAAACAAAAAATCGTTTCTTATTTGGATTGGGATAAATAATATGGCTGTTTATTTTGTAACTGGCAAATTAGGCTCTGGAAAGACGCTCGTTAGCGTTGGTAAGATTCAGGATAAAATTGTAGCTGGGTGCAAAATAGCAACTAATCTTGATTTAAGGCTTCAAAACCTCCCGCAAGTCGGGAGGTTCGCTAAAACGCCTCGCGTTCTTAGAATACCGGATAAGCCTTCTATATCTGATTTGCTTGCTATTGGGCGCGGTAATGATTCCTACGATGAAAATAAAAACGGCTTGCTTGTTCTCGATGAGTGCGGTACTTGGTTTAATACCCGTTCTTGGAATGATAAGGAAAGACAGCCGATTATTGATTGGTTTCTACATGCTCGTAAATTAGGATGGGATATTATTTTTCTTGTTCAGGACTTATCTATTGTTGATAAACAGGCGCGTTCTGCATTAGCTGAACATGTTGTTTATTGTCGTCGTCTGGACAGAATTACTTTACCTTTTGTCGGTACTTTATATTCTCTTATTACTGGCTCGAAAATGCCTCTGCCTAAATTACATGTTGGCGTTGTTAAATATGGCGATTCTCAATTAAGCCCTACTGTTGAGCGTTGGCTTTATACTGGTAAGAATTTGTATAACGCATATGATACTAAACAGGCTTTTTCTAGTAATTATGATTCCGGTGTTTATTCTTATTTAACGCCTTATTTATCACACGGTCGGTATTTCAAACCATTAAATTTAGGTCAGAAGATGAAATTAACTAAAATATATTTGAAAAAGTTTTCTCGCGTTCTTTGTCTTGCGATTGGATTTGCATCAGCATTTACATATAGTTATATAACCCAACCTAAGCCGGAGGTTAAAAAGGTAGTCTCTCAGACCTATGATTTTGATAAATTCACTATTGACTCTTCTCAGCGTCTTAATCTAAGCTATCGCTATGTTTTCAAGGATTCTAAGGGAAAATTAATTAATAGCGACGATTTACAGAAGCAAGGTTATTCACTCACATATATTGATTTATGTACTGTTTCCATTAAAAAAGGTAATTCAAATGAAATTGTTAAATGTAATTAATTTTGTTTTCTTGATGTTTGTTTCATCATCTTCTTTTGCTCAGGTAATTGAAATGAATAATTCGCCTCTGCGCGATTTTGTAACTTGGTATTCAAAGCAATCAGGCGAATCCGTTATTGTTTCTCCCGATGTAAAAGGTACTGTTACTGTATATTCATCTGACGTTAAACCTGAAAATCTACGCAATTTCTTTATTTCTGTTTTACGTGCAAATAATTTTGATATGGTAGGTTCTAACCCTTCCATTATTCAGAAGTATAATCCAAACAATCAGGATTATATTGATGAATTGCCATCATCTGATAATCAGGAATATGATGATAATTCCGCTCCTTCTGGTGGTTTCTTTGTTCCGCAAAATGATAATGTTACTCAAACTTTTAAAATTAATAACGTTCGGGCAAAGGATTTAATACGAGTTGTCGAATTGTTTGTAAAGTCTAATACTTCTAAATCCTCAAATGTATTATCTATTGACGGCTCTAATCTATTAGTTGTTAGTGCTCCTAAAGATATTTTAGATAACCTTCCTCAATTCCTTTCAACTGTTGATTTGCCAACTGACCAGATATTGATTGAGGGTTTGATATTTGAGGTTCAGCAAGGTGA", - "domains": [ - {"helix": 15, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 14, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 13, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 12, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 11, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 10, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 9, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 8, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 7, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 6, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 5, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 4, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 3, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 2, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 1, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 0, "forward": true, "start": 16, "end": 432, "deletions": [33, 81, 129, 177, 225, 273, 321, 369, 417]}, - {"helix": 1, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 2, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 3, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 4, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 5, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 6, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 7, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 8, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 9, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 10, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 11, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 12, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 13, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 14, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 15, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GCCGCTTTTGCGGGATTTGCAGGGAGTTAAAG", - "domains": [ - {"helix": 1, "forward": true, "start": 16, "end": 32}, - {"helix": 0, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#57bb00", - "sequence": "CAAGAGTAATCTTGACGCTGGCTGACCTTCAT", - "domains": [ - {"helix": 3, "forward": true, "start": 16, "end": 32}, - {"helix": 2, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#888888", - "sequence": "TGCAAAAGAAGTTTTGAATAGCGAGAGGCTTT", - "domains": [ - {"helix": 5, "forward": true, "start": 16, "end": 32}, - {"helix": 4, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#32b86c", - "sequence": "ACGGTGTCTGGAAGTTAATATGCAACTAAAGT", - "domains": [ - {"helix": 7, "forward": true, "start": 16, "end": 32}, - {"helix": 6, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#333333", - "sequence": "AGTCAAATCACCATCAGAGAAAGGCCGGAGAC", - "domains": [ - {"helix": 9, "forward": true, "start": 16, "end": 32}, - {"helix": 8, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#320096", - "sequence": "GGCGGATTGACCGTAACTCCGTGGGAACAAAC", - "domains": [ - {"helix": 11, "forward": true, "start": 16, "end": 32}, - {"helix": 10, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAATTGTTATCCGCTCAGCTGTTTCCTGTGTG", - "domains": [ - {"helix": 13, "forward": true, "start": 16, "end": 32}, - {"helix": 12, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#7300de", - "sequence": "GAGTCCACTATTAAAGTTCCAGTTTGGAACAA", - "domains": [ - {"helix": 15, "forward": true, "start": 16, "end": 32}, - {"helix": 14, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#aaaa00", - "sequence": "AACCCATGTACCGTAAGCAAGCCCAATAGG", - "domains": [ - {"helix": 0, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 1, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#b8056c", - "sequence": "AGCCAGAATGGAAAGATAAATCCTCATTAA", - "domains": [ - {"helix": 2, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 3, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#007200", - "sequence": "ACTTGAGCCATTTGGTTATCACCGTCACCG", - "domains": [ - {"helix": 4, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 5, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#cc0000", - "sequence": "AACCCACAAGAATTGTAATATCAGAGAGAT", - "domains": [ - {"helix": 6, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 7, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#f7931e", - "sequence": "CATCGTAGGAATCATAGCCGTTTTTATTTT", - "domains": [ - {"helix": 8, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 9, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#f74308", - "sequence": "TAATTACTAGAAAAATAAACACCGGAATCA", - "domains": [ - {"helix": 10, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 11, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#57bb00", - "sequence": "TTAATTACATTTAACATCAAGAAAACAAAA", - "domains": [ - {"helix": 12, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 13, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#888888", - "sequence": "CTTTGCCCGAACGTTAACTCGTATTAAATC", - "domains": [ - {"helix": 14, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 15, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#32b86c", - "sequence": "AGAATAGAAAGGAACAACTAAAGGAATTGCG", - "domains": [ - {"helix": 0, "forward": false, "start": 216, "end": 248, "deletions": [225]} - ] - }, - { - "color": "#333333", - "sequence": "TACCAAGCCTCATCTTTGACCCCCTCAAGAG", - "domains": [ - {"helix": 2, "forward": false, "start": 208, "end": 216}, - {"helix": 1, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#320096", - "sequence": "AAGGATTAAGAGGCTGAGACTCCAGCGATTA", - "domains": [ - {"helix": 1, "forward": true, "start": 232, "end": 240}, - {"helix": 2, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#03b6a2", - "sequence": "AATCTACGACCAGTCAGGACGTTGTTCATAA", - "domains": [ - {"helix": 4, "forward": false, "start": 208, "end": 216}, - {"helix": 3, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#7300de", - "sequence": "TCAAAATCAGCGTTTGCCATCTTGGAAGAAA", - "domains": [ - {"helix": 3, "forward": true, "start": 232, "end": 240}, - {"helix": 4, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#aaaa00", - "sequence": "GCCCGAAATTGCATCAAAAAGATTACGTAGA", - "domains": [ - {"helix": 6, "forward": false, "start": 208, "end": 216}, - {"helix": 5, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#b8056c", - "sequence": "AAATACATGCAGTATGTTAGCAAAAGAGGAA", - "domains": [ - {"helix": 5, "forward": true, "start": 232, "end": 240}, - {"helix": 6, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#007200", - "sequence": "CAAAATTACATACAGGCAAGGCAACCTAATT", - "domains": [ - {"helix": 8, "forward": false, "start": 208, "end": 216}, - {"helix": 7, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#cc0000", - "sequence": "TGCCAGTTAGCGTCTTTCCAGAGAGAATTAG", - "domains": [ - {"helix": 7, "forward": true, "start": 232, "end": 240}, - {"helix": 8, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#f7931e", - "sequence": "TTGTATAAAGAAAAGCCCCAAAAAACAATAA", - "domains": [ - {"helix": 10, "forward": false, "start": 208, "end": 216}, - {"helix": 9, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#f74308", - "sequence": "ACAACATGTCTGTCCAGACGACGCAGGAAGA", - "domains": [ - {"helix": 9, "forward": true, "start": 232, "end": 240}, - {"helix": 10, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#57bb00", - "sequence": "CTCTTCGCTTGGGAAGGGCGATCGAGACTAC", - "domains": [ - {"helix": 12, "forward": false, "start": 208, "end": 216}, - {"helix": 11, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#888888", - "sequence": "CTTTTTAAAATCATAGGTCTGAGGTGCGGGC", - "domains": [ - {"helix": 11, "forward": true, "start": 232, "end": 240}, - {"helix": 12, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#32b86c", - "sequence": "CTTTTCACGTATTGGGCGCCAGGGAAACAGA", - "domains": [ - {"helix": 14, "forward": false, "start": 208, "end": 216}, - {"helix": 13, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#333333", - "sequence": "AATAAAGAAATTATTTGCACGTATGGTTTTT", - "domains": [ - {"helix": 13, "forward": true, "start": 232, "end": 240}, - {"helix": 14, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#320096", - "sequence": "GAACGTGGCGAGAAAGGAAGGGAATCACCTT", - "domains": [ - {"helix": 15, "forward": true, "start": 200, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCGATATATTCGGTCGCTGAGGCCGTCACC", - "domains": [ - {"helix": 0, "forward": false, "start": 32, "end": 56, "deletions": [33]}, - {"helix": 1, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#7300de", - "sequence": "CTCAGCAGAGACCAGGCGCATAGAAGAACC", - "domains": [ - {"helix": 1, "forward": true, "start": 40, "end": 48}, - {"helix": 2, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 3, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#aaaa00", - "sequence": "GGATATTCGACGATAAAAACCAACCAGAGG", - "domains": [ - {"helix": 3, "forward": true, "start": 40, "end": 48}, - {"helix": 4, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 5, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#b8056c", - "sequence": "GGGTAATAGCTCAACATGTTTTATCATTCC", - "domains": [ - {"helix": 5, "forward": true, "start": 40, "end": 48}, - {"helix": 6, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 7, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#007200", - "sequence": "ATATAACAAAGATTCAAAAGGGTATATGAT", - "domains": [ - {"helix": 7, "forward": true, "start": 40, "end": 48}, - {"helix": 8, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 9, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#cc0000", - "sequence": "ATTCAACCACAACCCGTCGGATTTGGGATA", - "domains": [ - {"helix": 9, "forward": true, "start": 40, "end": 48}, - {"helix": 10, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 11, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f7931e", - "sequence": "GGTCACGTCGTAATCATGGTCATACAATTC", - "domains": [ - {"helix": 11, "forward": true, "start": 40, "end": 48}, - {"helix": 12, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 13, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f74308", - "sequence": "CACACAACTAGGGTTGAGTGTTGAACGTGG", - "domains": [ - {"helix": 13, "forward": true, "start": 40, "end": 48}, - {"helix": 14, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 15, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#57bb00", - "sequence": "ACTCCAACGTCAAAGGGCGAAAAAAAAGAATA", - "domains": [ - {"helix": 15, "forward": true, "start": 40, "end": 64}, - {"helix": 14, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#888888", - "sequence": "CGGTGTACCGAAAGACAGCATCGGACGCATAA", - "domains": [ - {"helix": 2, "forward": false, "start": 48, "end": 56}, - {"helix": 1, "forward": true, "start": 48, "end": 64}, - {"helix": 0, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#32b86c", - "sequence": "TACCAGACATTACCCAAATCAACGCAGATGAA", - "domains": [ - {"helix": 4, "forward": false, "start": 48, "end": 56}, - {"helix": 3, "forward": true, "start": 48, "end": 64}, - {"helix": 2, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#333333", - "sequence": "ATGCTGTAGTAAAATGTTTAGACTCCCTCGTT", - "domains": [ - {"helix": 6, "forward": false, "start": 48, "end": 56}, - {"helix": 5, "forward": true, "start": 48, "end": 64}, - {"helix": 4, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#320096", - "sequence": "TGTAGGTAGTTGATTCCCAATTCTTGAATATA", - "domains": [ - {"helix": 8, "forward": false, "start": 48, "end": 56}, - {"helix": 7, "forward": true, "start": 48, "end": 64}, - {"helix": 6, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#03b6a2", - "sequence": "AGCGAGTAGTTCTAGCTGATAAATGAGTAATG", - "domains": [ - {"helix": 10, "forward": false, "start": 48, "end": 56}, - {"helix": 9, "forward": true, "start": 48, "end": 64}, - {"helix": 8, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#7300de", - "sequence": "CTCGAATTTGGTGTAGATGGGCGCTAAATGTG", - "domains": [ - {"helix": 12, "forward": false, "start": 48, "end": 56}, - {"helix": 11, "forward": true, "start": 48, "end": 64}, - {"helix": 10, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#aaaa00", - "sequence": "GCCCGAGAATACGAGCCGGAAGCAGTACCGAG", - "domains": [ - {"helix": 14, "forward": false, "start": 48, "end": 56}, - {"helix": 13, "forward": true, "start": 48, "end": 64}, - {"helix": 12, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#b8056c", - "sequence": "GACAATGACAACAACCATCGCCCAACGAGGG", - "domains": [ - {"helix": 0, "forward": false, "start": 64, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#007200", - "sequence": "TAGCAACGCAACTTTGAAAGAGGATAACAAAG", - "domains": [ - {"helix": 1, "forward": true, "start": 72, "end": 80}, - {"helix": 2, "forward": false, "start": 64, "end": 80}, - {"helix": 3, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#cc0000", - "sequence": "CTGCTCATAGCAACACTATCATAAGGATAGCG", - "domains": [ - {"helix": 3, "forward": true, "start": 72, "end": 80}, - {"helix": 4, "forward": false, "start": 64, "end": 80}, - {"helix": 5, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#f7931e", - "sequence": "TCCAATACCTTAGAGCTTAATTGCGCGAACGA", - "domains": [ - {"helix": 5, "forward": true, "start": 72, "end": 80}, - {"helix": 6, "forward": false, "start": 64, "end": 80}, - {"helix": 7, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#f74308", - "sequence": "GTAGATTTTTTAAATGCAATGCCTTAATGCCG", - "domains": [ - {"helix": 7, "forward": true, "start": 72, "end": 80}, - {"helix": 8, "forward": false, "start": 64, "end": 80}, - {"helix": 9, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#57bb00", - "sequence": "GAGAGGGTCAGCTTTCATCAACATATCGTAAC", - "domains": [ - {"helix": 9, "forward": true, "start": 72, "end": 80}, - {"helix": 10, "forward": false, "start": 64, "end": 80}, - {"helix": 11, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#888888", - "sequence": "CGTGCATCTCTAGAGGATCCCCGGTAAAGTGT", - "domains": [ - {"helix": 11, "forward": true, "start": 72, "end": 80}, - {"helix": 12, "forward": false, "start": 64, "end": 80}, - {"helix": 13, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#32b86c", - "sequence": "AAAGCCTGAATCCCTTATAAATCACCGTCTAT", - "domains": [ - {"helix": 13, "forward": true, "start": 72, "end": 80}, - {"helix": 14, "forward": false, "start": 64, "end": 80}, - {"helix": 15, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#333333", - "sequence": "CAGGGCGATGGCCCACTACGTGATTCCGAAA", - "domains": [ - {"helix": 15, "forward": true, "start": 72, "end": 96, "deletions": [81]}, - {"helix": 14, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#320096", - "sequence": "AACTGACGCTACAGAGGCTTTGGTTGCGCC", - "domains": [ - {"helix": 2, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 0, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#03b6a2", - "sequence": "TAGTAAGTCAGTGAATAAGGCTGGGAACCG", - "domains": [ - {"helix": 4, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 3, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 2, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#7300de", - "sequence": "CGGATGGTGCGGAATCGTCATAACGAGGCA", - "domains": [ - {"helix": 6, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 5, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 4, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#aaaa00", - "sequence": "CATATATAGTTTGACCATTAGACATTTTTG", - "domains": [ - {"helix": 8, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 7, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 6, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#b8056c", - "sequence": "CTGTAGCAGCTATTTTTGAGAGAGAACCCT", - "domains": [ - {"helix": 10, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 9, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 8, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#007200", - "sequence": "GGTCGACTGCCAGTTTGAGGGGTGGCCTTC", - "domains": [ - {"helix": 12, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 11, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 10, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#cc0000", - "sequence": "TCGGCAAGGGTGCCTAATGAGTTGCCTGCA", - "domains": [ - {"helix": 14, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 13, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 12, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#f7931e", - "sequence": "TTCTTAAACAGCTTGATACCGATAAGGACTAA", - "domains": [ - {"helix": 0, "forward": false, "start": 96, "end": 120}, - {"helix": 1, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#f74308", - "sequence": "AGACTTTTAGACGGTCAATCATAATGCCCTGA", - "domains": [ - {"helix": 1, "forward": true, "start": 104, "end": 112}, - {"helix": 2, "forward": false, "start": 96, "end": 112}, - {"helix": 3, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#57bb00", - "sequence": "CGAGAAACAACGCCAAAAGGAATTAATATTCA", - "domains": [ - {"helix": 3, "forward": true, "start": 104, "end": 112}, - {"helix": 4, "forward": false, "start": 96, "end": 112}, - {"helix": 5, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#888888", - "sequence": "TTGAATCCCCTTTTGATAAGAGGTTACATTTC", - "domains": [ - {"helix": 5, "forward": true, "start": 104, "end": 112}, - {"helix": 6, "forward": false, "start": 96, "end": 112}, - {"helix": 7, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#32b86c", - "sequence": "GCAAATGGAAGGATAAAAATTTTTATCTACAA", - "domains": [ - {"helix": 7, "forward": true, "start": 104, "end": 112}, - {"helix": 8, "forward": false, "start": 96, "end": 112}, - {"helix": 9, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#333333", - "sequence": "AGGCTATCAAAAATAATTCGCGTCACGACGAC", - "domains": [ - {"helix": 9, "forward": true, "start": 104, "end": 112}, - {"helix": 10, "forward": false, "start": 96, "end": 112}, - {"helix": 11, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#320096", - "sequence": "AGTATCGGCAGTGCCAAGCTTGCAGAGCTAAC", - "domains": [ - {"helix": 11, "forward": true, "start": 104, "end": 112}, - {"helix": 12, "forward": false, "start": 96, "end": 112}, - {"helix": 13, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#03b6a2", - "sequence": "TCACATTATCCTGTTTGATGGTGGACCATCAC", - "domains": [ - {"helix": 13, "forward": true, "start": 104, "end": 112}, - {"helix": 14, "forward": false, "start": 96, "end": 112}, - {"helix": 15, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#7300de", - "sequence": "CCAAATCAAGTTTTTTGGGGTCGACCCCAGCA", - "domains": [ - {"helix": 15, "forward": true, "start": 104, "end": 128}, - {"helix": 14, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#aaaa00", - "sequence": "CGAGGCGCTCATGAGGAAGTTTCCAGGTGAAT", - "domains": [ - {"helix": 2, "forward": false, "start": 112, "end": 120}, - {"helix": 1, "forward": true, "start": 112, "end": 128}, - {"helix": 0, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#b8056c", - "sequence": "AGATACATACCAGAACGAGTAGTAAGCCGGAA", - "domains": [ - {"helix": 4, "forward": false, "start": 112, "end": 120}, - {"helix": 3, "forward": true, "start": 112, "end": 128}, - {"helix": 2, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#007200", - "sequence": "TAATTGCTCCCTCAAATGCTTTAAACTAATGC", - "domains": [ - {"helix": 6, "forward": false, "start": 112, "end": 120}, - {"helix": 5, "forward": true, "start": 112, "end": 128}, - {"helix": 4, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#cc0000", - "sequence": "TTCAACGCTCAATAACCTGTTTAGAGTACCTT", - "domains": [ - {"helix": 8, "forward": false, "start": 112, "end": 120}, - {"helix": 7, "forward": true, "start": 112, "end": 128}, - {"helix": 6, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#f7931e", - "sequence": "ACGCCATCAGGTCATTGCCTGAGAGCCTTTAT", - "domains": [ - {"helix": 10, "forward": false, "start": 112, "end": 120}, - {"helix": 9, "forward": true, "start": 112, "end": 128}, - {"helix": 8, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#f74308", - "sequence": "ACGACGGCCCTCAGGAAGATCGCACAATAGGA", - "domains": [ - {"helix": 12, "forward": false, "start": 112, "end": 120}, - {"helix": 11, "forward": true, "start": 112, "end": 128}, - {"helix": 10, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#57bb00", - "sequence": "GGCGAAAAATTGCGTTGCGCTCACGTTGTAAA", - "domains": [ - {"helix": 14, "forward": false, "start": 112, "end": 120}, - {"helix": 13, "forward": true, "start": 112, "end": 128}, - {"helix": 12, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#888888", - "sequence": "ATCGGTTTATCAGCTTGCTTTCGATTAAAC", - "domains": [ - {"helix": 0, "forward": false, "start": 128, "end": 152, "deletions": [129]}, - {"helix": 1, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#32b86c", - "sequence": "GGGTAAAATGCTCCATGTTACTTAATTGGG", - "domains": [ - {"helix": 1, "forward": true, "start": 136, "end": 144}, - {"helix": 2, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 3, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#333333", - "sequence": "CTTGAGATGGAATACCACATTCAACAGTTC", - "domains": [ - {"helix": 3, "forward": true, "start": 136, "end": 144}, - {"helix": 4, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 5, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#320096", - "sequence": "AGAAAACGAGGTCAGGATTAGAGCTATATT", - "domains": [ - {"helix": 5, "forward": true, "start": 136, "end": 144}, - {"helix": 6, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 7, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#03b6a2", - "sequence": "TTCATTTGACTTTTGCGGGAGAAGTCTGGA", - "domains": [ - {"helix": 7, "forward": true, "start": 136, "end": 144}, - {"helix": 8, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 9, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#7300de", - "sequence": "GCAAACAAAGCTCATTTTTTAACCTCCAGC", - "domains": [ - {"helix": 9, "forward": true, "start": 136, "end": 144}, - {"helix": 10, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 11, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#aaaa00", - "sequence": "CAGCTTTCTTTCCCAGTCACGACTGCCCGC", - "domains": [ - {"helix": 11, "forward": true, "start": 136, "end": 144}, - {"helix": 12, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 13, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#b8056c", - "sequence": "TTTCCAGTGTCCACGCTGGTTTGGGTGCCG", - "domains": [ - {"helix": 13, "forward": true, "start": 136, "end": 144}, - {"helix": 14, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 15, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#007200", - "sequence": "TAAAGCACTAAATCGGAACCCTAAAGAGTTGC", - "domains": [ - {"helix": 15, "forward": true, "start": 136, "end": 160}, - {"helix": 14, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#cc0000", - "sequence": "CCGCGACCTACGTAATGCCACTACTTAATTGT", - "domains": [ - {"helix": 2, "forward": false, "start": 144, "end": 152}, - {"helix": 1, "forward": true, "start": 144, "end": 160}, - {"helix": 0, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#f7931e", - "sequence": "GAGATTTAGGTTTAATTTCAACTTGTCGAAAT", - "domains": [ - {"helix": 4, "forward": false, "start": 144, "end": 152}, - {"helix": 3, "forward": true, "start": 144, "end": 160}, - {"helix": 2, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#f74308", - "sequence": "ACTCCAACAGAATGACCATAAATCCATCAGTT", - "domains": [ - {"helix": 6, "forward": false, "start": 144, "end": 152}, - {"helix": 5, "forward": true, "start": 144, "end": 160}, - {"helix": 4, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#57bb00", - "sequence": "CCTGTAATGGGCGCGAGCTGAAAAGGAAGCAA", - "domains": [ - {"helix": 8, "forward": false, "start": 144, "end": 152}, - {"helix": 7, "forward": true, "start": 144, "end": 160}, - {"helix": 6, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#888888", - "sequence": "GTTAAATCGAGAATCGATGAACGGATTATGAC", - "domains": [ - {"helix": 10, "forward": false, "start": 144, "end": 152}, - {"helix": 9, "forward": true, "start": 144, "end": 160}, - {"helix": 8, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#32b86c", - "sequence": "GCCAGGGTCGGCACCGCTTCTGGTAAATTTTT", - "domains": [ - {"helix": 12, "forward": false, "start": 144, "end": 152}, - {"helix": 11, "forward": true, "start": 144, "end": 160}, - {"helix": 10, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#333333", - "sequence": "AGCAAGCGCGGGAAACCTGTCGTGTGGGTAAC", - "domains": [ - {"helix": 14, "forward": false, "start": 144, "end": 152}, - {"helix": 13, "forward": true, "start": 144, "end": 160}, - {"helix": 12, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#320096", - "sequence": "AAAAAAGGCTCCAAAAGGAGCCTGAAGGCAC", - "domains": [ - {"helix": 0, "forward": false, "start": 160, "end": 184, "deletions": [177]}, - {"helix": 1, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#03b6a2", - "sequence": "CAACCTAATCGCCTGATAAATTGTTAATCATT", - "domains": [ - {"helix": 1, "forward": true, "start": 168, "end": 176}, - {"helix": 2, "forward": false, "start": 160, "end": 176}, - {"helix": 3, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#7300de", - "sequence": "GTGAATTATACAGGTAGAAAGATTAAAAATCA", - "domains": [ - {"helix": 3, "forward": true, "start": 168, "end": 176}, - {"helix": 4, "forward": false, "start": 160, "end": 176}, - {"helix": 5, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#aaaa00", - "sequence": "GGTCTTTACAAAGCGAACCAGACCGGTGGCAT", - "domains": [ - {"helix": 5, "forward": true, "start": 168, "end": 176}, - {"helix": 6, "forward": false, "start": 160, "end": 176}, - {"helix": 7, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#b8056c", - "sequence": "CAATTCTACGGTTGTACCAAAAACTAATCGTA", - "domains": [ - {"helix": 7, "forward": true, "start": 168, "end": 176}, - {"helix": 8, "forward": false, "start": 160, "end": 176}, - {"helix": 9, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#007200", - "sequence": "AAACTAGCTGTTAAAATTCGCATTGCCGGAAA", - "domains": [ - {"helix": 9, "forward": true, "start": 168, "end": 176}, - {"helix": 10, "forward": false, "start": 160, "end": 176}, - {"helix": 11, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#cc0000", - "sequence": "CCAGGCAATGCAAGGCGATTAAGTCCAGCTGC", - "domains": [ - {"helix": 11, "forward": true, "start": 168, "end": 176}, - {"helix": 12, "forward": false, "start": 160, "end": 176}, - {"helix": 13, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#f7931e", - "sequence": "ATTAATGAACCGCCTGGCCCTGAGAGGGAGCC", - "domains": [ - {"helix": 13, "forward": true, "start": 168, "end": 176}, - {"helix": 14, "forward": false, "start": 160, "end": 176}, - {"helix": 15, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#f74308", - "sequence": "CCCGATTTAGAGCTTGACGGGGAAGCTGATT", - "domains": [ - {"helix": 15, "forward": true, "start": 168, "end": 192, "deletions": [177]}, - {"helix": 14, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#57bb00", - "sequence": "TGTATCAAACGAAAGAGGCAAAATCTCCAA", - "domains": [ - {"helix": 2, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 1, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 0, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#888888", - "sequence": "ACATTATCCTTATGCGATTTTACGGAGATT", - "domains": [ - {"helix": 4, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 3, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 2, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#32b86c", - "sequence": "CGAGCTTCCCTGACTATTATAGACGGAACA", - "domains": [ - {"helix": 6, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 5, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 4, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#333333", - "sequence": "GCTAAATCTAATAGTAGTAGCATTTTAATT", - "domains": [ - {"helix": 8, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 7, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 6, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#320096", - "sequence": "AATATTTATGTCAATCATATGTAGCATAAA", - "domains": [ - {"helix": 10, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 9, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 8, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#03b6a2", - "sequence": "GATGTGCAGCGCCATTCGCCATTAAACGTT", - "domains": [ - {"helix": 12, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 11, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 10, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#7300de", - "sequence": "GCCCTTCATCGGCCAACGCGCGGAAAGGGG", - "domains": [ - {"helix": 14, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 13, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 12, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#aaaa00", - "sequence": "AATAATAATTTTTTCACGTTGAAAAGAATACA", - "domains": [ - {"helix": 0, "forward": false, "start": 192, "end": 216}, - {"helix": 1, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#b8056c", - "sequence": "CTAAAACAGCGAAACAAAGTACAAAGAACTGG", - "domains": [ - {"helix": 1, "forward": true, "start": 200, "end": 208}, - {"helix": 2, "forward": false, "start": 192, "end": 208}, - {"helix": 3, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#007200", - "sequence": "CTCATTATTTAATAAAACGAACTATCAGAAGC", - "domains": [ - {"helix": 3, "forward": true, "start": 200, "end": 208}, - {"helix": 4, "forward": false, "start": 192, "end": 208}, - {"helix": 5, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#cc0000", - "sequence": "AAAGCGGAGACTTCAAATATCGCGTTAACATC", - "domains": [ - {"helix": 5, "forward": true, "start": 200, "end": 208}, - {"helix": 6, "forward": false, "start": 192, "end": 208}, - {"helix": 7, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#f7931e", - "sequence": "CAATAAATAGCAATAAAGCCTCAGACCCCGGT", - "domains": [ - {"helix": 7, "forward": true, "start": 200, "end": 208}, - {"helix": 8, "forward": false, "start": 192, "end": 208}, - {"helix": 9, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#f74308", - "sequence": "TGATAATCGCAAATATTTAAATTGTCAGGCTG", - "domains": [ - {"helix": 9, "forward": true, "start": 200, "end": 208}, - {"helix": 10, "forward": false, "start": 192, "end": 208}, - {"helix": 11, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#57bb00", - "sequence": "CGCAACTGTATTACGCCAGCTGGCGGGAGAGG", - "domains": [ - {"helix": 11, "forward": true, "start": 200, "end": 208}, - {"helix": 12, "forward": false, "start": 192, "end": 208}, - {"helix": 13, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#888888", - "sequence": "CGGTTTGCCAGTGAGACGGGCAACAAGCCGGC", - "domains": [ - {"helix": 13, "forward": true, "start": 200, "end": 208}, - {"helix": 14, "forward": false, "start": 192, "end": 208}, - {"helix": 15, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#32b86c", - "sequence": "GCTGAACCTCAAATATCAAACCCTGAACCTAC", - "domains": [ - {"helix": 15, "forward": true, "start": 232, "end": 256}, - {"helix": 14, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#333333", - "sequence": "AAGTATTAGGATTAGCGGGGTTTTGCGGAGTG", - "domains": [ - {"helix": 2, "forward": false, "start": 240, "end": 248}, - {"helix": 1, "forward": true, "start": 240, "end": 256}, - {"helix": 0, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#320096", - "sequence": "CCCTTATTACCGGAACCAGAGCCAAAACATGA", - "domains": [ - {"helix": 4, "forward": false, "start": 240, "end": 248}, - {"helix": 3, "forward": true, "start": 240, "end": 256}, - {"helix": 2, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#03b6a2", - "sequence": "CTTATTACACATAAAGGTGGCAACTCATAGCC", - "domains": [ - {"helix": 6, "forward": false, "start": 240, "end": 248}, - {"helix": 5, "forward": true, "start": 240, "end": 256}, - {"helix": 4, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#7300de", - "sequence": "CGCTAACGACAAAATAAACAGCCATAAGACTC", - "domains": [ - {"helix": 8, "forward": false, "start": 240, "end": 248}, - {"helix": 7, "forward": true, "start": 240, "end": 256}, - {"helix": 6, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#aaaa00", - "sequence": "AAAGTAATTTCAGCTAATGCAGAACTTACCAA", - "domains": [ - {"helix": 10, "forward": false, "start": 240, "end": 248}, - {"helix": 9, "forward": true, "start": 240, "end": 256}, - {"helix": 8, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#b8056c", - "sequence": "TTTATCAACCTCCGGCTTAGGTTGCAAAAGGT", - "domains": [ - {"helix": 12, "forward": false, "start": 240, "end": 248}, - {"helix": 11, "forward": true, "start": 240, "end": 256}, - {"helix": 10, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#007200", - "sequence": "CATATCAAAATTGCGTAGATTTTCATAGTGAA", - "domains": [ - {"helix": 14, "forward": false, "start": 240, "end": 248}, - {"helix": 13, "forward": true, "start": 240, "end": 256}, - {"helix": 12, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#cc0000", - "sequence": "CTAAACAACTTTCAACAGTTTCAGCTCAGTA", - "domains": [ - {"helix": 0, "forward": false, "start": 256, "end": 280, "deletions": [273]}, - {"helix": 1, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#f7931e", - "sequence": "CCAGGCGGGGAACCTATTATTCTGCCACCGGA", - "domains": [ - {"helix": 1, "forward": true, "start": 264, "end": 272}, - {"helix": 2, "forward": false, "start": 256, "end": 272}, - {"helix": 3, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#f74308", - "sequence": "ACCGCCTCTCATCGGCATTTTCGGATATAAAA", - "domains": [ - {"helix": 3, "forward": true, "start": 264, "end": 272}, - {"helix": 4, "forward": false, "start": 256, "end": 272}, - {"helix": 5, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#57bb00", - "sequence": "GAAACGCAAAAGAACTGGCATGATTATTATTT", - "domains": [ - {"helix": 5, "forward": true, "start": 264, "end": 272}, - {"helix": 6, "forward": false, "start": 256, "end": 272}, - {"helix": 7, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#888888", - "sequence": "ATCCCAATCAATTTTATCCTGAATCGCGCCTG", - "domains": [ - {"helix": 7, "forward": true, "start": 264, "end": 272}, - {"helix": 8, "forward": false, "start": 256, "end": 272}, - {"helix": 9, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#32b86c", - "sequence": "TTTATCAAGAATATAAAGTACCGAGGTTATAT", - "domains": [ - {"helix": 9, "forward": true, "start": 264, "end": 272}, - {"helix": 10, "forward": false, "start": 256, "end": 272}, - {"helix": 11, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#333333", - "sequence": "AACTATATACGCTGAGAAGAGTCAAGGTTTAA", - "domains": [ - {"helix": 11, "forward": true, "start": 264, "end": 272}, - {"helix": 12, "forward": false, "start": 256, "end": 272}, - {"helix": 13, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#320096", - "sequence": "CGTCAGATAATAATGGAAGGGTTACAATCAAT", - "domains": [ - {"helix": 13, "forward": true, "start": 264, "end": 272}, - {"helix": 14, "forward": false, "start": 256, "end": 272}, - {"helix": 15, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#03b6a2", - "sequence": "ATCTGGTCAGTTGGCAAATCAACTGGATTAT", - "domains": [ - {"helix": 15, "forward": true, "start": 264, "end": 288, "deletions": [273]}, - {"helix": 14, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#7300de", - "sequence": "CTATTTCATAAGTGCCGTCGAGGGATTTTG", - "domains": [ - {"helix": 2, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 1, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 0, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#aaaa00", - "sequence": "CGCGTTTCCTCAGAGCCGCCACCCCCCTGC", - "domains": [ - {"helix": 4, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 3, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 2, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#b8056c", - "sequence": "ATACCCAAAGACACCACGGAATGACTGTAG", - "domains": [ - {"helix": 6, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 5, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 4, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#007200", - "sequence": "CCAGCTACCAAATAAGAAACGAATAACGGA", - "domains": [ - {"helix": 8, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 7, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 6, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#cc0000", - "sequence": "AATAAGACAATAGATAAGTCCTTTTTGCAC", - "domains": [ - {"helix": 10, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 9, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 8, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#f7931e", - "sequence": "GATTAAGGTAAATGCTGATGCAGAGCCAGT", - "domains": [ - {"helix": 12, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 11, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 10, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#f74308", - "sequence": "ACTTCTGGAATATACAGTAACAATAGCTTA", - "domains": [ - {"helix": 14, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 13, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 12, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#57bb00", - "sequence": "GTTAGTAAATGAATTTTCTGTATGAGGGTTGA", - "domains": [ - {"helix": 0, "forward": false, "start": 288, "end": 312}, - {"helix": 1, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#888888", - "sequence": "TATAAGTAGTATAAACAGTTAATGCCTCAGAA", - "domains": [ - {"helix": 1, "forward": true, "start": 296, "end": 304}, - {"helix": 2, "forward": false, "start": 288, "end": 304}, - {"helix": 3, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#32b86c", - "sequence": "CCGCCACCTTTGCCTTTAGCGTCAAAGTTTAT", - "domains": [ - {"helix": 3, "forward": true, "start": 296, "end": 304}, - {"helix": 4, "forward": false, "start": 288, "end": 304}, - {"helix": 5, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#333333", - "sequence": "TTTGTCACCCGAGGAAACGCAATATTTTTTGT", - "domains": [ - {"helix": 5, "forward": true, "start": 296, "end": 304}, - {"helix": 6, "forward": false, "start": 288, "end": 304}, - {"helix": 7, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#320096", - "sequence": "TTAACGTCTCAAGATTAGTTGCTAGAACAAGA", - "domains": [ - {"helix": 7, "forward": true, "start": 296, "end": 304}, - {"helix": 8, "forward": false, "start": 288, "end": 304}, - {"helix": 9, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAAATAATAGGCAGAGGCATTTTCAATCCAAT", - "domains": [ - {"helix": 9, "forward": true, "start": 296, "end": 304}, - {"helix": 10, "forward": false, "start": 288, "end": 304}, - {"helix": 11, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#7300de", - "sequence": "CGCAAGACCCTTGAAAACATAGCGGTACCTTT", - "domains": [ - {"helix": 11, "forward": true, "start": 296, "end": 304}, - {"helix": 12, "forward": false, "start": 288, "end": 304}, - {"helix": 13, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#aaaa00", - "sequence": "TACATCGGTATAATCCTGATTGTTAGTTGAAA", - "domains": [ - {"helix": 13, "forward": true, "start": 296, "end": 304}, - {"helix": 14, "forward": false, "start": 288, "end": 304}, - {"helix": 15, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#b8056c", - "sequence": "GGAATTGAGGAAGGTTATCTAAAAGATGGCAA", - "domains": [ - {"helix": 15, "forward": true, "start": 296, "end": 320}, - {"helix": 14, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#007200", - "sequence": "CAGTGCCCTAGCCCGGAATAGGTGTTCCAGAC", - "domains": [ - {"helix": 2, "forward": false, "start": 304, "end": 312}, - {"helix": 1, "forward": true, "start": 304, "end": 320}, - {"helix": 0, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#cc0000", - "sequence": "GAATCAAGCTCAGAGCCACCACCCTTGAGTAA", - "domains": [ - {"helix": 4, "forward": false, "start": 304, "end": 312}, - {"helix": 3, "forward": true, "start": 304, "end": 320}, - {"helix": 2, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#f7931e", - "sequence": "GAAGGAAAAATCAATAGAAAATTCTAGCGACA", - "domains": [ - {"helix": 6, "forward": false, "start": 304, "end": 312}, - {"helix": 5, "forward": true, "start": 304, "end": 320}, - {"helix": 4, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#f74308", - "sequence": "GCCTTAAAAAAAATGAAAATAGCAAGTTACCA", - "domains": [ - {"helix": 8, "forward": false, "start": 304, "end": 312}, - {"helix": 7, "forward": true, "start": 304, "end": 320}, - {"helix": 6, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#57bb00", - "sequence": "TGTAATTTATCCCATCCTAATTTAGTTTTGAA", - "domains": [ - {"helix": 10, "forward": false, "start": 304, "end": 312}, - {"helix": 9, "forward": true, "start": 304, "end": 320}, - {"helix": 8, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#888888", - "sequence": "CTTAGAATAAAGAACGCGAGAAAACGCCAACA", - "domains": [ - {"helix": 12, "forward": false, "start": 304, "end": 312}, - {"helix": 11, "forward": true, "start": 304, "end": 320}, - {"helix": 10, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#32b86c", - "sequence": "TTCATCAAGAGAAACAATAACGGAAATTTTCC", - "domains": [ - {"helix": 14, "forward": false, "start": 304, "end": 312}, - {"helix": 13, "forward": true, "start": 304, "end": 320}, - {"helix": 12, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#333333", - "sequence": "AACGATCTAAAGTTTTGTCGTCTTATCACC", - "domains": [ - {"helix": 0, "forward": false, "start": 320, "end": 344, "deletions": [321]}, - {"helix": 1, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#320096", - "sequence": "GTACTCAGAACGGGGTCAGTGCCTCAGAGC", - "domains": [ - {"helix": 1, "forward": true, "start": 328, "end": 336}, - {"helix": 2, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 3, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#03b6a2", - "sequence": "CGCCACCACAGCACCGTAATCAGATATGGT", - "domains": [ - {"helix": 3, "forward": true, "start": 328, "end": 336}, - {"helix": 4, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 5, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#7300de", - "sequence": "TTACCAGCCAGATAGCCGAACAAGCCTTTA", - "domains": [ - {"helix": 5, "forward": true, "start": 328, "end": 336}, - {"helix": 6, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 7, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#aaaa00", - "sequence": "CAGAGAGACCCGACTTGCGGGAGCGAGCAT", - "domains": [ - {"helix": 7, "forward": true, "start": 328, "end": 336}, - {"helix": 8, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 9, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#b8056c", - "sequence": "GTAGAAACCGCCATATTTAACAACTTTTTC", - "domains": [ - {"helix": 9, "forward": true, "start": 328, "end": 336}, - {"helix": 10, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 11, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#007200", - "sequence": "AAATATATTCGTCGCTATTAATTTTCGCCT", - "domains": [ - {"helix": 11, "forward": true, "start": 328, "end": 336}, - {"helix": 12, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 13, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#cc0000", - "sequence": "GATTGCTTTCCTGATTATCAGATTATCTTT", - "domains": [ - {"helix": 13, "forward": true, "start": 328, "end": 336}, - {"helix": 14, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 15, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#f7931e", - "sequence": "AGGAGCACTAACAACTAATAGATTGGAATTAT", - "domains": [ - {"helix": 15, "forward": true, "start": 328, "end": 352}, - {"helix": 14, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#f74308", - "sequence": "TAAGTTTTGAGGTTTAGTACCGCCGTTAGCGT", - "domains": [ - {"helix": 2, "forward": false, "start": 336, "end": 344}, - {"helix": 1, "forward": true, "start": 336, "end": 352}, - {"helix": 0, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#57bb00", - "sequence": "ATCGATAGGAACCACCACCAGAGCACTGGTAA", - "domains": [ - {"helix": 4, "forward": false, "start": 336, "end": 344}, - {"helix": 3, "forward": true, "start": 336, "end": 352}, - {"helix": 2, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#888888", - "sequence": "AAAGTAAGGCCAAAGACAAAAGGGATGAAACC", - "domains": [ - {"helix": 6, "forward": false, "start": 336, "end": 344}, - {"helix": 5, "forward": true, "start": 336, "end": 352}, - {"helix": 4, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#32b86c", - "sequence": "GCGAACCTATAACATAAAAACAGGTTTTAAGA", - "domains": [ - {"helix": 8, "forward": false, "start": 336, "end": 344}, - {"helix": 7, "forward": true, "start": 336, "end": 352}, - {"helix": 6, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#333333", - "sequence": "TTGAGAATCAATCAATAATCGGCTGCGTTTTA", - "domains": [ - {"helix": 10, "forward": false, "start": 336, "end": 344}, - {"helix": 9, "forward": true, "start": 336, "end": 352}, - {"helix": 8, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#320096", - "sequence": "TCTGTAAATTTAGTTAATTTCATCGGGCTTAA", - "domains": [ - {"helix": 12, "forward": false, "start": 336, "end": 344}, - {"helix": 11, "forward": true, "start": 336, "end": 352}, - {"helix": 10, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#03b6a2", - "sequence": "CATCATATTGAATACCAAGTTACAACCTTGCT", - "domains": [ - {"helix": 14, "forward": false, "start": 336, "end": 344}, - {"helix": 13, "forward": true, "start": 336, "end": 352}, - {"helix": 12, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#7300de", - "sequence": "GCATTCCACAGACAGCCCTCATAACCCTCAG", - "domains": [ - {"helix": 0, "forward": false, "start": 352, "end": 376, "deletions": [369]}, - {"helix": 1, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#aaaa00", - "sequence": "AACCGCCAGATGATACAGGAGTGTCGCCGCCA", - "domains": [ - {"helix": 1, "forward": true, "start": 360, "end": 368}, - {"helix": 2, "forward": false, "start": 352, "end": 368}, - {"helix": 3, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#b8056c", - "sequence": "GCATTGACGCCGGAAACGTCACCACGACATTC", - "domains": [ - {"helix": 3, "forward": true, "start": 360, "end": 368}, - {"helix": 4, "forward": false, "start": 352, "end": 368}, - {"helix": 5, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#007200", - "sequence": "AACCGATTATCTTACCGAAGCCCTGAAGCGCA", - "domains": [ - {"helix": 5, "forward": true, "start": 360, "end": 368}, - {"helix": 6, "forward": false, "start": 352, "end": 368}, - {"helix": 7, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#cc0000", - "sequence": "TTAGACGGATTCTAAGAACGCGAGGTCTTTCC", - "domains": [ - {"helix": 7, "forward": true, "start": 360, "end": 368}, - {"helix": 8, "forward": false, "start": 352, "end": 368}, - {"helix": 9, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#f7931e", - "sequence": "TTATCATTCCAACGCTCAACAGTATTCTGACC", - "domains": [ - {"helix": 9, "forward": true, "start": 360, "end": 368}, - {"helix": 10, "forward": false, "start": 352, "end": 368}, - {"helix": 11, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#f74308", - "sequence": "TAAATTTATATATGTGAGTGAATAAAATCGCG", - "domains": [ - {"helix": 11, "forward": true, "start": 360, "end": 368}, - {"helix": 12, "forward": false, "start": 352, "end": 368}, - {"helix": 13, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#57bb00", - "sequence": "CAGAGGCGAACCACCAGAAGGAGCAGAGCCGT", - "domains": [ - {"helix": 13, "forward": true, "start": 360, "end": 368}, - {"helix": 14, "forward": false, "start": 352, "end": 368}, - {"helix": 15, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#888888", - "sequence": "CAATAGATAATACATTTGAGGATTTTGCGGA", - "domains": [ - {"helix": 15, "forward": true, "start": 360, "end": 384, "deletions": [369]}, - {"helix": 14, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#32b86c", - "sequence": "GGCTTTTCCCTCAGAACCGCCACGCCTGTA", - "domains": [ - {"helix": 2, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 1, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 0, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#333333", - "sequence": "TAGCAAGAGGAGGTTGAGGCAGTCATACAT", - "domains": [ - {"helix": 4, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 3, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 2, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#320096", - "sequence": "AATAGCTGAGGGAGGGAAGGTAATTACCAT", - "domains": [ - {"helix": 6, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 5, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 4, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#03b6a2", - "sequence": "ATCCGGTGAGAATTAACTGAACGAAATAGC", - "domains": [ - {"helix": 8, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 7, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 6, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#7300de", - "sequence": "TATAAAGCCAAGAACGGGTATTGAAGGCTT", - "domains": [ - {"helix": 10, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 9, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 8, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#aaaa00", - "sequence": "AAATCAAATGGTTTGAAATACCCTTACCAG", - "domains": [ - {"helix": 12, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 11, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 10, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#b8056c", - "sequence": "ACAAAGAAATTATTCATTTCAACAGTACAT", - "domains": [ - {"helix": 14, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 13, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 12, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#007200", - "sequence": "TTTCGTCACCAGTACAAACTACAACCCTCAGA", - "domains": [ - {"helix": 0, "forward": false, "start": 384, "end": 408}, - {"helix": 1, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#cc0000", - "sequence": "GCCACCACACCGTTCCAGTAAGCGGTCAGACG", - "domains": [ - {"helix": 1, "forward": true, "start": 392, "end": 400}, - {"helix": 2, "forward": false, "start": 384, "end": 400}, - {"helix": 3, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#f7931e", - "sequence": "ATTGGCCTAATCACCAGTAGCACCAATATTGA", - "domains": [ - {"helix": 3, "forward": true, "start": 392, "end": 400}, - {"helix": 4, "forward": false, "start": 384, "end": 400}, - {"helix": 5, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#f74308", - "sequence": "CGGAAATTAAGAGCAAGAAACAATACCCTGAA", - "domains": [ - {"helix": 5, "forward": true, "start": 392, "end": 400}, - {"helix": 6, "forward": false, "start": 384, "end": 400}, - {"helix": 7, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#57bb00", - "sequence": "CAAAGTCAAAGCAAATCAGATATAAAACCAAG", - "domains": [ - {"helix": 7, "forward": true, "start": 392, "end": 400}, - {"helix": 8, "forward": false, "start": 384, "end": 400}, - {"helix": 9, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#888888", - "sequence": "TACCGCACATGCGTTATACAAATTGACCGTGT", - "domains": [ - {"helix": 9, "forward": true, "start": 392, "end": 400}, - {"helix": 10, "forward": false, "start": 384, "end": 400}, - {"helix": 11, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#32b86c", - "sequence": "GATAAATACCTTTTTTAATGGAAATTACCTGA", - "domains": [ - {"helix": 11, "forward": true, "start": 392, "end": 400}, - {"helix": 12, "forward": false, "start": 384, "end": 400}, - {"helix": 13, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#333333", - "sequence": "GCAAAAGATGAGTAACATTATCATTTAGAAGT", - "domains": [ - {"helix": 13, "forward": true, "start": 392, "end": 400}, - {"helix": 14, "forward": false, "start": 384, "end": 400}, - {"helix": 15, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#320096", - "sequence": "ATTAGACTTTACAAACAATTCGACATTAATTT", - "domains": [ - {"helix": 15, "forward": true, "start": 392, "end": 416}, - {"helix": 14, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#03b6a2", - "sequence": "CTGAATTTCCTCATTTTCAGGGATACACTGAG", - "domains": [ - {"helix": 2, "forward": false, "start": 400, "end": 408}, - {"helix": 1, "forward": true, "start": 400, "end": 416}, - {"helix": 0, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#7300de", - "sequence": "GCCAGCAATGATATTCACAAACAACGCAGTCT", - "domains": [ - {"helix": 4, "forward": false, "start": 400, "end": 408}, - {"helix": 3, "forward": true, "start": 400, "end": 416}, - {"helix": 2, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#aaaa00", - "sequence": "CCAATAATATTCATTAAAGGTGAAGAATTAGA", - "domains": [ - {"helix": 6, "forward": false, "start": 400, "end": 408}, - {"helix": 5, "forward": true, "start": 400, "end": 416}, - {"helix": 4, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#b8056c", - "sequence": "CCAATAGCGAGGGTAATTGAGCGCAGTTAAGC", - "domains": [ - {"helix": 8, "forward": false, "start": 400, "end": 408}, - {"helix": 7, "forward": true, "start": 400, "end": 416}, - {"helix": 6, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#007200", - "sequence": "AGTATCATTCATCGAGAACAAGCATACCGCGC", - "domains": [ - {"helix": 10, "forward": false, "start": 400, "end": 408}, - {"helix": 9, "forward": true, "start": 400, "end": 416}, - {"helix": 8, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#cc0000", - "sequence": "TTGAATTAAGGCGTTAAATAAGAAGCCTGTTT", - "domains": [ - {"helix": 12, "forward": false, "start": 400, "end": 408}, - {"helix": 11, "forward": true, "start": 400, "end": 416}, - {"helix": 10, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#f7931e", - "sequence": "TAAAAGTTAGATGATGAAACAAACAATTTCAT", - "domains": [ - {"helix": 14, "forward": false, "start": 400, "end": 408}, - {"helix": 13, "forward": true, "start": 400, "end": 416}, - {"helix": 12, "forward": false, "start": 408, "end": 416} - ] - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.sc b/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.sc deleted file mode 100644 index 130c5250..00000000 --- a/tests_inputs/cadnano_v2_export/test_16_helix_origami_rectangle_no_twist.sc +++ /dev/null @@ -1,1878 +0,0 @@ -{ - "version": "0.10.1", - "grid": "square", - "helices": [ - {"max_offset": 448, "grid_position": [0, 0]}, - {"max_offset": 448, "grid_position": [0, 1]}, - {"max_offset": 448, "grid_position": [0, 2]}, - {"max_offset": 448, "grid_position": [0, 3]}, - {"max_offset": 448, "grid_position": [0, 4]}, - {"max_offset": 448, "grid_position": [0, 5]}, - {"max_offset": 448, "grid_position": [0, 6]}, - {"max_offset": 448, "grid_position": [0, 7]}, - {"max_offset": 448, "grid_position": [0, 8]}, - {"max_offset": 448, "grid_position": [0, 9]}, - {"max_offset": 448, "grid_position": [0, 10]}, - {"max_offset": 448, "grid_position": [0, 11]}, - {"max_offset": 448, "grid_position": [0, 12]}, - {"max_offset": 448, "grid_position": [0, 13]}, - {"max_offset": 448, "grid_position": [0, 14]}, - {"max_offset": 448, "grid_position": [0, 15]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "TTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTTGGGTGATGGTTCACGTAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCAGGCGGTGAAGGGCAATCAGCTGTTGCCCGTCTCACTGGTGAAAAGAAAAACCACCCTGGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGAATTCGAGCTCGGTACCCGGGGATCCTCTAGAGTCGACCTGCAGGCATGCAAGCTTGGCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCACCGATCGCCCTTCCCAACAGTTGCGCAGCCTGAATGGCGAATGGCGCTTTGCCTGGTTTCCGGCACCAGAAGCGGTGCCGGAAAGCTGGCTGGAGTGCGATCTTCCTGAGGCCGATACTGTCGTCGTCCCCTCAAACTGGCAGATGCACGGTTACGATGCGCCCATCTACACCAACGTGACCTATCCCATTACGGTCAATCCGCCGTTTGTTCCCACGGAGAATCCGACGGGTTGTTACTCGCTCACATTTAATGTTGATGAAAGCTGGCTACAGGAAGGCCAGACGCGAATTATTTTTGATGGCGTTCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAATGCGAATTTTAACAAAATATTAACGTTTACAATTTAAATATTTGCTTATACAATCTTCCTGTTTTTGGGGCTTTTCTGATTATCAACCGGGGTACATATGATTGACATGCTAGTTTTACGATTACCGTTCATCGATTCTCTTGTTTGCTCCAGACTCTCAGGCAATGACCTGATAGCCTTTGTAGATCTCTCAAAAATAGCTACCCTCTCCGGCATTAATTTATCAGCTAGAACGGTTGAATATCATATTGATGGTGATTTGACTGTCTCCGGCCTTTCTCACCCTTTTGAATCTTTACCTACACATTACTCAGGCATTGCATTTAAAATATATGAGGGTTCTAAAAATTTTTATCCTTGCGTTGAAATAAAGGCTTCTCCCGCAAAAGTATTACAGGGTCATAATGTTTTTGGTACAACCGATTTAGCTTTATGCTCTGAGGCTTTATTGCTTAATTTTGCTAATTCTTTGCCTTGCCTGTATGATTTATTGGATGTTAATGCTACTACTATTAGTAGAATTGATGCCACCTTTTCAGCTCGCGCCCCAAATGAAAATATAGCTAAACAGGTTATTGACCATTTGCGAAATGTATCTAATGGTCAAACTAAATCTACTCGTTCGCAGAATTGGGAATCAACTGTTATATGGAATGAAACTTCCAGACACCGTACTTTAGTTGCATATTTAAAACATGTTGAGCTACAGCATTATATTCAGCAATTAAGCTCTAAGCCATCCGCAAAAATGACCTCTTATCAAAAGGAGCAATTAAAGGTACTCTCTAATCCTGACCTGTTGGAGTTTGCTTCCGGTCTGGTTCGCTTTGAAGCTCGAATTAAAACGCGATATTTGAAGTCTTTCGGGCTTCCTCTTAATCTTTTTGATGCAATCCGCTTTGCTTCTGACTATAATAGTCAGGGTAAAGACCTGATTTTTGATTTATGGTCATTCTCGTTTTCTGAACTGTTTAAAGCATTTGAGGGGGATTCAATGAATATTTATGACGATTCCGCAGTATTGGACGCTATCCAGTCTAAACATTTTACTATTACCCCCTCTGGCAAAACTTCTTTTGCAAAAGCCTCTCGCTATTTTGGTTTTTATCGTCGTCTGGTAAACGAGGGTTATGATAGTGTTGCTCTTACTATGCCTCGTAATTCCTTTTGGCGTTATGTATCTGCATTAGTTGAATGTGGTATTCCTAAATCTCAACTGATGAATCTTTCTACCTGTAATAATGTTGTTCCGTTAGTTCGTTTTATTAACGTAGATTTTTCTTCCCAACGTCCTGACTGGTATAATGAGCCAGTTCTTAAAATCGCATAAGGTAATTCACAATGATTAAAGTTGAAATTAAACCATCTCAAGCCCAATTTACTACTCGTTCTGGTGTTTCTCGTCAGGGCAAGCCTTATTCACTGAATGAGCAGCTTTGTTACGTTGATTTGGGTAATGAATATCCGGTTCTTGTCAAGATTACTCTTGATGAAGGTCAGCCAGCCTATGCGCCTGGTCTGTACACCGTTCATCTGTCCTCTTTCAAAGTTGGTCAGTTCGGTTCCCTTATGATTGACCGTCTGCGCCTCGTTCCGGCTAAGTAACATGGAGCAGGTCGCGGATTTCGACACAATTTATCAGGCGATGATACAAATCTCCGTTGTACTTTGTTTCGCGCTTGGTATAATCGCTGGGGGTCAAAGATGAGTGTTTTAGTGTATTCTTTTGCCTCTTTCGTTTTAGGTTGGTGCCTTCGTAGTGGCATTACGTATTTTACCCGTTTAATGGAAACTTCCTCATGAAAAAGTCTTTAGTCCTCAAAGCCTCTGTAGCCGTTGCTACCCTCGTTCCGATGCTGTCTTTCGCTGCTGAGGGTGACGATCCCGCAAAAGCGGCCTTTAACTCCCTGCAAGCCTCAGCGACCGAATATATCGGTTATGCGTGGGCGATGGTTGTTGTCATTGTCGGCGCAACTATCGGTATCAAGCTGTTTAAGAAATTCACCTCGAAAGCAAGCTGATAAACCGATACAATTAAAGGCTCCTTTTGGAGCCTTTTTTTTGGAGATTTTCAACGTGAAAAAATTATTATTCGCAATTCCTTTAGTTGTTCCTTTCTATTCTCACTCCGCTGAAACTGTTGAAAGTTGTTTAGCAAAATCCCATACAGAAAATTCATTTACTAACGTCTGGAAAGACGACAAAACTTTAGATCGTTACGCTAACTATGAGGGCTGTCTGTGGAATGCTACAGGCGTTGTAGTTTGTACTGGTGACGAAACTCAGTGTTACGGTACATGGGTTCCTATTGGGCTTGCTATCCCTGAAAATGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTACTAAACCTCCTGAGTACGGTGATACACCTATTCCGGGCTATACTTATATCAACCCTCTCGACGGCACTTATCCGCCTGGTACTGAGCAAAACCCCGCTAATCCTAATCCTTCTCTTGAGGAGTCTCAGCCTCTTAATACTTTCATGTTTCAGAATAATAGGTTCCGAAATAGGCAGGGGGCATTAACTGTTTATACGGGCACTGTTACTCAAGGCACTGACCCCGTTAAAACTTATTACCAGTACACTCCTGTATCATCAAAAGCCATGTATGACGCTTACTGGAACGGTAAATTCAGAGACTGCGCTTTCCATTCTGGCTTTAATGAGGATTTATTTGTTTGTGAATATCAAGGCCAATCGTCTGACCTGCCTCAACCTCCTGTCAATGCTGGCGGCGGCTCTGGTGGTGGTTCTGGTGGCGGCTCTGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGCTCTGAGGGAGGCGGTTCCGGTGGTGGCTCTGGTTCCGGTGATTTTGATTATGAAAAGATGGCAAACGCTAATAAGGGGGCTATGACCGAAAATGCCGATGAAAACGCGCTACAGTCTGACGCTAAAGGCAAACTTGATTCTGTCGCTACTGATTACGGTGCTGCTATCGATGGTTTCATTGGTGACGTTTCCGGCCTTGCTAATGGTAATGGTGCTACTGGTGATTTTGCTGGCTCTAATTCCCAAATGGCTCAAGTCGGTGACGGTGATAATTCACCTTTAATGAATAATTTCCGTCAATATTTACCTTCCCTCCCTCAATCGGTTGAATGTCGCCCTTTTGTCTTTGGCGCTGGTAAACCATATGAATTTTCTATTGATTGTGACAAAATAAACTTATTCCGTGGTGTCTTTGCGTTTCTTTTATATGTTGCCACCTTTATGTATGTATTTTCTACGTTTGCTAACATACTGCGTAATAAGGAGTCTTAATCATGCCAGTTCTTTTGGGTATTCCGTTATTATTGCGTTTCCTCGGTTTCCTTCTGGTAACTTTGTTCGGCTATCTGCTTACTTTTCTTAAAAAGGGCTTCGGTAAGATAGCTATTGCTATTTCATTGTTTCTTGCTCTTATTATTGGGCTTAACTCAATTCTTGTGGGTTATCTCTCTGATATTAGCGCTCAATTACCCTCTGACTTTGTTCAGGGTGTTCAGTTAATTCTCCCGTCTAATGCGCTTCCCTGTTTTTATGTTATTCTCTCTGTAAAGGCTGCTATTTTCATTTTTGACGTTAAACAAAAAATCGTTTCTTATTTGGATTGGGATAAATAATATGGCTGTTTATTTTGTAACTGGCAAATTAGGCTCTGGAAAGACGCTCGTTAGCGTTGGTAAGATTCAGGATAAAATTGTAGCTGGGTGCAAAATAGCAACTAATCTTGATTTAAGGCTTCAAAACCTCCCGCAAGTCGGGAGGTTCGCTAAAACGCCTCGCGTTCTTAGAATACCGGATAAGCCTTCTATATCTGATTTGCTTGCTATTGGGCGCGGTAATGATTCCTACGATGAAAATAAAAACGGCTTGCTTGTTCTCGATGAGTGCGGTACTTGGTTTAATACCCGTTCTTGGAATGATAAGGAAAGACAGCCGATTATTGATTGGTTTCTACATGCTCGTAAATTAGGATGGGATATTATTTTTCTTGTTCAGGACTTATCTATTGTTGATAAACAGGCGCGTTCTGCATTAGCTGAACATGTTGTTTATTGTCGTCGTCTGGACAGAATTACTTTACCTTTTGTCGGTACTTTATATTCTCTTATTACTGGCTCGAAAATGCCTCTGCCTAAATTACATGTTGGCGTTGTTAAATATGGCGATTCTCAATTAAGCCCTACTGTTGAGCGTTGGCTTTATACTGGTAAGAATTTGTATAACGCATATGATACTAAACAGGCTTTTTCTAGTAATTATGATTCCGGTGTTTATTCTTATTTAACGCCTTATTTATCACACGGTCGGTATTTCAAACCATTAAATTTAGGTCAGAAGATGAAATTAACTAAAATATATTTGAAAAAGTTTTCTCGCGTTCTTTGTCTTGCGATTGGATTTGCATCAGCATTTACATATAGTTATATAACCCAACCTAAGCCGGAGGTTAAAAAGGTAGTCTCTCAGACCTATGATTTTGATAAATTCACTATTGACTCTTCTCAGCGTCTTAATCTAAGCTATCGCTATGTTTTCAAGGATTCTAAGGGAAAATTAATTAATAGCGACGATTTACAGAAGCAAGGTTATTCACTCACATATATTGATTTATGTACTGTTTCCATTAAAAAAGGTAATTCAAATGAAATTGTTAAATGTAATTAATTTTGTTTTCTTGATGTTTGTTTCATCATCTTCTTTTGCTCAGGTAATTGAAATGAATAATTCGCCTCTGCGCGATTTTGTAACTTGGTATTCAAAGCAATCAGGCGAATCCGTTATTGTTTCTCCCGATGTAAAAGGTACTGTTACTGTATATTCATCTGACGTTAAACCTGAAAATCTACGCAATTTCTTTATTTCTGTTTTACGTGCAAATAATTTTGATATGGTAGGTTCTAACCCTTCCATTATTCAGAAGTATAATCCAAACAATCAGGATTATATTGATGAATTGCCATCATCTGATAATCAGGAATATGATGATAATTCCGCTCCTTCTGGTGGTTTCTTTGTTCCGCAAAATGATAATGTTACTCAAACTTTTAAAATTAATAACGTTCGGGCAAAGGATTTAATACGAGTTGTCGAATTGTTTGTAAAGTCTAATACTTCTAAATCCTCAAATGTATTATCTATTGACGGCTCTAATCTATTAGTTGTTAGTGCTCCTAAAGATATTTTAGATAACCTTCCTCAATTCCTTTCAACTGTTGATTTGCCAACTGACCAGATATTGATTGAGGGTTTGATATTTGAGGTTCAGCAAGGTGA", - "domains": [ - {"helix": 15, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 14, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 13, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 12, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 11, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 10, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 9, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 8, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 7, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 6, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 5, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 4, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 3, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 2, "forward": true, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 1, "forward": false, "start": 16, "end": 224, "deletions": [33, 81, 129, 177]}, - {"helix": 0, "forward": true, "start": 16, "end": 432, "deletions": [33, 81, 129, 177, 225, 273, 321, 369, 417]}, - {"helix": 1, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 2, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 3, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 4, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 5, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 6, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 7, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 8, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 9, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 10, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 11, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 12, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 13, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 14, "forward": true, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]}, - {"helix": 15, "forward": false, "start": 224, "end": 432, "deletions": [225, 273, 321, 369, 417]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GCCGCTTTTGCGGGATTTGCAGGGAGTTAAAG", - "domains": [ - {"helix": 1, "forward": true, "start": 16, "end": 32}, - {"helix": 0, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#57bb00", - "sequence": "CAAGAGTAATCTTGACGCTGGCTGACCTTCAT", - "domains": [ - {"helix": 3, "forward": true, "start": 16, "end": 32}, - {"helix": 2, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#888888", - "sequence": "TGCAAAAGAAGTTTTGAATAGCGAGAGGCTTT", - "domains": [ - {"helix": 5, "forward": true, "start": 16, "end": 32}, - {"helix": 4, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#32b86c", - "sequence": "ACGGTGTCTGGAAGTTAATATGCAACTAAAGT", - "domains": [ - {"helix": 7, "forward": true, "start": 16, "end": 32}, - {"helix": 6, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#333333", - "sequence": "AGTCAAATCACCATCAGAGAAAGGCCGGAGAC", - "domains": [ - {"helix": 9, "forward": true, "start": 16, "end": 32}, - {"helix": 8, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#320096", - "sequence": "GGCGGATTGACCGTAACTCCGTGGGAACAAAC", - "domains": [ - {"helix": 11, "forward": true, "start": 16, "end": 32}, - {"helix": 10, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAATTGTTATCCGCTCAGCTGTTTCCTGTGTG", - "domains": [ - {"helix": 13, "forward": true, "start": 16, "end": 32}, - {"helix": 12, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#7300de", - "sequence": "GAGTCCACTATTAAAGTTCCAGTTTGGAACAA", - "domains": [ - {"helix": 15, "forward": true, "start": 16, "end": 32}, - {"helix": 14, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#aaaa00", - "sequence": "AACCCATGTACCGTAAGCAAGCCCAATAGG", - "domains": [ - {"helix": 0, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 1, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#b8056c", - "sequence": "AGCCAGAATGGAAAGATAAATCCTCATTAA", - "domains": [ - {"helix": 2, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 3, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#007200", - "sequence": "ACTTGAGCCATTTGGTTATCACCGTCACCG", - "domains": [ - {"helix": 4, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 5, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#cc0000", - "sequence": "AACCCACAAGAATTGTAATATCAGAGAGAT", - "domains": [ - {"helix": 6, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 7, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#f7931e", - "sequence": "CATCGTAGGAATCATAGCCGTTTTTATTTT", - "domains": [ - {"helix": 8, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 9, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#f74308", - "sequence": "TAATTACTAGAAAAATAAACACCGGAATCA", - "domains": [ - {"helix": 10, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 11, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#57bb00", - "sequence": "TTAATTACATTTAACATCAAGAAAACAAAA", - "domains": [ - {"helix": 12, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 13, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#888888", - "sequence": "CTTTGCCCGAACGTTAACTCGTATTAAATC", - "domains": [ - {"helix": 14, "forward": false, "start": 416, "end": 432, "deletions": [417]}, - {"helix": 15, "forward": true, "start": 416, "end": 432, "deletions": [417]} - ] - }, - { - "color": "#32b86c", - "sequence": "AGAATAGAAAGGAACAACTAAAGGAATTGCG", - "domains": [ - {"helix": 0, "forward": false, "start": 216, "end": 248, "deletions": [225]} - ] - }, - { - "color": "#333333", - "sequence": "TACCAAGCCTCATCTTTGACCCCCTCAAGAG", - "domains": [ - {"helix": 2, "forward": false, "start": 208, "end": 216}, - {"helix": 1, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#320096", - "sequence": "AAGGATTAAGAGGCTGAGACTCCAGCGATTA", - "domains": [ - {"helix": 1, "forward": true, "start": 232, "end": 240}, - {"helix": 2, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#03b6a2", - "sequence": "AATCTACGACCAGTCAGGACGTTGTTCATAA", - "domains": [ - {"helix": 4, "forward": false, "start": 208, "end": 216}, - {"helix": 3, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#7300de", - "sequence": "TCAAAATCAGCGTTTGCCATCTTGGAAGAAA", - "domains": [ - {"helix": 3, "forward": true, "start": 232, "end": 240}, - {"helix": 4, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#aaaa00", - "sequence": "GCCCGAAATTGCATCAAAAAGATTACGTAGA", - "domains": [ - {"helix": 6, "forward": false, "start": 208, "end": 216}, - {"helix": 5, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#b8056c", - "sequence": "AAATACATGCAGTATGTTAGCAAAAGAGGAA", - "domains": [ - {"helix": 5, "forward": true, "start": 232, "end": 240}, - {"helix": 6, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#007200", - "sequence": "CAAAATTACATACAGGCAAGGCAACCTAATT", - "domains": [ - {"helix": 8, "forward": false, "start": 208, "end": 216}, - {"helix": 7, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#cc0000", - "sequence": "TGCCAGTTAGCGTCTTTCCAGAGAGAATTAG", - "domains": [ - {"helix": 7, "forward": true, "start": 232, "end": 240}, - {"helix": 8, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#f7931e", - "sequence": "TTGTATAAAGAAAAGCCCCAAAAAACAATAA", - "domains": [ - {"helix": 10, "forward": false, "start": 208, "end": 216}, - {"helix": 9, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#f74308", - "sequence": "ACAACATGTCTGTCCAGACGACGCAGGAAGA", - "domains": [ - {"helix": 9, "forward": true, "start": 232, "end": 240}, - {"helix": 10, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#57bb00", - "sequence": "CTCTTCGCTTGGGAAGGGCGATCGAGACTAC", - "domains": [ - {"helix": 12, "forward": false, "start": 208, "end": 216}, - {"helix": 11, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#888888", - "sequence": "CTTTTTAAAATCATAGGTCTGAGGTGCGGGC", - "domains": [ - {"helix": 11, "forward": true, "start": 232, "end": 240}, - {"helix": 12, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#32b86c", - "sequence": "CTTTTCACGTATTGGGCGCCAGGGAAACAGA", - "domains": [ - {"helix": 14, "forward": false, "start": 208, "end": 216}, - {"helix": 13, "forward": true, "start": 208, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#333333", - "sequence": "AATAAAGAAATTATTTGCACGTATGGTTTTT", - "domains": [ - {"helix": 13, "forward": true, "start": 232, "end": 240}, - {"helix": 14, "forward": false, "start": 216, "end": 240, "deletions": [225]} - ] - }, - { - "color": "#320096", - "sequence": "GAACGTGGCGAGAAAGGAAGGGAATCACCTT", - "domains": [ - {"helix": 15, "forward": true, "start": 200, "end": 232, "deletions": [225]} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCGATATATTCGGTCGCTGAGGCCGTCACC", - "domains": [ - {"helix": 0, "forward": false, "start": 32, "end": 56, "deletions": [33]}, - {"helix": 1, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#7300de", - "sequence": "CTCAGCAGAGACCAGGCGCATAGAAGAACC", - "domains": [ - {"helix": 1, "forward": true, "start": 40, "end": 48}, - {"helix": 2, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 3, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#aaaa00", - "sequence": "GGATATTCGACGATAAAAACCAACCAGAGG", - "domains": [ - {"helix": 3, "forward": true, "start": 40, "end": 48}, - {"helix": 4, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 5, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#b8056c", - "sequence": "GGGTAATAGCTCAACATGTTTTATCATTCC", - "domains": [ - {"helix": 5, "forward": true, "start": 40, "end": 48}, - {"helix": 6, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 7, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#007200", - "sequence": "ATATAACAAAGATTCAAAAGGGTATATGAT", - "domains": [ - {"helix": 7, "forward": true, "start": 40, "end": 48}, - {"helix": 8, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 9, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#cc0000", - "sequence": "ATTCAACCACAACCCGTCGGATTTGGGATA", - "domains": [ - {"helix": 9, "forward": true, "start": 40, "end": 48}, - {"helix": 10, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 11, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f7931e", - "sequence": "GGTCACGTCGTAATCATGGTCATACAATTC", - "domains": [ - {"helix": 11, "forward": true, "start": 40, "end": 48}, - {"helix": 12, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 13, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f74308", - "sequence": "CACACAACTAGGGTTGAGTGTTGAACGTGG", - "domains": [ - {"helix": 13, "forward": true, "start": 40, "end": 48}, - {"helix": 14, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 15, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#57bb00", - "sequence": "ACTCCAACGTCAAAGGGCGAAAAAAAAGAATA", - "domains": [ - {"helix": 15, "forward": true, "start": 40, "end": 64}, - {"helix": 14, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#888888", - "sequence": "CGGTGTACCGAAAGACAGCATCGGACGCATAA", - "domains": [ - {"helix": 2, "forward": false, "start": 48, "end": 56}, - {"helix": 1, "forward": true, "start": 48, "end": 64}, - {"helix": 0, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#32b86c", - "sequence": "TACCAGACATTACCCAAATCAACGCAGATGAA", - "domains": [ - {"helix": 4, "forward": false, "start": 48, "end": 56}, - {"helix": 3, "forward": true, "start": 48, "end": 64}, - {"helix": 2, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#333333", - "sequence": "ATGCTGTAGTAAAATGTTTAGACTCCCTCGTT", - "domains": [ - {"helix": 6, "forward": false, "start": 48, "end": 56}, - {"helix": 5, "forward": true, "start": 48, "end": 64}, - {"helix": 4, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#320096", - "sequence": "TGTAGGTAGTTGATTCCCAATTCTTGAATATA", - "domains": [ - {"helix": 8, "forward": false, "start": 48, "end": 56}, - {"helix": 7, "forward": true, "start": 48, "end": 64}, - {"helix": 6, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#03b6a2", - "sequence": "AGCGAGTAGTTCTAGCTGATAAATGAGTAATG", - "domains": [ - {"helix": 10, "forward": false, "start": 48, "end": 56}, - {"helix": 9, "forward": true, "start": 48, "end": 64}, - {"helix": 8, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#7300de", - "sequence": "CTCGAATTTGGTGTAGATGGGCGCTAAATGTG", - "domains": [ - {"helix": 12, "forward": false, "start": 48, "end": 56}, - {"helix": 11, "forward": true, "start": 48, "end": 64}, - {"helix": 10, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#aaaa00", - "sequence": "GCCCGAGAATACGAGCCGGAAGCAGTACCGAG", - "domains": [ - {"helix": 14, "forward": false, "start": 48, "end": 56}, - {"helix": 13, "forward": true, "start": 48, "end": 64}, - {"helix": 12, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#b8056c", - "sequence": "GACAATGACAACAACCATCGCCCAACGAGGG", - "domains": [ - {"helix": 0, "forward": false, "start": 64, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#007200", - "sequence": "TAGCAACGCAACTTTGAAAGAGGATAACAAAG", - "domains": [ - {"helix": 1, "forward": true, "start": 72, "end": 80}, - {"helix": 2, "forward": false, "start": 64, "end": 80}, - {"helix": 3, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#cc0000", - "sequence": "CTGCTCATAGCAACACTATCATAAGGATAGCG", - "domains": [ - {"helix": 3, "forward": true, "start": 72, "end": 80}, - {"helix": 4, "forward": false, "start": 64, "end": 80}, - {"helix": 5, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#f7931e", - "sequence": "TCCAATACCTTAGAGCTTAATTGCGCGAACGA", - "domains": [ - {"helix": 5, "forward": true, "start": 72, "end": 80}, - {"helix": 6, "forward": false, "start": 64, "end": 80}, - {"helix": 7, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#f74308", - "sequence": "GTAGATTTTTTAAATGCAATGCCTTAATGCCG", - "domains": [ - {"helix": 7, "forward": true, "start": 72, "end": 80}, - {"helix": 8, "forward": false, "start": 64, "end": 80}, - {"helix": 9, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#57bb00", - "sequence": "GAGAGGGTCAGCTTTCATCAACATATCGTAAC", - "domains": [ - {"helix": 9, "forward": true, "start": 72, "end": 80}, - {"helix": 10, "forward": false, "start": 64, "end": 80}, - {"helix": 11, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#888888", - "sequence": "CGTGCATCTCTAGAGGATCCCCGGTAAAGTGT", - "domains": [ - {"helix": 11, "forward": true, "start": 72, "end": 80}, - {"helix": 12, "forward": false, "start": 64, "end": 80}, - {"helix": 13, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#32b86c", - "sequence": "AAAGCCTGAATCCCTTATAAATCACCGTCTAT", - "domains": [ - {"helix": 13, "forward": true, "start": 72, "end": 80}, - {"helix": 14, "forward": false, "start": 64, "end": 80}, - {"helix": 15, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#333333", - "sequence": "CAGGGCGATGGCCCACTACGTGATTCCGAAA", - "domains": [ - {"helix": 15, "forward": true, "start": 72, "end": 96, "deletions": [81]}, - {"helix": 14, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#320096", - "sequence": "AACTGACGCTACAGAGGCTTTGGTTGCGCC", - "domains": [ - {"helix": 2, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 0, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#03b6a2", - "sequence": "TAGTAAGTCAGTGAATAAGGCTGGGAACCG", - "domains": [ - {"helix": 4, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 3, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 2, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#7300de", - "sequence": "CGGATGGTGCGGAATCGTCATAACGAGGCA", - "domains": [ - {"helix": 6, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 5, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 4, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#aaaa00", - "sequence": "CATATATAGTTTGACCATTAGACATTTTTG", - "domains": [ - {"helix": 8, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 7, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 6, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#b8056c", - "sequence": "CTGTAGCAGCTATTTTTGAGAGAGAACCCT", - "domains": [ - {"helix": 10, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 9, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 8, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#007200", - "sequence": "GGTCGACTGCCAGTTTGAGGGGTGGCCTTC", - "domains": [ - {"helix": 12, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 11, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 10, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#cc0000", - "sequence": "TCGGCAAGGGTGCCTAATGAGTTGCCTGCA", - "domains": [ - {"helix": 14, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 13, "forward": true, "start": 80, "end": 96, "deletions": [81]}, - {"helix": 12, "forward": false, "start": 88, "end": 96} - ] - }, - { - "color": "#f7931e", - "sequence": "TTCTTAAACAGCTTGATACCGATAAGGACTAA", - "domains": [ - {"helix": 0, "forward": false, "start": 96, "end": 120}, - {"helix": 1, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#f74308", - "sequence": "AGACTTTTAGACGGTCAATCATAATGCCCTGA", - "domains": [ - {"helix": 1, "forward": true, "start": 104, "end": 112}, - {"helix": 2, "forward": false, "start": 96, "end": 112}, - {"helix": 3, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#57bb00", - "sequence": "CGAGAAACAACGCCAAAAGGAATTAATATTCA", - "domains": [ - {"helix": 3, "forward": true, "start": 104, "end": 112}, - {"helix": 4, "forward": false, "start": 96, "end": 112}, - {"helix": 5, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#888888", - "sequence": "TTGAATCCCCTTTTGATAAGAGGTTACATTTC", - "domains": [ - {"helix": 5, "forward": true, "start": 104, "end": 112}, - {"helix": 6, "forward": false, "start": 96, "end": 112}, - {"helix": 7, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#32b86c", - "sequence": "GCAAATGGAAGGATAAAAATTTTTATCTACAA", - "domains": [ - {"helix": 7, "forward": true, "start": 104, "end": 112}, - {"helix": 8, "forward": false, "start": 96, "end": 112}, - {"helix": 9, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#333333", - "sequence": "AGGCTATCAAAAATAATTCGCGTCACGACGAC", - "domains": [ - {"helix": 9, "forward": true, "start": 104, "end": 112}, - {"helix": 10, "forward": false, "start": 96, "end": 112}, - {"helix": 11, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#320096", - "sequence": "AGTATCGGCAGTGCCAAGCTTGCAGAGCTAAC", - "domains": [ - {"helix": 11, "forward": true, "start": 104, "end": 112}, - {"helix": 12, "forward": false, "start": 96, "end": 112}, - {"helix": 13, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#03b6a2", - "sequence": "TCACATTATCCTGTTTGATGGTGGACCATCAC", - "domains": [ - {"helix": 13, "forward": true, "start": 104, "end": 112}, - {"helix": 14, "forward": false, "start": 96, "end": 112}, - {"helix": 15, "forward": true, "start": 96, "end": 104} - ] - }, - { - "color": "#7300de", - "sequence": "CCAAATCAAGTTTTTTGGGGTCGACCCCAGCA", - "domains": [ - {"helix": 15, "forward": true, "start": 104, "end": 128}, - {"helix": 14, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#aaaa00", - "sequence": "CGAGGCGCTCATGAGGAAGTTTCCAGGTGAAT", - "domains": [ - {"helix": 2, "forward": false, "start": 112, "end": 120}, - {"helix": 1, "forward": true, "start": 112, "end": 128}, - {"helix": 0, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#b8056c", - "sequence": "AGATACATACCAGAACGAGTAGTAAGCCGGAA", - "domains": [ - {"helix": 4, "forward": false, "start": 112, "end": 120}, - {"helix": 3, "forward": true, "start": 112, "end": 128}, - {"helix": 2, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#007200", - "sequence": "TAATTGCTCCCTCAAATGCTTTAAACTAATGC", - "domains": [ - {"helix": 6, "forward": false, "start": 112, "end": 120}, - {"helix": 5, "forward": true, "start": 112, "end": 128}, - {"helix": 4, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#cc0000", - "sequence": "TTCAACGCTCAATAACCTGTTTAGAGTACCTT", - "domains": [ - {"helix": 8, "forward": false, "start": 112, "end": 120}, - {"helix": 7, "forward": true, "start": 112, "end": 128}, - {"helix": 6, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#f7931e", - "sequence": "ACGCCATCAGGTCATTGCCTGAGAGCCTTTAT", - "domains": [ - {"helix": 10, "forward": false, "start": 112, "end": 120}, - {"helix": 9, "forward": true, "start": 112, "end": 128}, - {"helix": 8, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#f74308", - "sequence": "ACGACGGCCCTCAGGAAGATCGCACAATAGGA", - "domains": [ - {"helix": 12, "forward": false, "start": 112, "end": 120}, - {"helix": 11, "forward": true, "start": 112, "end": 128}, - {"helix": 10, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#57bb00", - "sequence": "GGCGAAAAATTGCGTTGCGCTCACGTTGTAAA", - "domains": [ - {"helix": 14, "forward": false, "start": 112, "end": 120}, - {"helix": 13, "forward": true, "start": 112, "end": 128}, - {"helix": 12, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#888888", - "sequence": "ATCGGTTTATCAGCTTGCTTTCGATTAAAC", - "domains": [ - {"helix": 0, "forward": false, "start": 128, "end": 152, "deletions": [129]}, - {"helix": 1, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#32b86c", - "sequence": "GGGTAAAATGCTCCATGTTACTTAATTGGG", - "domains": [ - {"helix": 1, "forward": true, "start": 136, "end": 144}, - {"helix": 2, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 3, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#333333", - "sequence": "CTTGAGATGGAATACCACATTCAACAGTTC", - "domains": [ - {"helix": 3, "forward": true, "start": 136, "end": 144}, - {"helix": 4, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 5, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#320096", - "sequence": "AGAAAACGAGGTCAGGATTAGAGCTATATT", - "domains": [ - {"helix": 5, "forward": true, "start": 136, "end": 144}, - {"helix": 6, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 7, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#03b6a2", - "sequence": "TTCATTTGACTTTTGCGGGAGAAGTCTGGA", - "domains": [ - {"helix": 7, "forward": true, "start": 136, "end": 144}, - {"helix": 8, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 9, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#7300de", - "sequence": "GCAAACAAAGCTCATTTTTTAACCTCCAGC", - "domains": [ - {"helix": 9, "forward": true, "start": 136, "end": 144}, - {"helix": 10, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 11, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#aaaa00", - "sequence": "CAGCTTTCTTTCCCAGTCACGACTGCCCGC", - "domains": [ - {"helix": 11, "forward": true, "start": 136, "end": 144}, - {"helix": 12, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 13, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#b8056c", - "sequence": "TTTCCAGTGTCCACGCTGGTTTGGGTGCCG", - "domains": [ - {"helix": 13, "forward": true, "start": 136, "end": 144}, - {"helix": 14, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 15, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#007200", - "sequence": "TAAAGCACTAAATCGGAACCCTAAAGAGTTGC", - "domains": [ - {"helix": 15, "forward": true, "start": 136, "end": 160}, - {"helix": 14, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#cc0000", - "sequence": "CCGCGACCTACGTAATGCCACTACTTAATTGT", - "domains": [ - {"helix": 2, "forward": false, "start": 144, "end": 152}, - {"helix": 1, "forward": true, "start": 144, "end": 160}, - {"helix": 0, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#f7931e", - "sequence": "GAGATTTAGGTTTAATTTCAACTTGTCGAAAT", - "domains": [ - {"helix": 4, "forward": false, "start": 144, "end": 152}, - {"helix": 3, "forward": true, "start": 144, "end": 160}, - {"helix": 2, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#f74308", - "sequence": "ACTCCAACAGAATGACCATAAATCCATCAGTT", - "domains": [ - {"helix": 6, "forward": false, "start": 144, "end": 152}, - {"helix": 5, "forward": true, "start": 144, "end": 160}, - {"helix": 4, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#57bb00", - "sequence": "CCTGTAATGGGCGCGAGCTGAAAAGGAAGCAA", - "domains": [ - {"helix": 8, "forward": false, "start": 144, "end": 152}, - {"helix": 7, "forward": true, "start": 144, "end": 160}, - {"helix": 6, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#888888", - "sequence": "GTTAAATCGAGAATCGATGAACGGATTATGAC", - "domains": [ - {"helix": 10, "forward": false, "start": 144, "end": 152}, - {"helix": 9, "forward": true, "start": 144, "end": 160}, - {"helix": 8, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#32b86c", - "sequence": "GCCAGGGTCGGCACCGCTTCTGGTAAATTTTT", - "domains": [ - {"helix": 12, "forward": false, "start": 144, "end": 152}, - {"helix": 11, "forward": true, "start": 144, "end": 160}, - {"helix": 10, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#333333", - "sequence": "AGCAAGCGCGGGAAACCTGTCGTGTGGGTAAC", - "domains": [ - {"helix": 14, "forward": false, "start": 144, "end": 152}, - {"helix": 13, "forward": true, "start": 144, "end": 160}, - {"helix": 12, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#320096", - "sequence": "AAAAAAGGCTCCAAAAGGAGCCTGAAGGCAC", - "domains": [ - {"helix": 0, "forward": false, "start": 160, "end": 184, "deletions": [177]}, - {"helix": 1, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#03b6a2", - "sequence": "CAACCTAATCGCCTGATAAATTGTTAATCATT", - "domains": [ - {"helix": 1, "forward": true, "start": 168, "end": 176}, - {"helix": 2, "forward": false, "start": 160, "end": 176}, - {"helix": 3, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#7300de", - "sequence": "GTGAATTATACAGGTAGAAAGATTAAAAATCA", - "domains": [ - {"helix": 3, "forward": true, "start": 168, "end": 176}, - {"helix": 4, "forward": false, "start": 160, "end": 176}, - {"helix": 5, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#aaaa00", - "sequence": "GGTCTTTACAAAGCGAACCAGACCGGTGGCAT", - "domains": [ - {"helix": 5, "forward": true, "start": 168, "end": 176}, - {"helix": 6, "forward": false, "start": 160, "end": 176}, - {"helix": 7, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#b8056c", - "sequence": "CAATTCTACGGTTGTACCAAAAACTAATCGTA", - "domains": [ - {"helix": 7, "forward": true, "start": 168, "end": 176}, - {"helix": 8, "forward": false, "start": 160, "end": 176}, - {"helix": 9, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#007200", - "sequence": "AAACTAGCTGTTAAAATTCGCATTGCCGGAAA", - "domains": [ - {"helix": 9, "forward": true, "start": 168, "end": 176}, - {"helix": 10, "forward": false, "start": 160, "end": 176}, - {"helix": 11, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#cc0000", - "sequence": "CCAGGCAATGCAAGGCGATTAAGTCCAGCTGC", - "domains": [ - {"helix": 11, "forward": true, "start": 168, "end": 176}, - {"helix": 12, "forward": false, "start": 160, "end": 176}, - {"helix": 13, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#f7931e", - "sequence": "ATTAATGAACCGCCTGGCCCTGAGAGGGAGCC", - "domains": [ - {"helix": 13, "forward": true, "start": 168, "end": 176}, - {"helix": 14, "forward": false, "start": 160, "end": 176}, - {"helix": 15, "forward": true, "start": 160, "end": 168} - ] - }, - { - "color": "#f74308", - "sequence": "CCCGATTTAGAGCTTGACGGGGAAGCTGATT", - "domains": [ - {"helix": 15, "forward": true, "start": 168, "end": 192, "deletions": [177]}, - {"helix": 14, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#57bb00", - "sequence": "TGTATCAAACGAAAGAGGCAAAATCTCCAA", - "domains": [ - {"helix": 2, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 1, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 0, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#888888", - "sequence": "ACATTATCCTTATGCGATTTTACGGAGATT", - "domains": [ - {"helix": 4, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 3, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 2, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#32b86c", - "sequence": "CGAGCTTCCCTGACTATTATAGACGGAACA", - "domains": [ - {"helix": 6, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 5, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 4, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#333333", - "sequence": "GCTAAATCTAATAGTAGTAGCATTTTAATT", - "domains": [ - {"helix": 8, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 7, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 6, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#320096", - "sequence": "AATATTTATGTCAATCATATGTAGCATAAA", - "domains": [ - {"helix": 10, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 9, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 8, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#03b6a2", - "sequence": "GATGTGCAGCGCCATTCGCCATTAAACGTT", - "domains": [ - {"helix": 12, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 11, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 10, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#7300de", - "sequence": "GCCCTTCATCGGCCAACGCGCGGAAAGGGG", - "domains": [ - {"helix": 14, "forward": false, "start": 176, "end": 184, "deletions": [177]}, - {"helix": 13, "forward": true, "start": 176, "end": 192, "deletions": [177]}, - {"helix": 12, "forward": false, "start": 184, "end": 192} - ] - }, - { - "color": "#aaaa00", - "sequence": "AATAATAATTTTTTCACGTTGAAAAGAATACA", - "domains": [ - {"helix": 0, "forward": false, "start": 192, "end": 216}, - {"helix": 1, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#b8056c", - "sequence": "CTAAAACAGCGAAACAAAGTACAAAGAACTGG", - "domains": [ - {"helix": 1, "forward": true, "start": 200, "end": 208}, - {"helix": 2, "forward": false, "start": 192, "end": 208}, - {"helix": 3, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#007200", - "sequence": "CTCATTATTTAATAAAACGAACTATCAGAAGC", - "domains": [ - {"helix": 3, "forward": true, "start": 200, "end": 208}, - {"helix": 4, "forward": false, "start": 192, "end": 208}, - {"helix": 5, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#cc0000", - "sequence": "AAAGCGGAGACTTCAAATATCGCGTTAACATC", - "domains": [ - {"helix": 5, "forward": true, "start": 200, "end": 208}, - {"helix": 6, "forward": false, "start": 192, "end": 208}, - {"helix": 7, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#f7931e", - "sequence": "CAATAAATAGCAATAAAGCCTCAGACCCCGGT", - "domains": [ - {"helix": 7, "forward": true, "start": 200, "end": 208}, - {"helix": 8, "forward": false, "start": 192, "end": 208}, - {"helix": 9, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#f74308", - "sequence": "TGATAATCGCAAATATTTAAATTGTCAGGCTG", - "domains": [ - {"helix": 9, "forward": true, "start": 200, "end": 208}, - {"helix": 10, "forward": false, "start": 192, "end": 208}, - {"helix": 11, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#57bb00", - "sequence": "CGCAACTGTATTACGCCAGCTGGCGGGAGAGG", - "domains": [ - {"helix": 11, "forward": true, "start": 200, "end": 208}, - {"helix": 12, "forward": false, "start": 192, "end": 208}, - {"helix": 13, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#888888", - "sequence": "CGGTTTGCCAGTGAGACGGGCAACAAGCCGGC", - "domains": [ - {"helix": 13, "forward": true, "start": 200, "end": 208}, - {"helix": 14, "forward": false, "start": 192, "end": 208}, - {"helix": 15, "forward": true, "start": 192, "end": 200} - ] - }, - { - "color": "#32b86c", - "sequence": "GCTGAACCTCAAATATCAAACCCTGAACCTAC", - "domains": [ - {"helix": 15, "forward": true, "start": 232, "end": 256}, - {"helix": 14, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#333333", - "sequence": "AAGTATTAGGATTAGCGGGGTTTTGCGGAGTG", - "domains": [ - {"helix": 2, "forward": false, "start": 240, "end": 248}, - {"helix": 1, "forward": true, "start": 240, "end": 256}, - {"helix": 0, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#320096", - "sequence": "CCCTTATTACCGGAACCAGAGCCAAAACATGA", - "domains": [ - {"helix": 4, "forward": false, "start": 240, "end": 248}, - {"helix": 3, "forward": true, "start": 240, "end": 256}, - {"helix": 2, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#03b6a2", - "sequence": "CTTATTACACATAAAGGTGGCAACTCATAGCC", - "domains": [ - {"helix": 6, "forward": false, "start": 240, "end": 248}, - {"helix": 5, "forward": true, "start": 240, "end": 256}, - {"helix": 4, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#7300de", - "sequence": "CGCTAACGACAAAATAAACAGCCATAAGACTC", - "domains": [ - {"helix": 8, "forward": false, "start": 240, "end": 248}, - {"helix": 7, "forward": true, "start": 240, "end": 256}, - {"helix": 6, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#aaaa00", - "sequence": "AAAGTAATTTCAGCTAATGCAGAACTTACCAA", - "domains": [ - {"helix": 10, "forward": false, "start": 240, "end": 248}, - {"helix": 9, "forward": true, "start": 240, "end": 256}, - {"helix": 8, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#b8056c", - "sequence": "TTTATCAACCTCCGGCTTAGGTTGCAAAAGGT", - "domains": [ - {"helix": 12, "forward": false, "start": 240, "end": 248}, - {"helix": 11, "forward": true, "start": 240, "end": 256}, - {"helix": 10, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#007200", - "sequence": "CATATCAAAATTGCGTAGATTTTCATAGTGAA", - "domains": [ - {"helix": 14, "forward": false, "start": 240, "end": 248}, - {"helix": 13, "forward": true, "start": 240, "end": 256}, - {"helix": 12, "forward": false, "start": 248, "end": 256} - ] - }, - { - "color": "#cc0000", - "sequence": "CTAAACAACTTTCAACAGTTTCAGCTCAGTA", - "domains": [ - {"helix": 0, "forward": false, "start": 256, "end": 280, "deletions": [273]}, - {"helix": 1, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#f7931e", - "sequence": "CCAGGCGGGGAACCTATTATTCTGCCACCGGA", - "domains": [ - {"helix": 1, "forward": true, "start": 264, "end": 272}, - {"helix": 2, "forward": false, "start": 256, "end": 272}, - {"helix": 3, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#f74308", - "sequence": "ACCGCCTCTCATCGGCATTTTCGGATATAAAA", - "domains": [ - {"helix": 3, "forward": true, "start": 264, "end": 272}, - {"helix": 4, "forward": false, "start": 256, "end": 272}, - {"helix": 5, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#57bb00", - "sequence": "GAAACGCAAAAGAACTGGCATGATTATTATTT", - "domains": [ - {"helix": 5, "forward": true, "start": 264, "end": 272}, - {"helix": 6, "forward": false, "start": 256, "end": 272}, - {"helix": 7, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#888888", - "sequence": "ATCCCAATCAATTTTATCCTGAATCGCGCCTG", - "domains": [ - {"helix": 7, "forward": true, "start": 264, "end": 272}, - {"helix": 8, "forward": false, "start": 256, "end": 272}, - {"helix": 9, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#32b86c", - "sequence": "TTTATCAAGAATATAAAGTACCGAGGTTATAT", - "domains": [ - {"helix": 9, "forward": true, "start": 264, "end": 272}, - {"helix": 10, "forward": false, "start": 256, "end": 272}, - {"helix": 11, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#333333", - "sequence": "AACTATATACGCTGAGAAGAGTCAAGGTTTAA", - "domains": [ - {"helix": 11, "forward": true, "start": 264, "end": 272}, - {"helix": 12, "forward": false, "start": 256, "end": 272}, - {"helix": 13, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#320096", - "sequence": "CGTCAGATAATAATGGAAGGGTTACAATCAAT", - "domains": [ - {"helix": 13, "forward": true, "start": 264, "end": 272}, - {"helix": 14, "forward": false, "start": 256, "end": 272}, - {"helix": 15, "forward": true, "start": 256, "end": 264} - ] - }, - { - "color": "#03b6a2", - "sequence": "ATCTGGTCAGTTGGCAAATCAACTGGATTAT", - "domains": [ - {"helix": 15, "forward": true, "start": 264, "end": 288, "deletions": [273]}, - {"helix": 14, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#7300de", - "sequence": "CTATTTCATAAGTGCCGTCGAGGGATTTTG", - "domains": [ - {"helix": 2, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 1, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 0, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#aaaa00", - "sequence": "CGCGTTTCCTCAGAGCCGCCACCCCCCTGC", - "domains": [ - {"helix": 4, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 3, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 2, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#b8056c", - "sequence": "ATACCCAAAGACACCACGGAATGACTGTAG", - "domains": [ - {"helix": 6, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 5, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 4, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#007200", - "sequence": "CCAGCTACCAAATAAGAAACGAATAACGGA", - "domains": [ - {"helix": 8, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 7, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 6, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#cc0000", - "sequence": "AATAAGACAATAGATAAGTCCTTTTTGCAC", - "domains": [ - {"helix": 10, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 9, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 8, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#f7931e", - "sequence": "GATTAAGGTAAATGCTGATGCAGAGCCAGT", - "domains": [ - {"helix": 12, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 11, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 10, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#f74308", - "sequence": "ACTTCTGGAATATACAGTAACAATAGCTTA", - "domains": [ - {"helix": 14, "forward": false, "start": 272, "end": 280, "deletions": [273]}, - {"helix": 13, "forward": true, "start": 272, "end": 288, "deletions": [273]}, - {"helix": 12, "forward": false, "start": 280, "end": 288} - ] - }, - { - "color": "#57bb00", - "sequence": "GTTAGTAAATGAATTTTCTGTATGAGGGTTGA", - "domains": [ - {"helix": 0, "forward": false, "start": 288, "end": 312}, - {"helix": 1, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#888888", - "sequence": "TATAAGTAGTATAAACAGTTAATGCCTCAGAA", - "domains": [ - {"helix": 1, "forward": true, "start": 296, "end": 304}, - {"helix": 2, "forward": false, "start": 288, "end": 304}, - {"helix": 3, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#32b86c", - "sequence": "CCGCCACCTTTGCCTTTAGCGTCAAAGTTTAT", - "domains": [ - {"helix": 3, "forward": true, "start": 296, "end": 304}, - {"helix": 4, "forward": false, "start": 288, "end": 304}, - {"helix": 5, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#333333", - "sequence": "TTTGTCACCCGAGGAAACGCAATATTTTTTGT", - "domains": [ - {"helix": 5, "forward": true, "start": 296, "end": 304}, - {"helix": 6, "forward": false, "start": 288, "end": 304}, - {"helix": 7, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#320096", - "sequence": "TTAACGTCTCAAGATTAGTTGCTAGAACAAGA", - "domains": [ - {"helix": 7, "forward": true, "start": 296, "end": 304}, - {"helix": 8, "forward": false, "start": 288, "end": 304}, - {"helix": 9, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAAATAATAGGCAGAGGCATTTTCAATCCAAT", - "domains": [ - {"helix": 9, "forward": true, "start": 296, "end": 304}, - {"helix": 10, "forward": false, "start": 288, "end": 304}, - {"helix": 11, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#7300de", - "sequence": "CGCAAGACCCTTGAAAACATAGCGGTACCTTT", - "domains": [ - {"helix": 11, "forward": true, "start": 296, "end": 304}, - {"helix": 12, "forward": false, "start": 288, "end": 304}, - {"helix": 13, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#aaaa00", - "sequence": "TACATCGGTATAATCCTGATTGTTAGTTGAAA", - "domains": [ - {"helix": 13, "forward": true, "start": 296, "end": 304}, - {"helix": 14, "forward": false, "start": 288, "end": 304}, - {"helix": 15, "forward": true, "start": 288, "end": 296} - ] - }, - { - "color": "#b8056c", - "sequence": "GGAATTGAGGAAGGTTATCTAAAAGATGGCAA", - "domains": [ - {"helix": 15, "forward": true, "start": 296, "end": 320}, - {"helix": 14, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#007200", - "sequence": "CAGTGCCCTAGCCCGGAATAGGTGTTCCAGAC", - "domains": [ - {"helix": 2, "forward": false, "start": 304, "end": 312}, - {"helix": 1, "forward": true, "start": 304, "end": 320}, - {"helix": 0, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#cc0000", - "sequence": "GAATCAAGCTCAGAGCCACCACCCTTGAGTAA", - "domains": [ - {"helix": 4, "forward": false, "start": 304, "end": 312}, - {"helix": 3, "forward": true, "start": 304, "end": 320}, - {"helix": 2, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#f7931e", - "sequence": "GAAGGAAAAATCAATAGAAAATTCTAGCGACA", - "domains": [ - {"helix": 6, "forward": false, "start": 304, "end": 312}, - {"helix": 5, "forward": true, "start": 304, "end": 320}, - {"helix": 4, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#f74308", - "sequence": "GCCTTAAAAAAAATGAAAATAGCAAGTTACCA", - "domains": [ - {"helix": 8, "forward": false, "start": 304, "end": 312}, - {"helix": 7, "forward": true, "start": 304, "end": 320}, - {"helix": 6, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#57bb00", - "sequence": "TGTAATTTATCCCATCCTAATTTAGTTTTGAA", - "domains": [ - {"helix": 10, "forward": false, "start": 304, "end": 312}, - {"helix": 9, "forward": true, "start": 304, "end": 320}, - {"helix": 8, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#888888", - "sequence": "CTTAGAATAAAGAACGCGAGAAAACGCCAACA", - "domains": [ - {"helix": 12, "forward": false, "start": 304, "end": 312}, - {"helix": 11, "forward": true, "start": 304, "end": 320}, - {"helix": 10, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#32b86c", - "sequence": "TTCATCAAGAGAAACAATAACGGAAATTTTCC", - "domains": [ - {"helix": 14, "forward": false, "start": 304, "end": 312}, - {"helix": 13, "forward": true, "start": 304, "end": 320}, - {"helix": 12, "forward": false, "start": 312, "end": 320} - ] - }, - { - "color": "#333333", - "sequence": "AACGATCTAAAGTTTTGTCGTCTTATCACC", - "domains": [ - {"helix": 0, "forward": false, "start": 320, "end": 344, "deletions": [321]}, - {"helix": 1, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#320096", - "sequence": "GTACTCAGAACGGGGTCAGTGCCTCAGAGC", - "domains": [ - {"helix": 1, "forward": true, "start": 328, "end": 336}, - {"helix": 2, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 3, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#03b6a2", - "sequence": "CGCCACCACAGCACCGTAATCAGATATGGT", - "domains": [ - {"helix": 3, "forward": true, "start": 328, "end": 336}, - {"helix": 4, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 5, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#7300de", - "sequence": "TTACCAGCCAGATAGCCGAACAAGCCTTTA", - "domains": [ - {"helix": 5, "forward": true, "start": 328, "end": 336}, - {"helix": 6, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 7, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#aaaa00", - "sequence": "CAGAGAGACCCGACTTGCGGGAGCGAGCAT", - "domains": [ - {"helix": 7, "forward": true, "start": 328, "end": 336}, - {"helix": 8, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 9, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#b8056c", - "sequence": "GTAGAAACCGCCATATTTAACAACTTTTTC", - "domains": [ - {"helix": 9, "forward": true, "start": 328, "end": 336}, - {"helix": 10, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 11, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#007200", - "sequence": "AAATATATTCGTCGCTATTAATTTTCGCCT", - "domains": [ - {"helix": 11, "forward": true, "start": 328, "end": 336}, - {"helix": 12, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 13, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#cc0000", - "sequence": "GATTGCTTTCCTGATTATCAGATTATCTTT", - "domains": [ - {"helix": 13, "forward": true, "start": 328, "end": 336}, - {"helix": 14, "forward": false, "start": 320, "end": 336, "deletions": [321]}, - {"helix": 15, "forward": true, "start": 320, "end": 328, "deletions": [321]} - ] - }, - { - "color": "#f7931e", - "sequence": "AGGAGCACTAACAACTAATAGATTGGAATTAT", - "domains": [ - {"helix": 15, "forward": true, "start": 328, "end": 352}, - {"helix": 14, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#f74308", - "sequence": "TAAGTTTTGAGGTTTAGTACCGCCGTTAGCGT", - "domains": [ - {"helix": 2, "forward": false, "start": 336, "end": 344}, - {"helix": 1, "forward": true, "start": 336, "end": 352}, - {"helix": 0, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#57bb00", - "sequence": "ATCGATAGGAACCACCACCAGAGCACTGGTAA", - "domains": [ - {"helix": 4, "forward": false, "start": 336, "end": 344}, - {"helix": 3, "forward": true, "start": 336, "end": 352}, - {"helix": 2, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#888888", - "sequence": "AAAGTAAGGCCAAAGACAAAAGGGATGAAACC", - "domains": [ - {"helix": 6, "forward": false, "start": 336, "end": 344}, - {"helix": 5, "forward": true, "start": 336, "end": 352}, - {"helix": 4, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#32b86c", - "sequence": "GCGAACCTATAACATAAAAACAGGTTTTAAGA", - "domains": [ - {"helix": 8, "forward": false, "start": 336, "end": 344}, - {"helix": 7, "forward": true, "start": 336, "end": 352}, - {"helix": 6, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#333333", - "sequence": "TTGAGAATCAATCAATAATCGGCTGCGTTTTA", - "domains": [ - {"helix": 10, "forward": false, "start": 336, "end": 344}, - {"helix": 9, "forward": true, "start": 336, "end": 352}, - {"helix": 8, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#320096", - "sequence": "TCTGTAAATTTAGTTAATTTCATCGGGCTTAA", - "domains": [ - {"helix": 12, "forward": false, "start": 336, "end": 344}, - {"helix": 11, "forward": true, "start": 336, "end": 352}, - {"helix": 10, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#03b6a2", - "sequence": "CATCATATTGAATACCAAGTTACAACCTTGCT", - "domains": [ - {"helix": 14, "forward": false, "start": 336, "end": 344}, - {"helix": 13, "forward": true, "start": 336, "end": 352}, - {"helix": 12, "forward": false, "start": 344, "end": 352} - ] - }, - { - "color": "#7300de", - "sequence": "GCATTCCACAGACAGCCCTCATAACCCTCAG", - "domains": [ - {"helix": 0, "forward": false, "start": 352, "end": 376, "deletions": [369]}, - {"helix": 1, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#aaaa00", - "sequence": "AACCGCCAGATGATACAGGAGTGTCGCCGCCA", - "domains": [ - {"helix": 1, "forward": true, "start": 360, "end": 368}, - {"helix": 2, "forward": false, "start": 352, "end": 368}, - {"helix": 3, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#b8056c", - "sequence": "GCATTGACGCCGGAAACGTCACCACGACATTC", - "domains": [ - {"helix": 3, "forward": true, "start": 360, "end": 368}, - {"helix": 4, "forward": false, "start": 352, "end": 368}, - {"helix": 5, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#007200", - "sequence": "AACCGATTATCTTACCGAAGCCCTGAAGCGCA", - "domains": [ - {"helix": 5, "forward": true, "start": 360, "end": 368}, - {"helix": 6, "forward": false, "start": 352, "end": 368}, - {"helix": 7, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#cc0000", - "sequence": "TTAGACGGATTCTAAGAACGCGAGGTCTTTCC", - "domains": [ - {"helix": 7, "forward": true, "start": 360, "end": 368}, - {"helix": 8, "forward": false, "start": 352, "end": 368}, - {"helix": 9, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#f7931e", - "sequence": "TTATCATTCCAACGCTCAACAGTATTCTGACC", - "domains": [ - {"helix": 9, "forward": true, "start": 360, "end": 368}, - {"helix": 10, "forward": false, "start": 352, "end": 368}, - {"helix": 11, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#f74308", - "sequence": "TAAATTTATATATGTGAGTGAATAAAATCGCG", - "domains": [ - {"helix": 11, "forward": true, "start": 360, "end": 368}, - {"helix": 12, "forward": false, "start": 352, "end": 368}, - {"helix": 13, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#57bb00", - "sequence": "CAGAGGCGAACCACCAGAAGGAGCAGAGCCGT", - "domains": [ - {"helix": 13, "forward": true, "start": 360, "end": 368}, - {"helix": 14, "forward": false, "start": 352, "end": 368}, - {"helix": 15, "forward": true, "start": 352, "end": 360} - ] - }, - { - "color": "#888888", - "sequence": "CAATAGATAATACATTTGAGGATTTTGCGGA", - "domains": [ - {"helix": 15, "forward": true, "start": 360, "end": 384, "deletions": [369]}, - {"helix": 14, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#32b86c", - "sequence": "GGCTTTTCCCTCAGAACCGCCACGCCTGTA", - "domains": [ - {"helix": 2, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 1, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 0, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#333333", - "sequence": "TAGCAAGAGGAGGTTGAGGCAGTCATACAT", - "domains": [ - {"helix": 4, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 3, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 2, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#320096", - "sequence": "AATAGCTGAGGGAGGGAAGGTAATTACCAT", - "domains": [ - {"helix": 6, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 5, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 4, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#03b6a2", - "sequence": "ATCCGGTGAGAATTAACTGAACGAAATAGC", - "domains": [ - {"helix": 8, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 7, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 6, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#7300de", - "sequence": "TATAAAGCCAAGAACGGGTATTGAAGGCTT", - "domains": [ - {"helix": 10, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 9, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 8, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#aaaa00", - "sequence": "AAATCAAATGGTTTGAAATACCCTTACCAG", - "domains": [ - {"helix": 12, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 11, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 10, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#b8056c", - "sequence": "ACAAAGAAATTATTCATTTCAACAGTACAT", - "domains": [ - {"helix": 14, "forward": false, "start": 368, "end": 376, "deletions": [369]}, - {"helix": 13, "forward": true, "start": 368, "end": 384, "deletions": [369]}, - {"helix": 12, "forward": false, "start": 376, "end": 384} - ] - }, - { - "color": "#007200", - "sequence": "TTTCGTCACCAGTACAAACTACAACCCTCAGA", - "domains": [ - {"helix": 0, "forward": false, "start": 384, "end": 408}, - {"helix": 1, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#cc0000", - "sequence": "GCCACCACACCGTTCCAGTAAGCGGTCAGACG", - "domains": [ - {"helix": 1, "forward": true, "start": 392, "end": 400}, - {"helix": 2, "forward": false, "start": 384, "end": 400}, - {"helix": 3, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#f7931e", - "sequence": "ATTGGCCTAATCACCAGTAGCACCAATATTGA", - "domains": [ - {"helix": 3, "forward": true, "start": 392, "end": 400}, - {"helix": 4, "forward": false, "start": 384, "end": 400}, - {"helix": 5, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#f74308", - "sequence": "CGGAAATTAAGAGCAAGAAACAATACCCTGAA", - "domains": [ - {"helix": 5, "forward": true, "start": 392, "end": 400}, - {"helix": 6, "forward": false, "start": 384, "end": 400}, - {"helix": 7, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#57bb00", - "sequence": "CAAAGTCAAAGCAAATCAGATATAAAACCAAG", - "domains": [ - {"helix": 7, "forward": true, "start": 392, "end": 400}, - {"helix": 8, "forward": false, "start": 384, "end": 400}, - {"helix": 9, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#888888", - "sequence": "TACCGCACATGCGTTATACAAATTGACCGTGT", - "domains": [ - {"helix": 9, "forward": true, "start": 392, "end": 400}, - {"helix": 10, "forward": false, "start": 384, "end": 400}, - {"helix": 11, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#32b86c", - "sequence": "GATAAATACCTTTTTTAATGGAAATTACCTGA", - "domains": [ - {"helix": 11, "forward": true, "start": 392, "end": 400}, - {"helix": 12, "forward": false, "start": 384, "end": 400}, - {"helix": 13, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#333333", - "sequence": "GCAAAAGATGAGTAACATTATCATTTAGAAGT", - "domains": [ - {"helix": 13, "forward": true, "start": 392, "end": 400}, - {"helix": 14, "forward": false, "start": 384, "end": 400}, - {"helix": 15, "forward": true, "start": 384, "end": 392} - ] - }, - { - "color": "#320096", - "sequence": "ATTAGACTTTACAAACAATTCGACATTAATTT", - "domains": [ - {"helix": 15, "forward": true, "start": 392, "end": 416}, - {"helix": 14, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#03b6a2", - "sequence": "CTGAATTTCCTCATTTTCAGGGATACACTGAG", - "domains": [ - {"helix": 2, "forward": false, "start": 400, "end": 408}, - {"helix": 1, "forward": true, "start": 400, "end": 416}, - {"helix": 0, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#7300de", - "sequence": "GCCAGCAATGATATTCACAAACAACGCAGTCT", - "domains": [ - {"helix": 4, "forward": false, "start": 400, "end": 408}, - {"helix": 3, "forward": true, "start": 400, "end": 416}, - {"helix": 2, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#aaaa00", - "sequence": "CCAATAATATTCATTAAAGGTGAAGAATTAGA", - "domains": [ - {"helix": 6, "forward": false, "start": 400, "end": 408}, - {"helix": 5, "forward": true, "start": 400, "end": 416}, - {"helix": 4, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#b8056c", - "sequence": "CCAATAGCGAGGGTAATTGAGCGCAGTTAAGC", - "domains": [ - {"helix": 8, "forward": false, "start": 400, "end": 408}, - {"helix": 7, "forward": true, "start": 400, "end": 416}, - {"helix": 6, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#007200", - "sequence": "AGTATCATTCATCGAGAACAAGCATACCGCGC", - "domains": [ - {"helix": 10, "forward": false, "start": 400, "end": 408}, - {"helix": 9, "forward": true, "start": 400, "end": 416}, - {"helix": 8, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#cc0000", - "sequence": "TTGAATTAAGGCGTTAAATAAGAAGCCTGTTT", - "domains": [ - {"helix": 12, "forward": false, "start": 400, "end": 408}, - {"helix": 11, "forward": true, "start": 400, "end": 416}, - {"helix": 10, "forward": false, "start": 408, "end": 416} - ] - }, - { - "color": "#f7931e", - "sequence": "TAAAAGTTAGATGATGAAACAAACAATTTCAT", - "domains": [ - {"helix": 14, "forward": false, "start": 400, "end": 408}, - {"helix": 13, "forward": true, "start": 400, "end": 416}, - {"helix": 12, "forward": false, "start": 408, "end": 416} - ] - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.dna b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.dna deleted file mode 100644 index b085f97d..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.dna +++ /dev/null @@ -1,36 +0,0 @@ -{ - "version": "0.9.9", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "AACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACG", - "domains": [ - {"helix": 1, "forward": false, "start": 0, "end": 16, "deletions": [12], "insertions": [[6, 3]]}, - {"helix": 0, "forward": true, "start": 0, "end": 32, "deletions": [11, 12, 24], "insertions": [[6, 1], [18, 2]]}, - {"helix": 1, "forward": false, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 4]]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GTTACGTTACGTTACGTTGTTACGTTACGTTAC", - "domains": [ - {"helix": 1, "forward": true, "start": 0, "end": 16, "deletions": [12], "insertions": [[6, 3]]}, - {"helix": 0, "forward": false, "start": 0, "end": 16, "deletions": [11, 12], "insertions": [[6, 1]]} - ] - }, - { - "color": "#57bb00", - "sequence": "ACGTTACGTTACGTTACCGTTACGTTACGTTACGTT", - "domains": [ - {"helix": 0, "forward": false, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 2]]}, - {"helix": 1, "forward": true, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 4]]} - ] - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.sc b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.sc deleted file mode 100644 index 9e593efa..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_deletions_insertions.sc +++ /dev/null @@ -1,36 +0,0 @@ -{ - "version": "0.10.1", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "AACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACG", - "domains": [ - {"helix": 1, "forward": false, "start": 0, "end": 16, "deletions": [12], "insertions": [[6, 3]]}, - {"helix": 0, "forward": true, "start": 0, "end": 32, "deletions": [11, 12, 24], "insertions": [[6, 1], [18, 2]]}, - {"helix": 1, "forward": false, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 4]]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GTTACGTTACGTTACGTTGTTACGTTACGTTAC", - "domains": [ - {"helix": 1, "forward": true, "start": 0, "end": 16, "deletions": [12], "insertions": [[6, 3]]}, - {"helix": 0, "forward": false, "start": 0, "end": 16, "deletions": [11, 12], "insertions": [[6, 1]]} - ] - }, - { - "color": "#57bb00", - "sequence": "ACGTTACGTTACGTTACCGTTACGTTACGTTACGTT", - "domains": [ - {"helix": 0, "forward": false, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 2]]}, - {"helix": 1, "forward": true, "start": 16, "end": 32, "deletions": [24], "insertions": [[18, 4]]} - ] - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.dna b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.dna deleted file mode 100644 index f1591484..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.dna +++ /dev/null @@ -1,17 +0,0 @@ -{ - "version": "0.9.9", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"max_offset": 32, "grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "domains": [ - {"helix": 0, "forward": true, "start": 0, "end": 32} - ], - "is_scaffold": true - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.sc b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.sc deleted file mode 100644 index 840ecd0c..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple.sc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "version": "0.10.1", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"max_offset": 32, "grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "domains": [ - {"helix": 0, "forward": true, "start": 0, "end": 32} - ], - "is_scaffold": true - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.dna b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.dna deleted file mode 100644 index 7672ed35..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.dna +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": "0.9.9", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "domains": [ - {"helix": 0, "forward": true, "start": 0, "end": 32}, - {"helix": 1, "forward": false, "start": 0, "end": 32} - ], - "is_scaffold": true - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.sc b/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.sc deleted file mode 100644 index 1659e30c..00000000 --- a/tests_inputs/cadnano_v2_export/test_2_stape_2_helix_origami_extremely_simple_2.sc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": "0.10.1", - "grid": "square", - "helices": [ - {"grid_position": [0, 0]}, - {"grid_position": [0, 1]} - ], - "strands": [ - { - "color": "#0066cc", - "domains": [ - {"helix": 0, "forward": true, "start": 0, "end": 32}, - {"helix": 1, "forward": false, "start": 0, "end": 32} - ], - "is_scaffold": true - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_6_helix_bundle_honeycomb.dna b/tests_inputs/cadnano_v2_export/test_6_helix_bundle_honeycomb.dna deleted file mode 100644 index 195c4ce1..00000000 --- a/tests_inputs/cadnano_v2_export/test_6_helix_bundle_honeycomb.dna +++ /dev/null @@ -1,1871 +0,0 @@ -{ - "version": "0.3.0", - "grid": "honeycomb", - "major_tick_distance": 7, - "helices": [ - {"max_offset": 1295, "grid_position": [1, 0]}, - {"max_offset": 1295, "grid_position": [0, 0]}, - {"max_offset": 1295, "grid_position": [0, 1]}, - {"max_offset": 1295, "grid_position": [1, 1]}, - {"max_offset": 1295, "grid_position": [2, 1]}, - {"max_offset": 1295, "grid_position": [2, 0]} - ], - "strands": [ - { - "color": "#7300de", - "sequence": "CATTTCTCCGAAGAGACGCATTTCACATGTGGGCCTTGAATC", - "domains": [ - {"helix": 3, "forward": true, "start": 56, "end": 70}, - {"helix": 2, "forward": false, "start": 56, "end": 70}, - {"helix": 1, "forward": true, "start": 56, "end": 70} - ] - }, - { - "color": "#32b86c", - "sequence": "ACGCTCGCCCTGCTCAATGTCCCGCCAAGAATTGTCAACCTT", - "domains": [ - {"helix": 2, "forward": false, "start": 70, "end": 84}, - {"helix": 3, "forward": true, "start": 70, "end": 84}, - {"helix": 4, "forward": false, "start": 70, "end": 84} - ] - }, - { - "color": "#f74308", - "sequence": "ATCTCTGACCTCCTAGTCGGGAAACCTGGCACGAATATAGTT", - "domains": [ - {"helix": 4, "forward": false, "start": 56, "end": 70}, - {"helix": 5, "forward": true, "start": 56, "end": 70}, - {"helix": 0, "forward": false, "start": 56, "end": 70} - ] - }, - { - "color": "#f7931e", - "sequence": "GGGAGTGACTCTATCAACTCGTCGGTGGTCGTGCCAGCTGCA", - "domains": [ - {"helix": 1, "forward": true, "start": 70, "end": 84}, - {"helix": 0, "forward": false, "start": 70, "end": 84}, - {"helix": 5, "forward": true, "start": 70, "end": 84} - ] - }, - { - "color": "#b8056c", - "sequence": "TGTGAATTCATGGGGATGTTCTTCTAAGGGAGGAGAAGCCAG", - "domains": [ - {"helix": 3, "forward": true, "start": 98, "end": 112}, - {"helix": 2, "forward": false, "start": 98, "end": 112}, - {"helix": 1, "forward": true, "start": 98, "end": 112} - ] - }, - { - "color": "#320096", - "sequence": "GCTGCAAGGCGATGCCTCTTCGCTATTAAAGGGCGATCGGTG", - "domains": [ - {"helix": 2, "forward": false, "start": 112, "end": 126}, - {"helix": 3, "forward": true, "start": 112, "end": 126}, - {"helix": 4, "forward": false, "start": 112, "end": 126} - ] - }, - { - "color": "#888888", - "sequence": "CGCGCACGACTTAAAACGCGCGGGGAGACCAAGCTTTCTCCC", - "domains": [ - {"helix": 4, "forward": false, "start": 98, "end": 112}, - {"helix": 5, "forward": true, "start": 98, "end": 112}, - {"helix": 0, "forward": false, "start": 98, "end": 112} - ] - }, - { - "color": "#57bb00", - "sequence": "GGTTAAGTTGGGTAAACGACGGCCAGTGGGCGGTTTGCGTAT", - "domains": [ - {"helix": 1, "forward": true, "start": 112, "end": 126}, - {"helix": 0, "forward": false, "start": 112, "end": 126}, - {"helix": 5, "forward": true, "start": 112, "end": 126} - ] - }, - { - "color": "#cc0000", - "sequence": "AAAGCGCCATTCCGTGGTGCCGGAAACCCCTTTCCGGCACCG", - "domains": [ - {"helix": 3, "forward": true, "start": 140, "end": 154}, - {"helix": 2, "forward": false, "start": 140, "end": 154}, - {"helix": 1, "forward": true, "start": 140, "end": 154} - ] - }, - { - "color": "#7300de", - "sequence": "ATGGGCGCATCGTCGCGGATTGACCGTATCTCCGTGGGAACA", - "domains": [ - {"helix": 2, "forward": false, "start": 154, "end": 168}, - {"helix": 3, "forward": true, "start": 154, "end": 168}, - {"helix": 4, "forward": false, "start": 154, "end": 168} - ] - }, - { - "color": "#333333", - "sequence": "AAGCCATTCAGGCTGTTTTTCTTTTCACACTCCAGCCAGCAG", - "domains": [ - {"helix": 4, "forward": false, "start": 140, "end": 154}, - {"helix": 5, "forward": true, "start": 140, "end": 154}, - {"helix": 0, "forward": false, "start": 140, "end": 154} - ] - }, - { - "color": "#32b86c", - "sequence": "CTTAACCGTGCATCCTCAGGAAGATCGCCAGTGAGACGGGCA", - "domains": [ - {"helix": 1, "forward": true, "start": 154, "end": 168}, - {"helix": 0, "forward": false, "start": 154, "end": 168}, - {"helix": 5, "forward": true, "start": 154, "end": 168} - ] - }, - { - "color": "#f74308", - "sequence": "ATCAACATTAAACCTTCCTGTAGCCAGCGATAATTCGCGTCT", - "domains": [ - {"helix": 3, "forward": true, "start": 182, "end": 196}, - {"helix": 2, "forward": false, "start": 182, "end": 196}, - {"helix": 1, "forward": true, "start": 182, "end": 196} - ] - }, - { - "color": "#b8056c", - "sequence": "AAACGTTAATATCCAAAAACAGGAAGATGATAATCAGAAAAG", - "domains": [ - {"helix": 2, "forward": false, "start": 196, "end": 210}, - {"helix": 3, "forward": true, "start": 196, "end": 210}, - {"helix": 4, "forward": false, "start": 196, "end": 210} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCTGTGAGCGAGTATTCACCGCCTGGCCCGCCATCAAAAACG", - "domains": [ - {"helix": 4, "forward": false, "start": 182, "end": 196}, - {"helix": 5, "forward": true, "start": 182, "end": 196}, - {"helix": 0, "forward": false, "start": 182, "end": 196} - ] - }, - { - "color": "#320096", - "sequence": "GGTTTGTTAAAATTTTAACCAATAGGAACTGAGAGAGTTGCA", - "domains": [ - {"helix": 1, "forward": true, "start": 196, "end": 210}, - {"helix": 0, "forward": false, "start": 196, "end": 210}, - {"helix": 5, "forward": true, "start": 196, "end": 210} - ] - }, - { - "color": "#888888", - "sequence": "ATCGTAAAACTAAAGAGAATCGATGAACGTAGTCTGGAGCAA", - "domains": [ - {"helix": 3, "forward": true, "start": 224, "end": 238}, - {"helix": 2, "forward": false, "start": 224, "end": 238}, - {"helix": 1, "forward": true, "start": 224, "end": 238} - ] - }, - { - "color": "#cc0000", - "sequence": "AACCGTTCTAGCAAAGGCCGGAGACAGTGATTCAAAAGGGTG", - "domains": [ - {"helix": 2, "forward": false, "start": 238, "end": 252}, - {"helix": 3, "forward": true, "start": 238, "end": 252}, - {"helix": 4, "forward": false, "start": 238, "end": 252} - ] - }, - { - "color": "#aaaa00", - "sequence": "AGGCATGTCAATCACTGGTTTGCCCCAGTCATTGCCTGAGTA", - "domains": [ - {"helix": 4, "forward": false, "start": 224, "end": 238}, - {"helix": 5, "forward": true, "start": 224, "end": 238}, - {"helix": 0, "forward": false, "start": 224, "end": 238} - ] - }, - { - "color": "#7300de", - "sequence": "ACTGATAAATTAATCAAAGGCTATCAGGCAGGCGAAAATCCT", - "domains": [ - {"helix": 1, "forward": true, "start": 238, "end": 252}, - {"helix": 0, "forward": false, "start": 238, "end": 252}, - {"helix": 5, "forward": true, "start": 238, "end": 252} - ] - }, - { - "color": "#333333", - "sequence": "ATATTTTAAATGAAAATTTTTAGAACCCCTTCAACGCAAGGA", - "domains": [ - {"helix": 3, "forward": true, "start": 266, "end": 280}, - {"helix": 2, "forward": false, "start": 266, "end": 280}, - {"helix": 1, "forward": true, "start": 266, "end": 280} - ] - }, - { - "color": "#f74308", - "sequence": "TAAAGCCTCAGAAATCATACAGGCAAGGGCATTAACATCCAA", - "domains": [ - {"helix": 2, "forward": false, "start": 280, "end": 294}, - {"helix": 3, "forward": true, "start": 280, "end": 294}, - {"helix": 4, "forward": false, "start": 280, "end": 294} - ] - }, - { - "color": "#007200", - "sequence": "TACAATGCCTGAGTCCGAAATCGGCAAAGAAGCCTTTATTAT", - "domains": [ - {"helix": 4, "forward": false, "start": 266, "end": 280}, - {"helix": 5, "forward": true, "start": 266, "end": 280}, - {"helix": 0, "forward": false, "start": 266, "end": 280} - ] - }, - { - "color": "#b8056c", - "sequence": "TAGCATAAAGCTAAATACTTTTGCGGGAATCCCTTATAAATC", - "domains": [ - {"helix": 1, "forward": true, "start": 280, "end": 294}, - {"helix": 0, "forward": false, "start": 280, "end": 294}, - {"helix": 5, "forward": true, "start": 280, "end": 294} - ] - }, - { - "color": "#03b6a2", - "sequence": "GAGCTGAAAAGGCATATTTTCATTTGGGAAATAACCTGTTTA", - "domains": [ - {"helix": 3, "forward": true, "start": 308, "end": 322}, - {"helix": 2, "forward": false, "start": 308, "end": 322}, - {"helix": 1, "forward": true, "start": 308, "end": 322} - ] - }, - { - "color": "#888888", - "sequence": "TTCATTCCATATTATGTTTTAAATATGCTAATGCTGTAGCTC", - "domains": [ - {"helix": 2, "forward": false, "start": 322, "end": 336}, - {"helix": 3, "forward": true, "start": 322, "end": 336}, - {"helix": 4, "forward": false, "start": 322, "end": 336} - ] - }, - { - "color": "#f7931e", - "sequence": "AATGGCATCAATTCAGATAGGGTTGAGTCGCAAATGGTCAAC", - "domains": [ - {"helix": 4, "forward": false, "start": 308, "end": 322}, - {"helix": 5, "forward": true, "start": 308, "end": 322}, - {"helix": 0, "forward": false, "start": 308, "end": 322} - ] - }, - { - "color": "#cc0000", - "sequence": "GCAACAGTTGATTCCATTAGATACATTTGTTGTTCCAGTTTG", - "domains": [ - {"helix": 1, "forward": true, "start": 322, "end": 336}, - {"helix": 0, "forward": false, "start": 322, "end": 336}, - {"helix": 5, "forward": true, "start": 322, "end": 336} - ] - }, - { - "color": "#aaaa00", - "sequence": "TCATTTTTGCGGCAGCTCCTTTTGATAAGAGAGAGTACCTTT", - "domains": [ - {"helix": 3, "forward": true, "start": 350, "end": 364}, - {"helix": 2, "forward": false, "start": 350, "end": 364}, - {"helix": 1, "forward": true, "start": 350, "end": 364} - ] - }, - { - "color": "#333333", - "sequence": "CCCGAAAGACTTTTGAAGCAAAGCGGATCCCTGACTATTATA", - "domains": [ - {"helix": 2, "forward": false, "start": 364, "end": 378}, - {"helix": 3, "forward": true, "start": 364, "end": 378}, - {"helix": 4, "forward": false, "start": 364, "end": 378} - ] - }, - { - "color": "#57bb00", - "sequence": "GTATGGCTTAGAGCTATTAAAGAACGTGAGGTCAGGATTAGT", - "domains": [ - {"helix": 4, "forward": false, "start": 350, "end": 364}, - {"helix": 5, "forward": true, "start": 350, "end": 364}, - {"helix": 0, "forward": false, "start": 350, "end": 364} - ] - }, - { - "color": "#f74308", - "sequence": "AACAAATATCGCGTAAGCAAACTCCAACGACTCCAACGTCAA", - "domains": [ - {"helix": 1, "forward": true, "start": 364, "end": 378}, - {"helix": 0, "forward": false, "start": 364, "end": 378}, - {"helix": 5, "forward": true, "start": 364, "end": 378} - ] - }, - { - "color": "#007200", - "sequence": "AAAACGAGAATGCCATGCTTTAAACAGTCAATTGAATCCCCC", - "domains": [ - {"helix": 3, "forward": true, "start": 392, "end": 406}, - {"helix": 2, "forward": false, "start": 392, "end": 406}, - {"helix": 1, "forward": true, "start": 392, "end": 406} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAAAGAAGTTTTAAAGACGACGATAAAATCATAACCCTCGTT", - "domains": [ - {"helix": 2, "forward": false, "start": 406, "end": 420}, - {"helix": 3, "forward": true, "start": 406, "end": 420}, - {"helix": 4, "forward": false, "start": 406, "end": 420} - ] - }, - { - "color": "#32b86c", - "sequence": "TAACCATAAATCAATCTATCAGGGCGATTCATAAATATTCAA", - "domains": [ - {"helix": 4, "forward": false, "start": 392, "end": 406}, - {"helix": 5, "forward": true, "start": 392, "end": 406}, - {"helix": 0, "forward": false, "start": 392, "end": 406} - ] - }, - { - "color": "#888888", - "sequence": "TCGCCAGAGGGGGTATACTGCGGAATCGGGCCCACTACGTGA", - "domains": [ - {"helix": 1, "forward": true, "start": 406, "end": 420}, - {"helix": 0, "forward": false, "start": 406, "end": 420}, - {"helix": 5, "forward": true, "start": 406, "end": 420} - ] - }, - { - "color": "#f7931e", - "sequence": "GCCAAAAGGAATATCTAATGCAGATACATAGGAATACCACAT", - "domains": [ - {"helix": 3, "forward": true, "start": 434, "end": 448}, - {"helix": 2, "forward": false, "start": 434, "end": 448}, - {"helix": 1, "forward": true, "start": 434, "end": 448} - ] - }, - { - "color": "#aaaa00", - "sequence": "TTGGGAAGAAAAAAGCGATTTTAAGAACCATTGTGAATTACC", - "domains": [ - {"helix": 2, "forward": false, "start": 448, "end": 462}, - {"helix": 3, "forward": true, "start": 448, "end": 462}, - {"helix": 4, "forward": false, "start": 448, "end": 462} - ] - }, - { - "color": "#320096", - "sequence": "TTTACGAGGCATAGCAAGTTTTTTGGGGAGTTGAGATTTAGA", - "domains": [ - {"helix": 4, "forward": false, "start": 434, "end": 448}, - {"helix": 5, "forward": true, "start": 434, "end": 448}, - {"helix": 0, "forward": false, "start": 434, "end": 448} - ] - }, - { - "color": "#333333", - "sequence": "TCATCTACGTTAATTAGAAAGATTCATCTCGAGGTGCCGTAA", - "domains": [ - {"helix": 1, "forward": true, "start": 448, "end": 462}, - {"helix": 0, "forward": false, "start": 448, "end": 462}, - {"helix": 5, "forward": true, "start": 448, "end": 462} - ] - }, - { - "color": "#57bb00", - "sequence": "GTAAATTGGGCTGAGAAACACCAGAACGGAAGGCTTGCCCTG", - "domains": [ - {"helix": 3, "forward": true, "start": 476, "end": 490}, - {"helix": 2, "forward": false, "start": 476, "end": 490}, - {"helix": 1, "forward": true, "start": 476, "end": 490} - ] - }, - { - "color": "#007200", - "sequence": "GACCTTCATCAAGACAGATGAACGGTGTACCAACTTTGAAAG", - "domains": [ - {"helix": 2, "forward": false, "start": 490, "end": 504}, - {"helix": 3, "forward": true, "start": 490, "end": 504}, - {"helix": 4, "forward": false, "start": 490, "end": 504} - ] - }, - { - "color": "#7300de", - "sequence": "AGTGAGATGGTTTAACCCTAAAGGGAGCATTCAGTGAATAAC", - "domains": [ - {"helix": 4, "forward": false, "start": 476, "end": 490}, - {"helix": 5, "forward": true, "start": 476, "end": 490}, - {"helix": 0, "forward": false, "start": 476, "end": 490} - ] - }, - { - "color": "#03b6a2", - "sequence": "ACGAGTAATCTTGATAACAAAGCTGCTCCCCCGATTTAGAGC", - "domains": [ - {"helix": 1, "forward": true, "start": 490, "end": 504}, - {"helix": 0, "forward": false, "start": 490, "end": 504}, - {"helix": 5, "forward": true, "start": 490, "end": 504} - ] - }, - { - "color": "#32b86c", - "sequence": "ACGAGGCGCAGACACCATGTTACTTAGCTCAAATCCGCGACC", - "domains": [ - {"helix": 3, "forward": true, "start": 518, "end": 532}, - {"helix": 2, "forward": false, "start": 518, "end": 532}, - {"helix": 1, "forward": true, "start": 518, "end": 532} - ] - }, - { - "color": "#f7931e", - "sequence": "TCATCTTTGACCCTACCTAAAACGAAAGGCCACTACGAAGGC", - "domains": [ - {"helix": 2, "forward": false, "start": 532, "end": 546}, - {"helix": 3, "forward": true, "start": 532, "end": 546}, - {"helix": 4, "forward": false, "start": 532, "end": 546} - ] - }, - { - "color": "#b8056c", - "sequence": "ACCGGTCAATCATACGGCGAACGTGGCGTAAATTGTGTCGAT", - "domains": [ - {"helix": 4, "forward": false, "start": 518, "end": 532}, - {"helix": 5, "forward": true, "start": 518, "end": 532}, - {"helix": 0, "forward": false, "start": 518, "end": 532} - ] - }, - { - "color": "#aaaa00", - "sequence": "TGCCCAGCGATTATGTATCATCGCCTGAAGAAAGGAAGGGAA", - "domains": [ - {"helix": 1, "forward": true, "start": 532, "end": 546}, - {"helix": 0, "forward": false, "start": 532, "end": 546}, - {"helix": 5, "forward": true, "start": 532, "end": 546} - ] - }, - { - "color": "#320096", - "sequence": "CATGAGGAAGTTAAGAGGACTAAAGACTAACGGCTACAGAGG", - "domains": [ - {"helix": 3, "forward": true, "start": 560, "end": 574}, - {"helix": 2, "forward": false, "start": 560, "end": 574}, - {"helix": 1, "forward": true, "start": 560, "end": 574} - ] - }, - { - "color": "#57bb00", - "sequence": "GAGGCTTGCAGGTTCAACCATCGCCCACTTGCGCCGACAATG", - "domains": [ - {"helix": 2, "forward": false, "start": 574, "end": 588}, - {"helix": 3, "forward": true, "start": 574, "end": 588}, - {"helix": 4, "forward": false, "start": 574, "end": 588} - ] - }, - { - "color": "#cc0000", - "sequence": "ACTCCATTAAACGGCGGGCGCTAGGGCGCGAGGGTAGCAAAG", - "domains": [ - {"helix": 4, "forward": false, "start": 560, "end": 574}, - {"helix": 5, "forward": true, "start": 560, "end": 574}, - {"helix": 0, "forward": false, "start": 560, "end": 574} - ] - }, - { - "color": "#007200", - "sequence": "CTGAGTTAAAGGCCAGACAGCATCGGAACTGGCAAGTGTAGC", - "domains": [ - {"helix": 1, "forward": true, "start": 574, "end": 588}, - {"helix": 0, "forward": false, "start": 574, "end": 588}, - {"helix": 5, "forward": true, "start": 574, "end": 588} - ] - }, - { - "color": "#7300de", - "sequence": "TTTCGAGGTGAAGTATCGGTTTATCAGCGTAGGAGCCTTTAA", - "domains": [ - {"helix": 3, "forward": true, "start": 602, "end": 616}, - {"helix": 2, "forward": false, "start": 602, "end": 616}, - {"helix": 1, "forward": true, "start": 602, "end": 616} - ] - }, - { - "color": "#32b86c", - "sequence": "AGTGAGAATAGAGTATGGGATTTTGCTAAGTAAATGAATTTT", - "domains": [ - {"helix": 2, "forward": false, "start": 616, "end": 630}, - {"helix": 3, "forward": true, "start": 616, "end": 630}, - {"helix": 4, "forward": false, "start": 616, "end": 630} - ] - }, - { - "color": "#f74308", - "sequence": "CTTTTCTTAAACAGTAACCACCACACCCAAAGGCTCCAAACA", - "domains": [ - {"helix": 4, "forward": false, "start": 602, "end": 616}, - {"helix": 5, "forward": true, "start": 602, "end": 616}, - {"helix": 0, "forward": false, "start": 602, "end": 616} - ] - }, - { - "color": "#f7931e", - "sequence": "TTAAGGAACAACTAAAAATCTCCAAAAAGCCGCGCTTAATGC", - "domains": [ - {"helix": 1, "forward": true, "start": 616, "end": 630}, - {"helix": 0, "forward": false, "start": 616, "end": 630}, - {"helix": 5, "forward": true, "start": 616, "end": 630} - ] - }, - { - "color": "#b8056c", - "sequence": "GCGTAACGATCTTCAGACAGCCCTCATAAAGCCTGTAGCATT", - "domains": [ - {"helix": 3, "forward": true, "start": 644, "end": 658}, - {"helix": 2, "forward": false, "start": 644, "end": 658}, - {"helix": 1, "forward": true, "start": 644, "end": 658} - ] - }, - { - "color": "#320096", - "sequence": "CACCCTCATTTTACAGAACCGCCACCCTTTTAGTACCGCCAC", - "domains": [ - {"helix": 2, "forward": false, "start": 658, "end": 672}, - {"helix": 3, "forward": true, "start": 658, "end": 672}, - {"helix": 4, "forward": false, "start": 658, "end": 672} - ] - }, - { - "color": "#888888", - "sequence": "CCAAAGTTTTGTCGCGTACTATGGTTGCACAAACTACAACTA", - "domains": [ - {"helix": 4, "forward": false, "start": 644, "end": 658}, - {"helix": 5, "forward": true, "start": 644, "end": 658}, - {"helix": 0, "forward": false, "start": 644, "end": 658} - ] - }, - { - "color": "#57bb00", - "sequence": "CCCAGGGATAGCAAGTTTCGTCACCAGTTTTGACGAGCACGT", - "domains": [ - {"helix": 1, "forward": true, "start": 658, "end": 672}, - {"helix": 0, "forward": false, "start": 658, "end": 672}, - {"helix": 5, "forward": true, "start": 658, "end": 672} - ] - }, - { - "color": "#cc0000", - "sequence": "GTATAGCCCGGACCTCGAGAGGGTTGATCAAGGCGGATAAGT", - "domains": [ - {"helix": 3, "forward": true, "start": 686, "end": 700}, - {"helix": 2, "forward": false, "start": 686, "end": 700}, - {"helix": 1, "forward": true, "start": 686, "end": 700} - ] - }, - { - "color": "#7300de", - "sequence": "TATTATTCTGAACGCGTATAAACAGTTAGCCTTGAGTAACAG", - "domains": [ - {"helix": 2, "forward": false, "start": 700, "end": 714}, - {"helix": 3, "forward": true, "start": 700, "end": 714}, - {"helix": 4, "forward": false, "start": 700, "end": 714} - ] - }, - { - "color": "#333333", - "sequence": "TGATAGGTGTATCATCGTTAGAATCAGATTGCTCAGTACCTG", - "domains": [ - {"helix": 4, "forward": false, "start": 686, "end": 700}, - {"helix": 5, "forward": true, "start": 686, "end": 700}, - {"helix": 0, "forward": false, "start": 686, "end": 700} - ] - }, - { - "color": "#32b86c", - "sequence": "GCACATGAAAGTATGGATTAGCGGGGTTGCGGGAGCTAAACA", - "domains": [ - {"helix": 1, "forward": true, "start": 700, "end": 714}, - {"helix": 0, "forward": false, "start": 700, "end": 714}, - {"helix": 5, "forward": true, "start": 700, "end": 714} - ] - }, - { - "color": "#f74308", - "sequence": "ACAGGAGTGTACCCTACATGGCTTTTGATCGTTCCAGTAAGC", - "domains": [ - {"helix": 3, "forward": true, "start": 728, "end": 742}, - {"helix": 2, "forward": false, "start": 728, "end": 742}, - {"helix": 1, "forward": true, "start": 728, "end": 742} - ] - }, - { - "color": "#b8056c", - "sequence": "GGTCAGACGATTCAACCAGAGCCGCCGCGCCGCCACCAGAAC", - "domains": [ - {"helix": 2, "forward": false, "start": 742, "end": 756}, - {"helix": 3, "forward": true, "start": 742, "end": 756}, - {"helix": 4, "forward": false, "start": 742, "end": 756} - ] - }, - { - "color": "#03b6a2", - "sequence": "CATGGTAATAAGTTGGGATTTTAGACAGTCTGAATTTACCCT", - "domains": [ - {"helix": 4, "forward": false, "start": 728, "end": 742}, - {"helix": 5, "forward": true, "start": 728, "end": 742}, - {"helix": 0, "forward": false, "start": 728, "end": 742} - ] - }, - { - "color": "#320096", - "sequence": "GTGGCCTTGATATTTGGAAAGCGCAGTCGAACGGTACGCCAG", - "domains": [ - {"helix": 1, "forward": true, "start": 742, "end": 756}, - {"helix": 0, "forward": false, "start": 742, "end": 756}, - {"helix": 5, "forward": true, "start": 742, "end": 756} - ] - }, - { - "color": "#888888", - "sequence": "CCCTCAGAACCGGTCCTCCCTCAGAGCCTCGCCACCACCGGA", - "domains": [ - {"helix": 3, "forward": true, "start": 770, "end": 784}, - {"helix": 2, "forward": false, "start": 770, "end": 784}, - {"helix": 1, "forward": true, "start": 770, "end": 784} - ] - }, - { - "color": "#cc0000", - "sequence": "GCGCGTTTTCATCGAGCGACAGAATCAAAGCAGCACCGTAAT", - "domains": [ - {"helix": 2, "forward": false, "start": 784, "end": 798}, - {"helix": 3, "forward": true, "start": 784, "end": 798}, - {"helix": 4, "forward": false, "start": 784, "end": 798} - ] - }, - { - "color": "#aaaa00", - "sequence": "CACCACCCTCAGAGTTTTTATAATCAGTACCGGAACCAGACT", - "domains": [ - {"helix": 4, "forward": false, "start": 770, "end": 784}, - {"helix": 5, "forward": true, "start": 770, "end": 784}, - {"helix": 0, "forward": false, "start": 770, "end": 784} - ] - }, - { - "color": "#7300de", - "sequence": "ACCGGCATTTTCGGTCATAATCAAAATCGAGGCCACCGAGTA", - "domains": [ - {"helix": 1, "forward": true, "start": 784, "end": 798}, - {"helix": 0, "forward": false, "start": 784, "end": 798}, - {"helix": 5, "forward": true, "start": 784, "end": 798} - ] - }, - { - "color": "#333333", - "sequence": "TTAGCAAGGCCGTTCCAGTAGCACCATTTTAGAGCCAGCAAA", - "domains": [ - {"helix": 3, "forward": true, "start": 812, "end": 826}, - {"helix": 2, "forward": false, "start": 812, "end": 826}, - {"helix": 1, "forward": true, "start": 812, "end": 826} - ] - }, - { - "color": "#f74308", - "sequence": "GAGGGAGGGAAGCAACCAGCGCCAAAGAAGAAAATTCATATG", - "domains": [ - {"helix": 2, "forward": false, "start": 826, "end": 840}, - {"helix": 3, "forward": true, "start": 826, "end": 840}, - {"helix": 4, "forward": false, "start": 826, "end": 840} - ] - }, - { - "color": "#007200", - "sequence": "GTGAAACGTCACCATCACGCAAATTAACCATTTGGGAATTAG", - "domains": [ - {"helix": 4, "forward": false, "start": 812, "end": 826}, - {"helix": 5, "forward": true, "start": 812, "end": 826}, - {"helix": 0, "forward": false, "start": 812, "end": 826} - ] - }, - { - "color": "#b8056c", - "sequence": "ATGTAAATATTGACTCACCGACTTGAGCCGTTGTAGCAATAC", - "domains": [ - {"helix": 1, "forward": true, "start": 826, "end": 840}, - {"helix": 0, "forward": false, "start": 826, "end": 840}, - {"helix": 5, "forward": true, "start": 826, "end": 840} - ] - }, - { - "color": "#03b6a2", - "sequence": "AAGACACCACGGCAACATATAAAAGAAAAAATACATAAAGGT", - "domains": [ - {"helix": 3, "forward": true, "start": 854, "end": 868}, - {"helix": 2, "forward": false, "start": 854, "end": 868}, - {"helix": 1, "forward": true, "start": 854, "end": 868} - ] - }, - { - "color": "#888888", - "sequence": "CGCAATAATAACCAGATAGCCGAACAAATTTTAAGAAAAGTA", - "domains": [ - {"helix": 2, "forward": false, "start": 868, "end": 882}, - {"helix": 3, "forward": true, "start": 868, "end": 882}, - {"helix": 4, "forward": false, "start": 868, "end": 882} - ] - }, - { - "color": "#f7931e", - "sequence": "AGAATAAGTTTATTATAACATCACTTGCCGTAGAAAATACAG", - "domains": [ - {"helix": 4, "forward": false, "start": 854, "end": 868}, - {"helix": 5, "forward": true, "start": 854, "end": 868}, - {"helix": 0, "forward": false, "start": 854, "end": 868} - ] - }, - { - "color": "#cc0000", - "sequence": "GGGGAATACCCAAAAGTATGTTAGCAAACTGAGTAGAAGAAC", - "domains": [ - {"helix": 1, "forward": true, "start": 868, "end": 882}, - {"helix": 0, "forward": false, "start": 868, "end": 882}, - {"helix": 5, "forward": true, "start": 868, "end": 882} - ] - }, - { - "color": "#aaaa00", - "sequence": "AAACAATGAAATAACCCAATAATAAGAGTACAAGAATTGAGT", - "domains": [ - {"helix": 3, "forward": true, "start": 896, "end": 910}, - {"helix": 2, "forward": false, "start": 896, "end": 910}, - {"helix": 1, "forward": true, "start": 896, "end": 910} - ] - }, - { - "color": "#333333", - "sequence": "AGCGCATTAGACAGTAGCAGCCTTTACATAACGTCAAAAATG", - "domains": [ - {"helix": 2, "forward": false, "start": 910, "end": 924}, - {"helix": 3, "forward": true, "start": 910, "end": 924}, - {"helix": 4, "forward": false, "start": 910, "end": 924} - ] - }, - { - "color": "#57bb00", - "sequence": "AAAGCAATAGCTATTTGCTGGTAATATCAGAGATAACCCAAG", - "domains": [ - {"helix": 4, "forward": false, "start": 896, "end": 910}, - {"helix": 5, "forward": true, "start": 896, "end": 910}, - {"helix": 0, "forward": false, "start": 896, "end": 910} - ] - }, - { - "color": "#f74308", - "sequence": "TAGGGAGAATTAACAGCGCTAATATCAGCAGAACAATATTAC", - "domains": [ - {"helix": 1, "forward": true, "start": 910, "end": 924}, - {"helix": 0, "forward": false, "start": 910, "end": 924}, - {"helix": 5, "forward": true, "start": 910, "end": 924} - ] - }, - { - "color": "#007200", - "sequence": "TTATTTATCCCAGTACAAAATAAACAGCAAGCCTAATTTGCC", - "domains": [ - {"helix": 3, "forward": true, "start": 938, "end": 952}, - {"helix": 2, "forward": false, "start": 938, "end": 952}, - {"helix": 1, "forward": true, "start": 938, "end": 952} - ] - }, - { - "color": "#03b6a2", - "sequence": "TTAAATCAAGATTTTTTAGCGAACCTCCTCTAAGAACGCGAG", - "domains": [ - {"helix": 2, "forward": false, "start": 952, "end": 966}, - {"helix": 3, "forward": true, "start": 952, "end": 966}, - {"helix": 4, "forward": false, "start": 952, "end": 966} - ] - }, - { - "color": "#32b86c", - "sequence": "GCATCCAAATAAGAACAGGAAAAACGCTCGTCTTTCCAGAAG", - "domains": [ - {"helix": 4, "forward": false, "start": 938, "end": 952}, - {"helix": 5, "forward": true, "start": 938, "end": 952}, - {"helix": 0, "forward": false, "start": 938, "end": 952} - ] - }, - { - "color": "#888888", - "sequence": "AGTAGTTGCTATTTCCAACGCTAACGAGCATGGAAATACCTA", - "domains": [ - {"helix": 1, "forward": true, "start": 952, "end": 966}, - {"helix": 0, "forward": false, "start": 952, "end": 966}, - {"helix": 5, "forward": true, "start": 952, "end": 966} - ] - }, - { - "color": "#f7931e", - "sequence": "ATAGCAAGCAAAATGAATCATTACCGCGATTTTATTTTCATC", - "domains": [ - {"helix": 3, "forward": true, "start": 980, "end": 994}, - {"helix": 2, "forward": false, "start": 980, "end": 994}, - {"helix": 1, "forward": true, "start": 980, "end": 994} - ] - }, - { - "color": "#aaaa00", - "sequence": "CAATAATCGGCTAGAATATCCCATCCTAGTCCTGAACAAGAA", - "domains": [ - {"helix": 2, "forward": false, "start": 994, "end": 1008}, - {"helix": 3, "forward": true, "start": 994, "end": 1008}, - {"helix": 4, "forward": false, "start": 994, "end": 1008} - ] - }, - { - "color": "#320096", - "sequence": "AATCAGATATAGAAATCGTCTGAAATGGAAGCAAGCCGTTTT", - "domains": [ - {"helix": 4, "forward": false, "start": 980, "end": 994}, - {"helix": 5, "forward": true, "start": 980, "end": 994}, - {"helix": 0, "forward": false, "start": 980, "end": 994} - ] - }, - { - "color": "#333333", - "sequence": "GTGTCTTTCCTTATCACTCATCGAGAACATTATTTACATTGG", - "domains": [ - {"helix": 1, "forward": true, "start": 994, "end": 1008}, - {"helix": 0, "forward": false, "start": 994, "end": 1008}, - {"helix": 5, "forward": true, "start": 994, "end": 1008} - ] - }, - { - "color": "#57bb00", - "sequence": "GCTAATGCAGAACGCAATAAACAACATGGTTCTGTCCAGACG", - "domains": [ - {"helix": 3, "forward": true, "start": 1022, "end": 1036}, - {"helix": 2, "forward": false, "start": 1022, "end": 1036}, - {"helix": 1, "forward": true, "start": 1022, "end": 1036} - ] - }, - { - "color": "#007200", - "sequence": "CAACGCCAACATGACTCAACAGTAGGGCACCAGTATAAAGCC", - "domains": [ - {"helix": 2, "forward": false, "start": 1036, "end": 1050}, - {"helix": 3, "forward": true, "start": 1036, "end": 1050}, - {"helix": 4, "forward": false, "start": 1036, "end": 1050} - ] - }, - { - "color": "#7300de", - "sequence": "AACGCGCCTGTTTAACACGACCAGTAATAGGTAAAGTAATAT", - "domains": [ - {"helix": 4, "forward": false, "start": 1022, "end": 1036}, - {"helix": 5, "forward": true, "start": 1022, "end": 1036}, - {"helix": 0, "forward": false, "start": 1022, "end": 1036} - ] - }, - { - "color": "#03b6a2", - "sequence": "ACGTAATTTAGGCAAAAGTACCGACAAAAAAAGGGACATTCT", - "domains": [ - {"helix": 1, "forward": true, "start": 1036, "end": 1050}, - {"helix": 0, "forward": false, "start": 1036, "end": 1050}, - {"helix": 5, "forward": true, "start": 1036, "end": 1050} - ] - }, - { - "color": "#32b86c", - "sequence": "AAAGCCTGTTTAGCGAATCATAATTACTCCATAAGAATAAAC", - "domains": [ - {"helix": 3, "forward": true, "start": 1064, "end": 1078}, - {"helix": 2, "forward": false, "start": 1064, "end": 1078}, - {"helix": 1, "forward": true, "start": 1064, "end": 1078} - ] - }, - { - "color": "#f7931e", - "sequence": "TCAAATATATTTCGAAATCCAATCGCAAATATGTAAATGCTG", - "domains": [ - {"helix": 2, "forward": false, "start": 1078, "end": 1092}, - {"helix": 3, "forward": true, "start": 1078, "end": 1092}, - {"helix": 4, "forward": false, "start": 1078, "end": 1092} - ] - }, - { - "color": "#b8056c", - "sequence": "ATGTATCATATGCGGAACCCTTCTGACCATAAGGCGTTAAAG", - "domains": [ - {"helix": 4, "forward": false, "start": 1064, "end": 1078}, - {"helix": 5, "forward": true, "start": 1064, "end": 1078}, - {"helix": 0, "forward": false, "start": 1064, "end": 1078} - ] - }, - { - "color": "#aaaa00", - "sequence": "ACTAGTTAATTTCACGACCGTGTGATAATGAAAGCGTAAGAA", - "domains": [ - {"helix": 1, "forward": true, "start": 1078, "end": 1092}, - {"helix": 0, "forward": false, "start": 1078, "end": 1092}, - {"helix": 5, "forward": true, "start": 1078, "end": 1092} - ] - }, - { - "color": "#320096", - "sequence": "ACCTTTTTAACCCATCATAGGTCTGAGATTAGTGAATTTATC", - "domains": [ - {"helix": 3, "forward": true, "start": 1106, "end": 1120}, - {"helix": 2, "forward": false, "start": 1106, "end": 1120}, - {"helix": 1, "forward": true, "start": 1106, "end": 1120} - ] - }, - { - "color": "#57bb00", - "sequence": "AATCGTCGCTATAATAAATCAATATATGTTTAATGGAAACAG", - "domains": [ - {"helix": 2, "forward": false, "start": 1120, "end": 1134}, - {"helix": 3, "forward": true, "start": 1120, "end": 1134}, - {"helix": 4, "forward": false, "start": 1120, "end": 1134} - ] - }, - { - "color": "#cc0000", - "sequence": "TATCCGGCTTAGGTAATATTTTTGAATGAGAAGAGTCAATTA", - "domains": [ - {"helix": 4, "forward": false, "start": 1106, "end": 1120}, - {"helix": 5, "forward": true, "start": 1106, "end": 1120}, - {"helix": 0, "forward": false, "start": 1106, "end": 1120} - ] - }, - { - "color": "#007200", - "sequence": "AATAATTAATTTTCAGATTAAGACGCTGGCTATTAGTCTTTA", - "domains": [ - {"helix": 1, "forward": true, "start": 1120, "end": 1134}, - {"helix": 0, "forward": false, "start": 1120, "end": 1134}, - {"helix": 5, "forward": true, "start": 1120, "end": 1134} - ] - }, - { - "color": "#7300de", - "sequence": "AATTAATTACATATCAAACATCAAGAAAAAAAAGAAGATGAT", - "domains": [ - {"helix": 3, "forward": true, "start": 1148, "end": 1162}, - {"helix": 2, "forward": false, "start": 1148, "end": 1162}, - {"helix": 1, "forward": true, "start": 1148, "end": 1162} - ] - }, - { - "color": "#32b86c", - "sequence": "AATAACGGATTCAAGAATATACAGTAACTCAGGTTTAACGTC", - "domains": [ - {"helix": 2, "forward": false, "start": 1162, "end": 1176}, - {"helix": 3, "forward": true, "start": 1162, "end": 1176}, - {"helix": 4, "forward": false, "start": 1162, "end": 1176} - ] - }, - { - "color": "#f74308", - "sequence": "AGTTAACAATTTCAAGCCCTAAAACATCATTACCTGAGCAAA", - "domains": [ - {"helix": 4, "forward": false, "start": 1148, "end": 1162}, - {"helix": 5, "forward": true, "start": 1148, "end": 1162}, - {"helix": 0, "forward": false, "start": 1148, "end": 1162} - ] - }, - { - "color": "#f7931e", - "sequence": "GAGCCTGATTGCTTAATTATTCATTTCAGCCATTAAAAATAC", - "domains": [ - {"helix": 1, "forward": true, "start": 1162, "end": 1176}, - {"helix": 0, "forward": false, "start": 1162, "end": 1176}, - {"helix": 5, "forward": true, "start": 1162, "end": 1176} - ] - }, - { - "color": "#b8056c", - "sequence": "TTGCACGTAAAACACTACCATATCAAAACAATGGAAGGGTTA", - "domains": [ - {"helix": 3, "forward": true, "start": 1190, "end": 1204}, - {"helix": 2, "forward": false, "start": 1190, "end": 1204}, - {"helix": 1, "forward": true, "start": 1190, "end": 1204} - ] - }, - { - "color": "#320096", - "sequence": "GGAATTATCATCACTTATCATTTTGCGGTTAAAAGTTTGAGT", - "domains": [ - {"helix": 2, "forward": false, "start": 1204, "end": 1218}, - {"helix": 3, "forward": true, "start": 1204, "end": 1218}, - {"helix": 4, "forward": false, "start": 1204, "end": 1218} - ] - }, - { - "color": "#888888", - "sequence": "AACAGAAATAAAGAGCAGAAGATAAAACTACTTCTGAATAAA", - "domains": [ - {"helix": 4, "forward": false, "start": 1190, "end": 1204}, - {"helix": 5, "forward": true, "start": 1190, "end": 1204}, - {"helix": 0, "forward": false, "start": 1190, "end": 1204} - ] - }, - { - "color": "#57bb00", - "sequence": "GAATATTCCTGATTGATTGTTTGGATTAAGAGGTGAGGCGGT", - "domains": [ - {"helix": 1, "forward": true, "start": 1204, "end": 1218}, - {"helix": 0, "forward": false, "start": 1204, "end": 1218}, - {"helix": 5, "forward": true, "start": 1204, "end": 1218} - ] - }, - { - "color": "#333333", - "sequence": "TTAATGACTGTAAGGATACCGACAGTGCTGTCTAATCTATTT", - "domains": [ - {"helix": 5, "forward": true, "start": 84, "end": 91}, - {"helix": 0, "forward": false, "start": 84, "end": 91}, - {"helix": 1, "forward": true, "start": 84, "end": 98}, - {"helix": 2, "forward": false, "start": 84, "end": 98} - ] - }, - { - "color": "#aaaa00", - "sequence": "CTGCCATATCGGCCGTGTCCTTAGTGCTAATAACCCCGCTGT", - "domains": [ - {"helix": 0, "forward": false, "start": 91, "end": 98}, - {"helix": 5, "forward": true, "start": 91, "end": 98}, - {"helix": 4, "forward": false, "start": 84, "end": 98}, - {"helix": 3, "forward": true, "start": 84, "end": 98} - ] - }, - { - "color": "#03b6a2", - "sequence": "TGGGCGCGTTGTAAACGCCAGGGTTTTCAGAAAGGGGGATGT", - "domains": [ - {"helix": 5, "forward": true, "start": 126, "end": 133}, - {"helix": 0, "forward": false, "start": 126, "end": 133}, - {"helix": 1, "forward": true, "start": 126, "end": 140}, - {"helix": 2, "forward": false, "start": 126, "end": 140} - ] - }, - { - "color": "#007200", - "sequence": "TCACGACCAGGGTGGCGCAACTGTTGGGCGCCAGCTGGCGGC", - "domains": [ - {"helix": 0, "forward": false, "start": 133, "end": 140}, - {"helix": 5, "forward": true, "start": 133, "end": 140}, - {"helix": 4, "forward": false, "start": 126, "end": 140}, - {"helix": 3, "forward": true, "start": 126, "end": 140} - ] - }, - { - "color": "#aaaa00", - "sequence": "ACAGCTGTATCGGCTGCCAGTTTGAGGGTTACGTTGGTGTAG", - "domains": [ - {"helix": 5, "forward": true, "start": 168, "end": 175}, - {"helix": 0, "forward": false, "start": 168, "end": 175}, - {"helix": 1, "forward": true, "start": 168, "end": 182}, - {"helix": 2, "forward": false, "start": 168, "end": 182} - ] - }, - { - "color": "#f7931e", - "sequence": "ACGACAGATTGCCCACAACCCGTCGGATATGGGATAGGTCTC", - "domains": [ - {"helix": 0, "forward": false, "start": 175, "end": 182}, - {"helix": 5, "forward": true, "start": 175, "end": 182}, - {"helix": 4, "forward": false, "start": 168, "end": 182}, - {"helix": 3, "forward": true, "start": 168, "end": 182} - ] - }, - { - "color": "#007200", - "sequence": "GCAAGCGTCATTTTCGCATTAAATTTTTGGTATTTAAATTGT", - "domains": [ - {"helix": 5, "forward": true, "start": 210, "end": 217}, - {"helix": 0, "forward": false, "start": 210, "end": 217}, - {"helix": 1, "forward": true, "start": 210, "end": 224}, - {"helix": 2, "forward": false, "start": 210, "end": 224} - ] - }, - { - "color": "#57bb00", - "sequence": "AATCAGCGTCCACGTATGTACCCCGGTTTGTATAAGCAAATA", - "domains": [ - {"helix": 0, "forward": false, "start": 217, "end": 224}, - {"helix": 5, "forward": true, "start": 217, "end": 224}, - {"helix": 4, "forward": false, "start": 210, "end": 224}, - {"helix": 3, "forward": true, "start": 210, "end": 224} - ] - }, - { - "color": "#f7931e", - "sequence": "GTTTGATAGATCTAGCCGGAGAGGGTAGTCAATATGATATTC", - "domains": [ - {"helix": 5, "forward": true, "start": 252, "end": 259}, - {"helix": 0, "forward": false, "start": 252, "end": 259}, - {"helix": 1, "forward": true, "start": 252, "end": 266}, - {"helix": 2, "forward": false, "start": 252, "end": 266} - ] - }, - { - "color": "#32b86c", - "sequence": "TTTTGAGGGTGGTTAATGTGTAGGTAAACAAATCACCATCAT", - "domains": [ - {"helix": 0, "forward": false, "start": 259, "end": 266}, - {"helix": 5, "forward": true, "start": 259, "end": 266}, - {"helix": 4, "forward": false, "start": 252, "end": 266}, - {"helix": 3, "forward": true, "start": 252, "end": 266} - ] - }, - { - "color": "#57bb00", - "sequence": "AAAAGAACCCTGTAATCGGTTGTACCAAGCAAAATTAAGCAA", - "domains": [ - {"helix": 5, "forward": true, "start": 294, "end": 301}, - {"helix": 0, "forward": false, "start": 294, "end": 301}, - {"helix": 1, "forward": true, "start": 294, "end": 308}, - {"helix": 2, "forward": false, "start": 294, "end": 308} - ] - }, - { - "color": "#320096", - "sequence": "ATTATGATAGCCCGTACTAATAGTAGTACAAAGAATTAGCGC", - "domains": [ - {"helix": 0, "forward": false, "start": 301, "end": 308}, - {"helix": 5, "forward": true, "start": 301, "end": 308}, - {"helix": 4, "forward": false, "start": 294, "end": 308}, - {"helix": 3, "forward": true, "start": 294, "end": 308} - ] - }, - { - "color": "#32b86c", - "sequence": "GAACAAGGTTTGACCCAATTCTGCGAACGAGTGTCTGGAAGT", - "domains": [ - {"helix": 5, "forward": true, "start": 336, "end": 343}, - {"helix": 0, "forward": false, "start": 336, "end": 343}, - {"helix": 1, "forward": true, "start": 336, "end": 350}, - {"helix": 2, "forward": false, "start": 336, "end": 350} - ] - }, - { - "color": "#7300de", - "sequence": "AGATTTAAGTCCACTTAATTGCTGAATAAACTAAAGTACGGG", - "domains": [ - {"helix": 0, "forward": false, "start": 343, "end": 350}, - {"helix": 5, "forward": true, "start": 343, "end": 350}, - {"helix": 4, "forward": false, "start": 336, "end": 350}, - {"helix": 3, "forward": true, "start": 336, "end": 350} - ] - }, - { - "color": "#320096", - "sequence": "AGGGCGAAGACCGGTTTAATTCGAGCTTTCATTAAGAGGAAG", - "domains": [ - {"helix": 5, "forward": true, "start": 378, "end": 385}, - {"helix": 0, "forward": false, "start": 378, "end": 385}, - {"helix": 1, "forward": true, "start": 378, "end": 392}, - {"helix": 2, "forward": false, "start": 378, "end": 392} - ] - }, - { - "color": "#b8056c", - "sequence": "GCGAACCAAAACCGAAATCAGGTCTTTATGCATCAAAAAGAG", - "domains": [ - {"helix": 0, "forward": false, "start": 385, "end": 392}, - {"helix": 5, "forward": true, "start": 385, "end": 392}, - {"helix": 4, "forward": false, "start": 378, "end": 392}, - {"helix": 3, "forward": true, "start": 378, "end": 392} - ] - }, - { - "color": "#7300de", - "sequence": "ACCATCAGCGTCCAAATAGTAAAATGTTTAAGAGGCTTTTGC", - "domains": [ - {"helix": 5, "forward": true, "start": 420, "end": 427}, - {"helix": 0, "forward": false, "start": 420, "end": 427}, - {"helix": 1, "forward": true, "start": 420, "end": 434}, - {"helix": 2, "forward": false, "start": 420, "end": 434} - ] - }, - { - "color": "#cc0000", - "sequence": "CTGGATACCCAAATTAAGAGCAACACTAACCAAAATAGCGAC", - "domains": [ - {"helix": 0, "forward": false, "start": 427, "end": 434}, - {"helix": 5, "forward": true, "start": 427, "end": 434}, - {"helix": 4, "forward": false, "start": 420, "end": 434}, - {"helix": 3, "forward": true, "start": 420, "end": 434} - ] - }, - { - "color": "#b8056c", - "sequence": "AGCACTATTACAGGAAAACGAACTAACGAGCCAGTCAGGACG", - "domains": [ - {"helix": 5, "forward": true, "start": 462, "end": 469}, - {"helix": 0, "forward": false, "start": 462, "end": 469}, - {"helix": 1, "forward": true, "start": 462, "end": 476}, - {"helix": 2, "forward": false, "start": 462, "end": 476} - ] - }, - { - "color": "#f74308", - "sequence": "AACATTAAATCGGAATTTCAACTTTAATTGGCTCATTATATA", - "domains": [ - {"helix": 0, "forward": false, "start": 469, "end": 476}, - {"helix": 5, "forward": true, "start": 469, "end": 476}, - {"helix": 4, "forward": false, "start": 462, "end": 476}, - {"helix": 3, "forward": true, "start": 462, "end": 476} - ] - }, - { - "color": "#cc0000", - "sequence": "TTGACGGATCAACGCAAGAACCGGATATCGCATAGGCTGGCT", - "domains": [ - {"helix": 5, "forward": true, "start": 504, "end": 511}, - {"helix": 0, "forward": false, "start": 504, "end": 511}, - {"helix": 1, "forward": true, "start": 504, "end": 518}, - {"helix": 2, "forward": false, "start": 504, "end": 518} - ] - }, - { - "color": "#888888", - "sequence": "TACCCAAGGAAAGCAGGGAACCGAACTGACAGACCAGGCGGA", - "domains": [ - {"helix": 0, "forward": false, "start": 511, "end": 518}, - {"helix": 5, "forward": true, "start": 511, "end": 518}, - {"helix": 4, "forward": false, "start": 504, "end": 518}, - {"helix": 3, "forward": true, "start": 504, "end": 518} - ] - }, - { - "color": "#f74308", - "sequence": "GAAAGCGGAGATTTACCAAGCGCGAAACTTACACTAAAACAC", - "domains": [ - {"helix": 5, "forward": true, "start": 546, "end": 553}, - {"helix": 0, "forward": false, "start": 546, "end": 553}, - {"helix": 1, "forward": true, "start": 546, "end": 560}, - {"helix": 2, "forward": false, "start": 546, "end": 560} - ] - }, - { - "color": "#333333", - "sequence": "TACAACGAAAGGAGGTAAAATACGTAATAGGCAAAAGAATTT", - "domains": [ - {"helix": 0, "forward": false, "start": 553, "end": 560}, - {"helix": 5, "forward": true, "start": 553, "end": 560}, - {"helix": 4, "forward": false, "start": 546, "end": 560}, - {"helix": 3, "forward": true, "start": 546, "end": 560} - ] - }, - { - "color": "#888888", - "sequence": "GGTCACGCAGCGAAGCTTTTGCGGGATCTTTATTCGGTCGCT", - "domains": [ - {"helix": 5, "forward": true, "start": 588, "end": 595}, - {"helix": 0, "forward": false, "start": 588, "end": 595}, - {"helix": 1, "forward": true, "start": 588, "end": 602}, - {"helix": 2, "forward": false, "start": 588, "end": 602} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCCTCAGCTGCGCGCTTGATACCGATAGGCATAACCGATAGC", - "domains": [ - {"helix": 0, "forward": false, "start": 595, "end": 602}, - {"helix": 5, "forward": true, "start": 595, "end": 602}, - {"helix": 4, "forward": false, "start": 588, "end": 602}, - {"helix": 3, "forward": true, "start": 588, "end": 602} - ] - }, - { - "color": "#333333", - "sequence": "GCCGCTACACGTTGAAGGAATTGCGAATGTCAGTTTCAGCGG", - "domains": [ - {"helix": 5, "forward": true, "start": 630, "end": 637}, - {"helix": 0, "forward": false, "start": 630, "end": 637}, - {"helix": 1, "forward": true, "start": 630, "end": 644}, - {"helix": 2, "forward": false, "start": 630, "end": 644} - ] - }, - { - "color": "#aaaa00", - "sequence": "ATTTTTTCAGGGCGTCTTTCCAGACGTTAACAACTTTCAATA", - "domains": [ - {"helix": 0, "forward": false, "start": 637, "end": 644}, - {"helix": 5, "forward": true, "start": 637, "end": 644}, - {"helix": 4, "forward": false, "start": 630, "end": 644}, - {"helix": 3, "forward": true, "start": 630, "end": 644} - ] - }, - { - "color": "#03b6a2", - "sequence": "ATAACGTACACTGAGCCCAATAGGAACCATCCTCAGAGCCAC", - "domains": [ - {"helix": 5, "forward": true, "start": 672, "end": 679}, - {"helix": 0, "forward": false, "start": 672, "end": 679}, - {"helix": 1, "forward": true, "start": 672, "end": 686}, - {"helix": 2, "forward": false, "start": 672, "end": 686} - ] - }, - { - "color": "#007200", - "sequence": "TACCGTAGCTTTCCCCGTACTCAGGAGGCAGAACCGCCACAA", - "domains": [ - {"helix": 0, "forward": false, "start": 679, "end": 686}, - {"helix": 5, "forward": true, "start": 679, "end": 686}, - {"helix": 4, "forward": false, "start": 672, "end": 686}, - {"helix": 3, "forward": true, "start": 672, "end": 686} - ] - }, - { - "color": "#aaaa00", - "sequence": "GGAGGCCAGGATTATAAGAGGCTGAGACTGTATTTCGGAACC", - "domains": [ - {"helix": 5, "forward": true, "start": 714, "end": 721}, - {"helix": 0, "forward": false, "start": 714, "end": 721}, - {"helix": 1, "forward": true, "start": 714, "end": 728}, - {"helix": 2, "forward": false, "start": 714, "end": 728} - ] - }, - { - "color": "#f7931e", - "sequence": "CAAGAGAGATTAAATTAACGGGGTCAGTATGCCCCCTGCCAT", - "domains": [ - {"helix": 0, "forward": false, "start": 721, "end": 728}, - {"helix": 5, "forward": true, "start": 721, "end": 728}, - {"helix": 4, "forward": false, "start": 714, "end": 728}, - {"helix": 3, "forward": true, "start": 714, "end": 728} - ] - }, - { - "color": "#007200", - "sequence": "AATCCTGGCCAGAACACAAACAAATAAAGCGAGGTTGAGGCA", - "domains": [ - {"helix": 5, "forward": true, "start": 756, "end": 763}, - {"helix": 0, "forward": false, "start": 756, "end": 763}, - {"helix": 1, "forward": true, "start": 756, "end": 770}, - {"helix": 2, "forward": false, "start": 756, "end": 770} - ] - }, - { - "color": "#57bb00", - "sequence": "CATTAAAAGAAGTGCCACCACCCTCAGACAGCATTGACAGCA", - "domains": [ - {"helix": 0, "forward": false, "start": 763, "end": 770}, - {"helix": 5, "forward": true, "start": 763, "end": 770}, - {"helix": 4, "forward": false, "start": 756, "end": 770}, - {"helix": 3, "forward": true, "start": 756, "end": 770} - ] - }, - { - "color": "#f7931e", - "sequence": "AAAGAGTCATCTTTTCATAGCCCCCTTAACCGTCAGACTGTA", - "domains": [ - {"helix": 5, "forward": true, "start": 798, "end": 805}, - {"helix": 0, "forward": false, "start": 798, "end": 805}, - {"helix": 1, "forward": true, "start": 798, "end": 812}, - {"helix": 2, "forward": false, "start": 798, "end": 812} - ] - }, - { - "color": "#32b86c", - "sequence": "CGTTTGCCTGTCCAATGAAACCATCGATGTTTGCCTTTAGCA", - "domains": [ - {"helix": 0, "forward": false, "start": 805, "end": 812}, - {"helix": 5, "forward": true, "start": 805, "end": 812}, - {"helix": 4, "forward": false, "start": 798, "end": 812}, - {"helix": 3, "forward": true, "start": 798, "end": 812} - ] - }, - { - "color": "#57bb00", - "sequence": "TTCTTTGATCACCGGGAAATTATTCATTCGATTCAACCGATT", - "domains": [ - {"helix": 5, "forward": true, "start": 840, "end": 847}, - {"helix": 0, "forward": false, "start": 840, "end": 847}, - {"helix": 1, "forward": true, "start": 840, "end": 854}, - {"helix": 2, "forward": false, "start": 840, "end": 854} - ] - }, - { - "color": "#320096", - "sequence": "GTGAATTATTAGTATTGTCACAATCAATCAAAAGGGCGACCA", - "domains": [ - {"helix": 0, "forward": false, "start": 847, "end": 854}, - {"helix": 5, "forward": true, "start": 847, "end": 854}, - {"helix": 4, "forward": false, "start": 840, "end": 854}, - {"helix": 3, "forward": true, "start": 840, "end": 854} - ] - }, - { - "color": "#32b86c", - "sequence": "TCAAACTATTACGCAGAACTGGCATGATCAAAACCGAGGAAA", - "domains": [ - {"helix": 5, "forward": true, "start": 882, "end": 889}, - {"helix": 0, "forward": false, "start": 882, "end": 889}, - {"helix": 1, "forward": true, "start": 882, "end": 896}, - {"helix": 2, "forward": false, "start": 882, "end": 896} - ] - }, - { - "color": "#7300de", - "sequence": "ACTCCTTATCGGCCCTTACCGAAGCCCTGTTACCAGAAGGAG", - "domains": [ - {"helix": 0, "forward": false, "start": 889, "end": 896}, - {"helix": 5, "forward": true, "start": 889, "end": 896}, - {"helix": 4, "forward": false, "start": 882, "end": 896}, - {"helix": 3, "forward": true, "start": 882, "end": 896} - ] - }, - { - "color": "#320096", - "sequence": "CGCCAGCGTAATTGTGAACACCCTGAACCATAAAAACAGGGA", - "domains": [ - {"helix": 5, "forward": true, "start": 924, "end": 931}, - {"helix": 0, "forward": false, "start": 924, "end": 931}, - {"helix": 1, "forward": true, "start": 924, "end": 938}, - {"helix": 2, "forward": false, "start": 924, "end": 938} - ] - }, - { - "color": "#b8056c", - "sequence": "TCAGAGGCATTGCAAACGATTTTTTGTTGAGAGAATAACATA", - "domains": [ - {"helix": 0, "forward": false, "start": 931, "end": 938}, - {"helix": 5, "forward": true, "start": 931, "end": 938}, - {"helix": 4, "forward": false, "start": 924, "end": 938}, - {"helix": 3, "forward": true, "start": 924, "end": 938} - ] - }, - { - "color": "#7300de", - "sequence": "CATTTTGAATCTTATGCACCCAGCTACACCGGTTTTGAAGCC", - "domains": [ - {"helix": 5, "forward": true, "start": 966, "end": 973}, - {"helix": 0, "forward": false, "start": 966, "end": 973}, - {"helix": 1, "forward": true, "start": 966, "end": 980}, - {"helix": 2, "forward": false, "start": 966, "end": 980} - ] - }, - { - "color": "#cc0000", - "sequence": "TATCCTGACGCTCAGGCTTATCCGGTATCGACTTGCGGGACA", - "domains": [ - {"helix": 0, "forward": false, "start": 973, "end": 980}, - {"helix": 5, "forward": true, "start": 973, "end": 980}, - {"helix": 4, "forward": false, "start": 966, "end": 980}, - {"helix": 3, "forward": true, "start": 966, "end": 980} - ] - }, - { - "color": "#b8056c", - "sequence": "CAGATTCAGTACCGCATTCCAAGAACGGTTGTAGAAACCAAT", - "domains": [ - {"helix": 5, "forward": true, "start": 1008, "end": 1015}, - {"helix": 0, "forward": false, "start": 1008, "end": 1015}, - {"helix": 1, "forward": true, "start": 1008, "end": 1022}, - {"helix": 2, "forward": false, "start": 1008, "end": 1022} - ] - }, - { - "color": "#f74308", - "sequence": "TAAACCAACCAGTCTCAACAATAGATAAATTTACGAGCATCA", - "domains": [ - {"helix": 0, "forward": false, "start": 1015, "end": 1022}, - {"helix": 5, "forward": true, "start": 1015, "end": 1022}, - {"helix": 4, "forward": false, "start": 1008, "end": 1022}, - {"helix": 3, "forward": true, "start": 1008, "end": 1022} - ] - }, - { - "color": "#cc0000", - "sequence": "GGCCAACAGAATATGAGGCATTTTCGAGAGCGCCATATTTAA", - "domains": [ - {"helix": 5, "forward": true, "start": 1050, "end": 1057}, - {"helix": 0, "forward": false, "start": 1050, "end": 1057}, - {"helix": 1, "forward": true, "start": 1050, "end": 1064}, - {"helix": 2, "forward": false, "start": 1050, "end": 1064} - ] - }, - { - "color": "#888888", - "sequence": "TAATAAGAGAGATATTATACAAATTCTTTTAATTGAGAATAA", - "domains": [ - {"helix": 0, "forward": false, "start": 1057, "end": 1064}, - {"helix": 5, "forward": true, "start": 1057, "end": 1064}, - {"helix": 4, "forward": false, "start": 1050, "end": 1064}, - {"helix": 3, "forward": true, "start": 1050, "end": 1064} - ] - }, - { - "color": "#f74308", - "sequence": "TACGTGGGAAATACTCTTCTGACCTAAAGAGAGAAAACTTTT", - "domains": [ - {"helix": 5, "forward": true, "start": 1092, "end": 1099}, - {"helix": 0, "forward": false, "start": 1092, "end": 1099}, - {"helix": 1, "forward": true, "start": 1092, "end": 1106}, - {"helix": 2, "forward": false, "start": 1092, "end": 1106} - ] - }, - { - "color": "#333333", - "sequence": "ATGGTTTCACAGACTGGGTTATATAACTGACAAAGAACGCCT", - "domains": [ - {"helix": 0, "forward": false, "start": 1099, "end": 1106}, - {"helix": 5, "forward": true, "start": 1099, "end": 1106}, - {"helix": 4, "forward": false, "start": 1092, "end": 1106}, - {"helix": 3, "forward": true, "start": 1092, "end": 1106} - ] - }, - { - "color": "#888888", - "sequence": "ATGCGCGATAGCTTCCTTAGAATCCTTGACCTTGCTTCTGTA", - "domains": [ - {"helix": 5, "forward": true, "start": 1134, "end": 1141}, - {"helix": 0, "forward": false, "start": 1134, "end": 1141}, - {"helix": 1, "forward": true, "start": 1134, "end": 1148}, - {"helix": 2, "forward": false, "start": 1134, "end": 1148} - ] - }, - { - "color": "#03b6a2", - "sequence": "CATAGCGAACTGATTTTGAATTACCTTTTGAGTGAATAACAA", - "domains": [ - {"helix": 0, "forward": false, "start": 1141, "end": 1148}, - {"helix": 5, "forward": true, "start": 1141, "end": 1148}, - {"helix": 4, "forward": false, "start": 1134, "end": 1148}, - {"helix": 3, "forward": true, "start": 1134, "end": 1148} - ] - }, - { - "color": "#333333", - "sequence": "CGAACGAAGAGGCGTGAATACCAAGTTATTATCGGGAGAAAC", - "domains": [ - {"helix": 5, "forward": true, "start": 1176, "end": 1183}, - {"helix": 0, "forward": false, "start": 1176, "end": 1183}, - {"helix": 1, "forward": true, "start": 1176, "end": 1190}, - {"helix": 2, "forward": false, "start": 1176, "end": 1190} - ] - }, - { - "color": "#aaaa00", - "sequence": "ATCGCGCACCACCAAATTGCGTAGATTTAGTACCTTTTACAT", - "domains": [ - {"helix": 0, "forward": false, "start": 1183, "end": 1190}, - {"helix": 5, "forward": true, "start": 1183, "end": 1190}, - {"helix": 4, "forward": false, "start": 1176, "end": 1190}, - {"helix": 3, "forward": true, "start": 1176, "end": 1190} - ] - }, - { - "color": "#03b6a2", - "sequence": "CAGTATTTAATCCTATCAGATGATGGCATCACCAGAAGGAGC", - "domains": [ - {"helix": 5, "forward": true, "start": 1218, "end": 1225}, - {"helix": 0, "forward": false, "start": 1218, "end": 1225}, - {"helix": 1, "forward": true, "start": 1218, "end": 1232}, - {"helix": 2, "forward": false, "start": 1218, "end": 1232} - ] - }, - { - "color": "#007200", - "sequence": "ATCAATAAACACCGGAACGTTATTAATTAACAAAGAAACCGA", - "domains": [ - {"helix": 0, "forward": false, "start": 1225, "end": 1232}, - {"helix": 5, "forward": true, "start": 1225, "end": 1232}, - {"helix": 4, "forward": false, "start": 1218, "end": 1232}, - {"helix": 3, "forward": true, "start": 1218, "end": 1232} - ] - }, - { - "color": "#333333", - "sequence": "ACTGCCCGAAATTGTCATGGTCATAGCTAAACGGAGGATCCC", - "domains": [ - {"helix": 5, "forward": true, "start": 42, "end": 49}, - {"helix": 0, "forward": false, "start": 42, "end": 49}, - {"helix": 1, "forward": true, "start": 42, "end": 56}, - {"helix": 2, "forward": false, "start": 42, "end": 56} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCTGTGTGCTTTCCGGTTGGTGTAATGAACCTCGATAAAGAT", - "domains": [ - {"helix": 0, "forward": false, "start": 49, "end": 56}, - {"helix": 5, "forward": true, "start": 49, "end": 56}, - {"helix": 4, "forward": false, "start": 42, "end": 56}, - {"helix": 3, "forward": true, "start": 42, "end": 56} - ] - }, - { - "color": "#32b86c", - "sequence": "CTAATCCTTTGCCCCCTGCAACAGTGCCAATACATTTGAGTC", - "domains": [ - {"helix": 4, "forward": false, "start": 1232, "end": 1246}, - {"helix": 5, "forward": true, "start": 1232, "end": 1246}, - {"helix": 0, "forward": false, "start": 1232, "end": 1246} - ] - }, - { - "color": "#cc0000", - "sequence": "CAACTCGTATTACAACTTTACAAACAATATGATTTAGAAGTA", - "domains": [ - {"helix": 3, "forward": true, "start": 1232, "end": 1246}, - {"helix": 2, "forward": false, "start": 1232, "end": 1246}, - {"helix": 1, "forward": true, "start": 1232, "end": 1246} - ] - }, - { - "color": "#0066cc", - "sequence": "TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCAGGCGGTGAAGGGCAATCAGCTGTTGCCCGTCTCACTGGTGAAAAGAAAAACCACCCTGGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGAATTCGAGCTCGGTACCCGGGGATCCTCCGTCTTTATCGAGGTAACAAGCACCACGTAGCTTAAGCCCTGTTTACTCATTACACCAACCAGGAGGTCAGAGTTCGGAGAAATGATTTATGTGAAATGCGTCAGCCGATTCAAGGCCCCTATATTCGTGCCCACCGACGAGTTGCTTACAGATGGCAGGGCCGCACTGTCGGTATCATAGAGTCACTCCAGGGCGAGCGTAAATAGATTAGAAGCGGGGTTATTTTGGCGGGACATTGTCATAAGGTTGACAATTCAGCACTAAGGACACTTAAGTCGTGCGCATGAATTCACAACCACTTAGAAGAACATCCACCCTGGCTTCTCCTGAGAAAGCTTGGCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCACCGATCGCCCTTCCCAACAGTTGCGCAGCCTGAATGGCGAATGGCGCTTTGCCTGGTTTCCGGCACCAGAAGCGGTGCCGGAAAGCTGGCTGGAGTGCGATCTTCCTGAGGCCGATACTGTCGTCGTCCCCTCAAACTGGCAGATGCACGGTTACGATGCGCCCATCTACACCAACGTGACCTATCCCATTACGGTCAATCCGCCGTTTGTTCCCACGGAGAATCCGACGGGTTGTTACTCGCTCACATTTAATGTTGATGAAAGCTGGCTACAGGAAGGCCAGACGCGAATTATTTTTGATGGCGTTCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAATGCGAATTTTAACAAAATATTAACGTTTACAATTTAAATATTTGCTTATACAATCTTCCTGTTTTTGGGGCTTTTCTGATTATCAACCGGGGTACATATGATTGACATGCTAGTTTTACGATTACCGTTCATCGATTCTCTTGTTTGCTCCAGACTCTCAGGCAATGACCTGATAGCCTTTGTAGATCTCTCAAAAATAGCTACCCTCTCCGGCATTAATTTATCAGCTAGAACGGTTGAATATCATATTGATGGTGATTTGACTGTCTCCGGCCTTTCTCACCCTTTTGAATCTTTACCTACACATTACTCAGGCATTGCATTTAAAATATATGAGGGTTCTAAAAATTTTTATCCTTGCGTTGAAATAAAGGCTTCTCCCGCAAAAGTATTACAGGGTCATAATGTTTTTGGTACAACCGATTTAGCTTTATGCTCTGAGGCTTTATTGCTTAATTTTGCTAATTCTTTGCCTTGCCTGTATGATTTATTGGATGTTAATGCTACTACTATTAGTAGAATTGATGCCACCTTTTCAGCTCGCGCCCCAAATGAAAATATAGCTAAACAGGTTATTGACCATTTGCGAAATGTATCTAATGGTCAAACTAAATCTACTCGTTCGCAGAATTGGGAATCAACTGTTATATGGAATGAAACTTCCAGACACCGTACTTTAGTTGCATATTTAAAACATGTTGAGCTACAGCATTATATTCAGCAATTAAGCTCTAAGCCATCCGCAAAAATGACCTCTTATCAAAAGGAGCAATTAAAGGTACTCTCTAATCCTGACCTGTTGGAGTTTGCTTCCGGTCTGGTTCGCTTTGAAGCTCGAATTAAAACGCGATATTTGAAGTCTTTCGGGCTTCCTCTTAATCTTTTTGATGCAATCCGCTTTGCTTCTGACTATAATAGTCAGGGTAAAGACCTGATTTTTGATTTATGGTCATTCTCGTTTTCTGAACTGTTTAAAGCATTTGAGGGGGATTCAATGAATATTTATGACGATTCCGCAGTATTGGACGCTATCCAGTCTAAACATTTTACTATTACCCCCTCTGGCAAAACTTCTTTTGCAAAAGCCTCTCGCTATTTTGGTTTTTATCGTCGTCTGGTAAACGAGGGTTATGATAGTGTTGCTCTTACTATGCCTCGTAATTCCTTTTGGCGTTATGTATCTGCATTAGTTGAATGTGGTATTCCTAAATCTCAACTGATGAATCTTTCTACCTGTAATAATGTTGTTCCGTTAGTTCGTTTTATTAACGTAGATTTTTCTTCCCAACGTCCTGACTGGTATAATGAGCCAGTTCTTAAAATCGCATAAGGTAATTCACAATGATTAAAGTTGAAATTAAACCATCTCAAGCCCAATTTACTACTCGTTCTGGTGTTTCTCGTCAGGGCAAGCCTTATTCACTGAATGAGCAGCTTTGTTACGTTGATTTGGGTAATGAATATCCGGTTCTTGTCAAGATTACTCTTGATGAAGGTCAGCCAGCCTATGCGCCTGGTCTGTACACCGTTCATCTGTCCTCTTTCAAAGTTGGTCAGTTCGGTTCCCTTATGATTGACCGTCTGCGCCTCGTTCCGGCTAAGTAACATGGAGCAGGTCGCGGATTTCGACACAATTTATCAGGCGATGATACAAATCTCCGTTGTACTTTGTTTCGCGCTTGGTATAATCGCTGGGGGTCAAAGATGAGTGTTTTAGTGTATTCTTTTGCCTCTTTCGTTTTAGGTTGGTGCCTTCGTAGTGGCATTACGTATTTTACCCGTTTAATGGAAACTTCCTCATGAAAAAGTCTTTAGTCCTCAAAGCCTCTGTAGCCGTTGCTACCCTCGTTCCGATGCTGTCTTTCGCTGCTGAGGGTGACGATCCCGCAAAAGCGGCCTTTAACTCCCTGCAAGCCTCAGCGACCGAATATATCGGTTATGCGTGGGCGATGGTTGTTGTCATTGTCGGCGCAACTATCGGTATCAAGCTGTTTAAGAAATTCACCTCGAAAGCAAGCTGATAAACCGATACAATTAAAGGCTCCTTTTGGAGCCTTTTTTTTGGAGATTTTCAACGTGAAAAAATTATTATTCGCAATTCCTTTAGTTGTTCCTTTCTATTCTCACTCCGCTGAAACTGTTGAAAGTTGTTTAGCAAAATCCCATACAGAAAATTCATTTACTAACGTCTGGAAAGACGACAAAACTTTAGATCGTTACGCTAACTATGAGGGCTGTCTGTGGAATGCTACAGGCGTTGTAGTTTGTACTGGTGACGAAACTCAGTGTTACGGTACATGGGTTCCTATTGGGCTTGCTATCCCTGAAAATGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTTCTGAGGGTGGCGGTACTAAACCTCCTGAGTACGGTGATACACCTATTCCGGGCTATACTTATATCAACCCTCTCGACGGCACTTATCCGCCTGGTACTGAGCAAAACCCCGCTAATCCTAATCCTTCTCTTGAGGAGTCTCAGCCTCTTAATACTTTCATGTTTCAGAATAATAGGTTCCGAAATAGGCAGGGGGCATTAACTGTTTATACGGGCACTGTTACTCAAGGCACTGACCCCGTTAAAACTTATTACCAGTACACTCCTGTATCATCAAAAGCCATGTATGACGCTTACTGGAACGGTAAATTCAGAGACTGCGCTTTCCATTCTGGCTTTAATGAGGATTTATTTGTTTGTGAATATCAAGGCCAATCGTCTGACCTGCCTCAACCTCCTGTCAATGCTGGCGGCGGCTCTGGTGGTGGTTCTGGTGGCGGCTCTGAGGGTGGTGGCTCTGAGGGTGGCGGTTCTGAGGGTGGCGGCTCTGAGGGAGGCGGTTCCGGTGGTGGCTCTGGTTCCGGTGATTTTGATTATGAAAAGATGGCAAACGCTAATAAGGGGGCTATGACCGAAAATGCCGATGAAAACGCGCTACAGTCTGACGCTAAAGGCAAACTTGATTCTGTCGCTACTGATTACGGTGCTGCTATCGATGGTTTCATTGGTGACGTTTCCGGCCTTGCTAATGGTAATGGTGCTACTGGTGATTTTGCTGGCTCTAATTCCCAAATGGCTCAAGTCGGTGACGGTGATAATTCACCTTTAATGAATAATTTCCGTCAATATTTACCTTCCCTCCCTCAATCGGTTGAATGTCGCCCTTTTGTCTTTGGCGCTGGTAAACCATATGAATTTTCTATTGATTGTGACAAAATAAACTTATTCCGTGGTGTCTTTGCGTTTCTTTTATATGTTGCCACCTTTATGTATGTATTTTCTACGTTTGCTAACATACTGCGTAATAAGGAGTCTTAATCATGCCAGTTCTTTTGGGTATTCCGTTATTATTGCGTTTCCTCGGTTTCCTTCTGGTAACTTTGTTCGGCTATCTGCTTACTTTTCTTAAAAAGGGCTTCGGTAAGATAGCTATTGCTATTTCATTGTTTCTTGCTCTTATTATTGGGCTTAACTCAATTCTTGTGGGTTATCTCTCTGATATTAGCGCTCAATTACCCTCTGACTTTGTTCAGGGTGTTCAGTTAATTCTCCCGTCTAATGCGCTTCCCTGTTTTTATGTTATTCTCTCTGTAAAGGCTGCTATTTTCATTTTTGACGTTAAACAAAAAATCGTTTCTTATTTGGATTGGGATAAATAATATGGCTGTTTATTTTGTAACTGGCAAATTAGGCTCTGGAAAGACGCTCGTTAGCGTTGGTAAGATTCAGGATAAAATTGTAGCTGGGTGCAAAATAGCAACTAATCTTGATTTAAGGCTTCAAAACCTCCCGCAAGTCGGGAGGTTCGCTAAAACGCCTCGCGTTCTTAGAATACCGGATAAGCCTTCTATATCTGATTTGCTTGCTATTGGGCGCGGTAATGATTCCTACGATGAAAATAAAAACGGCTTGCTTGTTCTCGATGAGTGCGGTACTTGGTTTAATACCCGTTCTTGGAATGATAAGGAAAGACAGCCGATTATTGATTGGTTTCTACATGCTCGTAAATTAGGATGGGATATTATTTTTCTTGTTCAGGACTTATCTATTGTTGATAAACAGGCGCGTTCTGCATTAGCTGAACATGTTGTTTATTGTCGTCGTCTGGACAGAATTACTTTACCTTTTGTCGGTACTTTATATTCTCTTATTACTGGCTCGAAAATGCCTCTGCCTAAATTACATGTTGGCGTTGTTAAATATGGCGATTCTCAATTAAGCCCTACTGTTGAGCGTTGGCTTTATACTGGTAAGAATTTGTATAACGCATATGATACTAAACAGGCTTTTTCTAGTAATTATGATTCCGGTGTTTATTCTTATTTAACGCCTTATTTATCACACGGTCGGTATTTCAAACCATTAAATTTAGGTCAGAAGATGAAATTAACTAAAATATATTTGAAAAAGTTTTCTCGCGTTCTTTGTCTTGCGATTGGATTTGCATCAGCATTTACATATAGTTATATAACCCAACCTAAGCCGGAGGTTAAAAAGGTAGTCTCTCAGACCTATGATTTTGATAAATTCACTATTGACTCTTCTCAGCGTCTTAATCTAAGCTATCGCTATGTTTTCAAGGATTCTAAGGGAAAATTAATTAATAGCGACGATTTACAGAAGCAAGGTTATTCACTCACATATATTGATTTATGTACTGTTTCCATTAAAAAAGGTAATTCAAATGAAATTGTTAAATGTAATTAATTTTGTTTTCTTGATGTTTGTTTCATCATCTTCTTTTGCTCAGGTAATTGAAATGAATAATTCGCCTCTGCGCGATTTTGTAACTTGGTATTCAAAGCAATCAGGCGAATCCGTTATTGTTTCTCCCGATGTAAAAGGTACTGTTACTGTATATTCATCTGACGTTAAACCTGAAAATCTACGCAATTTCTTTATTTCTGTTTTACGTGCAAATAATTTTGATATGGTAGGTTCTAACCCTTCCATTATTCAGAAGTATAATCCAAACAATCAGGATTATATTGATGAATTGCCATCATCTGATAATCAGGAATATGATGATAATTCCGCTCCTTCTGGTGGTTTCTTTGTTCCGCAAAATGATAATGTTACTCAAACTTTTAAAATTAATAACGTTCGGGCAAAGGATTTAATACGAGTTGTCGAATTGTTTGTAAAGTCTAATACTTCTAAATCCTCAAATGTATTATCTATTGACGGCTCTAATCTATTAGTTGTTAGTGCTCCTAAAGATATTTTAGATAACCTTCCTCAATTCCTTTCAACTGTTGATTTGCCAACTGACCAGATATTGATTGAGGGTTTGATATTTGAGGTTCAGCAAGGTGATGCTTTAGATTTTTCATTTGCTGCTGGCTCTCAGCGTGGCACTGTTGCAGGCGGTGTTAATACTGACCGCCTCACCTCTGTTTTATCTTCTGCTGGTGGTTCGTTCGGTATTTTTAATGGCGATGTTTTAGGGCTATCAGTTCGCGCATTAAAGACTAATAGCCATTCAAAAATATTGTCTGTGCCACGTATTCTTACGCTTTCAGGTCAGAAGGGTTCTATCTCTGTTGGCCAGAATGTCCCTTTTATTACTGGTCGTGTGACTGGTGAATCTGCCAATGTAAATAATCCATTTCAGACGATTGAGCGTCAAAATGTAGGTATTTCCATGAGCGTTTTTCCTGTTGCAATGGCTGGCGGTAATATTGTTCTGGATATTACCAGCAAGGCCGATAGTTTGAGTTCTTCTACTCAGGCAAGTGATGTTATTACTAATCAAAGAAGTATTGCTACAACGGTTAATTTGCGTGATGGACAGACTCTTTTACTCGGTGGCCTCACTGATTATAAAAACACTTCTCAGGATTCTGGCGTACCGTTCCTGTCTAAAATCCCTTTAATCGGCCTCCTGTTTAGCTCCCGCTCTGATTCTAACGAGGAAAGCACGTTATACGTGCTCGTCAAAGCAACCATAGTACGCGCCCTGTAGCGGCGCATTAAGCGCGGCGGGTGTGGTGGTTACGCGCAGCGTGACCGCTACACTTGCCAGCGCCCTAGCGCCCGCTCCTTTCGCTTTCTTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTTGGGTGATGGTTCACGTAGTGGGCCATCGCCC", - "domains": [ - {"helix": 5, "forward": false, "start": 19, "end": 399}, - {"helix": 4, "forward": true, "start": 19, "end": 26}, - {"helix": 3, "forward": false, "start": 12, "end": 26}, - {"helix": 2, "forward": true, "start": 12, "end": 30}, - {"helix": 1, "forward": false, "start": 16, "end": 30}, - {"helix": 0, "forward": true, "start": 16, "end": 58}, - {"helix": 1, "forward": false, "start": 30, "end": 58}, - {"helix": 2, "forward": true, "start": 30, "end": 54}, - {"helix": 3, "forward": false, "start": 26, "end": 54}, - {"helix": 4, "forward": true, "start": 26, "end": 68}, - {"helix": 3, "forward": false, "start": 54, "end": 68}, - {"helix": 2, "forward": true, "start": 54, "end": 72}, - {"helix": 1, "forward": false, "start": 58, "end": 72}, - {"helix": 0, "forward": true, "start": 58, "end": 100}, - {"helix": 1, "forward": false, "start": 72, "end": 100}, - {"helix": 2, "forward": true, "start": 72, "end": 96}, - {"helix": 3, "forward": false, "start": 68, "end": 96}, - {"helix": 4, "forward": true, "start": 68, "end": 110}, - {"helix": 3, "forward": false, "start": 96, "end": 110}, - {"helix": 2, "forward": true, "start": 96, "end": 114}, - {"helix": 1, "forward": false, "start": 100, "end": 114}, - {"helix": 0, "forward": true, "start": 100, "end": 142}, - {"helix": 1, "forward": false, "start": 114, "end": 142}, - {"helix": 2, "forward": true, "start": 114, "end": 138}, - {"helix": 3, "forward": false, "start": 110, "end": 138}, - {"helix": 4, "forward": true, "start": 110, "end": 152}, - {"helix": 3, "forward": false, "start": 138, "end": 152}, - {"helix": 2, "forward": true, "start": 138, "end": 156}, - {"helix": 1, "forward": false, "start": 142, "end": 156}, - {"helix": 0, "forward": true, "start": 142, "end": 184}, - {"helix": 1, "forward": false, "start": 156, "end": 184}, - {"helix": 2, "forward": true, "start": 156, "end": 180}, - {"helix": 3, "forward": false, "start": 152, "end": 180}, - {"helix": 4, "forward": true, "start": 152, "end": 194}, - {"helix": 3, "forward": false, "start": 180, "end": 194}, - {"helix": 2, "forward": true, "start": 180, "end": 198}, - {"helix": 1, "forward": false, "start": 184, "end": 198}, - {"helix": 0, "forward": true, "start": 184, "end": 226}, - {"helix": 1, "forward": false, "start": 198, "end": 226}, - {"helix": 2, "forward": true, "start": 198, "end": 222}, - {"helix": 3, "forward": false, "start": 194, "end": 222}, - {"helix": 4, "forward": true, "start": 194, "end": 236}, - {"helix": 3, "forward": false, "start": 222, "end": 236}, - {"helix": 2, "forward": true, "start": 222, "end": 240}, - {"helix": 1, "forward": false, "start": 226, "end": 240}, - {"helix": 0, "forward": true, "start": 226, "end": 268}, - {"helix": 1, "forward": false, "start": 240, "end": 268}, - {"helix": 2, "forward": true, "start": 240, "end": 264}, - {"helix": 3, "forward": false, "start": 236, "end": 264}, - {"helix": 4, "forward": true, "start": 236, "end": 278}, - {"helix": 3, "forward": false, "start": 264, "end": 278}, - {"helix": 2, "forward": true, "start": 264, "end": 282}, - {"helix": 1, "forward": false, "start": 268, "end": 282}, - {"helix": 0, "forward": true, "start": 268, "end": 310}, - {"helix": 1, "forward": false, "start": 282, "end": 310}, - {"helix": 2, "forward": true, "start": 282, "end": 306}, - {"helix": 3, "forward": false, "start": 278, "end": 306}, - {"helix": 4, "forward": true, "start": 278, "end": 320}, - {"helix": 3, "forward": false, "start": 306, "end": 320}, - {"helix": 2, "forward": true, "start": 306, "end": 324}, - {"helix": 1, "forward": false, "start": 310, "end": 324}, - {"helix": 0, "forward": true, "start": 310, "end": 352}, - {"helix": 1, "forward": false, "start": 324, "end": 352}, - {"helix": 2, "forward": true, "start": 324, "end": 348}, - {"helix": 3, "forward": false, "start": 320, "end": 348}, - {"helix": 4, "forward": true, "start": 320, "end": 362}, - {"helix": 3, "forward": false, "start": 348, "end": 362}, - {"helix": 2, "forward": true, "start": 348, "end": 366}, - {"helix": 1, "forward": false, "start": 352, "end": 366}, - {"helix": 0, "forward": true, "start": 352, "end": 394}, - {"helix": 1, "forward": false, "start": 366, "end": 394}, - {"helix": 2, "forward": true, "start": 366, "end": 390}, - {"helix": 3, "forward": false, "start": 362, "end": 390}, - {"helix": 4, "forward": true, "start": 362, "end": 404}, - {"helix": 3, "forward": false, "start": 390, "end": 404}, - {"helix": 2, "forward": true, "start": 390, "end": 408}, - {"helix": 1, "forward": false, "start": 394, "end": 408}, - {"helix": 0, "forward": true, "start": 394, "end": 436}, - {"helix": 1, "forward": false, "start": 408, "end": 436}, - {"helix": 2, "forward": true, "start": 408, "end": 432}, - {"helix": 3, "forward": false, "start": 404, "end": 432}, - {"helix": 4, "forward": true, "start": 404, "end": 446}, - {"helix": 3, "forward": false, "start": 432, "end": 446}, - {"helix": 2, "forward": true, "start": 432, "end": 450}, - {"helix": 1, "forward": false, "start": 436, "end": 450}, - {"helix": 0, "forward": true, "start": 436, "end": 478}, - {"helix": 1, "forward": false, "start": 450, "end": 478}, - {"helix": 2, "forward": true, "start": 450, "end": 474}, - {"helix": 3, "forward": false, "start": 446, "end": 474}, - {"helix": 4, "forward": true, "start": 446, "end": 488}, - {"helix": 3, "forward": false, "start": 474, "end": 488}, - {"helix": 2, "forward": true, "start": 474, "end": 492}, - {"helix": 1, "forward": false, "start": 478, "end": 492}, - {"helix": 0, "forward": true, "start": 478, "end": 520}, - {"helix": 1, "forward": false, "start": 492, "end": 520}, - {"helix": 2, "forward": true, "start": 492, "end": 516}, - {"helix": 3, "forward": false, "start": 488, "end": 516}, - {"helix": 4, "forward": true, "start": 488, "end": 530}, - {"helix": 3, "forward": false, "start": 516, "end": 530}, - {"helix": 2, "forward": true, "start": 516, "end": 534}, - {"helix": 1, "forward": false, "start": 520, "end": 534}, - {"helix": 0, "forward": true, "start": 520, "end": 562}, - {"helix": 1, "forward": false, "start": 534, "end": 562}, - {"helix": 2, "forward": true, "start": 534, "end": 558}, - {"helix": 3, "forward": false, "start": 530, "end": 558}, - {"helix": 4, "forward": true, "start": 530, "end": 572}, - {"helix": 3, "forward": false, "start": 558, "end": 572}, - {"helix": 2, "forward": true, "start": 558, "end": 576}, - {"helix": 1, "forward": false, "start": 562, "end": 576}, - {"helix": 0, "forward": true, "start": 562, "end": 604}, - {"helix": 1, "forward": false, "start": 576, "end": 604}, - {"helix": 2, "forward": true, "start": 576, "end": 600}, - {"helix": 3, "forward": false, "start": 572, "end": 600}, - {"helix": 4, "forward": true, "start": 572, "end": 614}, - {"helix": 3, "forward": false, "start": 600, "end": 614}, - {"helix": 2, "forward": true, "start": 600, "end": 618}, - {"helix": 1, "forward": false, "start": 604, "end": 618}, - {"helix": 0, "forward": true, "start": 604, "end": 646}, - {"helix": 1, "forward": false, "start": 618, "end": 646}, - {"helix": 2, "forward": true, "start": 618, "end": 642}, - {"helix": 3, "forward": false, "start": 614, "end": 642}, - {"helix": 4, "forward": true, "start": 614, "end": 656}, - {"helix": 3, "forward": false, "start": 642, "end": 656}, - {"helix": 2, "forward": true, "start": 642, "end": 660}, - {"helix": 1, "forward": false, "start": 646, "end": 660}, - {"helix": 0, "forward": true, "start": 646, "end": 688}, - {"helix": 1, "forward": false, "start": 660, "end": 688}, - {"helix": 2, "forward": true, "start": 660, "end": 684}, - {"helix": 3, "forward": false, "start": 656, "end": 684}, - {"helix": 4, "forward": true, "start": 656, "end": 698}, - {"helix": 3, "forward": false, "start": 684, "end": 698}, - {"helix": 2, "forward": true, "start": 684, "end": 702}, - {"helix": 1, "forward": false, "start": 688, "end": 702}, - {"helix": 0, "forward": true, "start": 688, "end": 730}, - {"helix": 1, "forward": false, "start": 702, "end": 730}, - {"helix": 2, "forward": true, "start": 702, "end": 726}, - {"helix": 3, "forward": false, "start": 698, "end": 726}, - {"helix": 4, "forward": true, "start": 698, "end": 740}, - {"helix": 3, "forward": false, "start": 726, "end": 740}, - {"helix": 2, "forward": true, "start": 726, "end": 744}, - {"helix": 1, "forward": false, "start": 730, "end": 744}, - {"helix": 0, "forward": true, "start": 730, "end": 772}, - {"helix": 1, "forward": false, "start": 744, "end": 772}, - {"helix": 2, "forward": true, "start": 744, "end": 768}, - {"helix": 3, "forward": false, "start": 740, "end": 768}, - {"helix": 4, "forward": true, "start": 740, "end": 782}, - {"helix": 3, "forward": false, "start": 768, "end": 782}, - {"helix": 2, "forward": true, "start": 768, "end": 786}, - {"helix": 1, "forward": false, "start": 772, "end": 786}, - {"helix": 0, "forward": true, "start": 772, "end": 814}, - {"helix": 1, "forward": false, "start": 786, "end": 814}, - {"helix": 2, "forward": true, "start": 786, "end": 810}, - {"helix": 3, "forward": false, "start": 782, "end": 810}, - {"helix": 4, "forward": true, "start": 782, "end": 824}, - {"helix": 3, "forward": false, "start": 810, "end": 824}, - {"helix": 2, "forward": true, "start": 810, "end": 828}, - {"helix": 1, "forward": false, "start": 814, "end": 828}, - {"helix": 0, "forward": true, "start": 814, "end": 856}, - {"helix": 1, "forward": false, "start": 828, "end": 856}, - {"helix": 2, "forward": true, "start": 828, "end": 852}, - {"helix": 3, "forward": false, "start": 824, "end": 852}, - {"helix": 4, "forward": true, "start": 824, "end": 866}, - {"helix": 3, "forward": false, "start": 852, "end": 866}, - {"helix": 2, "forward": true, "start": 852, "end": 870}, - {"helix": 1, "forward": false, "start": 856, "end": 870}, - {"helix": 0, "forward": true, "start": 856, "end": 898}, - {"helix": 1, "forward": false, "start": 870, "end": 898}, - {"helix": 2, "forward": true, "start": 870, "end": 894}, - {"helix": 3, "forward": false, "start": 866, "end": 894}, - {"helix": 4, "forward": true, "start": 866, "end": 908}, - {"helix": 3, "forward": false, "start": 894, "end": 908}, - {"helix": 2, "forward": true, "start": 894, "end": 912}, - {"helix": 1, "forward": false, "start": 898, "end": 912}, - {"helix": 0, "forward": true, "start": 898, "end": 940}, - {"helix": 1, "forward": false, "start": 912, "end": 940}, - {"helix": 2, "forward": true, "start": 912, "end": 936}, - {"helix": 3, "forward": false, "start": 908, "end": 936}, - {"helix": 4, "forward": true, "start": 908, "end": 950}, - {"helix": 3, "forward": false, "start": 936, "end": 950}, - {"helix": 2, "forward": true, "start": 936, "end": 954}, - {"helix": 1, "forward": false, "start": 940, "end": 954}, - {"helix": 0, "forward": true, "start": 940, "end": 982}, - {"helix": 1, "forward": false, "start": 954, "end": 982}, - {"helix": 2, "forward": true, "start": 954, "end": 978}, - {"helix": 3, "forward": false, "start": 950, "end": 978}, - {"helix": 4, "forward": true, "start": 950, "end": 992}, - {"helix": 3, "forward": false, "start": 978, "end": 992}, - {"helix": 2, "forward": true, "start": 978, "end": 996}, - {"helix": 1, "forward": false, "start": 982, "end": 996}, - {"helix": 0, "forward": true, "start": 982, "end": 1024}, - {"helix": 1, "forward": false, "start": 996, "end": 1024}, - {"helix": 2, "forward": true, "start": 996, "end": 1020}, - {"helix": 3, "forward": false, "start": 992, "end": 1020}, - {"helix": 4, "forward": true, "start": 992, "end": 1034}, - {"helix": 3, "forward": false, "start": 1020, "end": 1034}, - {"helix": 2, "forward": true, "start": 1020, "end": 1038}, - {"helix": 1, "forward": false, "start": 1024, "end": 1038}, - {"helix": 0, "forward": true, "start": 1024, "end": 1066}, - {"helix": 1, "forward": false, "start": 1038, "end": 1066}, - {"helix": 2, "forward": true, "start": 1038, "end": 1062}, - {"helix": 3, "forward": false, "start": 1034, "end": 1062}, - {"helix": 4, "forward": true, "start": 1034, "end": 1076}, - {"helix": 3, "forward": false, "start": 1062, "end": 1076}, - {"helix": 2, "forward": true, "start": 1062, "end": 1080}, - {"helix": 1, "forward": false, "start": 1066, "end": 1080}, - {"helix": 0, "forward": true, "start": 1066, "end": 1108}, - {"helix": 1, "forward": false, "start": 1080, "end": 1108}, - {"helix": 2, "forward": true, "start": 1080, "end": 1104}, - {"helix": 3, "forward": false, "start": 1076, "end": 1104}, - {"helix": 4, "forward": true, "start": 1076, "end": 1118}, - {"helix": 3, "forward": false, "start": 1104, "end": 1118}, - {"helix": 2, "forward": true, "start": 1104, "end": 1122}, - {"helix": 1, "forward": false, "start": 1108, "end": 1122}, - {"helix": 0, "forward": true, "start": 1108, "end": 1150}, - {"helix": 1, "forward": false, "start": 1122, "end": 1150}, - {"helix": 2, "forward": true, "start": 1122, "end": 1146}, - {"helix": 3, "forward": false, "start": 1118, "end": 1146}, - {"helix": 4, "forward": true, "start": 1118, "end": 1160}, - {"helix": 3, "forward": false, "start": 1146, "end": 1160}, - {"helix": 2, "forward": true, "start": 1146, "end": 1164}, - {"helix": 1, "forward": false, "start": 1150, "end": 1164}, - {"helix": 0, "forward": true, "start": 1150, "end": 1192}, - {"helix": 1, "forward": false, "start": 1164, "end": 1192}, - {"helix": 2, "forward": true, "start": 1164, "end": 1188}, - {"helix": 3, "forward": false, "start": 1160, "end": 1188}, - {"helix": 4, "forward": true, "start": 1160, "end": 1202}, - {"helix": 3, "forward": false, "start": 1188, "end": 1202}, - {"helix": 2, "forward": true, "start": 1188, "end": 1206}, - {"helix": 1, "forward": false, "start": 1192, "end": 1206}, - {"helix": 0, "forward": true, "start": 1192, "end": 1234}, - {"helix": 1, "forward": false, "start": 1206, "end": 1234}, - {"helix": 2, "forward": true, "start": 1206, "end": 1230}, - {"helix": 3, "forward": false, "start": 1202, "end": 1230}, - {"helix": 4, "forward": true, "start": 1202, "end": 1244}, - {"helix": 3, "forward": false, "start": 1230, "end": 1244}, - {"helix": 2, "forward": true, "start": 1230, "end": 1248}, - {"helix": 1, "forward": false, "start": 1234, "end": 1248}, - {"helix": 0, "forward": true, "start": 1234, "end": 1276}, - {"helix": 1, "forward": false, "start": 1248, "end": 1276}, - {"helix": 2, "forward": true, "start": 1248, "end": 1272}, - {"helix": 3, "forward": false, "start": 1244, "end": 1272}, - {"helix": 4, "forward": true, "start": 1244, "end": 1279}, - {"helix": 5, "forward": false, "start": 399, "end": 1279} - ], - "is_scaffold": true - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.dna b/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.dna deleted file mode 100644 index 41aabd46..00000000 --- a/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.dna +++ /dev/null @@ -1,282 +0,0 @@ -{ - "version": "0.9.9", - "grid": "square", - "helices": [ - {"max_offset": 192, "grid_position": [0, 0]}, - {"max_offset": 192, "grid_position": [0, 1]}, - {"max_offset": 192, "grid_position": [0, 2]}, - {"max_offset": 192, "grid_position": [0, 3]}, - {"max_offset": 192, "grid_position": [0, 4]}, - {"max_offset": 192, "grid_position": [0, 5]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "TTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTTGGGTGATGGTTCACGTAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCAGGCGGTGAAGGGCAATCAGCTGTTGCCCGTCTCACTGGTGAAAAGAAAAACCACCCTGGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGAATTCGAGCTCGGTACCCGGGGATCCTCTAGAGTCGACCTGCAGGCATGCAAGCTTGGCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCACCGATCGCCCTTCCCAACAGTTGCGCAGCCTGAATGGCGAATGGCGCTTTGCCTGGTTTCCGGCACCAGAAGCGGTGCCGGAAAGCTGGCTGGAGTGCGATCTTCCTGAGGCCGATACTGTCGTCGT", - "domains": [ - {"helix": 5, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 4, "forward": true, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 3, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 2, "forward": true, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 1, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 0, "forward": true, "start": 16, "end": 176, "deletions": [33, 81, 129]}, - {"helix": 1, "forward": false, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 2, "forward": true, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 3, "forward": false, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 4, "forward": true, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 5, "forward": false, "start": 96, "end": 176, "deletions": [129]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GTGAGACGGGCAACAGGTTTTTCTTTTCACCA", - "domains": [ - {"helix": 1, "forward": true, "start": 16, "end": 32}, - {"helix": 0, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#57bb00", - "sequence": "AGGGTTGAGTGTTGTTAAGAATAGCCCGAGAT", - "domains": [ - {"helix": 3, "forward": true, "start": 16, "end": 32}, - {"helix": 2, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#888888", - "sequence": "AAATCGGAACCCTAAAGGTGCCGTAAAGCACT", - "domains": [ - {"helix": 5, "forward": true, "start": 16, "end": 32}, - {"helix": 4, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#32b86c", - "sequence": "GTGCCTAATGAGTGAGAAGTGTAAAGCCTGGG", - "domains": [ - {"helix": 0, "forward": false, "start": 160, "end": 176}, - {"helix": 1, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#333333", - "sequence": "AGTGCCAAGCTTGCATTTGTAAAACGACGGCC", - "domains": [ - {"helix": 2, "forward": false, "start": 160, "end": 176}, - {"helix": 3, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#320096", - "sequence": "AGCGCCATTCGCCATTGCCGGAAACCAGGCAA", - "domains": [ - {"helix": 4, "forward": false, "start": 160, "end": 176}, - {"helix": 5, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCAGTCGGGAAACCTGTCGTGCCAGCTGCATT", - "domains": [ - {"helix": 0, "forward": false, "start": 88, "end": 120} - ] - }, - { - "color": "#7300de", - "sequence": "CGAAAATCCACGCTGGTTTGCCCTGTTTCC", - "domains": [ - {"helix": 2, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 80, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#aaaa00", - "sequence": "TGTGTGAAGTAATCATGGTCATAGCCAGCAGG", - "domains": [ - {"helix": 1, "forward": true, "start": 104, "end": 112}, - {"helix": 2, "forward": false, "start": 88, "end": 112} - ] - }, - { - "color": "#b8056c", - "sequence": "AGGGCGACAAAGGGCGAAAAACGAAAGGGG", - "domains": [ - {"helix": 4, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 3, "forward": true, "start": 80, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#007200", - "sequence": "GATGTGCTTATTACGCCAGCTGGCCGTCTATC", - "domains": [ - {"helix": 3, "forward": true, "start": 104, "end": 112}, - {"helix": 4, "forward": false, "start": 88, "end": 112} - ] - }, - { - "color": "#cc0000", - "sequence": "AACGTGGCGAGAAAGGAAGGGAAACGACGAC", - "domains": [ - {"helix": 5, "forward": true, "start": 72, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#f7931e", - "sequence": "TTTGCGTATTGGGCGCCAGGGTGCTGATTG", - "domains": [ - {"helix": 0, "forward": false, "start": 32, "end": 56, "deletions": [33]}, - {"helix": 1, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f74308", - "sequence": "CCCTTCACTCCCTTATAAATCAACCAGTTT", - "domains": [ - {"helix": 1, "forward": true, "start": 40, "end": 48}, - {"helix": 2, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 3, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#57bb00", - "sequence": "GGAACAAGGTTTTTTGGGGTCGAGGGAGCC", - "domains": [ - {"helix": 3, "forward": true, "start": 40, "end": 48}, - {"helix": 4, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 5, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#888888", - "sequence": "CCCGATTTAGAGCTTGACGGGGAACCATCACC", - "domains": [ - {"helix": 5, "forward": true, "start": 40, "end": 64}, - {"helix": 4, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#32b86c", - "sequence": "CGGCAAAACGCCTGGCCCTGAGAGAGAGGCGG", - "domains": [ - {"helix": 2, "forward": false, "start": 48, "end": 56}, - {"helix": 1, "forward": true, "start": 48, "end": 64}, - {"helix": 0, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#333333", - "sequence": "CAAATCAAAGTCCACTATTAAAGATCCGAAAT", - "domains": [ - {"helix": 4, "forward": false, "start": 48, "end": 56}, - {"helix": 3, "forward": true, "start": 48, "end": 64}, - {"helix": 2, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#320096", - "sequence": "AATGAATCGGCCAACGCGCGGGGAGTTGCAG", - "domains": [ - {"helix": 0, "forward": false, "start": 64, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#03b6a2", - "sequence": "CAAGCGGTCCTGTTTGATGGTGGTACGTGGAC", - "domains": [ - {"helix": 1, "forward": true, "start": 72, "end": 80}, - {"helix": 2, "forward": false, "start": 64, "end": 80}, - {"helix": 3, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#7300de", - "sequence": "TCCAACGTTGGCCCACTACGTGAAAGCCGGCG", - "domains": [ - {"helix": 3, "forward": true, "start": 72, "end": 80}, - {"helix": 4, "forward": false, "start": 64, "end": 80}, - {"helix": 5, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#aaaa00", - "sequence": "AGTATCGGCCTCAGGAAGATCGCAGTGCGGGC", - "domains": [ - {"helix": 5, "forward": true, "start": 104, "end": 128}, - {"helix": 4, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#b8056c", - "sequence": "TCGAATTCATTGTTATCCGCTCACCCCGCTTT", - "domains": [ - {"helix": 2, "forward": false, "start": 112, "end": 120}, - {"helix": 1, "forward": true, "start": 112, "end": 128}, - {"helix": 0, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#007200", - "sequence": "CTCTTCGCGCAAGGCGATTAAGTTTACCGAGC", - "domains": [ - {"helix": 4, "forward": false, "start": 112, "end": 120}, - {"helix": 3, "forward": true, "start": 112, "end": 128}, - {"helix": 2, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#cc0000", - "sequence": "CATTAATTGCGTTGCGCTCACTGAATTCCA", - "domains": [ - {"helix": 0, "forward": false, "start": 128, "end": 152, "deletions": [129]}, - {"helix": 1, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#f7931e", - "sequence": "CACAACATTAGAGGATCCCCGGGGGGTAAC", - "domains": [ - {"helix": 1, "forward": true, "start": 136, "end": 144}, - {"helix": 2, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 3, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#f74308", - "sequence": "GCCAGGGTTGGGAAGGGCGATCGCTCCAGC", - "domains": [ - {"helix": 3, "forward": true, "start": 136, "end": 144}, - {"helix": 4, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 5, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#57bb00", - "sequence": "CAGCTTTCCGGCACCGCTTCTGGTCAGGCTGC", - "domains": [ - {"helix": 5, "forward": true, "start": 136, "end": 160}, - {"helix": 4, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#888888", - "sequence": "GTCGACTCACGAGCCGGAAGCATACTAACTCA", - "domains": [ - {"helix": 2, "forward": false, "start": 144, "end": 152}, - {"helix": 1, "forward": true, "start": 144, "end": 160}, - {"helix": 0, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#32b86c", - "sequence": "GCAACTGTTTTCCCAGTCACGACGGCCTGCAG", - "domains": [ - {"helix": 4, "forward": false, "start": 144, "end": 152}, - {"helix": 3, "forward": true, "start": 144, "end": 160}, - {"helix": 2, "forward": false, "start": 152, "end": 160} - ] - } - ] -} \ No newline at end of file diff --git a/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.sc b/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.sc deleted file mode 100644 index c4a54466..00000000 --- a/tests_inputs/cadnano_v2_export/test_6_helix_origami_rectangle.sc +++ /dev/null @@ -1,282 +0,0 @@ -{ - "version": "0.10.1", - "grid": "square", - "helices": [ - {"max_offset": 192, "grid_position": [0, 0]}, - {"max_offset": 192, "grid_position": [0, 1]}, - {"max_offset": 192, "grid_position": [0, 2]}, - {"max_offset": 192, "grid_position": [0, 3]}, - {"max_offset": 192, "grid_position": [0, 4]}, - {"max_offset": 192, "grid_position": [0, 5]} - ], - "strands": [ - { - "color": "#0066cc", - "sequence": "TTCCCTTCCTTTCTCGCCACGTTCGCCGGCTTTCCCCGTCAAGCTCTAAATCGGGGGCTCCCTTTAGGGTTCCGATTTAGTGCTTTACGGCACCTCGACCCCAAAAAACTTGATTTGGGTGATGGTTCACGTAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCAGGCGGTGAAGGGCAATCAGCTGTTGCCCGTCTCACTGGTGAAAAGAAAAACCACCCTGGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGAATTCGAGCTCGGTACCCGGGGATCCTCTAGAGTCGACCTGCAGGCATGCAAGCTTGGCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCACCGATCGCCCTTCCCAACAGTTGCGCAGCCTGAATGGCGAATGGCGCTTTGCCTGGTTTCCGGCACCAGAAGCGGTGCCGGAAAGCTGGCTGGAGTGCGATCTTCCTGAGGCCGATACTGTCGTCGT", - "domains": [ - {"helix": 5, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 4, "forward": true, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 3, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 2, "forward": true, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 1, "forward": false, "start": 16, "end": 96, "deletions": [33, 81]}, - {"helix": 0, "forward": true, "start": 16, "end": 176, "deletions": [33, 81, 129]}, - {"helix": 1, "forward": false, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 2, "forward": true, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 3, "forward": false, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 4, "forward": true, "start": 96, "end": 176, "deletions": [129]}, - {"helix": 5, "forward": false, "start": 96, "end": 176, "deletions": [129]} - ], - "is_scaffold": true - }, - { - "color": "#f74308", - "sequence": "GTGAGACGGGCAACAGGTTTTTCTTTTCACCA", - "domains": [ - {"helix": 1, "forward": true, "start": 16, "end": 32}, - {"helix": 0, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#57bb00", - "sequence": "AGGGTTGAGTGTTGTTAAGAATAGCCCGAGAT", - "domains": [ - {"helix": 3, "forward": true, "start": 16, "end": 32}, - {"helix": 2, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#888888", - "sequence": "AAATCGGAACCCTAAAGGTGCCGTAAAGCACT", - "domains": [ - {"helix": 5, "forward": true, "start": 16, "end": 32}, - {"helix": 4, "forward": false, "start": 16, "end": 32} - ] - }, - { - "color": "#32b86c", - "sequence": "GTGCCTAATGAGTGAGAAGTGTAAAGCCTGGG", - "domains": [ - {"helix": 0, "forward": false, "start": 160, "end": 176}, - {"helix": 1, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#333333", - "sequence": "AGTGCCAAGCTTGCATTTGTAAAACGACGGCC", - "domains": [ - {"helix": 2, "forward": false, "start": 160, "end": 176}, - {"helix": 3, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#320096", - "sequence": "AGCGCCATTCGCCATTGCCGGAAACCAGGCAA", - "domains": [ - {"helix": 4, "forward": false, "start": 160, "end": 176}, - {"helix": 5, "forward": true, "start": 160, "end": 176} - ] - }, - { - "color": "#03b6a2", - "sequence": "CCAGTCGGGAAACCTGTCGTGCCAGCTGCATT", - "domains": [ - {"helix": 0, "forward": false, "start": 88, "end": 120} - ] - }, - { - "color": "#7300de", - "sequence": "CGAAAATCCACGCTGGTTTGCCCTGTTTCC", - "domains": [ - {"helix": 2, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 80, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#aaaa00", - "sequence": "TGTGTGAAGTAATCATGGTCATAGCCAGCAGG", - "domains": [ - {"helix": 1, "forward": true, "start": 104, "end": 112}, - {"helix": 2, "forward": false, "start": 88, "end": 112} - ] - }, - { - "color": "#b8056c", - "sequence": "AGGGCGACAAAGGGCGAAAAACGAAAGGGG", - "domains": [ - {"helix": 4, "forward": false, "start": 80, "end": 88, "deletions": [81]}, - {"helix": 3, "forward": true, "start": 80, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#007200", - "sequence": "GATGTGCTTATTACGCCAGCTGGCCGTCTATC", - "domains": [ - {"helix": 3, "forward": true, "start": 104, "end": 112}, - {"helix": 4, "forward": false, "start": 88, "end": 112} - ] - }, - { - "color": "#cc0000", - "sequence": "AACGTGGCGAGAAAGGAAGGGAAACGACGAC", - "domains": [ - {"helix": 5, "forward": true, "start": 72, "end": 104, "deletions": [81]} - ] - }, - { - "color": "#f7931e", - "sequence": "TTTGCGTATTGGGCGCCAGGGTGCTGATTG", - "domains": [ - {"helix": 0, "forward": false, "start": 32, "end": 56, "deletions": [33]}, - {"helix": 1, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#f74308", - "sequence": "CCCTTCACTCCCTTATAAATCAACCAGTTT", - "domains": [ - {"helix": 1, "forward": true, "start": 40, "end": 48}, - {"helix": 2, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 3, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#57bb00", - "sequence": "GGAACAAGGTTTTTTGGGGTCGAGGGAGCC", - "domains": [ - {"helix": 3, "forward": true, "start": 40, "end": 48}, - {"helix": 4, "forward": false, "start": 32, "end": 48, "deletions": [33]}, - {"helix": 5, "forward": true, "start": 32, "end": 40, "deletions": [33]} - ] - }, - { - "color": "#888888", - "sequence": "CCCGATTTAGAGCTTGACGGGGAACCATCACC", - "domains": [ - {"helix": 5, "forward": true, "start": 40, "end": 64}, - {"helix": 4, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#32b86c", - "sequence": "CGGCAAAACGCCTGGCCCTGAGAGAGAGGCGG", - "domains": [ - {"helix": 2, "forward": false, "start": 48, "end": 56}, - {"helix": 1, "forward": true, "start": 48, "end": 64}, - {"helix": 0, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#333333", - "sequence": "CAAATCAAAGTCCACTATTAAAGATCCGAAAT", - "domains": [ - {"helix": 4, "forward": false, "start": 48, "end": 56}, - {"helix": 3, "forward": true, "start": 48, "end": 64}, - {"helix": 2, "forward": false, "start": 56, "end": 64} - ] - }, - { - "color": "#320096", - "sequence": "AATGAATCGGCCAACGCGCGGGGAGTTGCAG", - "domains": [ - {"helix": 0, "forward": false, "start": 64, "end": 88, "deletions": [81]}, - {"helix": 1, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#03b6a2", - "sequence": "CAAGCGGTCCTGTTTGATGGTGGTACGTGGAC", - "domains": [ - {"helix": 1, "forward": true, "start": 72, "end": 80}, - {"helix": 2, "forward": false, "start": 64, "end": 80}, - {"helix": 3, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#7300de", - "sequence": "TCCAACGTTGGCCCACTACGTGAAAGCCGGCG", - "domains": [ - {"helix": 3, "forward": true, "start": 72, "end": 80}, - {"helix": 4, "forward": false, "start": 64, "end": 80}, - {"helix": 5, "forward": true, "start": 64, "end": 72} - ] - }, - { - "color": "#aaaa00", - "sequence": "AGTATCGGCCTCAGGAAGATCGCAGTGCGGGC", - "domains": [ - {"helix": 5, "forward": true, "start": 104, "end": 128}, - {"helix": 4, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#b8056c", - "sequence": "TCGAATTCATTGTTATCCGCTCACCCCGCTTT", - "domains": [ - {"helix": 2, "forward": false, "start": 112, "end": 120}, - {"helix": 1, "forward": true, "start": 112, "end": 128}, - {"helix": 0, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#007200", - "sequence": "CTCTTCGCGCAAGGCGATTAAGTTTACCGAGC", - "domains": [ - {"helix": 4, "forward": false, "start": 112, "end": 120}, - {"helix": 3, "forward": true, "start": 112, "end": 128}, - {"helix": 2, "forward": false, "start": 120, "end": 128} - ] - }, - { - "color": "#cc0000", - "sequence": "CATTAATTGCGTTGCGCTCACTGAATTCCA", - "domains": [ - {"helix": 0, "forward": false, "start": 128, "end": 152, "deletions": [129]}, - {"helix": 1, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#f7931e", - "sequence": "CACAACATTAGAGGATCCCCGGGGGGTAAC", - "domains": [ - {"helix": 1, "forward": true, "start": 136, "end": 144}, - {"helix": 2, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 3, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#f74308", - "sequence": "GCCAGGGTTGGGAAGGGCGATCGCTCCAGC", - "domains": [ - {"helix": 3, "forward": true, "start": 136, "end": 144}, - {"helix": 4, "forward": false, "start": 128, "end": 144, "deletions": [129]}, - {"helix": 5, "forward": true, "start": 128, "end": 136, "deletions": [129]} - ] - }, - { - "color": "#57bb00", - "sequence": "CAGCTTTCCGGCACCGCTTCTGGTCAGGCTGC", - "domains": [ - {"helix": 5, "forward": true, "start": 136, "end": 160}, - {"helix": 4, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#888888", - "sequence": "GTCGACTCACGAGCCGGAAGCATACTAACTCA", - "domains": [ - {"helix": 2, "forward": false, "start": 144, "end": 152}, - {"helix": 1, "forward": true, "start": 144, "end": 160}, - {"helix": 0, "forward": false, "start": 152, "end": 160} - ] - }, - { - "color": "#32b86c", - "sequence": "GCAACTGTTTTCCCAGTCACGACGGCCTGCAG", - "domains": [ - {"helix": 4, "forward": false, "start": 144, "end": 152}, - {"helix": 3, "forward": true, "start": 144, "end": 160}, - {"helix": 2, "forward": false, "start": 152, "end": 160} - ] - } - ] -} \ No newline at end of file