From 2e5cefe33b4ccef4dd1c4d94015658588cbb20f8 Mon Sep 17 00:00:00 2001 From: pinyili2 <pinyili2@illinois.edu> Date: Wed, 14 Aug 2024 08:24:38 -0500 Subject: [PATCH] update code --- mrdna/readers/.DS_Store | Bin 0 -> 6148 bytes mrdna/readers/__init__.py | 2 - mrdna/readers/segmentmodel_from_cadnano.py | 57 +- mrdna/readers/test.csv | 1246 --- mrdna/readers/test/1.json | 1 + mrdna/readers/test/ipykernel_launcher.json | 3687 +++++++ mrdna/readers/test/loopout.sc | 45 + mrdna/readers/test/s.csv | 416 + .../segmentmodel_from_cadnano_old.py | 8 +- mrdna/readers/test/seq0.txt | 15 + mrdna/readers/test/test.ipynb | 548 +- mrdna/readers/test/test.sc | 121 + mrdna/readers/test/test2.ipynb | 8524 ++++++++++++++++- mrdna/readers/test/test3.ipynb | 8 +- mrdna/readers/test/test_cad2.5.json | 1 + mrdna/readers/test/test_insert.sc | 122 + mrdna/readers/test/test_insert_2.5.json | 1 + mrdna/readers/test/test_insert_seq2.json | 1 + mrdna/readers/test/test_insert_seq3.json | 1 + 19 files changed, 13466 insertions(+), 1338 deletions(-) create mode 100644 mrdna/readers/.DS_Store delete mode 100644 mrdna/readers/test.csv create mode 100644 mrdna/readers/test/1.json create mode 100644 mrdna/readers/test/ipykernel_launcher.json create mode 100644 mrdna/readers/test/loopout.sc create mode 100644 mrdna/readers/test/s.csv rename mrdna/readers/{ => test}/segmentmodel_from_cadnano_old.py (96%) create mode 100644 mrdna/readers/test/seq0.txt create mode 100644 mrdna/readers/test/test.sc create mode 100644 mrdna/readers/test/test_cad2.5.json create mode 100644 mrdna/readers/test/test_insert.sc create mode 100644 mrdna/readers/test/test_insert_2.5.json create mode 100644 mrdna/readers/test/test_insert_seq2.json create mode 100644 mrdna/readers/test/test_insert_seq3.json diff --git a/mrdna/readers/.DS_Store b/mrdna/readers/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ca5d0e6e71945129431efcf086d0e96e397046d8 GIT binary patch literal 6148 zcmeH~F^<AO3`M`$6i75Fx15FpaDx$o6L5jmZs?FGfPRk7x5o|Htx>f4mh3n7#7gpu zObo#Gk7);t0M>LTwjO3?%m>_Y#trxB_H+5ZUN2sxtvcW-eZ*`(w*@I61*Cu!kOER* zK?>wCzTPb8ne-@9Kng5F0slS}y0a!*XM8#sVgw)umczJ?S%NHHAZxO9vO=?*9xPie z#t^SZJ6ZC&nrxlD9hSp~<(<u^7@GBVSYbl58c>h|QedXQN6$w;|Bv*)=KooXQYjz> z{+R+c98QNlUn<YmU$5u&udMpI(aE@+;pHcQi66zE^f2xhUywD~I$5FVM<8TSkOFU2 F;0eYx62$-j literal 0 HcmV?d00001 diff --git a/mrdna/readers/__init__.py b/mrdna/readers/__init__.py index b694be0..33b2a79 100644 --- a/mrdna/readers/__init__.py +++ b/mrdna/readers/__init__.py @@ -9,9 +9,7 @@ def read_cadnano(json_file, sequence=None, fill_sequence='T', **model_parameters def read_cadnano_input(json_file,sequence=None,**model_parameters): from .segmentmodel_from_cadnano import mrdna_model_from_cadnano - from .segmentmodel_from_lists import model_from_basepair_stack_3prime - return mrdna_model_from_cadnano(json_file,seq=sequence,**model_parameters) def read_vhelix(maya_file, **model_parameters): diff --git a/mrdna/readers/segmentmodel_from_cadnano.py b/mrdna/readers/segmentmodel_from_cadnano.py index 6cb46ea..4b950b0 100644 --- a/mrdna/readers/segmentmodel_from_cadnano.py +++ b/mrdna/readers/segmentmodel_from_cadnano.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -import pdb import numpy as np import os,sys from glob import glob @@ -13,6 +12,7 @@ from ..segmentmodel import SegmentModel, SingleStrandedSegment, DoubleStrandedSe from ..model.dna_sequence import m13 as m13seq import json import re +import pdb @@ -23,7 +23,26 @@ import re ## - helices that should be stacked across an empty region (crossovers from and end in the helix to another end in the helix) ## - circular constructs + +def get_lattice(part): + lattice_type = None + _gt = part.getGridType() + try: + lattice_type = _gt.name.lower() + except: + if _gt == 1: + lattice_type = 'square' + elif _gt == 2: + lattice_type = 'honeycomb' + else: + print(lattice_type) + return lattice_type + + def read_json_file(filename): + import cadnano + from cadnano.document import Document + try: with open(filename) as ch: json_data = json.load(ch) @@ -38,11 +57,7 @@ def read_json_file(filename): # l = re.sub(r"(\w):", r'\1":', l) content += l+"\n" json_data = json.loads(content) - return json_data -def cadnano_parts(json_data): - import cadnano - from cadnano.document import Document try: doc = Document() cadnano.fileio.v3decode.decode(doc, json_data) @@ -68,20 +83,6 @@ def cadnano_parts(json_data): n_df=df.set_index("num") return part -def get_lattice(part): - lattice_type = None - _gt = part.getGridType() - try: - lattice_type = _gt.name.lower() - except: - if _gt == 1: - lattice_type = 'square' - elif _gt == 2: - lattice_type = 'honeycomb' - else: - print("WARNING: unable to determine cadnano part lattice type") - return lattice_type - def get_helix_angle(part, helix_id, indices): """ Get "start_orientation" for helix """ # import ipdb @@ -154,10 +155,11 @@ def gen_id_series(strand,part): else: df["threeprime_tuple"]=[(strand.connection3p().idNum(),str(strand.connection3p().idx5Prime()),strand.connection3p().isForward())]+L[0:-1] ## cadnano 3.1 sequence assign is wrong if there is insertion or deletion. - df["r"]=[np.array([df["x"][i],df["y"][i],df["z"][i]]) for i in df.index] + df["r"]=[np.array([df["x"][i],df["y"][i],df["z"][i]],dtype=np.float32) for i in df.index] return [pd.Series(df.loc[i]) for i in df.index] + def gen_prop_table(part): strand_set=[] for i in part.getidNums(): @@ -170,7 +172,7 @@ def gen_prop_table(part): nt_prop=pd.DataFrame(id_series) nt_prop.reset_index(names=list(range(len(nt_prop.index))),inplace=True) - + nt_prop["seq"]=-1 ind_tuple=[(nt_prop["vh"][i],nt_prop["zid"][i],nt_prop["fwd"][i]) for i in nt_prop.index] stacks=[] for i in list(nt_prop["stack_tuple"]): @@ -187,7 +189,7 @@ def gen_prop_table(part): tprime.append(ind_tuple.index(i)) nt_prop["threeprime"]=tprime vhzid=list(zip(nt_prop["vh"],nt_prop["zid"])) - + nt_prop["bp"]=-1 nt_prop["orientation"]=[get_helix_angle(part, helix_id, int(float(indices))) for helix_id,indices in vhzid] nt_prop=nt_prop.fillna(-1) for i in range(int(len(nt_prop.index)/2)): @@ -199,14 +201,11 @@ def gen_prop_table(part): pass return nt_prop - def mrdna_model_from_cadnano(json_file,seq=None,**model_parameters): - json_data=read_json_file(json_file) - part,decoder=cadnano_parts(json_data) - if decoder==2: - nt_prop=gen_prop_table(part) - elif decoder==3: - nt_prop=gen_prop_table(part) + part=read_json_file(json_file) + + nt_prop=gen_prop_table(part) + if seq is None: if nt_prop["seq"][0]==-1: diff --git a/mrdna/readers/test.csv b/mrdna/readers/test.csv deleted file mode 100644 index 0a81061..0000000 --- a/mrdna/readers/test.csv +++ /dev/null @@ -1,1246 +0,0 @@ -,vh,zid,is_scaf,r,bp,stack,threeprime,seq,orientation -0,0,5,True,[0. 2.25 1.7 ],213,-1,1,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -1,0,6,True,[0. 2.25 2.04],214,-1,2,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -2,0,7,True,[0. 2.25 2.38],215,-1,3,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -3,0,8,True,[0. 2.25 2.72],216,-1,4,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -4,0,9,True,[0. 2.25 3.06],217,-1,5,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -5,0,10,True,[0. 2.25 3.4 ],218,-1,6,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -6,0,11,True,[0. 2.25 3.74],219,-1,7,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -7,0,12,True,[0. 2.25 4.08],220,-1,8,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -8,0,13,True,[0. 2.25 4.42],221,-1,9,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -9,0,14,True,[0. 2.25 4.76],222,-1,10,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -10,0,15,True,[0. 2.25 5.1 ],223,-1,11,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -11,0,16,True,[0. 2.25 5.44],224,-1,12,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -12,0,17,True,[0. 2.25 5.78],225,-1,13,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -13,0,18,True,[0. 2.25 6.12],226,-1,14,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -14,0,19,True,[0. 2.25 6.46],227,-1,15,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -15,0,20,True,[0. 2.25 6.8 ],228,-1,16,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -16,0,21,True,[0. 2.25 7.14],229,-1,17,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -17,0,22,True,[0. 2.25 7.48],230,-1,18,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -18,0,23,True,[0. 2.25 7.82],231,-1,19,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -19,0,24,True,[0. 2.25 8.16],232,-1,20,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -20,0,25,True,[0. 2.25 8.5 ],233,-1,21,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -21,0,26,True,[0. 2.25 8.84],234,-1,22,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -22,0,27,True,[0. 2.25 9.18],235,-1,23,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -23,0,28,True,[0. 2.25 9.52],236,-1,24,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -24,0,29,True,[0. 2.25 9.86],237,-1,25,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -25,0,30,True,[ 0. 2.25 10.2 ],238,-1,26,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -26,0,31,True,[ 0. 2.25 10.54],239,-1,27,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -27,0,32,True,[ 0. 2.25 10.88],240,-1,28,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -28,0,33,True,[ 0. 2.25 11.22],241,-1,29,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -29,0,34,True,[ 0. 2.25 11.56],242,-1,30,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -30,0,35,True,[ 0. 2.25 11.9 ],243,-1,31,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -31,0,36,True,[ 0. 2.25 12.24],244,-1,66,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -32,0,39,True,[ 0. 2.25 13.26],-1,-1,33,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -33,0,40,True,[ 0. 2.25 13.6 ],-1,-1,34,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -34,0,41,True,[ 0. 2.25 13.94],-1,-1,-1,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -35,1,5,True,[-1.94855738 1.125 1.7 ],249,-1,0,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -36,1,6,True,[-1.94855738 1.125 2.04 ],250,-1,35,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -37,1,7,True,[-1.94855738 1.125 2.38 ],251,-1,36,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -38,1,8,True,[-1.94855738 1.125 2.72 ],252,-1,37,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -39,1,9,True,[-1.94855738 1.125 3.06 ],253,-1,38,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -40,1,10,True,[-1.94855738 1.125 3.4 ],254,-1,39,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -41,1,11,True,[-1.94855738 1.125 3.74 ],255,-1,40,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -42,1,12,True,[-1.94855738 1.125 4.08 ],256,-1,41,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -43,1,13,True,[-1.94855738 1.125 4.42 ],257,-1,42,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -44,1,14,True,[-1.94855738 1.125 4.76 ],258,-1,43,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -45,1,15,True,[-1.94855738 1.125 5.1 ],259,-1,44,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -46,1,16,True,[-1.94855738 1.125 5.44 ],260,-1,45,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -47,1,17,True,[-1.94855738 1.125 5.78 ],261,-1,46,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -48,1,18,True,[-1.94855738 1.125 6.12 ],262,-1,47,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -49,1,19,True,[-1.94855738 1.125 6.46 ],263,-1,87,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -50,1,20,True,[-1.94855738 1.125 6.8 ],264,-1,49,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -51,1,21,True,[-1.94855738 1.125 7.14 ],265,-1,50,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -52,1,22,True,[-1.94855738 1.125 7.48 ],266,-1,51,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -53,1,23,True,[-1.94855738 1.125 7.82 ],267,-1,52,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -54,1,24,True,[-1.94855738 1.125 8.16 ],268,-1,53,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -55,1,25,True,[-1.94855738 1.125 8.5 ],269,-1,54,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -56,1,26,True,[-1.94855738 1.125 8.84 ],270,-1,55,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -57,1,27,True,[-1.94855738 1.125 9.18 ],271,-1,56,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -58,1,28,True,[-1.94855738 1.125 9.52 ],272,-1,57,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -59,1,29,True,[-1.94855738 1.125 9.86 ],273,-1,58,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -60,1,30,True,[-1.94855738 1.125 10.2 ],274,-1,59,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -61,1,31,True,[-1.94855738 1.125 10.54 ],275,-1,60,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -62,1,32,True,[-1.94855738 1.125 10.88 ],276,-1,61,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -63,1,33,True,[-1.94855738 1.125 11.22 ],277,-1,62,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -64,1,34,True,[-1.94855738 1.125 11.56 ],278,-1,63,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -65,1,35,True,[-1.94855738 1.125 11.9 ],279,-1,64,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -66,1,36,True,[-1.94855738 1.125 12.24 ],280,-1,65,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -67,1,39,True,[-1.94855738 1.125 13.26 ],-1,-1,-1,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -68,1,40,True,[-1.94855738 1.125 13.6 ],-1,-1,67,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -69,1,41,True,[-1.94855738 1.125 13.94 ],-1,-1,68,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -70,2,2,True,[-1.94855738 -1.125 0.68 ],285,-1,71,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -71,2,3,True,[-1.94855738 -1.125 1.02 ],286,-1,72,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -72,2,4,True,[-1.94855738 -1.125 1.36 ],287,-1,73,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -73,2,5,True,[-1.94855738 -1.125 1.7 ],288,-1,74,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -74,2,6,True,[-1.94855738 -1.125 2.04 ],289,-1,75,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -75,2,7,True,[-1.94855738 -1.125 2.38 ],290,-1,76,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -76,2,8,True,[-1.94855738 -1.125 2.72 ],291,-1,77,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -77,2,9,True,[-1.94855738 -1.125 3.06 ],292,-1,78,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -78,2,10,True,[-1.94855738 -1.125 3.4 ],293,-1,79,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -79,2,11,True,[-1.94855738 -1.125 3.74 ],294,-1,80,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -80,2,12,True,[-1.94855738 -1.125 4.08 ],295,-1,81,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -81,2,13,True,[-1.94855738 -1.125 4.42 ],296,-1,82,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -82,2,14,True,[-1.94855738 -1.125 4.76 ],297,-1,83,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -83,2,15,True,[-1.94855738 -1.125 5.1 ],298,-1,84,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -84,2,16,True,[-1.94855738 -1.125 5.44 ],299,-1,85,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -85,2,17,True,[-1.94855738 -1.125 5.78 ],300,-1,86,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -86,2,18,True,[-1.94855738 -1.125 6.12 ],301,-1,48,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -87,2,19,True,[-1.94855738 -1.125 6.46 ],302,-1,88,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -88,2,20,True,[-1.94855738 -1.125 6.8 ],303,-1,89,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -89,2,21,True,[-1.94855738 -1.125 7.14 ],304,-1,90,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -90,2,22,True,[-1.94855738 -1.125 7.48 ],305,-1,91,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -91,2,23,True,[-1.94855738 -1.125 7.82 ],306,-1,92,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -92,2,24,True,[-1.94855738 -1.125 8.16 ],307,-1,93,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -93,2,25,True,[-1.94855738 -1.125 8.5 ],308,-1,94,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -94,2,26,True,[-1.94855738 -1.125 8.84 ],309,-1,95,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -95,2,27,True,[-1.94855738 -1.125 9.18 ],310,-1,96,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -96,2,28,True,[-1.94855738 -1.125 9.52 ],311,-1,97,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -97,2,29,True,[-1.94855738 -1.125 9.86 ],312,-1,98,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -98,2,30,True,[-1.94855738 -1.125 10.2 ],313,-1,99,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -99,2,31,True,[-1.94855738 -1.125 10.54 ],314,-1,100,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -100,2,32,True,[-1.94855738 -1.125 10.88 ],315,-1,134,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -101,2,39,True,[-1.94855738 -1.125 13.26 ],-1,-1,102,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -102,2,40,True,[-1.94855738 -1.125 13.6 ],-1,-1,103,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -103,2,41,True,[-1.94855738 -1.125 13.94 ],-1,-1,-1,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -104,3,2,True,[ 0. -2.25 0.68],320,-1,70,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -105,3,3,True,[ 0. -2.25 1.02],321,-1,104,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -106,3,4,True,[ 0. -2.25 1.36],322,-1,105,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -107,3,5,True,[ 0. -2.25 1.7 ],323,-1,106,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -108,3,6,True,[ 0. -2.25 2.04],324,-1,107,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -109,3,7,True,[ 0. -2.25 2.38],325,-1,108,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -110,3,8,True,[ 0. -2.25 2.72],326,-1,109,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -111,3,9,True,[ 0. -2.25 3.06],327,-1,110,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -112,3,10,True,[ 0. -2.25 3.4 ],328,-1,111,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -113,3,11,True,[ 0. -2.25 3.74],329,-1,112,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -114,3,12,True,[ 0. -2.25 4.08],330,-1,113,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -115,3,13,True,[ 0. -2.25 4.42],331,-1,114,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -116,3,14,True,[ 0. -2.25 4.76],332,-1,115,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -117,3,15,True,[ 0. -2.25 5.1 ],333,-1,116,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -118,3,16,True,[ 0. -2.25 5.44],334,-1,151,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -119,3,17,True,[ 0. -2.25 5.78],335,-1,118,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -120,3,18,True,[ 0. -2.25 6.12],336,-1,119,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -121,3,19,True,[ 0. -2.25 6.46],337,-1,120,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -122,3,20,True,[ 0. -2.25 6.8 ],338,-1,121,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -123,3,21,True,[ 0. -2.25 7.14],339,-1,122,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -124,3,22,True,[ 0. -2.25 7.48],340,-1,123,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -125,3,23,True,[ 0. -2.25 7.82],341,-1,124,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -126,3,24,True,[ 0. -2.25 8.16],342,-1,125,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -127,3,25,True,[ 0. -2.25 8.5 ],343,-1,126,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -128,3,26,True,[ 0. -2.25 8.84],344,-1,127,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -129,3,27,True,[ 0. -2.25 9.18],345,-1,128,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -130,3,28,True,[ 0. -2.25 9.52],346,-1,129,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -131,3,29,True,[ 0. -2.25 9.86],347,-1,130,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -132,3,30,True,[ 0. -2.25 10.2 ],348,-1,131,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -133,3,31,True,[ 0. -2.25 10.54],349,-1,132,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -134,3,32,True,[ 0. -2.25 10.88],350,-1,133,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -135,3,37,True,[ 0. -2.25 12.58],-1,-1,-1,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -136,3,38,True,[ 0. -2.25 12.92],-1,-1,135,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -137,3,39,True,[ 0. -2.25 13.26],-1,-1,136,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -138,3,40,True,[ 0. -2.25 13.6 ],-1,-1,137,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -139,3,41,True,[ 0. -2.25 13.94],-1,-1,138,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -140,4,0,True,[ 1.94855738 -1.125 0. ],-1,-1,141,-1,"[[ 2.22044605e-16 1.00000000e+00 0.00000000e+00] - [-1.00000000e+00 2.22044605e-16 0.00000000e+00] - [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]" -141,4,1,True,[ 1.94855738 -1.125 0.34 ],-1,-1,142,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -142,4,2,True,[ 1.94855738 -1.125 0.68 ],-1,-1,143,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -143,4,3,True,[ 1.94855738 -1.125 1.02 ],-1,-1,-1,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -144,4,9,True,[ 1.94855738 -1.125 3.06 ],353,-1,145,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -145,4,10,True,[ 1.94855738 -1.125 3.4 ],354,-1,146,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -146,4,11,True,[ 1.94855738 -1.125 3.74 ],355,-1,147,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -147,4,12,True,[ 1.94855738 -1.125 4.08 ],356,-1,148,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -148,4,13,True,[ 1.94855738 -1.125 4.42 ],357,-1,149,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -149,4,14,True,[ 1.94855738 -1.125 4.76 ],358,-1,150,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -150,4,15,True,[ 1.94855738 -1.125 5.1 ],359,-1,117,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -151,4,16,True,[ 1.94855738 -1.125 5.44 ],360,-1,152,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -152,4,17,True,[ 1.94855738 -1.125 5.78 ],361,-1,153,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -153,4,18,True,[ 1.94855738 -1.125 6.12 ],362,-1,154,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -154,4,19,True,[ 1.94855738 -1.125 6.46 ],363,-1,155,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -155,4,20,True,[ 1.94855738 -1.125 6.8 ],364,-1,156,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -156,4,21,True,[ 1.94855738 -1.125 7.14 ],365,-1,157,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -157,4,22,True,[ 1.94855738 -1.125 7.48 ],366,-1,158,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -158,4,23,True,[ 1.94855738 -1.125 7.82 ],367,-1,159,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -159,4,24,True,[ 1.94855738 -1.125 8.16 ],368,-1,160,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -160,4,25,True,[ 1.94855738 -1.125 8.5 ],369,-1,161,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -161,4,26,True,[ 1.94855738 -1.125 8.84 ],370,-1,162,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -162,4,27,True,[ 1.94855738 -1.125 9.18 ],371,-1,163,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -163,4,28,True,[ 1.94855738 -1.125 9.52 ],372,-1,164,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -164,4,29,True,[ 1.94855738 -1.125 9.86 ],373,-1,165,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -165,4,30,True,[ 1.94855738 -1.125 10.2 ],374,-1,166,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -166,4,31,True,[ 1.94855738 -1.125 10.54 ],375,-1,167,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -167,4,32,True,[ 1.94855738 -1.125 10.88 ],376,-1,168,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -168,4,33,True,[ 1.94855738 -1.125 11.22 ],377,-1,169,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -169,4,34,True,[ 1.94855738 -1.125 11.56 ],378,-1,170,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -170,4,35,True,[ 1.94855738 -1.125 11.9 ],379,-1,171,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -171,4,36,True,[ 1.94855738 -1.125 12.24 ],380,-1,172,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -172,4,37,True,[ 1.94855738 -1.125 12.58 ],381,-1,173,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -173,4,38,True,[ 1.94855738 -1.125 12.92 ],382,-1,174,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -174,4,39,True,[ 1.94855738 -1.125 13.26 ],383,-1,209,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -175,5,0,True,[1.94855738 1.125 0. ],-1,-1,-1,-1,"[[ 2.22044605e-16 1.00000000e+00 0.00000000e+00] - [-1.00000000e+00 2.22044605e-16 0.00000000e+00] - [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]" -176,5,1,True,[1.94855738 1.125 0.34 ],-1,-1,175,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -177,5,2,True,[1.94855738 1.125 0.68 ],-1,-1,176,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -178,5,3,True,[1.94855738 1.125 1.02 ],-1,-1,177,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -179,5,9,True,[1.94855738 1.125 3.06 ],384,-1,144,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -180,5,10,True,[1.94855738 1.125 3.4 ],385,-1,179,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -181,5,11,True,[1.94855738 1.125 3.74 ],386,-1,180,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -182,5,12,True,[1.94855738 1.125 4.08 ],387,-1,181,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -183,5,13,True,[1.94855738 1.125 4.42 ],388,-1,182,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -184,5,14,True,[1.94855738 1.125 4.76 ],389,-1,183,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -185,5,15,True,[1.94855738 1.125 5.1 ],390,-1,184,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -186,5,16,True,[1.94855738 1.125 5.44 ],391,-1,185,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -187,5,17,True,[1.94855738 1.125 5.78 ],392,-1,186,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -188,5,18,True,[1.94855738 1.125 6.12 ],393,-1,187,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -189,5,19,True,[1.94855738 1.125 6.46 ],394,-1,188,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -190,5,20,True,[1.94855738 1.125 6.8 ],395,-1,189,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -191,5,21,True,[1.94855738 1.125 7.14 ],396,-1,190,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -192,5,22,True,[1.94855738 1.125 7.48 ],397,-1,191,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -193,5,23,True,[1.94855738 1.125 7.82 ],398,-1,-1,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -194,5,24,True,[1.94855738 1.125 8.16 ],399,193,193,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -195,5,25,True,[1.94855738 1.125 8.5 ],400,-1,194,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -196,5,26,True,[1.94855738 1.125 8.84 ],401,-1,195,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -197,5,27,True,[1.94855738 1.125 9.18 ],402,-1,196,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -198,5,28,True,[1.94855738 1.125 9.52 ],403,-1,197,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -199,5,29,True,[1.94855738 1.125 9.86 ],404,-1,198,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -200,5,30,True,[ 1.94855738 1.125 10.2 ],405,-1,199,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -201,5,31,True,[ 1.94855738 1.125 10.54 ],406,-1,200,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -202,5,32,True,[ 1.94855738 1.125 10.88 ],407,-1,201,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -203,5,33,True,[ 1.94855738 1.125 11.22 ],408,-1,202,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -204,5,34,True,[ 1.94855738 1.125 11.56 ],409,-1,203,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -205,5,35,True,[ 1.94855738 1.125 11.9 ],410,-1,204,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -206,5,36,True,[ 1.94855738 1.125 12.24 ],411,-1,205,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -207,5,37,True,[ 1.94855738 1.125 12.58 ],-1,-1,206,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -208,5,38,True,[ 1.94855738 1.125 12.92 ],-1,-1,207,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -209,5,39,True,[ 1.94855738 1.125 13.26 ],-1,-1,208,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -210,0,2,False,[0. 2.25 0.68],-1,-1,-1,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -211,0,3,False,[0. 2.25 1.02],-1,-1,210,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -212,0,4,False,[0. 2.25 1.36],-1,-1,211,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -213,0,5,False,[0. 2.25 1.7 ],0,-1,212,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -214,0,6,False,[0. 2.25 2.04],1,-1,213,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -215,0,7,False,[0. 2.25 2.38],2,-1,214,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -216,0,8,False,[0. 2.25 2.72],3,-1,215,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -217,0,9,False,[0. 2.25 3.06],4,-1,216,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -218,0,10,False,[0. 2.25 3.4 ],5,-1,217,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -219,0,11,False,[0. 2.25 3.74],6,-1,218,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -220,0,12,False,[0. 2.25 4.08],7,-1,219,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -221,0,13,False,[0. 2.25 4.42],8,-1,220,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -222,0,14,False,[0. 2.25 4.76],9,-1,221,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -223,0,15,False,[0. 2.25 5.1 ],10,-1,222,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -224,0,16,False,[0. 2.25 5.44],11,-1,223,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -225,0,17,False,[0. 2.25 5.78],12,-1,224,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -226,0,18,False,[0. 2.25 6.12],13,-1,225,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -227,0,19,False,[0. 2.25 6.46],14,-1,226,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -228,0,20,False,[0. 2.25 6.8 ],15,-1,227,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -229,0,21,False,[0. 2.25 7.14],16,-1,265,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -230,0,22,False,[0. 2.25 7.48],17,-1,229,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -231,0,23,False,[0. 2.25 7.82],18,-1,230,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -232,0,24,False,[0. 2.25 8.16],19,-1,-1,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -233,0,25,False,[0. 2.25 8.5 ],20,232,232,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -234,0,26,False,[0. 2.25 8.84],21,-1,233,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -235,0,27,False,[0. 2.25 9.18],22,-1,234,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -236,0,28,False,[0. 2.25 9.52],23,-1,403,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -237,0,29,False,[0. 2.25 9.86],24,-1,236,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -238,0,30,False,[ 0. 2.25 10.2 ],25,-1,237,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -239,0,31,False,[ 0. 2.25 10.54],26,-1,238,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -240,0,32,False,[ 0. 2.25 10.88],27,-1,239,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -241,0,33,False,[ 0. 2.25 11.22],28,-1,240,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -242,0,34,False,[ 0. 2.25 11.56],29,-1,241,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -243,0,35,False,[ 0. 2.25 11.9 ],30,-1,242,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -244,0,36,False,[ 0. 2.25 12.24],31,-1,243,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -245,0,37,False,[ 0. 2.25 12.58],-1,-1,244,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -246,0,38,False,[ 0. 2.25 12.92],-1,-1,245,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -247,1,3,False,[-1.94855738 1.125 1.02 ],-1,-1,248,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -248,1,4,False,[-1.94855738 1.125 1.36 ],-1,-1,249,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -249,1,5,False,[-1.94855738 1.125 1.7 ],35,-1,250,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -250,1,6,False,[-1.94855738 1.125 2.04 ],36,-1,251,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -251,1,7,False,[-1.94855738 1.125 2.38 ],37,-1,252,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -252,1,8,False,[-1.94855738 1.125 2.72 ],38,-1,253,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -253,1,9,False,[-1.94855738 1.125 3.06 ],39,-1,254,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -254,1,10,False,[-1.94855738 1.125 3.4 ],40,-1,255,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -255,1,11,False,[-1.94855738 1.125 3.74 ],41,-1,256,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -256,1,12,False,[-1.94855738 1.125 4.08 ],42,-1,257,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -257,1,13,False,[-1.94855738 1.125 4.42 ],43,-1,258,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -258,1,14,False,[-1.94855738 1.125 4.76 ],44,-1,259,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -259,1,15,False,[-1.94855738 1.125 5.1 ],45,-1,260,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -260,1,16,False,[-1.94855738 1.125 5.44 ],46,-1,261,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -261,1,17,False,[-1.94855738 1.125 5.78 ],47,-1,262,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -262,1,18,False,[-1.94855738 1.125 6.12 ],48,-1,263,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -263,1,19,False,[-1.94855738 1.125 6.46 ],49,-1,264,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -264,1,20,False,[-1.94855738 1.125 6.8 ],50,-1,228,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -265,1,21,False,[-1.94855738 1.125 7.14 ],51,-1,266,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -266,1,22,False,[-1.94855738 1.125 7.48 ],52,-1,267,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -267,1,23,False,[-1.94855738 1.125 7.82 ],53,-1,268,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -268,1,24,False,[-1.94855738 1.125 8.16 ],54,-1,269,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -269,1,25,False,[-1.94855738 1.125 8.5 ],55,-1,270,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -270,1,26,False,[-1.94855738 1.125 8.84 ],56,-1,271,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -271,1,27,False,[-1.94855738 1.125 9.18 ],57,-1,272,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -272,1,28,False,[-1.94855738 1.125 9.52 ],58,-1,273,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -273,1,29,False,[-1.94855738 1.125 9.86 ],59,-1,274,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -274,1,30,False,[-1.94855738 1.125 10.2 ],60,-1,275,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -275,1,31,False,[-1.94855738 1.125 10.54 ],61,-1,276,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -276,1,32,False,[-1.94855738 1.125 10.88 ],62,-1,277,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -277,1,33,False,[-1.94855738 1.125 11.22 ],63,-1,278,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -278,1,34,False,[-1.94855738 1.125 11.56 ],64,-1,279,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -279,1,35,False,[-1.94855738 1.125 11.9 ],65,-1,280,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -280,1,36,False,[-1.94855738 1.125 12.24 ],66,-1,281,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -281,1,37,False,[-1.94855738 1.125 12.58 ],-1,-1,282,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -282,1,38,False,[-1.94855738 1.125 12.92 ],-1,-1,-1,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -283,2,0,False,[-1.94855738 -1.125 0. ],-1,-1,-1,-1,"[[ 2.22044605e-16 1.00000000e+00 0.00000000e+00] - [-1.00000000e+00 2.22044605e-16 0.00000000e+00] - [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]" -284,2,1,False,[-1.94855738 -1.125 0.34 ],-1,-1,283,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -285,2,2,False,[-1.94855738 -1.125 0.68 ],70,-1,284,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -286,2,3,False,[-1.94855738 -1.125 1.02 ],71,-1,285,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -287,2,4,False,[-1.94855738 -1.125 1.36 ],72,-1,286,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -288,2,5,False,[-1.94855738 -1.125 1.7 ],73,-1,287,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -289,2,6,False,[-1.94855738 -1.125 2.04 ],74,-1,288,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -290,2,7,False,[-1.94855738 -1.125 2.38 ],75,-1,289,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -291,2,8,False,[-1.94855738 -1.125 2.72 ],76,-1,290,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -292,2,9,False,[-1.94855738 -1.125 3.06 ],77,-1,291,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -293,2,10,False,[-1.94855738 -1.125 3.4 ],78,-1,292,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -294,2,11,False,[-1.94855738 -1.125 3.74 ],79,-1,293,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -295,2,12,False,[-1.94855738 -1.125 4.08 ],80,-1,294,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -296,2,13,False,[-1.94855738 -1.125 4.42 ],81,-1,295,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -297,2,14,False,[-1.94855738 -1.125 4.76 ],82,-1,296,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -298,2,15,False,[-1.94855738 -1.125 5.1 ],83,-1,297,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -299,2,16,False,[-1.94855738 -1.125 5.44 ],84,-1,298,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -300,2,17,False,[-1.94855738 -1.125 5.78 ],85,-1,299,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -301,2,18,False,[-1.94855738 -1.125 6.12 ],86,-1,300,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -302,2,19,False,[-1.94855738 -1.125 6.46 ],87,-1,301,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -303,2,20,False,[-1.94855738 -1.125 6.8 ],88,-1,302,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -304,2,21,False,[-1.94855738 -1.125 7.14 ],89,-1,303,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -305,2,22,False,[-1.94855738 -1.125 7.48 ],90,-1,304,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -306,2,23,False,[-1.94855738 -1.125 7.82 ],91,-1,305,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -307,2,24,False,[-1.94855738 -1.125 8.16 ],92,-1,306,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -308,2,25,False,[-1.94855738 -1.125 8.5 ],93,-1,307,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -309,2,26,False,[-1.94855738 -1.125 8.84 ],94,-1,308,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -310,2,27,False,[-1.94855738 -1.125 9.18 ],95,-1,309,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -311,2,28,False,[-1.94855738 -1.125 9.52 ],96,-1,310,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -312,2,29,False,[-1.94855738 -1.125 9.86 ],97,-1,311,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -313,2,30,False,[-1.94855738 -1.125 10.2 ],98,-1,312,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -314,2,31,False,[-1.94855738 -1.125 10.54 ],99,-1,313,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -315,2,32,False,[-1.94855738 -1.125 10.88 ],100,-1,314,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -316,2,33,False,[-1.94855738 -1.125 11.22 ],-1,-1,315,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -317,2,34,False,[-1.94855738 -1.125 11.56 ],-1,-1,316,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -318,3,0,False,[ 0. -2.25 0. ],-1,-1,319,-1,"[[ 2.22044605e-16 1.00000000e+00 0.00000000e+00] - [-1.00000000e+00 2.22044605e-16 0.00000000e+00] - [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]" -319,3,1,False,[ 0. -2.25 0.34],-1,-1,320,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -320,3,2,False,[ 0. -2.25 0.68],104,-1,321,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -321,3,3,False,[ 0. -2.25 1.02],105,-1,322,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -322,3,4,False,[ 0. -2.25 1.36],106,-1,323,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -323,3,5,False,[ 0. -2.25 1.7 ],107,-1,324,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -324,3,6,False,[ 0. -2.25 2.04],108,-1,325,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -325,3,7,False,[ 0. -2.25 2.38],109,-1,326,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -326,3,8,False,[ 0. -2.25 2.72],110,-1,327,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -327,3,9,False,[ 0. -2.25 3.06],111,-1,328,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -328,3,10,False,[ 0. -2.25 3.4 ],112,-1,329,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -329,3,11,False,[ 0. -2.25 3.74],113,-1,330,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -330,3,12,False,[ 0. -2.25 4.08],114,-1,331,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -331,3,13,False,[ 0. -2.25 4.42],115,-1,332,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -332,3,14,False,[ 0. -2.25 4.76],116,-1,333,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -333,3,15,False,[ 0. -2.25 5.1 ],117,-1,334,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -334,3,16,False,[ 0. -2.25 5.44],118,-1,335,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -335,3,17,False,[ 0. -2.25 5.78],119,-1,336,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -336,3,18,False,[ 0. -2.25 6.12],120,-1,337,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -337,3,19,False,[ 0. -2.25 6.46],121,-1,338,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -338,3,20,False,[ 0. -2.25 6.8 ],122,-1,364,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -339,3,21,False,[ 0. -2.25 7.14],123,-1,340,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -340,3,22,False,[ 0. -2.25 7.48],124,-1,341,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -341,3,23,False,[ 0. -2.25 7.82],125,-1,342,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -342,3,24,False,[ 0. -2.25 8.16],126,-1,343,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -343,3,25,False,[ 0. -2.25 8.5 ],127,-1,344,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -344,3,26,False,[ 0. -2.25 8.84],128,-1,345,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -345,3,27,False,[ 0. -2.25 9.18],129,-1,346,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -346,3,28,False,[ 0. -2.25 9.52],130,-1,347,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -347,3,29,False,[ 0. -2.25 9.86],131,-1,348,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -348,3,30,False,[ 0. -2.25 10.2 ],132,-1,349,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -349,3,31,False,[ 0. -2.25 10.54],133,-1,350,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -350,3,32,False,[ 0. -2.25 10.88],134,-1,351,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -351,3,33,False,[ 0. -2.25 11.22],-1,-1,352,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -352,3,34,False,[ 0. -2.25 11.56],-1,-1,-1,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -353,4,9,False,[ 1.94855738 -1.125 3.06 ],144,-1,-1,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -354,4,10,False,[ 1.94855738 -1.125 3.4 ],145,353,353,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -355,4,11,False,[ 1.94855738 -1.125 3.74 ],146,-1,354,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -356,4,12,False,[ 1.94855738 -1.125 4.08 ],147,-1,355,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -357,4,13,False,[ 1.94855738 -1.125 4.42 ],148,-1,356,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -358,4,14,False,[ 1.94855738 -1.125 4.76 ],149,-1,357,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -359,4,15,False,[ 1.94855738 -1.125 5.1 ],150,-1,358,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -360,4,16,False,[ 1.94855738 -1.125 5.44 ],151,-1,359,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -361,4,17,False,[ 1.94855738 -1.125 5.78 ],152,-1,360,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -362,4,18,False,[ 1.94855738 -1.125 6.12 ],153,-1,361,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -363,4,19,False,[ 1.94855738 -1.125 6.46 ],154,-1,362,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -364,4,20,False,[ 1.94855738 -1.125 6.8 ],155,-1,363,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -365,4,21,False,[ 1.94855738 -1.125 7.14 ],156,-1,339,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -366,4,22,False,[ 1.94855738 -1.125 7.48 ],157,-1,365,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -367,4,23,False,[ 1.94855738 -1.125 7.82 ],158,-1,366,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -368,4,24,False,[ 1.94855738 -1.125 8.16 ],159,-1,367,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -369,4,25,False,[ 1.94855738 -1.125 8.5 ],160,-1,368,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -370,4,26,False,[ 1.94855738 -1.125 8.84 ],161,-1,369,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -371,4,27,False,[ 1.94855738 -1.125 9.18 ],162,-1,370,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -372,4,28,False,[ 1.94855738 -1.125 9.52 ],163,-1,371,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -373,4,29,False,[ 1.94855738 -1.125 9.86 ],164,-1,372,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -374,4,30,False,[ 1.94855738 -1.125 10.2 ],165,-1,373,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -375,4,31,False,[ 1.94855738 -1.125 10.54 ],166,-1,374,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -376,4,32,False,[ 1.94855738 -1.125 10.88 ],167,-1,375,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -377,4,33,False,[ 1.94855738 -1.125 11.22 ],168,-1,376,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -378,4,34,False,[ 1.94855738 -1.125 11.56 ],169,-1,377,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -379,4,35,False,[ 1.94855738 -1.125 11.9 ],170,-1,378,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -380,4,36,False,[ 1.94855738 -1.125 12.24 ],171,-1,379,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -381,4,37,False,[ 1.94855738 -1.125 12.58 ],172,-1,380,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -382,4,38,False,[ 1.94855738 -1.125 12.92 ],173,-1,381,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -383,4,39,False,[ 1.94855738 -1.125 13.26 ],174,-1,382,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -384,5,9,False,[1.94855738 1.125 3.06 ],179,-1,385,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -385,5,10,False,[1.94855738 1.125 3.4 ],180,-1,386,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -386,5,11,False,[1.94855738 1.125 3.74 ],181,-1,387,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -387,5,12,False,[1.94855738 1.125 4.08 ],182,-1,388,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -388,5,13,False,[1.94855738 1.125 4.42 ],183,-1,389,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -389,5,14,False,[1.94855738 1.125 4.76 ],184,-1,390,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -390,5,15,False,[1.94855738 1.125 5.1 ],185,-1,391,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -391,5,16,False,[1.94855738 1.125 5.44 ],186,-1,392,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -392,5,17,False,[1.94855738 1.125 5.78 ],187,-1,393,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -393,5,18,False,[1.94855738 1.125 6.12 ],188,-1,394,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" -394,5,19,False,[1.94855738 1.125 6.46 ],189,-1,395,-1,"[[-0.93087375 0.36534102 0. ] - [-0.36534102 -0.93087375 0. ] - [ 0. 0. 1. ]]" -395,5,20,False,[1.94855738 1.125 6.8 ],190,-1,396,-1,"[[-0.56332006 0.82623877 0. ] - [-0.82623877 -0.56332006 0. ] - [ 0. 0. 1. ]]" -396,5,21,False,[1.94855738 1.125 7.14 ],191,-1,397,-1,"[[-4.4408921e-16 1.0000000e+00 0.0000000e+00] - [-1.0000000e+00 -4.4408921e-16 0.0000000e+00] - [ 0.0000000e+00 0.0000000e+00 1.0000000e+00]]" -397,5,22,False,[1.94855738 1.125 7.48 ],192,-1,398,-1,"[[ 0.56332006 0.82623877 0. ] - [-0.82623877 0.56332006 0. ] - [ 0. 0. 1. ]]" -398,5,23,False,[1.94855738 1.125 7.82 ],193,-1,399,-1,"[[ 0.93087375 0.36534102 0. ] - [-0.36534102 0.93087375 0. ] - [ 0. 0. 1. ]]" -399,5,24,False,[1.94855738 1.125 8.16 ],194,-1,400,-1,"[[ 0.97492791 -0.22252093 0. ] - [ 0.22252093 0.97492791 0. ] - [ 0. 0. 1. ]]" -400,5,25,False,[1.94855738 1.125 8.5 ],195,-1,401,-1,"[[ 0.68017274 -0.73305187 0. ] - [ 0.73305187 0.68017274 0. ] - [ 0. 0. 1. ]]" -401,5,26,False,[1.94855738 1.125 8.84 ],196,-1,402,-1,"[[ 0.14904227 -0.98883083 0. ] - [ 0.98883083 0.14904227 0. ] - [ 0. 0. 1. ]]" -402,5,27,False,[1.94855738 1.125 9.18 ],197,-1,235,-1,"[[-0.43388374 -0.90096887 0. ] - [ 0.90096887 -0.43388374 0. ] - [ 0. 0. 1. ]]" -403,5,28,False,[1.94855738 1.125 9.52 ],198,-1,404,-1,"[[-0.8660254 -0.5 0. ] - [ 0.5 -0.8660254 0. ] - [ 0. 0. 1. ]]" -404,5,29,False,[1.94855738 1.125 9.86 ],199,-1,405,-1,"[[-0.9972038 0.07473009 0. ] - [-0.07473009 -0.9972038 0. ] - [ 0. 0. 1. ]]" -405,5,30,False,[ 1.94855738 1.125 10.2 ],200,-1,406,-1,"[[-0.78183148 0.6234898 0. ] - [-0.6234898 -0.78183148 0. ] - [ 0. 0. 1. ]]" -406,5,31,False,[ 1.94855738 1.125 10.54 ],201,-1,407,-1,"[[-0.29475517 0.95557281 0. ] - [-0.95557281 -0.29475517 0. ] - [ 0. 0. 1. ]]" -407,5,32,False,[ 1.94855738 1.125 10.88 ],202,-1,408,-1,"[[ 0.29475517 0.95557281 0. ] - [-0.95557281 0.29475517 0. ] - [ 0. 0. 1. ]]" -408,5,33,False,[ 1.94855738 1.125 11.22 ],203,-1,409,-1,"[[ 0.78183148 0.6234898 0. ] - [-0.6234898 0.78183148 0. ] - [ 0. 0. 1. ]]" -409,5,34,False,[ 1.94855738 1.125 11.56 ],204,-1,410,-1,"[[ 0.9972038 0.07473009 0. ] - [-0.07473009 0.9972038 0. ] - [ 0. 0. 1. ]]" -410,5,35,False,[ 1.94855738 1.125 11.9 ],205,-1,411,-1,"[[ 0.8660254 -0.5 0. ] - [ 0.5 0.8660254 0. ] - [ 0. 0. 1. ]]" -411,5,36,False,[ 1.94855738 1.125 12.24 ],206,-1,412,-1,"[[ 0.43388374 -0.90096887 0. ] - [ 0.90096887 0.43388374 0. ] - [ 0. 0. 1. ]]" -412,5,37,False,[ 1.94855738 1.125 12.58 ],-1,-1,413,-1,"[[-0.14904227 -0.98883083 0. ] - [ 0.98883083 -0.14904227 0. ] - [ 0. 0. 1. ]]" -413,5,38,False,[ 1.94855738 1.125 12.92 ],-1,-1,414,-1,"[[-0.68017274 -0.73305187 0. ] - [ 0.73305187 -0.68017274 0. ] - [ 0. 0. 1. ]]" -414,5,39,False,[ 1.94855738 1.125 13.26 ],-1,-1,-1,-1,"[[-0.97492791 -0.22252093 0. ] - [ 0.22252093 -0.97492791 0. ] - [ 0. 0. 1. ]]" diff --git a/mrdna/readers/test/1.json b/mrdna/readers/test/1.json new file mode 100644 index 0000000..a628b8f --- /dev/null +++ b/mrdna/readers/test/1.json @@ -0,0 +1 @@ +{"format":"3.1","date":"2024-08-09 00:08:58","name":"","parts":[{"name":"NaPart1","color":"#0066cc","is_visible":true,"active_phos":null,"crossover_span_angle":45,"max_vhelix_length":42,"neighbor_active_angle":"","grid_type":2,"virtual_helix_order":[0,1,2,3,4,5],"is_lattice":true,"virtual_helices":{"name":["vh0","vh1","vh2","vh3","vh4","vh5"],"is_visible":[true,true,true,true,true,true],"color":["#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc"],"eulerZ":[0.0,0.0,0.0,0.0,0.0,0.0],"neighbor_active_angle":[0.0,0.0,0.0,0.0,0.0,0.0],"neighbors":["[1, 5]","[0, 2]","[1, 3]","[2, 4]","[3, 5]","[0, 4]"],"bases_per_repeat":[21,21,21,21,21,21],"turns_per_repeat":[2,2,2,2,2,2],"repeat_hint":[2,2,2,2,2,2],"helical_pitch":[1.0,1.0,1.0,1.0,1.0,1.0],"minor_groove_angle":[180.0,180.0,180.0,180.0,180.0,180.0],"length":[42,42,42,42,42,42],"z":[0.0,0.0,0.0,0.0,0.0,0.0]},"origins":[[0.0,2.25,0.0],[-1.948557375,1.125,0.0],[-1.948557375,-1.125,0.0],[0.0,-2.25,0.0],[1.948557375,-1.125,0.0],[1.948557375,1.125,0.0]],"directions":[[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]],"vh_list":[[0,42],[1,42],[2,42],[3,42],[4,42],[5,42]],"strands":{"indices":[[[[5,36]],[[5,30],[31,36]]],[[[1,30],[31,34]],[[1,15],[16,34]]],[[],[[1,16]]],[[[15,37]],[[15,37]]],[[[15,38]],[[18,23],[24,33]]],[[[14,23],[24,37]],[[15,30],[31,36]]]],"properties":[[["#0066cc"],["#0066cc","#0066cc"]],[["#0066cc","#0066cc"],["#0066cc","#0066cc"]],[[],["#0066cc"]],[["#0066cc"],["#0066cc"]],[["#0066cc"],["#0066cc","#0066cc"]],[["#0066cc","#0066cc"],["#0066cc","#0066cc"]]]},"insertions":[],"xovers":[[0,false,31,1,true,31],[1,true,30,0,false,30],[3,false,15,1,false,15],[4,true,38,5,false,36],[4,false,24,5,true,24],[5,true,23,4,false,23],[5,false,15,4,true,15]],"oligos":[{"id_num":0,"idx5p":36,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo7360","color":"#0066cc","length":10,"is_visible":true},{"id_num":1,"idx5p":1,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo6512","color":"#0066cc","length":56,"is_visible":true},{"id_num":3,"idx5p":15,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo8176","color":"#0066cc","length":23,"is_visible":true},{"id_num":1,"idx5p":34,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo8000","color":"#0066cc","length":19,"is_visible":true},{"id_num":2,"idx5p":16,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo5072","color":"#0066cc","length":16,"is_visible":true},{"id_num":3,"idx5p":37,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo5456","color":"#0066cc","length":38,"is_visible":true},{"id_num":0,"idx5p":5,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo0016","color":"#0066cc","length":32,"is_visible":true},{"id_num":5,"idx5p":14,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo5344","color":"#0066cc","length":16,"is_visible":true},{"id_num":5,"idx5p":30,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo4128","color":"#0066cc","length":46,"is_visible":true},{"id_num":4,"idx5p":33,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo1344","color":"#0066cc","length":24,"is_visible":true}],"instance_properties":[{"slice:position":[0.0,0.0],"grid:position":[0.0,0.0],"path:position":[0.0,0.0]}],"uuid":"0f339308432240cb80de80d28db856f3"}],"modifications":{}} \ No newline at end of file diff --git a/mrdna/readers/test/ipykernel_launcher.json b/mrdna/readers/test/ipykernel_launcher.json new file mode 100644 index 0000000..3320ac3 --- /dev/null +++ b/mrdna/readers/test/ipykernel_launcher.json @@ -0,0 +1,3687 @@ +{ + "name": "./ipykernel_launcher.json", + "vstrands": [ + { + "num": 0, + "row": 12, + "col": 16, + "scaf": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 1, + 5, + 0, + 6 + ], + [ + 0, + 5, + 0, + 7 + ], + [ + 0, + 6, + 0, + 8 + ], + [ + 0, + 7, + 0, + 9 + ], + [ + 0, + 8, + 0, + 10 + ], + [ + 0, + 9, + 0, + 11 + ], + [ + 0, + 10, + 0, + 12 + ], + [ + 0, + 11, + 0, + 13 + ], + [ + 0, + 12, + 0, + 14 + ], + [ + 0, + 13, + 0, + 15 + ], + [ + 0, + 14, + 0, + 16 + ], + [ + 0, + 15, + 0, + 17 + ], + [ + 0, + 16, + 0, + 18 + ], + [ + 0, + 17, + 0, + 19 + ], + [ + 0, + 18, + 0, + 20 + ], + [ + 0, + 19, + 0, + 21 + ], + [ + 0, + 20, + 0, + 22 + ], + [ + 0, + 21, + 0, + 23 + ], + [ + 0, + 22, + 0, + 24 + ], + [ + 0, + 23, + 0, + 25 + ], + [ + 0, + 24, + 0, + 26 + ], + [ + 0, + 25, + 0, + 27 + ], + [ + 0, + 26, + 0, + 28 + ], + [ + 0, + 27, + 0, + 29 + ], + [ + 0, + 28, + 0, + 30 + ], + [ + 0, + 29, + 0, + 31 + ], + [ + 0, + 30, + 0, + 32 + ], + [ + 0, + 31, + 0, + 33 + ], + [ + 0, + 32, + 0, + 34 + ], + [ + 0, + 33, + 0, + 35 + ], + [ + 0, + 34, + 0, + 36 + ], + [ + 0, + 35, + 1, + 36 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + 0, + 40 + ], + [ + 0, + 39, + 0, + 41 + ], + [ + 0, + 40, + -1, + -1 + ] + ], + "stap": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 0, + 3, + -1, + -1 + ], + [ + 0, + 4, + 0, + 2 + ], + [ + 0, + 5, + 0, + 3 + ], + [ + 0, + 6, + 0, + 4 + ], + [ + 0, + 7, + 0, + 5 + ], + [ + 0, + 8, + 0, + 6 + ], + [ + 0, + 9, + 0, + 7 + ], + [ + 0, + 10, + 0, + 8 + ], + [ + 0, + 11, + 0, + 9 + ], + [ + 0, + 12, + 0, + 10 + ], + [ + 0, + 13, + 0, + 11 + ], + [ + 0, + 14, + 0, + 12 + ], + [ + 0, + 15, + 0, + 13 + ], + [ + 0, + 16, + 0, + 14 + ], + [ + 0, + 17, + 0, + 15 + ], + [ + 0, + 18, + 0, + 16 + ], + [ + 0, + 19, + 0, + 17 + ], + [ + 0, + 20, + 0, + 18 + ], + [ + 1, + 20, + 0, + 19 + ], + [ + 0, + 22, + 1, + 21 + ], + [ + 0, + 23, + 0, + 21 + ], + [ + -1, + -1, + 0, + 22 + ], + [ + 0, + 25, + -1, + -1 + ], + [ + 0, + 26, + 0, + 24 + ], + [ + 0, + 27, + 0, + 25 + ], + [ + 5, + 27, + 0, + 26 + ], + [ + 0, + 29, + 5, + 28 + ], + [ + 0, + 30, + 0, + 28 + ], + [ + 0, + 31, + 0, + 29 + ], + [ + 0, + 32, + 0, + 30 + ], + [ + 0, + 33, + 0, + 31 + ], + [ + 0, + 34, + 0, + 32 + ], + [ + 0, + 35, + 0, + 33 + ], + [ + 0, + 36, + 0, + 34 + ], + [ + 0, + 37, + 0, + 35 + ], + [ + 0, + 38, + 0, + 36 + ], + [ + -1, + -1, + 0, + 37 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 20, + 13369344 + ], + [ + 23, + 12060012 + ], + [ + 27, + 16204552 + ], + [ + 38, + 1507550 + ] + ], + "scafLoop": [], + "stapLoop": [] + }, + { + "num": 1, + "row": 12, + "col": 15, + "scaf": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 1, + 6, + 0, + 5 + ], + [ + 1, + 7, + 1, + 5 + ], + [ + 1, + 8, + 1, + 6 + ], + [ + 1, + 9, + 1, + 7 + ], + [ + 1, + 10, + 1, + 8 + ], + [ + 1, + 11, + 1, + 9 + ], + [ + 1, + 12, + 1, + 10 + ], + [ + 1, + 13, + 1, + 11 + ], + [ + 1, + 14, + 1, + 12 + ], + [ + 1, + 15, + 1, + 13 + ], + [ + 1, + 16, + 1, + 14 + ], + [ + 1, + 17, + 1, + 15 + ], + [ + 1, + 18, + 1, + 16 + ], + [ + 2, + 18, + 1, + 17 + ], + [ + 1, + 20, + 2, + 19 + ], + [ + 1, + 21, + 1, + 19 + ], + [ + 1, + 22, + 1, + 20 + ], + [ + 1, + 23, + 1, + 21 + ], + [ + 1, + 24, + 1, + 22 + ], + [ + 1, + 25, + 1, + 23 + ], + [ + 1, + 26, + 1, + 24 + ], + [ + 1, + 27, + 1, + 25 + ], + [ + 1, + 28, + 1, + 26 + ], + [ + 1, + 29, + 1, + 27 + ], + [ + 1, + 30, + 1, + 28 + ], + [ + 1, + 31, + 1, + 29 + ], + [ + 1, + 32, + 1, + 30 + ], + [ + 1, + 33, + 1, + 31 + ], + [ + 1, + 34, + 1, + 32 + ], + [ + 1, + 35, + 1, + 33 + ], + [ + 1, + 36, + 1, + 34 + ], + [ + 0, + 36, + 1, + 35 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 1, + 40, + -1, + -1 + ], + [ + 1, + 41, + 1, + 39 + ], + [ + -1, + -1, + 1, + 40 + ] + ], + "stap": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + 1, + 4 + ], + [ + 1, + 3, + 1, + 5 + ], + [ + 1, + 4, + 1, + 6 + ], + [ + 1, + 5, + 1, + 7 + ], + [ + 1, + 6, + 1, + 8 + ], + [ + 1, + 7, + 1, + 9 + ], + [ + 1, + 8, + 1, + 10 + ], + [ + 1, + 9, + 1, + 11 + ], + [ + 1, + 10, + 1, + 12 + ], + [ + 1, + 11, + 1, + 13 + ], + [ + 1, + 12, + 1, + 14 + ], + [ + 1, + 13, + 1, + 15 + ], + [ + 1, + 14, + 1, + 16 + ], + [ + 1, + 15, + 1, + 17 + ], + [ + 1, + 16, + 1, + 18 + ], + [ + 1, + 17, + 1, + 19 + ], + [ + 1, + 18, + 1, + 20 + ], + [ + 1, + 19, + 0, + 20 + ], + [ + 0, + 21, + 1, + 22 + ], + [ + 1, + 21, + 1, + 23 + ], + [ + 1, + 22, + 1, + 24 + ], + [ + 1, + 23, + 1, + 25 + ], + [ + 1, + 24, + 1, + 26 + ], + [ + 1, + 25, + 1, + 27 + ], + [ + 1, + 26, + 1, + 28 + ], + [ + 1, + 27, + 1, + 29 + ], + [ + 1, + 28, + 1, + 30 + ], + [ + 1, + 29, + 1, + 31 + ], + [ + 1, + 30, + 1, + 32 + ], + [ + 1, + 31, + 1, + 33 + ], + [ + 1, + 32, + 1, + 34 + ], + [ + 1, + 33, + 1, + 35 + ], + [ + 1, + 34, + 1, + 36 + ], + [ + 1, + 35, + 1, + 37 + ], + [ + 1, + 36, + 1, + 38 + ], + [ + 1, + 37, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 3, + 13369344 + ], + [ + 21, + 12060012 + ] + ], + "scafLoop": [], + "stapLoop": [] + }, + { + "num": 2, + "row": 13, + "col": 15, + "scaf": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 3, + 2, + 2, + 3 + ], + [ + 2, + 2, + 2, + 4 + ], + [ + 2, + 3, + 2, + 5 + ], + [ + 2, + 4, + 2, + 6 + ], + [ + 2, + 5, + 2, + 7 + ], + [ + 2, + 6, + 2, + 8 + ], + [ + 2, + 7, + 2, + 9 + ], + [ + 2, + 8, + 2, + 10 + ], + [ + 2, + 9, + 2, + 11 + ], + [ + 2, + 10, + 2, + 12 + ], + [ + 2, + 11, + 2, + 13 + ], + [ + 2, + 12, + 2, + 14 + ], + [ + 2, + 13, + 2, + 15 + ], + [ + 2, + 14, + 2, + 16 + ], + [ + 2, + 15, + 2, + 17 + ], + [ + 2, + 16, + 2, + 18 + ], + [ + 2, + 17, + 1, + 18 + ], + [ + 1, + 19, + 2, + 20 + ], + [ + 2, + 19, + 2, + 21 + ], + [ + 2, + 20, + 2, + 22 + ], + [ + 2, + 21, + 2, + 23 + ], + [ + 2, + 22, + 2, + 24 + ], + [ + 2, + 23, + 2, + 25 + ], + [ + 2, + 24, + 2, + 26 + ], + [ + 2, + 25, + 2, + 27 + ], + [ + 2, + 26, + 2, + 28 + ], + [ + 2, + 27, + 2, + 29 + ], + [ + 2, + 28, + 2, + 30 + ], + [ + 2, + 29, + 2, + 31 + ], + [ + 2, + 30, + 2, + 32 + ], + [ + 2, + 31, + 3, + 32 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + 2, + 40 + ], + [ + 2, + 39, + 2, + 41 + ], + [ + 2, + 40, + -1, + -1 + ] + ], + "stap": [ + [ + 2, + 1, + -1, + -1 + ], + [ + 2, + 2, + 2, + 0 + ], + [ + 2, + 3, + 2, + 1 + ], + [ + 2, + 4, + 2, + 2 + ], + [ + 2, + 5, + 2, + 3 + ], + [ + 2, + 6, + 2, + 4 + ], + [ + 2, + 7, + 2, + 5 + ], + [ + 2, + 8, + 2, + 6 + ], + [ + 2, + 9, + 2, + 7 + ], + [ + 2, + 10, + 2, + 8 + ], + [ + 2, + 11, + 2, + 9 + ], + [ + 2, + 12, + 2, + 10 + ], + [ + 2, + 13, + 2, + 11 + ], + [ + 2, + 14, + 2, + 12 + ], + [ + 2, + 15, + 2, + 13 + ], + [ + 2, + 16, + 2, + 14 + ], + [ + 2, + 17, + 2, + 15 + ], + [ + 2, + 18, + 2, + 16 + ], + [ + 2, + 19, + 2, + 17 + ], + [ + 2, + 20, + 2, + 18 + ], + [ + 2, + 21, + 2, + 19 + ], + [ + 2, + 22, + 2, + 20 + ], + [ + 2, + 23, + 2, + 21 + ], + [ + 2, + 24, + 2, + 22 + ], + [ + 2, + 25, + 2, + 23 + ], + [ + 2, + 26, + 2, + 24 + ], + [ + 2, + 27, + 2, + 25 + ], + [ + 2, + 28, + 2, + 26 + ], + [ + 2, + 29, + 2, + 27 + ], + [ + 2, + 30, + 2, + 28 + ], + [ + 2, + 31, + 2, + 29 + ], + [ + 2, + 32, + 2, + 30 + ], + [ + 2, + 33, + 2, + 31 + ], + [ + 2, + 34, + 2, + 32 + ], + [ + -1, + -1, + 2, + 33 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 34, + 8947848 + ] + ], + "scafLoop": [], + "stapLoop": [] + }, + { + "num": 3, + "row": 13, + "col": 16, + "scaf": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 3, + 3, + 2, + 2 + ], + [ + 3, + 4, + 3, + 2 + ], + [ + 3, + 5, + 3, + 3 + ], + [ + 3, + 6, + 3, + 4 + ], + [ + 3, + 7, + 3, + 5 + ], + [ + 3, + 8, + 3, + 6 + ], + [ + 3, + 9, + 3, + 7 + ], + [ + 3, + 10, + 3, + 8 + ], + [ + 3, + 11, + 3, + 9 + ], + [ + 3, + 12, + 3, + 10 + ], + [ + 3, + 13, + 3, + 11 + ], + [ + 3, + 14, + 3, + 12 + ], + [ + 3, + 15, + 3, + 13 + ], + [ + 4, + 15, + 3, + 14 + ], + [ + 3, + 17, + 4, + 16 + ], + [ + 3, + 18, + 3, + 16 + ], + [ + 3, + 19, + 3, + 17 + ], + [ + 3, + 20, + 3, + 18 + ], + [ + 3, + 21, + 3, + 19 + ], + [ + 3, + 22, + 3, + 20 + ], + [ + 3, + 23, + 3, + 21 + ], + [ + 3, + 24, + 3, + 22 + ], + [ + 3, + 25, + 3, + 23 + ], + [ + 3, + 26, + 3, + 24 + ], + [ + 3, + 27, + 3, + 25 + ], + [ + 3, + 28, + 3, + 26 + ], + [ + 3, + 29, + 3, + 27 + ], + [ + 3, + 30, + 3, + 28 + ], + [ + 3, + 31, + 3, + 29 + ], + [ + 3, + 32, + 3, + 30 + ], + [ + 2, + 32, + 3, + 31 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 3, + 38, + -1, + -1 + ], + [ + 3, + 39, + 3, + 37 + ], + [ + 3, + 40, + 3, + 38 + ], + [ + 3, + 41, + 3, + 39 + ], + [ + -1, + -1, + 3, + 40 + ] + ], + "stap": [ + [ + -1, + -1, + 3, + 1 + ], + [ + 3, + 0, + 3, + 2 + ], + [ + 3, + 1, + 3, + 3 + ], + [ + 3, + 2, + 3, + 4 + ], + [ + 3, + 3, + 3, + 5 + ], + [ + 3, + 4, + 3, + 6 + ], + [ + 3, + 5, + 3, + 7 + ], + [ + 3, + 6, + 3, + 8 + ], + [ + 3, + 7, + 3, + 9 + ], + [ + 3, + 8, + 3, + 10 + ], + [ + 3, + 9, + 3, + 11 + ], + [ + 3, + 10, + 3, + 12 + ], + [ + 3, + 11, + 3, + 13 + ], + [ + 3, + 12, + 3, + 14 + ], + [ + 3, + 13, + 3, + 15 + ], + [ + 3, + 14, + 3, + 16 + ], + [ + 3, + 15, + 3, + 17 + ], + [ + 3, + 16, + 3, + 18 + ], + [ + 3, + 17, + 3, + 19 + ], + [ + 3, + 18, + 3, + 20 + ], + [ + 3, + 19, + 4, + 20 + ], + [ + 4, + 21, + 3, + 22 + ], + [ + 3, + 21, + 3, + 23 + ], + [ + 3, + 22, + 3, + 24 + ], + [ + 3, + 23, + 3, + 25 + ], + [ + 3, + 24, + 3, + 26 + ], + [ + 3, + 25, + 3, + 27 + ], + [ + 3, + 26, + 3, + 28 + ], + [ + 3, + 27, + 3, + 29 + ], + [ + 3, + 28, + 3, + 30 + ], + [ + 3, + 29, + 3, + 31 + ], + [ + 3, + 30, + 3, + 32 + ], + [ + 3, + 31, + 3, + 33 + ], + [ + 3, + 32, + 3, + 34 + ], + [ + 3, + 33, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 0, + 13369344 + ], + [ + 21, + 8947848 + ] + ], + "scafLoop": [], + "stapLoop": [] + }, + { + "num": 4, + "row": 13, + "col": 17, + "scaf": [ + [ + -1, + -1, + 4, + 1 + ], + [ + 4, + 0, + 4, + 2 + ], + [ + 4, + 1, + 4, + 3 + ], + [ + 4, + 2, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 5, + 9, + 4, + 10 + ], + [ + 4, + 9, + 4, + 11 + ], + [ + 4, + 10, + 4, + 12 + ], + [ + 4, + 11, + 4, + 13 + ], + [ + 4, + 12, + 4, + 14 + ], + [ + 4, + 13, + 4, + 15 + ], + [ + 4, + 14, + 3, + 15 + ], + [ + 3, + 16, + 4, + 17 + ], + [ + 4, + 16, + 4, + 18 + ], + [ + 4, + 17, + 4, + 19 + ], + [ + 4, + 18, + 4, + 20 + ], + [ + 4, + 19, + 4, + 21 + ], + [ + 4, + 20, + 4, + 22 + ], + [ + 4, + 21, + 4, + 23 + ], + [ + 4, + 22, + 4, + 24 + ], + [ + 4, + 23, + 4, + 25 + ], + [ + 4, + 24, + 4, + 26 + ], + [ + 4, + 25, + 4, + 27 + ], + [ + 4, + 26, + 4, + 28 + ], + [ + 4, + 27, + 4, + 29 + ], + [ + 4, + 28, + 4, + 30 + ], + [ + 4, + 29, + 4, + 31 + ], + [ + 4, + 30, + 4, + 32 + ], + [ + 4, + 31, + 4, + 33 + ], + [ + 4, + 32, + 4, + 34 + ], + [ + 4, + 33, + 4, + 35 + ], + [ + 4, + 34, + 4, + 36 + ], + [ + 4, + 35, + 4, + 37 + ], + [ + 4, + 36, + 4, + 38 + ], + [ + 4, + 37, + 4, + 39 + ], + [ + 4, + 38, + 5, + 39 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "stap": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 4, + 10, + -1, + -1 + ], + [ + 4, + 11, + 4, + 9 + ], + [ + 4, + 12, + 4, + 10 + ], + [ + 4, + 13, + 4, + 11 + ], + [ + 4, + 14, + 4, + 12 + ], + [ + 4, + 15, + 4, + 13 + ], + [ + 4, + 16, + 4, + 14 + ], + [ + 4, + 17, + 4, + 15 + ], + [ + 4, + 18, + 4, + 16 + ], + [ + 4, + 19, + 4, + 17 + ], + [ + 4, + 20, + 4, + 18 + ], + [ + 3, + 20, + 4, + 19 + ], + [ + 4, + 22, + 3, + 21 + ], + [ + 4, + 23, + 4, + 21 + ], + [ + 4, + 24, + 4, + 22 + ], + [ + 4, + 25, + 4, + 23 + ], + [ + 4, + 26, + 4, + 24 + ], + [ + 4, + 27, + 4, + 25 + ], + [ + 4, + 28, + 4, + 26 + ], + [ + 4, + 29, + 4, + 27 + ], + [ + 4, + 30, + 4, + 28 + ], + [ + 4, + 31, + 4, + 29 + ], + [ + 4, + 32, + 4, + 30 + ], + [ + 4, + 33, + 4, + 31 + ], + [ + 4, + 34, + 4, + 32 + ], + [ + 4, + 35, + 4, + 33 + ], + [ + 4, + 36, + 4, + 34 + ], + [ + 4, + 37, + 4, + 35 + ], + [ + 4, + 38, + 4, + 36 + ], + [ + 4, + 39, + 4, + 37 + ], + [ + -1, + -1, + 4, + 38 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 20, + 13369344 + ], + [ + 39, + 8947848 + ] + ], + "scafLoop": [], + "stapLoop": [] + }, + { + "num": 5, + "row": 12, + "col": 17, + "scaf": [ + [ + 5, + 1, + -1, + -1 + ], + [ + 5, + 2, + 5, + 0 + ], + [ + 5, + 3, + 5, + 1 + ], + [ + -1, + -1, + 5, + 2 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + 5, + 10, + 4, + 9 + ], + [ + 5, + 11, + 5, + 9 + ], + [ + 5, + 12, + 5, + 10 + ], + [ + 5, + 13, + 5, + 11 + ], + [ + 5, + 14, + 5, + 12 + ], + [ + 5, + 15, + 5, + 13 + ], + [ + 5, + 16, + 5, + 14 + ], + [ + 5, + 17, + 5, + 15 + ], + [ + 5, + 18, + 5, + 16 + ], + [ + 5, + 19, + 5, + 17 + ], + [ + 5, + 20, + 5, + 18 + ], + [ + 5, + 21, + 5, + 19 + ], + [ + 5, + 22, + 5, + 20 + ], + [ + -1, + -1, + 5, + 21 + ], + [ + 5, + 24, + -1, + -1 + ], + [ + 5, + 25, + 5, + 23 + ], + [ + 5, + 26, + 5, + 24 + ], + [ + 5, + 27, + 5, + 25 + ], + [ + 5, + 28, + 5, + 26 + ], + [ + 5, + 29, + 5, + 27 + ], + [ + 5, + 30, + 5, + 28 + ], + [ + 5, + 31, + 5, + 29 + ], + [ + 5, + 32, + 5, + 30 + ], + [ + 5, + 33, + 5, + 31 + ], + [ + 5, + 34, + 5, + 32 + ], + [ + 5, + 35, + 5, + 33 + ], + [ + 5, + 36, + 5, + 34 + ], + [ + 5, + 37, + 5, + 35 + ], + [ + 5, + 38, + 5, + 36 + ], + [ + 5, + 39, + 5, + 37 + ], + [ + 4, + 39, + 5, + 38 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "stap": [ + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + 5, + 10 + ], + [ + 5, + 9, + 5, + 11 + ], + [ + 5, + 10, + 5, + 12 + ], + [ + 5, + 11, + 5, + 13 + ], + [ + 5, + 12, + 5, + 14 + ], + [ + 5, + 13, + 5, + 15 + ], + [ + 5, + 14, + 5, + 16 + ], + [ + 5, + 15, + 5, + 17 + ], + [ + 5, + 16, + 5, + 18 + ], + [ + 5, + 17, + 5, + 19 + ], + [ + 5, + 18, + 5, + 20 + ], + [ + 5, + 19, + 5, + 21 + ], + [ + 5, + 20, + 5, + 22 + ], + [ + 5, + 21, + 5, + 23 + ], + [ + 5, + 22, + 5, + 24 + ], + [ + 5, + 23, + 5, + 25 + ], + [ + 5, + 24, + 5, + 26 + ], + [ + 5, + 25, + 5, + 27 + ], + [ + 5, + 26, + 0, + 27 + ], + [ + 0, + 28, + 5, + 29 + ], + [ + 5, + 28, + 5, + 30 + ], + [ + 5, + 29, + 5, + 31 + ], + [ + 5, + 30, + 5, + 32 + ], + [ + 5, + 31, + 5, + 33 + ], + [ + 5, + 32, + 5, + 34 + ], + [ + 5, + 33, + 5, + 35 + ], + [ + 5, + 34, + 5, + 36 + ], + [ + 5, + 35, + 5, + 37 + ], + [ + 5, + 36, + 5, + 38 + ], + [ + 5, + 37, + 5, + 39 + ], + [ + 5, + 38, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ], + [ + -1, + -1, + -1, + -1 + ] + ], + "loop": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "skip": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "stap_colors": [ + [ + 9, + 16204552 + ], + [ + 28, + 1507550 + ] + ], + "scafLoop": [], + "stapLoop": [] + } + ] +} \ No newline at end of file diff --git a/mrdna/readers/test/loopout.sc b/mrdna/readers/test/loopout.sc new file mode 100644 index 0000000..d80ea88 --- /dev/null +++ b/mrdna/readers/test/loopout.sc @@ -0,0 +1,45 @@ +{ + "version": "0.19.3", + "grid": "square", + "helices": [ + {"grid_position": [0, 0], "max_offset": 48}, + {"grid_position": [0, 1], "max_offset": 48} + ], + "modifications_5p_in_design": { + "/5Biosg/": { + "display_text": "B", + "vendor_code": "/5Biosg/", + "location": "5'" + } + }, + "strands": [ + { + "color": "#0066cc", + "sequence": "AACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACGTAACG", + "is_scaffold": true, + "domains": [ + {"helix": 1, "forward": false, "start": 8, "end": 24, "deletions": [20]}, + {"helix": 0, "forward": true, "start": 8, "end": 40, "insertions": [[14, 1], [26, 2]]}, + {"loopout": 3}, + {"helix": 1, "forward": false, "start": 24, "end": 40} + ] + }, + { + "color": "#f74308", + "sequence": "ACGTTACGTTACGTTTTACGTTACGTTACGTT", + "domains": [ + {"helix": 1, "forward": true, "start": 8, "end": 24, "deletions": [20]}, + {"helix": 0, "forward": false, "start": 8, "end": 24, "insertions": [[14, 1]]} + ] + }, + { + "color": "#57bb00", + "sequence": "ACGTTACGTTACGTTACGCGTTACGTTACGTTAC", + "domains": [ + {"helix": 0, "forward": false, "start": 24, "end": 40, "insertions": [[26, 2]]}, + {"helix": 1, "forward": true, "start": 24, "end": 40} + ], + "5prime_modification": "/5Biosg/" + } + ] +} \ No newline at end of file diff --git a/mrdna/readers/test/s.csv b/mrdna/readers/test/s.csv new file mode 100644 index 0000000..4bab8e1 --- /dev/null +++ b/mrdna/readers/test/s.csv @@ -0,0 +1,416 @@ +,0,vh,zid,fwd,stack_tuple,threeprime_tuple,x,y,z,r,seq,stack,threeprime,bp,orientation +0,0,0,5,True,"(0, '6', True)","(0, '6', True)",0.0,22.5,17.0,[ 0. 22.5 17. ],-1,1,1,38,81.42857142857142 +1,1,0,6,True,"(0, '7', True)","(0, '7', True)",0.0,22.5,20.4,[ 0. 22.5 20.4],-1,2,2,39,115.71428571428572 +2,2,0,7,True,"(0, '8', True)","(0, '8', True)",0.0,22.5,23.8,[ 0. 22.5 23.8],-1,3,3,40,150.0 +3,3,0,8,True,"(0, '9', True)","(0, '9', True)",0.0,22.5,27.2,[ 0. 22.5 27.2],-1,4,4,41,184.28571428571428 +4,4,0,9,True,"(0, '10', True)","(0, '10', True)",0.0,22.5,30.599999999999998,[ 0. 22.5 30.6],-1,5,5,42,218.57142857142856 +5,5,0,10,True,"(0, '11', True)","(0, '11', True)",0.0,22.5,34.0,[ 0. 22.5 34. ],-1,6,6,43,252.85714285714283 +6,6,0,11,True,"(0, '12', True)","(0, '12', True)",0.0,22.5,37.4,[ 0. 22.5 37.4],-1,7,7,44,287.1428571428571 +7,7,0,12,True,"(0, '13', True)","(0, '13', True)",0.0,22.5,40.8,[ 0. 22.5 40.8],-1,8,8,45,321.42857142857144 +8,8,0,13,True,"(0, '14', True)","(0, '14', True)",0.0,22.5,44.199999999999996,[ 0. 22.5 44.2],-1,9,9,46,355.7142857142857 +9,9,0,14,True,"(0, '15', True)","(0, '15', True)",0.0,22.5,47.6,[ 0. 22.5 47.6],-1,10,10,47,390.0 +10,10,0,15,True,"(0, '16', True)","(0, '16', True)",0.0,22.5,51.0,[ 0. 22.5 51. ],-1,11,11,48,424.2857142857142 +11,11,0,16,True,"(0, '17', True)","(0, '17', True)",0.0,22.5,54.4,[ 0. 22.5 54.4],-1,12,12,49,458.57142857142856 +12,12,0,17,True,"(0, '18', True)","(0, '18', True)",0.0,22.5,57.8,[ 0. 22.5 57.8],-1,13,13,50,492.8571428571429 +13,13,0,18,True,"(0, '19', True)","(0, '19', True)",0.0,22.5,61.199999999999996,[ 0. 22.5 61.2],-1,14,14,51,527.1428571428571 +14,14,0,19,True,"(0, '20', True)","(0, '20', True)",0.0,22.5,64.6,[ 0. 22.5 64.6],-1,15,15,52,561.4285714285714 +15,15,0,20,True,"(0, '21', True)","(0, '21', True)",0.0,22.5,68.0,[ 0. 22.5 68. ],-1,16,16,53,595.7142857142857 +16,16,0,21,True,"(0, '22', True)","(0, '22', True)",0.0,22.5,71.39999999999999,[ 0. 22.5 71.4],-1,17,17,54,630.0 +17,17,0,22,True,"(0, '23', True)","(0, '23', True)",0.0,22.5,74.8,[ 0. 22.5 74.8],-1,18,18,55,664.2857142857142 +18,18,0,23,True,"(0, '24', True)","(0, '24', True)",0.0,22.5,78.2,[ 0. 22.5 78.2],-1,19,19,56,698.5714285714286 +19,19,0,24,True,"(0, '25', True)","(0, '25', True)",0.0,22.5,81.6,[ 0. 22.5 81.6],-1,20,20,57,732.8571428571429 +20,20,0,25,True,"(0, '26', True)","(0, '26', True)",0.0,22.5,85.0,[ 0. 22.5 85. ],-1,21,21,58,767.1428571428571 +21,21,0,26,True,"(0, '27', True)","(0, '27', True)",0.0,22.5,88.39999999999999,[ 0. 22.5 88.4],-1,22,22,59,801.4285714285714 +22,22,0,27,True,"(0, '28', True)","(0, '28', True)",0.0,22.5,91.8,[ 0. 22.5 91.8],-1,23,23,60,835.7142857142857 +23,23,0,28,True,"(0, '29', True)","(0, '29', True)",0.0,22.5,95.2,[ 0. 22.5 95.2],-1,24,24,61,870.0 +24,24,0,29,True,"(0, '30', True)","(0, '30', True)",0.0,22.5,98.6,[ 0. 22.5 98.6],-1,25,25,62,904.2857142857142 +25,25,0,30,True,"(0, '31', True)","(0, '31', True)",0.0,22.5,102.0,[ 0. 22.5 102. ],-1,26,26,63,938.5714285714284 +26,26,0,31,True,"(0, '32', True)","(0, '32', True)",0.0,22.5,105.39999999999999,[ 0. 22.5 105.4],-1,27,27,64,972.8571428571429 +27,27,0,32,True,"(0, '33', True)","(0, '33', True)",0.0,22.5,108.8,[ 0. 22.5 108.8],-1,28,28,65,1007.1428571428571 +28,28,0,33,True,"(0, '34', True)","(0, '34', True)",0.0,22.5,112.2,[ 0. 22.5 112.2],-1,29,29,66,1041.4285714285713 +29,29,0,34,True,"(0, '35', True)","(0, '35', True)",0.0,22.5,115.6,[ 0. 22.5 115.6],-1,30,30,67,1075.7142857142858 +30,30,0,35,True,"(0, '36', True)","(0, '36', True)",0.0,22.5,119.0,[ 0. 22.5 119. ],-1,31,31,68,1110.0 +31,31,0,36,True,-1,"(1, '36', False)",0.0,22.5,122.39999999999999,[ 0. 22.5 122.4],-1,-1,139,69,1144.2857142857142 +32,0,0,39,True,"(0, '40', True)","(0, '40', True)",0.0,22.5,132.6,[ 0. 22.5 132.6],-1,33,33,-1,1247.142857142857 +33,1,0,40,True,"(0, '41', True)","(0, '41', True)",0.0,22.5,136.0,[ 0. 22.5 136. ],-1,34,34,-1,1281.4285714285713 +34,2,0,41,True,-1,-1,0.0,22.5,139.4,[ 0. 22.5 139.4],-1,-1,-1,-1,1315.7142857142858 +35,0,0,2,False,-1,-1,0.0,22.5,6.8,[ 0. 22.5 6.8],-1,-1,-1,-1,-21.42857142857143 +36,1,0,3,False,"(0, '2', False)","(0, '2', False)",0.0,22.5,10.2,[ 0. 22.5 10.2],-1,35,35,-1,12.857142857142861 +37,2,0,4,False,"(0, '3', False)","(0, '3', False)",0.0,22.5,13.6,[ 0. 22.5 13.6],-1,36,36,-1,47.14285714285714 +38,3,0,5,False,"(0, '4', False)","(0, '4', False)",0.0,22.5,17.0,[ 0. 22.5 17. ],-1,37,37,0,81.42857142857142 +39,4,0,6,False,"(0, '5', False)","(0, '5', False)",0.0,22.5,20.4,[ 0. 22.5 20.4],-1,38,38,1,115.71428571428572 +40,5,0,7,False,"(0, '6', False)","(0, '6', False)",0.0,22.5,23.8,[ 0. 22.5 23.8],-1,39,39,2,150.0 +41,6,0,8,False,"(0, '7', False)","(0, '7', False)",0.0,22.5,27.2,[ 0. 22.5 27.2],-1,40,40,3,184.28571428571428 +42,7,0,9,False,"(0, '8', False)","(0, '8', False)",0.0,22.5,30.599999999999998,[ 0. 22.5 30.6],-1,41,41,4,218.57142857142856 +43,8,0,10,False,"(0, '9', False)","(0, '9', False)",0.0,22.5,34.0,[ 0. 22.5 34. ],-1,42,42,5,252.85714285714283 +44,9,0,11,False,"(0, '10', False)","(0, '10', False)",0.0,22.5,37.4,[ 0. 22.5 37.4],-1,43,43,6,287.1428571428571 +45,10,0,12,False,"(0, '11', False)","(0, '11', False)",0.0,22.5,40.8,[ 0. 22.5 40.8],-1,44,44,7,321.42857142857144 +46,11,0,13,False,"(0, '12', False)","(0, '12', False)",0.0,22.5,44.199999999999996,[ 0. 22.5 44.2],-1,45,45,8,355.7142857142857 +47,12,0,14,False,"(0, '13', False)","(0, '13', False)",0.0,22.5,47.6,[ 0. 22.5 47.6],-1,46,46,9,390.0 +48,13,0,15,False,"(0, '14', False)","(0, '14', False)",0.0,22.5,51.0,[ 0. 22.5 51. ],-1,47,47,10,424.2857142857142 +49,14,0,16,False,"(0, '15', False)","(0, '15', False)",0.0,22.5,54.4,[ 0. 22.5 54.4],-1,48,48,11,458.57142857142856 +50,15,0,17,False,"(0, '16', False)","(0, '16', False)",0.0,22.5,57.8,[ 0. 22.5 57.8],-1,49,49,12,492.8571428571429 +51,16,0,18,False,"(0, '17', False)","(0, '17', False)",0.0,22.5,61.199999999999996,[ 0. 22.5 61.2],-1,50,50,13,527.1428571428571 +52,17,0,19,False,"(0, '18', False)","(0, '18', False)",0.0,22.5,64.6,[ 0. 22.5 64.6],-1,51,51,14,561.4285714285714 +53,18,0,20,False,"(0, '19', False)","(0, '19', False)",0.0,22.5,68.0,[ 0. 22.5 68. ],-1,52,52,15,595.7142857142857 +54,0,0,21,False,-1,"(1, '21', True)",0.0,22.5,71.39999999999999,[ 0. 22.5 71.4],-1,-1,90,16,630.0 +55,1,0,22,False,"(0, '21', False)","(0, '21', False)",0.0,22.5,74.8,[ 0. 22.5 74.8],-1,54,54,17,664.2857142857142 +56,2,0,23,False,"(0, '22', False)","(0, '22', False)",0.0,22.5,78.2,[ 0. 22.5 78.2],-1,55,55,18,698.5714285714286 +57,0,0,24,False,-1,-1,0.0,22.5,81.6,[ 0. 22.5 81.6],-1,-1,-1,19,732.8571428571429 +58,1,0,25,False,"(0, '24', False)","(0, '24', False)",0.0,22.5,85.0,[ 0. 22.5 85. ],-1,57,57,20,767.1428571428571 +59,2,0,26,False,"(0, '25', False)","(0, '25', False)",0.0,22.5,88.39999999999999,[ 0. 22.5 88.4],-1,58,58,21,801.4285714285714 +60,3,0,27,False,"(0, '26', False)","(0, '26', False)",0.0,22.5,91.8,[ 0. 22.5 91.8],-1,59,59,22,835.7142857142857 +61,0,0,28,False,-1,"(5, '28', True)",0.0,22.5,95.2,[ 0. 22.5 95.2],-1,-1,368,23,870.0 +62,1,0,29,False,"(0, '28', False)","(0, '28', False)",0.0,22.5,98.6,[ 0. 22.5 98.6],-1,61,61,24,904.2857142857142 +63,2,0,30,False,"(0, '29', False)","(0, '29', False)",0.0,22.5,102.0,[ 0. 22.5 102. ],-1,62,62,25,938.5714285714284 +64,3,0,31,False,"(0, '30', False)","(0, '30', False)",0.0,22.5,105.39999999999999,[ 0. 22.5 105.4],-1,63,63,26,972.8571428571429 +65,4,0,32,False,"(0, '31', False)","(0, '31', False)",0.0,22.5,108.8,[ 0. 22.5 108.8],-1,64,64,27,1007.1428571428571 +66,5,0,33,False,"(0, '32', False)","(0, '32', False)",0.0,22.5,112.2,[ 0. 22.5 112.2],-1,65,65,28,1041.4285714285713 +67,6,0,34,False,"(0, '33', False)","(0, '33', False)",0.0,22.5,115.6,[ 0. 22.5 115.6],-1,66,66,29,1075.7142857142858 +68,7,0,35,False,"(0, '34', False)","(0, '34', False)",0.0,22.5,119.0,[ 0. 22.5 119. ],-1,67,67,30,1110.0 +69,8,0,36,False,"(0, '35', False)","(0, '35', False)",0.0,22.5,122.39999999999999,[ 0. 22.5 122.4],-1,68,68,31,1144.2857142857142 +70,9,0,37,False,"(0, '36', False)","(0, '36', False)",0.0,22.5,125.8,[ 0. 22.5 125.8],-1,69,69,-1,1178.5714285714284 +71,10,0,38,False,"(0, '37', False)","(0, '37', False)",0.0,22.5,129.2,[ 0. 22.5 129.2],-1,70,70,-1,1212.857142857143 +72,0,1,3,True,"(1, '4', True)","(1, '4', True)",-19.48557375,11.25,10.2,[-19.485573 11.25 10.2 ],-1,73,73,-1,12.857142857142861 +73,1,1,4,True,"(1, '5', True)","(1, '5', True)",-19.48557375,11.25,13.6,[-19.485573 11.25 13.6 ],-1,74,74,-1,47.14285714285714 +74,2,1,5,True,"(1, '6', True)","(1, '6', True)",-19.48557375,11.25,17.0,[-19.485573 11.25 17. ],-1,75,75,108,81.42857142857142 +75,3,1,6,True,"(1, '7', True)","(1, '7', True)",-19.48557375,11.25,20.4,[-19.485573 11.25 20.4 ],-1,76,76,109,115.71428571428572 +76,4,1,7,True,"(1, '8', True)","(1, '8', True)",-19.48557375,11.25,23.8,[-19.485573 11.25 23.8 ],-1,77,77,110,150.0 +77,5,1,8,True,"(1, '9', True)","(1, '9', True)",-19.48557375,11.25,27.2,[-19.485573 11.25 27.2 ],-1,78,78,111,184.28571428571428 +78,6,1,9,True,"(1, '10', True)","(1, '10', True)",-19.48557375,11.25,30.599999999999998,[-19.485573 11.25 30.6 ],-1,79,79,112,218.57142857142856 +79,7,1,10,True,"(1, '11', True)","(1, '11', True)",-19.48557375,11.25,34.0,[-19.485573 11.25 34. ],-1,80,80,113,252.85714285714283 +80,8,1,11,True,"(1, '12', True)","(1, '12', True)",-19.48557375,11.25,37.4,[-19.485573 11.25 37.4 ],-1,81,81,114,287.1428571428571 +81,9,1,12,True,"(1, '13', True)","(1, '13', True)",-19.48557375,11.25,40.8,[-19.485573 11.25 40.8 ],-1,82,82,115,321.42857142857144 +82,10,1,13,True,"(1, '14', True)","(1, '14', True)",-19.48557375,11.25,44.199999999999996,[-19.485573 11.25 44.2 ],-1,83,83,116,355.7142857142857 +83,11,1,14,True,"(1, '15', True)","(1, '15', True)",-19.48557375,11.25,47.6,[-19.485573 11.25 47.6 ],-1,84,84,117,390.0 +84,12,1,15,True,"(1, '16', True)","(1, '16', True)",-19.48557375,11.25,51.0,[-19.485573 11.25 51. ],-1,85,85,118,424.2857142857142 +85,13,1,16,True,"(1, '17', True)","(1, '17', True)",-19.48557375,11.25,54.4,[-19.485573 11.25 54.4 ],-1,86,86,119,458.57142857142856 +86,14,1,17,True,"(1, '18', True)","(1, '18', True)",-19.48557375,11.25,57.8,[-19.485573 11.25 57.8 ],-1,87,87,120,492.8571428571429 +87,15,1,18,True,"(1, '19', True)","(1, '19', True)",-19.48557375,11.25,61.199999999999996,[-19.485573 11.25 61.2 ],-1,88,88,121,527.1428571428571 +88,16,1,19,True,"(1, '20', True)","(1, '20', True)",-19.48557375,11.25,64.6,[-19.485573 11.25 64.6 ],-1,89,89,122,561.4285714285714 +89,17,1,20,True,-1,"(0, '20', False)",-19.48557375,11.25,68.0,[-19.485573 11.25 68. ],-1,-1,53,123,595.7142857142857 +90,0,1,21,True,"(1, '22', True)","(1, '22', True)",-19.48557375,11.25,71.39999999999999,[-19.485573 11.25 71.4 ],-1,91,91,124,630.0 +91,1,1,22,True,"(1, '23', True)","(1, '23', True)",-19.48557375,11.25,74.8,[-19.485573 11.25 74.8 ],-1,92,92,125,664.2857142857142 +92,2,1,23,True,"(1, '24', True)","(1, '24', True)",-19.48557375,11.25,78.2,[-19.485573 11.25 78.2 ],-1,93,93,126,698.5714285714286 +93,3,1,24,True,"(1, '25', True)","(1, '25', True)",-19.48557375,11.25,81.6,[-19.485573 11.25 81.6 ],-1,94,94,127,732.8571428571429 +94,4,1,25,True,"(1, '26', True)","(1, '26', True)",-19.48557375,11.25,85.0,[-19.485573 11.25 85. ],-1,95,95,128,767.1428571428571 +95,5,1,26,True,"(1, '27', True)","(1, '27', True)",-19.48557375,11.25,88.39999999999999,[-19.485573 11.25 88.4 ],-1,96,96,129,801.4285714285714 +96,6,1,27,True,"(1, '28', True)","(1, '28', True)",-19.48557375,11.25,91.8,[-19.485573 11.25 91.8 ],-1,97,97,130,835.7142857142857 +97,7,1,28,True,"(1, '29', True)","(1, '29', True)",-19.48557375,11.25,95.2,[-19.485573 11.25 95.2 ],-1,98,98,131,870.0 +98,8,1,29,True,"(1, '30', True)","(1, '30', True)",-19.48557375,11.25,98.6,[-19.485573 11.25 98.6 ],-1,99,99,132,904.2857142857142 +99,9,1,30,True,"(1, '31', True)","(1, '31', True)",-19.48557375,11.25,102.0,[-19.485573 11.25 102. ],-1,100,100,133,938.5714285714284 +100,10,1,31,True,"(1, '32', True)","(1, '32', True)",-19.48557375,11.25,105.39999999999999,[-19.485573 11.25 105.4 ],-1,101,101,134,972.8571428571429 +101,11,1,32,True,"(1, '33', True)","(1, '33', True)",-19.48557375,11.25,108.8,[-19.485573 11.25 108.8 ],-1,102,102,135,1007.1428571428571 +102,12,1,33,True,"(1, '34', True)","(1, '34', True)",-19.48557375,11.25,112.2,[-19.485573 11.25 112.2 ],-1,103,103,136,1041.4285714285713 +103,13,1,34,True,"(1, '35', True)","(1, '35', True)",-19.48557375,11.25,115.6,[-19.485573 11.25 115.6 ],-1,104,104,137,1075.7142857142858 +104,14,1,35,True,"(1, '36', True)","(1, '36', True)",-19.48557375,11.25,119.0,[-19.485573 11.25 119. ],-1,105,105,138,1110.0 +105,15,1,36,True,"(1, '37', True)","(1, '37', True)",-19.48557375,11.25,122.39999999999999,[-19.485573 11.25 122.4 ],-1,106,106,139,1144.2857142857142 +106,16,1,37,True,"(1, '38', True)","(1, '38', True)",-19.48557375,11.25,125.8,[-19.485573 11.25 125.8 ],-1,107,107,-1,1178.5714285714284 +107,17,1,38,True,-1,-1,-19.48557375,11.25,129.2,[-19.485573 11.25 129.2 ],-1,-1,-1,-1,1212.857142857143 +108,0,1,5,False,-1,"(0, '5', True)",-19.48557375,11.25,17.0,[-19.485573 11.25 17. ],-1,-1,0,74,81.42857142857142 +109,1,1,6,False,"(1, '5', False)","(1, '5', False)",-19.48557375,11.25,20.4,[-19.485573 11.25 20.4 ],-1,108,108,75,115.71428571428572 +110,2,1,7,False,"(1, '6', False)","(1, '6', False)",-19.48557375,11.25,23.8,[-19.485573 11.25 23.8 ],-1,109,109,76,150.0 +111,3,1,8,False,"(1, '7', False)","(1, '7', False)",-19.48557375,11.25,27.2,[-19.485573 11.25 27.2 ],-1,110,110,77,184.28571428571428 +112,4,1,9,False,"(1, '8', False)","(1, '8', False)",-19.48557375,11.25,30.599999999999998,[-19.485573 11.25 30.6 ],-1,111,111,78,218.57142857142856 +113,5,1,10,False,"(1, '9', False)","(1, '9', False)",-19.48557375,11.25,34.0,[-19.485573 11.25 34. ],-1,112,112,79,252.85714285714283 +114,6,1,11,False,"(1, '10', False)","(1, '10', False)",-19.48557375,11.25,37.4,[-19.485573 11.25 37.4 ],-1,113,113,80,287.1428571428571 +115,7,1,12,False,"(1, '11', False)","(1, '11', False)",-19.48557375,11.25,40.8,[-19.485573 11.25 40.8 ],-1,114,114,81,321.42857142857144 +116,8,1,13,False,"(1, '12', False)","(1, '12', False)",-19.48557375,11.25,44.199999999999996,[-19.485573 11.25 44.2 ],-1,115,115,82,355.7142857142857 +117,9,1,14,False,"(1, '13', False)","(1, '13', False)",-19.48557375,11.25,47.6,[-19.485573 11.25 47.6 ],-1,116,116,83,390.0 +118,10,1,15,False,"(1, '14', False)","(1, '14', False)",-19.48557375,11.25,51.0,[-19.485573 11.25 51. ],-1,117,117,84,424.2857142857142 +119,11,1,16,False,"(1, '15', False)","(1, '15', False)",-19.48557375,11.25,54.4,[-19.485573 11.25 54.4 ],-1,118,118,85,458.57142857142856 +120,12,1,17,False,"(1, '16', False)","(1, '16', False)",-19.48557375,11.25,57.8,[-19.485573 11.25 57.8 ],-1,119,119,86,492.8571428571429 +121,13,1,18,False,"(1, '17', False)","(1, '17', False)",-19.48557375,11.25,61.199999999999996,[-19.485573 11.25 61.2 ],-1,120,120,87,527.1428571428571 +122,0,1,19,False,-1,"(2, '19', True)",-19.48557375,11.25,64.6,[-19.485573 11.25 64.6 ],-1,-1,160,88,561.4285714285714 +123,1,1,20,False,"(1, '19', False)","(1, '19', False)",-19.48557375,11.25,68.0,[-19.485573 11.25 68. ],-1,122,122,89,595.7142857142857 +124,2,1,21,False,"(1, '20', False)","(1, '20', False)",-19.48557375,11.25,71.39999999999999,[-19.485573 11.25 71.4 ],-1,123,123,90,630.0 +125,3,1,22,False,"(1, '21', False)","(1, '21', False)",-19.48557375,11.25,74.8,[-19.485573 11.25 74.8 ],-1,124,124,91,664.2857142857142 +126,4,1,23,False,"(1, '22', False)","(1, '22', False)",-19.48557375,11.25,78.2,[-19.485573 11.25 78.2 ],-1,125,125,92,698.5714285714286 +127,5,1,24,False,"(1, '23', False)","(1, '23', False)",-19.48557375,11.25,81.6,[-19.485573 11.25 81.6 ],-1,126,126,93,732.8571428571429 +128,6,1,25,False,"(1, '24', False)","(1, '24', False)",-19.48557375,11.25,85.0,[-19.485573 11.25 85. ],-1,127,127,94,767.1428571428571 +129,7,1,26,False,"(1, '25', False)","(1, '25', False)",-19.48557375,11.25,88.39999999999999,[-19.485573 11.25 88.4 ],-1,128,128,95,801.4285714285714 +130,8,1,27,False,"(1, '26', False)","(1, '26', False)",-19.48557375,11.25,91.8,[-19.485573 11.25 91.8 ],-1,129,129,96,835.7142857142857 +131,9,1,28,False,"(1, '27', False)","(1, '27', False)",-19.48557375,11.25,95.2,[-19.485573 11.25 95.2 ],-1,130,130,97,870.0 +132,10,1,29,False,"(1, '28', False)","(1, '28', False)",-19.48557375,11.25,98.6,[-19.485573 11.25 98.6 ],-1,131,131,98,904.2857142857142 +133,11,1,30,False,"(1, '29', False)","(1, '29', False)",-19.48557375,11.25,102.0,[-19.485573 11.25 102. ],-1,132,132,99,938.5714285714284 +134,12,1,31,False,"(1, '30', False)","(1, '30', False)",-19.48557375,11.25,105.39999999999999,[-19.485573 11.25 105.4 ],-1,133,133,100,972.8571428571429 +135,13,1,32,False,"(1, '31', False)","(1, '31', False)",-19.48557375,11.25,108.8,[-19.485573 11.25 108.8 ],-1,134,134,101,1007.1428571428571 +136,14,1,33,False,"(1, '32', False)","(1, '32', False)",-19.48557375,11.25,112.2,[-19.485573 11.25 112.2 ],-1,135,135,102,1041.4285714285713 +137,15,1,34,False,"(1, '33', False)","(1, '33', False)",-19.48557375,11.25,115.6,[-19.485573 11.25 115.6 ],-1,136,136,103,1075.7142857142858 +138,16,1,35,False,"(1, '34', False)","(1, '34', False)",-19.48557375,11.25,119.0,[-19.485573 11.25 119. ],-1,137,137,104,1110.0 +139,17,1,36,False,"(1, '35', False)","(1, '35', False)",-19.48557375,11.25,122.39999999999999,[-19.485573 11.25 122.4 ],-1,138,138,105,1144.2857142857142 +140,0,1,39,False,-1,-1,-19.48557375,11.25,132.6,[-19.485573 11.25 132.6 ],-1,-1,-1,-1,1247.142857142857 +141,1,1,40,False,"(1, '39', False)","(1, '39', False)",-19.48557375,11.25,136.0,[-19.485573 11.25 136. ],-1,140,140,-1,1281.4285714285713 +142,2,1,41,False,"(1, '40', False)","(1, '40', False)",-19.48557375,11.25,139.4,[-19.485573 11.25 139.4 ],-1,141,141,-1,1315.7142857142858 +143,0,2,2,True,"(2, '3', True)","(2, '3', True)",-19.48557375,-11.25,6.8,[-19.485573 -11.25 6.8 ],-1,144,144,179,-21.42857142857143 +144,1,2,3,True,"(2, '4', True)","(2, '4', True)",-19.48557375,-11.25,10.2,[-19.485573 -11.25 10.2 ],-1,145,145,180,12.857142857142861 +145,2,2,4,True,"(2, '5', True)","(2, '5', True)",-19.48557375,-11.25,13.6,[-19.485573 -11.25 13.6 ],-1,146,146,181,47.14285714285714 +146,3,2,5,True,"(2, '6', True)","(2, '6', True)",-19.48557375,-11.25,17.0,[-19.485573 -11.25 17. ],-1,147,147,182,81.42857142857142 +147,4,2,6,True,"(2, '7', True)","(2, '7', True)",-19.48557375,-11.25,20.4,[-19.485573 -11.25 20.4 ],-1,148,148,183,115.71428571428572 +148,5,2,7,True,"(2, '8', True)","(2, '8', True)",-19.48557375,-11.25,23.8,[-19.485573 -11.25 23.8 ],-1,149,149,184,150.0 +149,6,2,8,True,"(2, '9', True)","(2, '9', True)",-19.48557375,-11.25,27.2,[-19.485573 -11.25 27.2 ],-1,150,150,185,184.28571428571428 +150,7,2,9,True,"(2, '10', True)","(2, '10', True)",-19.48557375,-11.25,30.599999999999998,[-19.485573 -11.25 30.6 ],-1,151,151,186,218.57142857142856 +151,8,2,10,True,"(2, '11', True)","(2, '11', True)",-19.48557375,-11.25,34.0,[-19.485573 -11.25 34. ],-1,152,152,187,252.85714285714283 +152,9,2,11,True,"(2, '12', True)","(2, '12', True)",-19.48557375,-11.25,37.4,[-19.485573 -11.25 37.4 ],-1,153,153,188,287.1428571428571 +153,10,2,12,True,"(2, '13', True)","(2, '13', True)",-19.48557375,-11.25,40.8,[-19.485573 -11.25 40.8 ],-1,154,154,189,321.42857142857144 +154,11,2,13,True,"(2, '14', True)","(2, '14', True)",-19.48557375,-11.25,44.199999999999996,[-19.485573 -11.25 44.2 ],-1,155,155,190,355.7142857142857 +155,12,2,14,True,"(2, '15', True)","(2, '15', True)",-19.48557375,-11.25,47.6,[-19.485573 -11.25 47.6 ],-1,156,156,191,390.0 +156,13,2,15,True,"(2, '16', True)","(2, '16', True)",-19.48557375,-11.25,51.0,[-19.485573 -11.25 51. ],-1,157,157,192,424.2857142857142 +157,14,2,16,True,"(2, '17', True)","(2, '17', True)",-19.48557375,-11.25,54.4,[-19.485573 -11.25 54.4 ],-1,158,158,193,458.57142857142856 +158,15,2,17,True,"(2, '18', True)","(2, '18', True)",-19.48557375,-11.25,57.8,[-19.485573 -11.25 57.8 ],-1,159,159,194,492.8571428571429 +159,16,2,18,True,-1,"(1, '18', False)",-19.48557375,-11.25,61.199999999999996,[-19.485573 -11.25 61.2 ],-1,-1,121,195,527.1428571428571 +160,0,2,19,True,"(2, '20', True)","(2, '20', True)",-19.48557375,-11.25,64.6,[-19.485573 -11.25 64.6 ],-1,161,161,196,561.4285714285714 +161,1,2,20,True,"(2, '21', True)","(2, '21', True)",-19.48557375,-11.25,68.0,[-19.485573 -11.25 68. ],-1,162,162,197,595.7142857142857 +162,2,2,21,True,"(2, '22', True)","(2, '22', True)",-19.48557375,-11.25,71.39999999999999,[-19.485573 -11.25 71.4 ],-1,163,163,198,630.0 +163,3,2,22,True,"(2, '23', True)","(2, '23', True)",-19.48557375,-11.25,74.8,[-19.485573 -11.25 74.8 ],-1,164,164,199,664.2857142857142 +164,4,2,23,True,"(2, '24', True)","(2, '24', True)",-19.48557375,-11.25,78.2,[-19.485573 -11.25 78.2 ],-1,165,165,200,698.5714285714286 +165,5,2,24,True,"(2, '25', True)","(2, '25', True)",-19.48557375,-11.25,81.6,[-19.485573 -11.25 81.6 ],-1,166,166,201,732.8571428571429 +166,6,2,25,True,"(2, '26', True)","(2, '26', True)",-19.48557375,-11.25,85.0,[-19.485573 -11.25 85. ],-1,167,167,202,767.1428571428571 +167,7,2,26,True,"(2, '27', True)","(2, '27', True)",-19.48557375,-11.25,88.39999999999999,[-19.485573 -11.25 88.4 ],-1,168,168,203,801.4285714285714 +168,8,2,27,True,"(2, '28', True)","(2, '28', True)",-19.48557375,-11.25,91.8,[-19.485573 -11.25 91.8 ],-1,169,169,204,835.7142857142857 +169,9,2,28,True,"(2, '29', True)","(2, '29', True)",-19.48557375,-11.25,95.2,[-19.485573 -11.25 95.2 ],-1,170,170,205,870.0 +170,10,2,29,True,"(2, '30', True)","(2, '30', True)",-19.48557375,-11.25,98.6,[-19.485573 -11.25 98.6 ],-1,171,171,206,904.2857142857142 +171,11,2,30,True,"(2, '31', True)","(2, '31', True)",-19.48557375,-11.25,102.0,[-19.485573 -11.25 102. ],-1,172,172,207,938.5714285714284 +172,12,2,31,True,"(2, '32', True)","(2, '32', True)",-19.48557375,-11.25,105.39999999999999,[-19.485573 -11.25 105.4 ],-1,173,173,208,972.8571428571429 +173,13,2,32,True,-1,"(3, '32', False)",-19.48557375,-11.25,108.8,[-19.485573 -11.25 108.8 ],-1,-1,277,209,1007.1428571428571 +174,0,2,39,True,"(2, '40', True)","(2, '40', True)",-19.48557375,-11.25,132.6,[-19.485573 -11.25 132.6 ],-1,175,175,-1,1247.142857142857 +175,1,2,40,True,"(2, '41', True)","(2, '41', True)",-19.48557375,-11.25,136.0,[-19.485573 -11.25 136. ],-1,176,176,-1,1281.4285714285713 +176,2,2,41,True,-1,-1,-19.48557375,-11.25,139.4,[-19.485573 -11.25 139.4 ],-1,-1,-1,-1,1315.7142857142858 +177,0,2,0,False,-1,-1,-19.48557375,-11.25,0.0,[-19.485573 -11.25 0. ],-1,-1,-1,-1,-90.0 +178,1,2,1,False,"(2, '0', False)","(2, '0', False)",-19.48557375,-11.25,3.4,[-19.485573 -11.25 3.4 ],-1,177,177,-1,-55.714285714285715 +179,2,2,2,False,"(2, '1', False)","(2, '1', False)",-19.48557375,-11.25,6.8,[-19.485573 -11.25 6.8 ],-1,178,178,143,-21.42857142857143 +180,3,2,3,False,"(2, '2', False)","(2, '2', False)",-19.48557375,-11.25,10.2,[-19.485573 -11.25 10.2 ],-1,179,179,144,12.857142857142861 +181,4,2,4,False,"(2, '3', False)","(2, '3', False)",-19.48557375,-11.25,13.6,[-19.485573 -11.25 13.6 ],-1,180,180,145,47.14285714285714 +182,5,2,5,False,"(2, '4', False)","(2, '4', False)",-19.48557375,-11.25,17.0,[-19.485573 -11.25 17. ],-1,181,181,146,81.42857142857142 +183,6,2,6,False,"(2, '5', False)","(2, '5', False)",-19.48557375,-11.25,20.4,[-19.485573 -11.25 20.4 ],-1,182,182,147,115.71428571428572 +184,7,2,7,False,"(2, '6', False)","(2, '6', False)",-19.48557375,-11.25,23.8,[-19.485573 -11.25 23.8 ],-1,183,183,148,150.0 +185,8,2,8,False,"(2, '7', False)","(2, '7', False)",-19.48557375,-11.25,27.2,[-19.485573 -11.25 27.2 ],-1,184,184,149,184.28571428571428 +186,9,2,9,False,"(2, '8', False)","(2, '8', False)",-19.48557375,-11.25,30.599999999999998,[-19.485573 -11.25 30.6 ],-1,185,185,150,218.57142857142856 +187,10,2,10,False,"(2, '9', False)","(2, '9', False)",-19.48557375,-11.25,34.0,[-19.485573 -11.25 34. ],-1,186,186,151,252.85714285714283 +188,11,2,11,False,"(2, '10', False)","(2, '10', False)",-19.48557375,-11.25,37.4,[-19.485573 -11.25 37.4 ],-1,187,187,152,287.1428571428571 +189,12,2,12,False,"(2, '11', False)","(2, '11', False)",-19.48557375,-11.25,40.8,[-19.485573 -11.25 40.8 ],-1,188,188,153,321.42857142857144 +190,13,2,13,False,"(2, '12', False)","(2, '12', False)",-19.48557375,-11.25,44.199999999999996,[-19.485573 -11.25 44.2 ],-1,189,189,154,355.7142857142857 +191,14,2,14,False,"(2, '13', False)","(2, '13', False)",-19.48557375,-11.25,47.6,[-19.485573 -11.25 47.6 ],-1,190,190,155,390.0 +192,15,2,15,False,"(2, '14', False)","(2, '14', False)",-19.48557375,-11.25,51.0,[-19.485573 -11.25 51. ],-1,191,191,156,424.2857142857142 +193,16,2,16,False,"(2, '15', False)","(2, '15', False)",-19.48557375,-11.25,54.4,[-19.485573 -11.25 54.4 ],-1,192,192,157,458.57142857142856 +194,17,2,17,False,"(2, '16', False)","(2, '16', False)",-19.48557375,-11.25,57.8,[-19.485573 -11.25 57.8 ],-1,193,193,158,492.8571428571429 +195,18,2,18,False,"(2, '17', False)","(2, '17', False)",-19.48557375,-11.25,61.199999999999996,[-19.485573 -11.25 61.2 ],-1,194,194,159,527.1428571428571 +196,19,2,19,False,"(2, '18', False)","(2, '18', False)",-19.48557375,-11.25,64.6,[-19.485573 -11.25 64.6 ],-1,195,195,160,561.4285714285714 +197,20,2,20,False,"(2, '19', False)","(2, '19', False)",-19.48557375,-11.25,68.0,[-19.485573 -11.25 68. ],-1,196,196,161,595.7142857142857 +198,21,2,21,False,"(2, '20', False)","(2, '20', False)",-19.48557375,-11.25,71.39999999999999,[-19.485573 -11.25 71.4 ],-1,197,197,162,630.0 +199,22,2,22,False,"(2, '21', False)","(2, '21', False)",-19.48557375,-11.25,74.8,[-19.485573 -11.25 74.8 ],-1,198,198,163,664.2857142857142 +200,23,2,23,False,"(2, '22', False)","(2, '22', False)",-19.48557375,-11.25,78.2,[-19.485573 -11.25 78.2 ],-1,199,199,164,698.5714285714286 +201,24,2,24,False,"(2, '23', False)","(2, '23', False)",-19.48557375,-11.25,81.6,[-19.485573 -11.25 81.6 ],-1,200,200,165,732.8571428571429 +202,25,2,25,False,"(2, '24', False)","(2, '24', False)",-19.48557375,-11.25,85.0,[-19.485573 -11.25 85. ],-1,201,201,166,767.1428571428571 +203,26,2,26,False,"(2, '25', False)","(2, '25', False)",-19.48557375,-11.25,88.39999999999999,[-19.485573 -11.25 88.4 ],-1,202,202,167,801.4285714285714 +204,27,2,27,False,"(2, '26', False)","(2, '26', False)",-19.48557375,-11.25,91.8,[-19.485573 -11.25 91.8 ],-1,203,203,168,835.7142857142857 +205,28,2,28,False,"(2, '27', False)","(2, '27', False)",-19.48557375,-11.25,95.2,[-19.485573 -11.25 95.2 ],-1,204,204,169,870.0 +206,29,2,29,False,"(2, '28', False)","(2, '28', False)",-19.48557375,-11.25,98.6,[-19.485573 -11.25 98.6 ],-1,205,205,170,904.2857142857142 +207,30,2,30,False,"(2, '29', False)","(2, '29', False)",-19.48557375,-11.25,102.0,[-19.485573 -11.25 102. ],-1,206,206,171,938.5714285714284 +208,31,2,31,False,"(2, '30', False)","(2, '30', False)",-19.48557375,-11.25,105.39999999999999,[-19.485573 -11.25 105.4 ],-1,207,207,172,972.8571428571429 +209,32,2,32,False,"(2, '31', False)","(2, '31', False)",-19.48557375,-11.25,108.8,[-19.485573 -11.25 108.8 ],-1,208,208,173,1007.1428571428571 +210,33,2,33,False,"(2, '32', False)","(2, '32', False)",-19.48557375,-11.25,112.2,[-19.485573 -11.25 112.2 ],-1,209,209,-1,1041.4285714285713 +211,34,2,34,False,"(2, '33', False)","(2, '33', False)",-19.48557375,-11.25,115.6,[-19.485573 -11.25 115.6 ],-1,210,210,-1,1075.7142857142858 +212,0,3,0,True,"(3, '1', True)","(3, '1', True)",0.0,-22.5,0.0,[ 0. -22.5 0. ],-1,213,213,-1,-90.0 +213,1,3,1,True,"(3, '2', True)","(3, '2', True)",0.0,-22.5,3.4,[ 0. -22.5 3.4],-1,214,214,-1,-55.714285714285715 +214,2,3,2,True,"(3, '3', True)","(3, '3', True)",0.0,-22.5,6.8,[ 0. -22.5 6.8],-1,215,215,-1,-21.42857142857143 +215,3,3,3,True,"(3, '4', True)","(3, '4', True)",0.0,-22.5,10.2,[ 0. -22.5 10.2],-1,216,216,-1,12.857142857142861 +216,4,3,4,True,"(3, '5', True)","(3, '5', True)",0.0,-22.5,13.6,[ 0. -22.5 13.6],-1,217,217,-1,47.14285714285714 +217,5,3,5,True,"(3, '6', True)","(3, '6', True)",0.0,-22.5,17.0,[ 0. -22.5 17. ],-1,218,218,-1,81.42857142857142 +218,6,3,6,True,"(3, '7', True)","(3, '7', True)",0.0,-22.5,20.4,[ 0. -22.5 20.4],-1,219,219,-1,115.71428571428572 +219,7,3,7,True,"(3, '8', True)","(3, '8', True)",0.0,-22.5,23.8,[ 0. -22.5 23.8],-1,220,220,-1,150.0 +220,8,3,8,True,"(3, '9', True)","(3, '9', True)",0.0,-22.5,27.2,[ 0. -22.5 27.2],-1,221,221,-1,184.28571428571428 +221,9,3,9,True,"(3, '10', True)","(3, '10', True)",0.0,-22.5,30.599999999999998,[ 0. -22.5 30.6],-1,222,222,-1,218.57142857142856 +222,10,3,10,True,"(3, '11', True)","(3, '11', True)",0.0,-22.5,34.0,[ 0. -22.5 34. ],-1,223,223,-1,252.85714285714283 +223,11,3,11,True,"(3, '12', True)","(3, '12', True)",0.0,-22.5,37.4,[ 0. -22.5 37.4],-1,224,224,-1,287.1428571428571 +224,12,3,12,True,"(3, '13', True)","(3, '13', True)",0.0,-22.5,40.8,[ 0. -22.5 40.8],-1,225,225,-1,321.42857142857144 +225,13,3,13,True,"(3, '14', True)","(3, '14', True)",0.0,-22.5,44.199999999999996,[ 0. -22.5 44.2],-1,226,226,-1,355.7142857142857 +226,14,3,14,True,"(3, '15', True)","(3, '15', True)",0.0,-22.5,47.6,[ 0. -22.5 47.6],-1,227,227,-1,390.0 +227,15,3,15,True,"(3, '16', True)","(3, '16', True)",0.0,-22.5,51.0,[ 0. -22.5 51. ],-1,228,228,-1,424.2857142857142 +228,16,3,16,True,"(3, '17', True)","(3, '17', True)",0.0,-22.5,54.4,[ 0. -22.5 54.4],-1,229,229,-1,458.57142857142856 +229,17,3,17,True,"(3, '18', True)","(3, '18', True)",0.0,-22.5,57.8,[ 0. -22.5 57.8],-1,230,230,-1,492.8571428571429 +230,18,3,18,True,"(3, '19', True)","(3, '19', True)",0.0,-22.5,61.199999999999996,[ 0. -22.5 61.2],-1,231,231,-1,527.1428571428571 +231,19,3,19,True,"(3, '20', True)","(3, '20', True)",0.0,-22.5,64.6,[ 0. -22.5 64.6],-1,232,232,-1,561.4285714285714 +232,20,3,20,True,-1,"(4, '20', False)",0.0,-22.5,68.0,[ 0. -22.5 68. ],-1,-1,329,-1,595.7142857142857 +233,0,3,21,True,"(3, '22', True)","(3, '22', True)",0.0,-22.5,71.39999999999999,[ 0. -22.5 71.4],-1,234,234,-1,630.0 +234,1,3,22,True,"(3, '23', True)","(3, '23', True)",0.0,-22.5,74.8,[ 0. -22.5 74.8],-1,235,235,-1,664.2857142857142 +235,2,3,23,True,"(3, '24', True)","(3, '24', True)",0.0,-22.5,78.2,[ 0. -22.5 78.2],-1,236,236,-1,698.5714285714286 +236,3,3,24,True,"(3, '25', True)","(3, '25', True)",0.0,-22.5,81.6,[ 0. -22.5 81.6],-1,237,237,-1,732.8571428571429 +237,4,3,25,True,"(3, '26', True)","(3, '26', True)",0.0,-22.5,85.0,[ 0. -22.5 85. ],-1,238,238,-1,767.1428571428571 +238,5,3,26,True,"(3, '27', True)","(3, '27', True)",0.0,-22.5,88.39999999999999,[ 0. -22.5 88.4],-1,239,239,-1,801.4285714285714 +239,6,3,27,True,"(3, '28', True)","(3, '28', True)",0.0,-22.5,91.8,[ 0. -22.5 91.8],-1,240,240,-1,835.7142857142857 +240,7,3,28,True,"(3, '29', True)","(3, '29', True)",0.0,-22.5,95.2,[ 0. -22.5 95.2],-1,241,241,-1,870.0 +241,8,3,29,True,"(3, '30', True)","(3, '30', True)",0.0,-22.5,98.6,[ 0. -22.5 98.6],-1,242,242,-1,904.2857142857142 +242,9,3,30,True,"(3, '31', True)","(3, '31', True)",0.0,-22.5,102.0,[ 0. -22.5 102. ],-1,243,243,-1,938.5714285714284 +243,10,3,31,True,"(3, '32', True)","(3, '32', True)",0.0,-22.5,105.39999999999999,[ 0. -22.5 105.4],-1,244,244,-1,972.8571428571429 +244,11,3,32,True,"(3, '33', True)","(3, '33', True)",0.0,-22.5,108.8,[ 0. -22.5 108.8],-1,245,245,-1,1007.1428571428571 +245,12,3,33,True,"(3, '34', True)","(3, '34', True)",0.0,-22.5,112.2,[ 0. -22.5 112.2],-1,246,246,-1,1041.4285714285713 +246,13,3,34,True,-1,-1,0.0,-22.5,115.6,[ 0. -22.5 115.6],-1,-1,-1,-1,1075.7142857142858 +247,0,3,2,False,-1,"(2, '2', True)",0.0,-22.5,6.8,[ 0. -22.5 6.8],-1,-1,143,-1,-21.42857142857143 +248,1,3,3,False,"(3, '2', False)","(3, '2', False)",0.0,-22.5,10.2,[ 0. -22.5 10.2],-1,247,247,-1,12.857142857142861 +249,2,3,4,False,"(3, '3', False)","(3, '3', False)",0.0,-22.5,13.6,[ 0. -22.5 13.6],-1,248,248,-1,47.14285714285714 +250,3,3,5,False,"(3, '4', False)","(3, '4', False)",0.0,-22.5,17.0,[ 0. -22.5 17. ],-1,249,249,-1,81.42857142857142 +251,4,3,6,False,"(3, '5', False)","(3, '5', False)",0.0,-22.5,20.4,[ 0. -22.5 20.4],-1,250,250,-1,115.71428571428572 +252,5,3,7,False,"(3, '6', False)","(3, '6', False)",0.0,-22.5,23.8,[ 0. -22.5 23.8],-1,251,251,-1,150.0 +253,6,3,8,False,"(3, '7', False)","(3, '7', False)",0.0,-22.5,27.2,[ 0. -22.5 27.2],-1,252,252,-1,184.28571428571428 +254,7,3,9,False,"(3, '8', False)","(3, '8', False)",0.0,-22.5,30.599999999999998,[ 0. -22.5 30.6],-1,253,253,-1,218.57142857142856 +255,8,3,10,False,"(3, '9', False)","(3, '9', False)",0.0,-22.5,34.0,[ 0. -22.5 34. ],-1,254,254,-1,252.85714285714283 +256,9,3,11,False,"(3, '10', False)","(3, '10', False)",0.0,-22.5,37.4,[ 0. -22.5 37.4],-1,255,255,-1,287.1428571428571 +257,10,3,12,False,"(3, '11', False)","(3, '11', False)",0.0,-22.5,40.8,[ 0. -22.5 40.8],-1,256,256,-1,321.42857142857144 +258,11,3,13,False,"(3, '12', False)","(3, '12', False)",0.0,-22.5,44.199999999999996,[ 0. -22.5 44.2],-1,257,257,-1,355.7142857142857 +259,12,3,14,False,"(3, '13', False)","(3, '13', False)",0.0,-22.5,47.6,[ 0. -22.5 47.6],-1,258,258,-1,390.0 +260,13,3,15,False,"(3, '14', False)","(3, '14', False)",0.0,-22.5,51.0,[ 0. -22.5 51. ],-1,259,259,-1,424.2857142857142 +261,0,3,16,False,-1,"(4, '16', True)",0.0,-22.5,54.4,[ 0. -22.5 54.4],-1,-1,294,-1,458.57142857142856 +262,1,3,17,False,"(3, '16', False)","(3, '16', False)",0.0,-22.5,57.8,[ 0. -22.5 57.8],-1,261,261,-1,492.8571428571429 +263,2,3,18,False,"(3, '17', False)","(3, '17', False)",0.0,-22.5,61.199999999999996,[ 0. -22.5 61.2],-1,262,262,-1,527.1428571428571 +264,3,3,19,False,"(3, '18', False)","(3, '18', False)",0.0,-22.5,64.6,[ 0. -22.5 64.6],-1,263,263,-1,561.4285714285714 +265,4,3,20,False,"(3, '19', False)","(3, '19', False)",0.0,-22.5,68.0,[ 0. -22.5 68. ],-1,264,264,-1,595.7142857142857 +266,5,3,21,False,"(3, '20', False)","(3, '20', False)",0.0,-22.5,71.39999999999999,[ 0. -22.5 71.4],-1,265,265,-1,630.0 +267,6,3,22,False,"(3, '21', False)","(3, '21', False)",0.0,-22.5,74.8,[ 0. -22.5 74.8],-1,266,266,-1,664.2857142857142 +268,7,3,23,False,"(3, '22', False)","(3, '22', False)",0.0,-22.5,78.2,[ 0. -22.5 78.2],-1,267,267,-1,698.5714285714286 +269,8,3,24,False,"(3, '23', False)","(3, '23', False)",0.0,-22.5,81.6,[ 0. -22.5 81.6],-1,268,268,-1,732.8571428571429 +270,9,3,25,False,"(3, '24', False)","(3, '24', False)",0.0,-22.5,85.0,[ 0. -22.5 85. ],-1,269,269,-1,767.1428571428571 +271,10,3,26,False,"(3, '25', False)","(3, '25', False)",0.0,-22.5,88.39999999999999,[ 0. -22.5 88.4],-1,270,270,-1,801.4285714285714 +272,11,3,27,False,"(3, '26', False)","(3, '26', False)",0.0,-22.5,91.8,[ 0. -22.5 91.8],-1,271,271,-1,835.7142857142857 +273,12,3,28,False,"(3, '27', False)","(3, '27', False)",0.0,-22.5,95.2,[ 0. -22.5 95.2],-1,272,272,-1,870.0 +274,13,3,29,False,"(3, '28', False)","(3, '28', False)",0.0,-22.5,98.6,[ 0. -22.5 98.6],-1,273,273,-1,904.2857142857142 +275,14,3,30,False,"(3, '29', False)","(3, '29', False)",0.0,-22.5,102.0,[ 0. -22.5 102. ],-1,274,274,-1,938.5714285714284 +276,15,3,31,False,"(3, '30', False)","(3, '30', False)",0.0,-22.5,105.39999999999999,[ 0. -22.5 105.4],-1,275,275,-1,972.8571428571429 +277,16,3,32,False,"(3, '31', False)","(3, '31', False)",0.0,-22.5,108.8,[ 0. -22.5 108.8],-1,276,276,-1,1007.1428571428571 +278,0,3,37,False,-1,-1,0.0,-22.5,125.8,[ 0. -22.5 125.8],-1,-1,-1,-1,1178.5714285714284 +279,1,3,38,False,"(3, '37', False)","(3, '37', False)",0.0,-22.5,129.2,[ 0. -22.5 129.2],-1,278,278,-1,1212.857142857143 +280,2,3,39,False,"(3, '38', False)","(3, '38', False)",0.0,-22.5,132.6,[ 0. -22.5 132.6],-1,279,279,-1,1247.142857142857 +281,3,3,40,False,"(3, '39', False)","(3, '39', False)",0.0,-22.5,136.0,[ 0. -22.5 136. ],-1,280,280,-1,1281.4285714285713 +282,4,3,41,False,"(3, '40', False)","(3, '40', False)",0.0,-22.5,139.4,[ 0. -22.5 139.4],-1,281,281,-1,1315.7142857142858 +283,0,4,0,True,"(4, '1', True)","(4, '1', True)",19.48557375,-11.25,0.0,[ 19.485573 -11.25 0. ],-1,284,284,-1,-90.0 +284,1,4,1,True,"(4, '2', True)","(4, '2', True)",19.48557375,-11.25,3.4,[ 19.485573 -11.25 3.4 ],-1,285,285,-1,-55.714285714285715 +285,2,4,2,True,"(4, '3', True)","(4, '3', True)",19.48557375,-11.25,6.8,[ 19.485573 -11.25 6.8 ],-1,286,286,-1,-21.42857142857143 +286,3,4,3,True,-1,-1,19.48557375,-11.25,10.2,[ 19.485573 -11.25 10.2 ],-1,-1,-1,-1,12.857142857142861 +287,0,4,9,True,"(4, '10', True)","(4, '10', True)",19.48557375,-11.25,30.599999999999998,[ 19.485573 -11.25 30.6 ],-1,288,288,-1,218.57142857142856 +288,1,4,10,True,"(4, '11', True)","(4, '11', True)",19.48557375,-11.25,34.0,[ 19.485573 -11.25 34. ],-1,289,289,-1,252.85714285714283 +289,2,4,11,True,"(4, '12', True)","(4, '12', True)",19.48557375,-11.25,37.4,[ 19.485573 -11.25 37.4 ],-1,290,290,-1,287.1428571428571 +290,3,4,12,True,"(4, '13', True)","(4, '13', True)",19.48557375,-11.25,40.8,[ 19.485573 -11.25 40.8 ],-1,291,291,-1,321.42857142857144 +291,4,4,13,True,"(4, '14', True)","(4, '14', True)",19.48557375,-11.25,44.199999999999996,[ 19.485573 -11.25 44.2 ],-1,292,292,-1,355.7142857142857 +292,5,4,14,True,"(4, '15', True)","(4, '15', True)",19.48557375,-11.25,47.6,[ 19.485573 -11.25 47.6 ],-1,293,293,-1,390.0 +293,6,4,15,True,-1,"(3, '15', False)",19.48557375,-11.25,51.0,[ 19.485573 -11.25 51. ],-1,-1,260,-1,424.2857142857142 +294,0,4,16,True,"(4, '17', True)","(4, '17', True)",19.48557375,-11.25,54.4,[ 19.485573 -11.25 54.4 ],-1,295,295,-1,458.57142857142856 +295,1,4,17,True,"(4, '18', True)","(4, '18', True)",19.48557375,-11.25,57.8,[ 19.485573 -11.25 57.8 ],-1,296,296,-1,492.8571428571429 +296,2,4,18,True,"(4, '19', True)","(4, '19', True)",19.48557375,-11.25,61.199999999999996,[ 19.485573 -11.25 61.2 ],-1,297,297,-1,527.1428571428571 +297,3,4,19,True,"(4, '20', True)","(4, '20', True)",19.48557375,-11.25,64.6,[ 19.485573 -11.25 64.6 ],-1,298,298,-1,561.4285714285714 +298,4,4,20,True,"(4, '21', True)","(4, '21', True)",19.48557375,-11.25,68.0,[ 19.485573 -11.25 68. ],-1,299,299,-1,595.7142857142857 +299,5,4,21,True,"(4, '22', True)","(4, '22', True)",19.48557375,-11.25,71.39999999999999,[ 19.485573 -11.25 71.4 ],-1,300,300,-1,630.0 +300,6,4,22,True,"(4, '23', True)","(4, '23', True)",19.48557375,-11.25,74.8,[ 19.485573 -11.25 74.8 ],-1,301,301,-1,664.2857142857142 +301,7,4,23,True,"(4, '24', True)","(4, '24', True)",19.48557375,-11.25,78.2,[ 19.485573 -11.25 78.2 ],-1,302,302,-1,698.5714285714286 +302,8,4,24,True,"(4, '25', True)","(4, '25', True)",19.48557375,-11.25,81.6,[ 19.485573 -11.25 81.6 ],-1,303,303,-1,732.8571428571429 +303,9,4,25,True,"(4, '26', True)","(4, '26', True)",19.48557375,-11.25,85.0,[ 19.485573 -11.25 85. ],-1,304,304,-1,767.1428571428571 +304,10,4,26,True,"(4, '27', True)","(4, '27', True)",19.48557375,-11.25,88.39999999999999,[ 19.485573 -11.25 88.4 ],-1,305,305,-1,801.4285714285714 +305,11,4,27,True,"(4, '28', True)","(4, '28', True)",19.48557375,-11.25,91.8,[ 19.485573 -11.25 91.8 ],-1,306,306,-1,835.7142857142857 +306,12,4,28,True,"(4, '29', True)","(4, '29', True)",19.48557375,-11.25,95.2,[ 19.485573 -11.25 95.2 ],-1,307,307,-1,870.0 +307,13,4,29,True,"(4, '30', True)","(4, '30', True)",19.48557375,-11.25,98.6,[ 19.485573 -11.25 98.6 ],-1,308,308,-1,904.2857142857142 +308,14,4,30,True,"(4, '31', True)","(4, '31', True)",19.48557375,-11.25,102.0,[ 19.485573 -11.25 102. ],-1,309,309,-1,938.5714285714284 +309,15,4,31,True,"(4, '32', True)","(4, '32', True)",19.48557375,-11.25,105.39999999999999,[ 19.485573 -11.25 105.4 ],-1,310,310,-1,972.8571428571429 +310,16,4,32,True,"(4, '33', True)","(4, '33', True)",19.48557375,-11.25,108.8,[ 19.485573 -11.25 108.8 ],-1,311,311,-1,1007.1428571428571 +311,17,4,33,True,"(4, '34', True)","(4, '34', True)",19.48557375,-11.25,112.2,[ 19.485573 -11.25 112.2 ],-1,312,312,-1,1041.4285714285713 +312,18,4,34,True,"(4, '35', True)","(4, '35', True)",19.48557375,-11.25,115.6,[ 19.485573 -11.25 115.6 ],-1,313,313,-1,1075.7142857142858 +313,19,4,35,True,"(4, '36', True)","(4, '36', True)",19.48557375,-11.25,119.0,[ 19.485573 -11.25 119. ],-1,314,314,-1,1110.0 +314,20,4,36,True,"(4, '37', True)","(4, '37', True)",19.48557375,-11.25,122.39999999999999,[ 19.485573 -11.25 122.4 ],-1,315,315,-1,1144.2857142857142 +315,21,4,37,True,"(4, '38', True)","(4, '38', True)",19.48557375,-11.25,125.8,[ 19.485573 -11.25 125.8 ],-1,316,316,-1,1178.5714285714284 +316,22,4,38,True,"(4, '39', True)","(4, '39', True)",19.48557375,-11.25,129.2,[ 19.485573 -11.25 129.2 ],-1,317,317,-1,1212.857142857143 +317,23,4,39,True,-1,"(5, '39', False)",19.48557375,-11.25,132.6,[ 19.485573 -11.25 132.6 ],-1,-1,414,-1,1247.142857142857 +318,0,4,9,False,-1,-1,19.48557375,-11.25,30.599999999999998,[ 19.485573 -11.25 30.6 ],-1,-1,-1,-1,218.57142857142856 +319,1,4,10,False,"(4, '9', False)","(4, '9', False)",19.48557375,-11.25,34.0,[ 19.485573 -11.25 34. ],-1,318,318,-1,252.85714285714283 +320,2,4,11,False,"(4, '10', False)","(4, '10', False)",19.48557375,-11.25,37.4,[ 19.485573 -11.25 37.4 ],-1,319,319,-1,287.1428571428571 +321,3,4,12,False,"(4, '11', False)","(4, '11', False)",19.48557375,-11.25,40.8,[ 19.485573 -11.25 40.8 ],-1,320,320,-1,321.42857142857144 +322,4,4,13,False,"(4, '12', False)","(4, '12', False)",19.48557375,-11.25,44.199999999999996,[ 19.485573 -11.25 44.2 ],-1,321,321,-1,355.7142857142857 +323,5,4,14,False,"(4, '13', False)","(4, '13', False)",19.48557375,-11.25,47.6,[ 19.485573 -11.25 47.6 ],-1,322,322,-1,390.0 +324,6,4,15,False,"(4, '14', False)","(4, '14', False)",19.48557375,-11.25,51.0,[ 19.485573 -11.25 51. ],-1,323,323,-1,424.2857142857142 +325,7,4,16,False,"(4, '15', False)","(4, '15', False)",19.48557375,-11.25,54.4,[ 19.485573 -11.25 54.4 ],-1,324,324,-1,458.57142857142856 +326,8,4,17,False,"(4, '16', False)","(4, '16', False)",19.48557375,-11.25,57.8,[ 19.485573 -11.25 57.8 ],-1,325,325,-1,492.8571428571429 +327,9,4,18,False,"(4, '17', False)","(4, '17', False)",19.48557375,-11.25,61.199999999999996,[ 19.485573 -11.25 61.2 ],-1,326,326,-1,527.1428571428571 +328,10,4,19,False,"(4, '18', False)","(4, '18', False)",19.48557375,-11.25,64.6,[ 19.485573 -11.25 64.6 ],-1,327,327,-1,561.4285714285714 +329,11,4,20,False,"(4, '19', False)","(4, '19', False)",19.48557375,-11.25,68.0,[ 19.485573 -11.25 68. ],-1,328,328,-1,595.7142857142857 +330,0,4,21,False,-1,"(3, '21', True)",19.48557375,-11.25,71.39999999999999,[ 19.485573 -11.25 71.4 ],-1,-1,233,-1,630.0 +331,1,4,22,False,"(4, '21', False)","(4, '21', False)",19.48557375,-11.25,74.8,[ 19.485573 -11.25 74.8 ],-1,330,330,-1,664.2857142857142 +332,2,4,23,False,"(4, '22', False)","(4, '22', False)",19.48557375,-11.25,78.2,[ 19.485573 -11.25 78.2 ],-1,331,331,-1,698.5714285714286 +333,3,4,24,False,"(4, '23', False)","(4, '23', False)",19.48557375,-11.25,81.6,[ 19.485573 -11.25 81.6 ],-1,332,332,-1,732.8571428571429 +334,4,4,25,False,"(4, '24', False)","(4, '24', False)",19.48557375,-11.25,85.0,[ 19.485573 -11.25 85. ],-1,333,333,-1,767.1428571428571 +335,5,4,26,False,"(4, '25', False)","(4, '25', False)",19.48557375,-11.25,88.39999999999999,[ 19.485573 -11.25 88.4 ],-1,334,334,-1,801.4285714285714 +336,6,4,27,False,"(4, '26', False)","(4, '26', False)",19.48557375,-11.25,91.8,[ 19.485573 -11.25 91.8 ],-1,335,335,-1,835.7142857142857 +337,7,4,28,False,"(4, '27', False)","(4, '27', False)",19.48557375,-11.25,95.2,[ 19.485573 -11.25 95.2 ],-1,336,336,-1,870.0 +338,8,4,29,False,"(4, '28', False)","(4, '28', False)",19.48557375,-11.25,98.6,[ 19.485573 -11.25 98.6 ],-1,337,337,-1,904.2857142857142 +339,9,4,30,False,"(4, '29', False)","(4, '29', False)",19.48557375,-11.25,102.0,[ 19.485573 -11.25 102. ],-1,338,338,-1,938.5714285714284 +340,10,4,31,False,"(4, '30', False)","(4, '30', False)",19.48557375,-11.25,105.39999999999999,[ 19.485573 -11.25 105.4 ],-1,339,339,-1,972.8571428571429 +341,11,4,32,False,"(4, '31', False)","(4, '31', False)",19.48557375,-11.25,108.8,[ 19.485573 -11.25 108.8 ],-1,340,340,-1,1007.1428571428571 +342,12,4,33,False,"(4, '32', False)","(4, '32', False)",19.48557375,-11.25,112.2,[ 19.485573 -11.25 112.2 ],-1,341,341,-1,1041.4285714285713 +343,13,4,34,False,"(4, '33', False)","(4, '33', False)",19.48557375,-11.25,115.6,[ 19.485573 -11.25 115.6 ],-1,342,342,-1,1075.7142857142858 +344,14,4,35,False,"(4, '34', False)","(4, '34', False)",19.48557375,-11.25,119.0,[ 19.485573 -11.25 119. ],-1,343,343,-1,1110.0 +345,15,4,36,False,"(4, '35', False)","(4, '35', False)",19.48557375,-11.25,122.39999999999999,[ 19.485573 -11.25 122.4 ],-1,344,344,-1,1144.2857142857142 +346,16,4,37,False,"(4, '36', False)","(4, '36', False)",19.48557375,-11.25,125.8,[ 19.485573 -11.25 125.8 ],-1,345,345,-1,1178.5714285714284 +347,17,4,38,False,"(4, '37', False)","(4, '37', False)",19.48557375,-11.25,129.2,[ 19.485573 -11.25 129.2 ],-1,346,346,-1,1212.857142857143 +348,18,4,39,False,"(4, '38', False)","(4, '38', False)",19.48557375,-11.25,132.6,[ 19.485573 -11.25 132.6 ],-1,347,347,-1,1247.142857142857 +349,0,5,9,True,"(5, '10', True)","(5, '10', True)",19.48557375,11.25,30.599999999999998,[19.485573 11.25 30.6 ],-1,350,350,-1,218.57142857142856 +350,1,5,10,True,"(5, '11', True)","(5, '11', True)",19.48557375,11.25,34.0,[19.485573 11.25 34. ],-1,351,351,-1,252.85714285714283 +351,2,5,11,True,"(5, '12', True)","(5, '12', True)",19.48557375,11.25,37.4,[19.485573 11.25 37.4 ],-1,352,352,-1,287.1428571428571 +352,3,5,12,True,"(5, '13', True)","(5, '13', True)",19.48557375,11.25,40.8,[19.485573 11.25 40.8 ],-1,353,353,-1,321.42857142857144 +353,4,5,13,True,"(5, '14', True)","(5, '14', True)",19.48557375,11.25,44.199999999999996,[19.485573 11.25 44.2 ],-1,354,354,-1,355.7142857142857 +354,5,5,14,True,"(5, '15', True)","(5, '15', True)",19.48557375,11.25,47.6,[19.485573 11.25 47.6 ],-1,355,355,-1,390.0 +355,6,5,15,True,"(5, '16', True)","(5, '16', True)",19.48557375,11.25,51.0,[19.485573 11.25 51. ],-1,356,356,-1,424.2857142857142 +356,7,5,16,True,"(5, '17', True)","(5, '17', True)",19.48557375,11.25,54.4,[19.485573 11.25 54.4 ],-1,357,357,-1,458.57142857142856 +357,8,5,17,True,"(5, '18', True)","(5, '18', True)",19.48557375,11.25,57.8,[19.485573 11.25 57.8 ],-1,358,358,-1,492.8571428571429 +358,9,5,18,True,"(5, '19', True)","(5, '19', True)",19.48557375,11.25,61.199999999999996,[19.485573 11.25 61.2 ],-1,359,359,-1,527.1428571428571 +359,10,5,19,True,"(5, '20', True)","(5, '20', True)",19.48557375,11.25,64.6,[19.485573 11.25 64.6 ],-1,360,360,-1,561.4285714285714 +360,11,5,20,True,"(5, '21', True)","(5, '21', True)",19.48557375,11.25,68.0,[19.485573 11.25 68. ],-1,361,361,-1,595.7142857142857 +361,12,5,21,True,"(5, '22', True)","(5, '22', True)",19.48557375,11.25,71.39999999999999,[19.485573 11.25 71.4 ],-1,362,362,-1,630.0 +362,13,5,22,True,"(5, '23', True)","(5, '23', True)",19.48557375,11.25,74.8,[19.485573 11.25 74.8 ],-1,363,363,-1,664.2857142857142 +363,14,5,23,True,"(5, '24', True)","(5, '24', True)",19.48557375,11.25,78.2,[19.485573 11.25 78.2 ],-1,364,364,-1,698.5714285714286 +364,15,5,24,True,"(5, '25', True)","(5, '25', True)",19.48557375,11.25,81.6,[19.485573 11.25 81.6 ],-1,365,365,-1,732.8571428571429 +365,16,5,25,True,"(5, '26', True)","(5, '26', True)",19.48557375,11.25,85.0,[19.485573 11.25 85. ],-1,366,366,-1,767.1428571428571 +366,17,5,26,True,"(5, '27', True)","(5, '27', True)",19.48557375,11.25,88.39999999999999,[19.485573 11.25 88.4 ],-1,367,367,-1,801.4285714285714 +367,18,5,27,True,-1,"(0, '27', False)",19.48557375,11.25,91.8,[19.485573 11.25 91.8 ],-1,-1,60,-1,835.7142857142857 +368,0,5,28,True,"(5, '29', True)","(5, '29', True)",19.48557375,11.25,95.2,[19.485573 11.25 95.2 ],-1,369,369,-1,870.0 +369,1,5,29,True,"(5, '30', True)","(5, '30', True)",19.48557375,11.25,98.6,[19.485573 11.25 98.6 ],-1,370,370,-1,904.2857142857142 +370,2,5,30,True,"(5, '31', True)","(5, '31', True)",19.48557375,11.25,102.0,[ 19.485573 11.25 102. ],-1,371,371,-1,938.5714285714284 +371,3,5,31,True,"(5, '32', True)","(5, '32', True)",19.48557375,11.25,105.39999999999999,[ 19.485573 11.25 105.4 ],-1,372,372,-1,972.8571428571429 +372,4,5,32,True,"(5, '33', True)","(5, '33', True)",19.48557375,11.25,108.8,[ 19.485573 11.25 108.8 ],-1,373,373,-1,1007.1428571428571 +373,5,5,33,True,"(5, '34', True)","(5, '34', True)",19.48557375,11.25,112.2,[ 19.485573 11.25 112.2 ],-1,374,374,-1,1041.4285714285713 +374,6,5,34,True,"(5, '35', True)","(5, '35', True)",19.48557375,11.25,115.6,[ 19.485573 11.25 115.6 ],-1,375,375,-1,1075.7142857142858 +375,7,5,35,True,"(5, '36', True)","(5, '36', True)",19.48557375,11.25,119.0,[ 19.485573 11.25 119. ],-1,376,376,-1,1110.0 +376,8,5,36,True,"(5, '37', True)","(5, '37', True)",19.48557375,11.25,122.39999999999999,[ 19.485573 11.25 122.4 ],-1,377,377,-1,1144.2857142857142 +377,9,5,37,True,"(5, '38', True)","(5, '38', True)",19.48557375,11.25,125.8,[ 19.485573 11.25 125.8 ],-1,378,378,-1,1178.5714285714284 +378,10,5,38,True,"(5, '39', True)","(5, '39', True)",19.48557375,11.25,129.2,[ 19.485573 11.25 129.2 ],-1,379,379,-1,1212.857142857143 +379,11,5,39,True,-1,-1,19.48557375,11.25,132.6,[ 19.485573 11.25 132.6 ],-1,-1,-1,-1,1247.142857142857 +380,0,5,0,False,-1,-1,19.48557375,11.25,0.0,[19.485573 11.25 0. ],-1,-1,-1,-1,-90.0 +381,1,5,1,False,"(5, '0', False)","(5, '0', False)",19.48557375,11.25,3.4,[19.485573 11.25 3.4 ],-1,380,380,-1,-55.714285714285715 +382,2,5,2,False,"(5, '1', False)","(5, '1', False)",19.48557375,11.25,6.8,[19.485573 11.25 6.8 ],-1,381,381,-1,-21.42857142857143 +383,3,5,3,False,"(5, '2', False)","(5, '2', False)",19.48557375,11.25,10.2,[19.485573 11.25 10.2 ],-1,382,382,-1,12.857142857142861 +384,0,5,9,False,-1,"(4, '9', True)",19.48557375,11.25,30.599999999999998,[19.485573 11.25 30.6 ],-1,-1,287,-1,218.57142857142856 +385,1,5,10,False,"(5, '9', False)","(5, '9', False)",19.48557375,11.25,34.0,[19.485573 11.25 34. ],-1,384,384,-1,252.85714285714283 +386,2,5,11,False,"(5, '10', False)","(5, '10', False)",19.48557375,11.25,37.4,[19.485573 11.25 37.4 ],-1,385,385,-1,287.1428571428571 +387,3,5,12,False,"(5, '11', False)","(5, '11', False)",19.48557375,11.25,40.8,[19.485573 11.25 40.8 ],-1,386,386,-1,321.42857142857144 +388,4,5,13,False,"(5, '12', False)","(5, '12', False)",19.48557375,11.25,44.199999999999996,[19.485573 11.25 44.2 ],-1,387,387,-1,355.7142857142857 +389,5,5,14,False,"(5, '13', False)","(5, '13', False)",19.48557375,11.25,47.6,[19.485573 11.25 47.6 ],-1,388,388,-1,390.0 +390,6,5,15,False,"(5, '14', False)","(5, '14', False)",19.48557375,11.25,51.0,[19.485573 11.25 51. ],-1,389,389,-1,424.2857142857142 +391,7,5,16,False,"(5, '15', False)","(5, '15', False)",19.48557375,11.25,54.4,[19.485573 11.25 54.4 ],-1,390,390,-1,458.57142857142856 +392,8,5,17,False,"(5, '16', False)","(5, '16', False)",19.48557375,11.25,57.8,[19.485573 11.25 57.8 ],-1,391,391,-1,492.8571428571429 +393,9,5,18,False,"(5, '17', False)","(5, '17', False)",19.48557375,11.25,61.199999999999996,[19.485573 11.25 61.2 ],-1,392,392,-1,527.1428571428571 +394,10,5,19,False,"(5, '18', False)","(5, '18', False)",19.48557375,11.25,64.6,[19.485573 11.25 64.6 ],-1,393,393,-1,561.4285714285714 +395,11,5,20,False,"(5, '19', False)","(5, '19', False)",19.48557375,11.25,68.0,[19.485573 11.25 68. ],-1,394,394,-1,595.7142857142857 +396,12,5,21,False,"(5, '20', False)","(5, '20', False)",19.48557375,11.25,71.39999999999999,[19.485573 11.25 71.4 ],-1,395,395,-1,630.0 +397,13,5,22,False,"(5, '21', False)","(5, '21', False)",19.48557375,11.25,74.8,[19.485573 11.25 74.8 ],-1,396,396,-1,664.2857142857142 +398,0,5,23,False,-1,-1,19.48557375,11.25,78.2,[19.485573 11.25 78.2 ],-1,-1,-1,-1,698.5714285714286 +399,1,5,24,False,"(5, '23', False)","(5, '23', False)",19.48557375,11.25,81.6,[19.485573 11.25 81.6 ],-1,398,398,-1,732.8571428571429 +400,2,5,25,False,"(5, '24', False)","(5, '24', False)",19.48557375,11.25,85.0,[19.485573 11.25 85. ],-1,399,399,-1,767.1428571428571 +401,3,5,26,False,"(5, '25', False)","(5, '25', False)",19.48557375,11.25,88.39999999999999,[19.485573 11.25 88.4 ],-1,400,400,-1,801.4285714285714 +402,4,5,27,False,"(5, '26', False)","(5, '26', False)",19.48557375,11.25,91.8,[19.485573 11.25 91.8 ],-1,401,401,-1,835.7142857142857 +403,5,5,28,False,"(5, '27', False)","(5, '27', False)",19.48557375,11.25,95.2,[19.485573 11.25 95.2 ],-1,402,402,-1,870.0 +404,6,5,29,False,"(5, '28', False)","(5, '28', False)",19.48557375,11.25,98.6,[19.485573 11.25 98.6 ],-1,403,403,-1,904.2857142857142 +405,7,5,30,False,"(5, '29', False)","(5, '29', False)",19.48557375,11.25,102.0,[ 19.485573 11.25 102. ],-1,404,404,-1,938.5714285714284 +406,8,5,31,False,"(5, '30', False)","(5, '30', False)",19.48557375,11.25,105.39999999999999,[ 19.485573 11.25 105.4 ],-1,405,405,-1,972.8571428571429 +407,9,5,32,False,"(5, '31', False)","(5, '31', False)",19.48557375,11.25,108.8,[ 19.485573 11.25 108.8 ],-1,406,406,-1,1007.1428571428571 +408,10,5,33,False,"(5, '32', False)","(5, '32', False)",19.48557375,11.25,112.2,[ 19.485573 11.25 112.2 ],-1,407,407,-1,1041.4285714285713 +409,11,5,34,False,"(5, '33', False)","(5, '33', False)",19.48557375,11.25,115.6,[ 19.485573 11.25 115.6 ],-1,408,408,-1,1075.7142857142858 +410,12,5,35,False,"(5, '34', False)","(5, '34', False)",19.48557375,11.25,119.0,[ 19.485573 11.25 119. ],-1,409,409,-1,1110.0 +411,13,5,36,False,"(5, '35', False)","(5, '35', False)",19.48557375,11.25,122.39999999999999,[ 19.485573 11.25 122.4 ],-1,410,410,-1,1144.2857142857142 +412,14,5,37,False,"(5, '36', False)","(5, '36', False)",19.48557375,11.25,125.8,[ 19.485573 11.25 125.8 ],-1,411,411,-1,1178.5714285714284 +413,15,5,38,False,"(5, '37', False)","(5, '37', False)",19.48557375,11.25,129.2,[ 19.485573 11.25 129.2 ],-1,412,412,-1,1212.857142857143 +414,16,5,39,False,"(5, '38', False)","(5, '38', False)",19.48557375,11.25,132.6,[ 19.485573 11.25 132.6 ],-1,413,413,-1,1247.142857142857 diff --git a/mrdna/readers/segmentmodel_from_cadnano_old.py b/mrdna/readers/test/segmentmodel_from_cadnano_old.py similarity index 96% rename from mrdna/readers/segmentmodel_from_cadnano_old.py rename to mrdna/readers/test/segmentmodel_from_cadnano_old.py index 55df7ea..599c1d6 100644 --- a/mrdna/readers/segmentmodel_from_cadnano_old.py +++ b/mrdna/readers/test/segmentmodel_from_cadnano_old.py @@ -6,11 +6,11 @@ from glob import glob import re import pandas as pd pd.options.mode.chained_assignment = None # default='warn' -from .segmentmodel_from_lists import model_from_basepair_stack_3prime +from ..segmentmodel_from_lists import model_from_basepair_stack_3prime -from ..arbdmodel.coords import readArbdCoords, readAvgArbdCoords, rotationAboutAxis -from ..segmentmodel import SegmentModel, SingleStrandedSegment, DoubleStrandedSegment -from ..model.dna_sequence import m13 as m13seq +from ...arbdmodel.coords import readArbdCoords, readAvgArbdCoords, rotationAboutAxis +from ...segmentmodel import SegmentModel, SingleStrandedSegment, DoubleStrandedSegment +from ...model.dna_sequence import m13 as m13seq import json import re diff --git a/mrdna/readers/test/seq0.txt b/mrdna/readers/test/seq0.txt new file mode 100644 index 0000000..1ef8d02 --- /dev/null +++ b/mrdna/readers/test/seq0.txt @@ -0,0 +1,15 @@ +Start,End,Color,Mod5,Sequence,Mod3,AbstractSequence +5[3],5[0],#0066cc,,????,,() +1[41],1[39],#0066cc,,???,,() +0[38],5[39],#b8056c,,??ATCCCTTATAAATCAAAAGACTGAGAGAGTTG,,"(,)" +0[23],1[38],#cc01d1,,CCCTTCCGAAATCGGCAAA??,,"(,)" +3[0],4[9],#cc0000,,??GACTCCAACGTCAACCCCAGTTTGAGGGCGA,,"(,)" +5[9],0[24],#000000,,AAAACCGTCTATCATGGCCATAG,,"(,)" +2[34],2[0],#888888,,??TCCTGTTTGATGGTACTATTAAAGAACGTG??,,() +0[39],0[41],#0066cc,,???,,() +5[22],5[23],#0066cc,,TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCA,,"(,,,,,,,,,,)" +3[41],3[37],#0066cc,,?????,,() +1[3],0[2],#16e876,,??TTGGAACAAGAGTCCGGGAGATAGGGTTGAGTGTTGTTCCAGT???,,"(,)" +2[39],2[41],#0066cc,,???,,() +4[39],3[34],#888888,,CAGCAAGCGGTCCACGCTGGCAGGCGAAAA??,,"(,)" +4[0],4[3],#0066cc,,TGAT,,() diff --git a/mrdna/readers/test/test.ipynb b/mrdna/readers/test/test.ipynb index f9f7eeb..60ee725 100644 --- a/mrdna/readers/test/test.ipynb +++ b/mrdna/readers/test/test.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 342, + "execution_count": 1, "id": "1955acef", "metadata": { "scrolled": true @@ -19,10 +19,29 @@ }, { "cell_type": "code", - "execution_count": 343, + "execution_count": 2, "id": "1a6b8cb2", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pip3 install termcolor\n" + ] + }, + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'mrdna'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mcadnano\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcadnano\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdocument\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Document\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmrdna\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01marbdmodel\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcoords\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m readArbdCoords, readAvgArbdCoords, rotationAboutAxis\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'mrdna'" + ] + } + ], "source": [ "import cadnano\n", "from cadnano.document import Document\n", @@ -225,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "b317d21a", "metadata": {}, "outputs": [ @@ -265,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 6, "id": "dc7eb261", "metadata": {}, "outputs": [], @@ -287,7 +306,7 @@ }, { "cell_type": "code", - "execution_count": 195, + "execution_count": 35, "id": "1bf753c6", "metadata": {}, "outputs": [], @@ -334,59 +353,540 @@ " for id_num in part.getIdNums():\n", " if part.vh_properties.loc[id_num,'eulerZ'] == 0:\n", " part.vh_properties.loc[id_num,'eulerZ'] = 360*(6/10.5)\n", - " df=pd.DataFrame(json_data[\"vstrands\"])\n", - " n_df=df.set_index(\"num\")\n", - " return part,n_df\n" + " df=pd.DataFrame(json_data[\"vstrands\"])\n", + " n_df=df.set_index(\"num\")\n", + " else:\n", + " raise(\"Not yet implemented\")\n", + " \n", + " return part,df,decoder\n" ] }, { "cell_type": "code", - "execution_count": 358, - "id": "9b534b7c", + "execution_count": 72, + "id": "17ac5a29-3c76-4b8b-9a98-6343bc91e9e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Found cadnano version 2 file\n" + "1.json test.json.oxdna test2.ipynb\n", + "Na_liu.json test.json.top test3.ipynb\n", + "rest_scaf_col.json test.sc test_cad2.5.json\n", + "test.ipynb test.seq.json test_insert.json\n", + "test.json test.virt2nuc test_insert_2.5.json\n" ] - }, + } + ], + "source": [ + "!ls" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "1c3104ac-787f-4d32-9917-1c7111427925", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"test_insert_2.5.json\") as ch:\n", + " json_data = json.load(ch)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "9b534b7c", + "metadata": {}, + "outputs": [ { "data": { "text/plain": [ - "NucleicAcidPart_-1_3904" + "{'name': 'NaPart1',\n", + " 'color': '#0066cc',\n", + " 'is_visible': True,\n", + " 'active_phos': None,\n", + " 'crossover_span_angle': 45,\n", + " 'max_vhelix_length': 42,\n", + " 'neighbor_active_angle': '',\n", + " 'grid_type': 2,\n", + " 'virtual_helix_order': [0, 1, 2, 3, 4, 5, 6],\n", + " 'is_lattice': True,\n", + " '2': 0,\n", + " 'virtual_helices': {'name': ['vh0', 'vh1', 'vh2', 'vh3', 'vh4', 'vh5', 'vh6'],\n", + " 'is_visible': [True, True, True, True, True, True, True],\n", + " 'color': ['#0066cc',\n", + " '#0066cc',\n", + " '#0066cc',\n", + " '#0066cc',\n", + " '#0066cc',\n", + " '#0066cc',\n", + " '#0066cc'],\n", + " 'eulerZ': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n", + " 'neighbor_active_angle': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n", + " 'neighbors': ['[1, 5]',\n", + " '[0, 2]',\n", + " '[1, 3]',\n", + " '[2, 4]',\n", + " '[3, 5]',\n", + " '[0, 4]',\n", + " '[]'],\n", + " 'bases_per_repeat': [21, 21, 21, 21, 21, 21, 21],\n", + " 'turns_per_repeat': [2, 2, 2, 2, 2, 2, 2],\n", + " 'repeat_hint': [2, 2, 2, 2, 2, 2, 2],\n", + " 'helical_pitch': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],\n", + " 'minor_groove_angle': [180.0, 180.0, 180.0, 180.0, 180.0, 180.0, 180.0],\n", + " 'length': [42, 42, 42, 42, 42, 42, 42],\n", + " 'z': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]},\n", + " 'origins': [[7.7942295, 9.0, 0.0],\n", + " [5.845672125, 7.875, 0.0],\n", + " [5.845672125, 5.625, 0.0],\n", + " [7.7942295, 4.5, 0.0],\n", + " [9.742786875, 5.625, 0.0],\n", + " [9.742786875, 7.875, 0.0],\n", + " [-13.639901625, -1.125, 0.0]],\n", + " 'directions': [[0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0]],\n", + " 'vh_list': [[0, 42], [1, 42], [2, 42], [3, 42], [4, 42], [5, 42], [6, 42]],\n", + " 'strands': {'indices': [[[[5, 36], [39, 41]],\n", + " [[2, 20], [21, 23], [24, 27], [28, 38]]],\n", + " [[[3, 20], [21, 38]], [[5, 18], [19, 36], [39, 41]]],\n", + " [[[2, 18], [19, 32], [39, 41]], [[0, 34]]],\n", + " [[[0, 20], [21, 34]], [[2, 15], [16, 32], [37, 41]]],\n", + " [[[0, 3], [9, 15], [16, 39]], [[9, 20], [21, 39]]],\n", + " [[[9, 27], [28, 39]], [[0, 3], [9, 22], [23, 39]]],\n", + " [[[1, 31]], [[1, 31]]]],\n", + " 'properties': [[['#0066cc', '#0066cc'],\n", + " ['#16e876', '#cc01d1', '#000000', '#b8056c']],\n", + " [['#16e876', '#cc01d1'], ['#0066cc', '#0066cc', '#0066cc']],\n", + " [['#0066cc', '#0066cc', '#0066cc'], ['#888888']],\n", + " [['#cc0000', '#888888'], ['#0066cc', '#0066cc', '#0066cc']],\n", + " [['#0066cc', '#0066cc', '#0066cc'], ['#cc0000', '#888888']],\n", + " [['#000000', '#b8056c'], ['#0066cc', '#0066cc', '#0066cc']],\n", + " [['#0066cc'], ['#0066cc']]]},\n", + " 'insertions': [[0, 13, 10],\n", + " [0, 29, 11],\n", + " [1, 10, 1],\n", + " [2, 11, -1],\n", + " [3, 28, -1]],\n", + " 'xovers': [[0, True, 36, 1, False, 36],\n", + " [0, False, 21, 1, True, 21],\n", + " [0, False, 28, 5, True, 28],\n", + " [1, True, 20, 0, False, 20],\n", + " [1, False, 5, 0, True, 5],\n", + " [1, False, 19, 2, True, 19],\n", + " [2, True, 18, 1, False, 18],\n", + " [2, True, 32, 3, False, 32],\n", + " [3, True, 20, 4, False, 20],\n", + " [3, False, 2, 2, True, 2],\n", + " [3, False, 16, 4, True, 16],\n", + " [4, True, 15, 3, False, 15],\n", + " [4, True, 39, 5, False, 39],\n", + " [4, False, 21, 3, True, 21],\n", + " [5, True, 27, 0, False, 27],\n", + " [5, False, 9, 4, True, 9]],\n", + " 'oligos': [{'id_num': 6,\n", + " 'idx5p': 31,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo2304',\n", + " 'color': '#0066cc',\n", + " 'length': 31,\n", + " 'is_visible': True},\n", + " {'id_num': 0,\n", + " 'idx5p': 23,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo8960',\n", + " 'color': '#cc01d1',\n", + " 'length': 21,\n", + " 'is_visible': True},\n", + " {'id_num': 5,\n", + " 'idx5p': 3,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo9296',\n", + " 'color': '#0066cc',\n", + " 'length': 4,\n", + " 'is_visible': True},\n", + " {'id_num': 5,\n", + " 'idx5p': 9,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo1120',\n", + " 'color': '#000000',\n", + " 'length': 23,\n", + " 'is_visible': True},\n", + " {'id_num': 6,\n", + " 'idx5p': 1,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7728',\n", + " 'color': '#0066cc',\n", + " 'length': 31,\n", + " 'is_visible': True},\n", + " {'id_num': 3,\n", + " 'idx5p': 41,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo4848',\n", + " 'color': '#0066cc',\n", + " 'length': 5,\n", + " 'is_visible': True},\n", + " {'id_num': 2,\n", + " 'idx5p': 39,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo3552',\n", + " 'color': '#0066cc',\n", + " 'length': 3,\n", + " 'is_visible': True},\n", + " {'id_num': 3,\n", + " 'idx5p': 0,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7008',\n", + " 'color': '#cc0000',\n", + " 'length': 33,\n", + " 'is_visible': True},\n", + " {'id_num': 4,\n", + " 'idx5p': 0,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo5696',\n", + " 'color': '#0066cc',\n", + " 'length': 4,\n", + " 'is_visible': True},\n", + " {'id_num': 4,\n", + " 'idx5p': 39,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7856',\n", + " 'color': '#888888',\n", + " 'length': 32,\n", + " 'is_visible': True},\n", + " {'id_num': 1,\n", + " 'idx5p': 41,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo6016',\n", + " 'color': '#0066cc',\n", + " 'length': 3,\n", + " 'is_visible': True},\n", + " {'id_num': 0,\n", + " 'idx5p': 38,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo4560',\n", + " 'color': '#b8056c',\n", + " 'length': 34,\n", + " 'is_visible': True},\n", + " {'id_num': 0,\n", + " 'idx5p': 39,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo5504',\n", + " 'color': '#0066cc',\n", + " 'length': 3,\n", + " 'is_visible': True},\n", + " {'id_num': 5,\n", + " 'idx5p': 22,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo3488',\n", + " 'color': '#0066cc',\n", + " 'length': 208,\n", + " 'is_visible': True},\n", + " {'id_num': 1,\n", + " 'idx5p': 3,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo1648',\n", + " 'color': '#16e876',\n", + " 'length': 48,\n", + " 'is_visible': True},\n", + " {'id_num': 2,\n", + " 'idx5p': 34,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo1536',\n", + " 'color': '#888888',\n", + " 'length': 34,\n", + " 'is_visible': True}],\n", + " 'instance_properties': [{'slice:position': [0.0, 0.0],\n", + " 'grid:position': [0.0, 0.0],\n", + " 'path:position': [0.0, 0.0]}],\n", + " 'uuid': '217c2ce287e943ca8d0e8cde1ffa3291'}" ] }, - "execution_count": 358, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p,f=read_json_file(\"test.json\")\n", - "p" + "s=json_data[\"parts\"][0]\n" ] }, { "cell_type": "code", - "execution_count": 439, + "execution_count": 80, + "id": "be6cf774-3ef7-464c-8f34-9877e73a16d0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[[5, 36], [39, 41]], [[2, 20], [21, 23], [24, 27], [28, 38]]]" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s[\"strands\"][\"indices\"][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "6ec811a1-297b-4782-827e-d7c8eebb5daa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<fwd_StrandSet(2)>.<Strand(39, 41)>" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s=[i for i in part.oligos()]\n", + "l=s[0]\n", + "l.strand3p()" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "188d4ed0-1664-44f1-8318-f11f4fd0e0bd", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'NucleicAcidPart' object has no attribute 'strand3p'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[68], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mpart\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstrand3p\u001b[49m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'NucleicAcidPart' object has no attribute 'strand3p'" + ] + } + ], + "source": [ + "part.strand3p" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "6e2bd586-1f68-44d1-982d-93837c64e616", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(5, 36), (39, 41)], ['#0066cc', '#0066cc'])" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd,rev=part.getStrandSets(0)\n", + "x=[]\n", + "fwd.dump(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, "id": "cbb83c93", "metadata": {}, + "outputs": [], + "source": [ + "n=dict(json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "7700a744-858d-4f83-b3be-fd7abb67ae76", + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "NucleicAcidPart_-1_3904" + "{'name': 'NaPart1',\n", + " 'color': '#0066cc',\n", + " 'is_visible': True,\n", + " 'active_phos': None,\n", + " 'crossover_span_angle': 45,\n", + " 'max_vhelix_length': 42,\n", + " 'neighbor_active_angle': '',\n", + " 'grid_type': 2,\n", + " 'virtual_helix_order': [0, 1, 2, 3, 4, 5],\n", + " 'is_lattice': True,\n", + " 'virtual_helices': {'name': ['vh0', 'vh1', 'vh2', 'vh3', 'vh4', 'vh5'],\n", + " 'is_visible': [True, True, True, True, True, True],\n", + " 'color': ['#0066cc', '#0066cc', '#0066cc', '#0066cc', '#0066cc', '#0066cc'],\n", + " 'eulerZ': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n", + " 'neighbor_active_angle': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n", + " 'neighbors': ['[1, 5]', '[0, 2]', '[1, 3]', '[2, 4]', '[3, 5]', '[0, 4]'],\n", + " 'bases_per_repeat': [21, 21, 21, 21, 21, 21],\n", + " 'turns_per_repeat': [2, 2, 2, 2, 2, 2],\n", + " 'repeat_hint': [2, 2, 2, 2, 2, 2],\n", + " 'helical_pitch': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0],\n", + " 'minor_groove_angle': [180.0, 180.0, 180.0, 180.0, 180.0, 180.0],\n", + " 'length': [42, 42, 42, 42, 42, 42],\n", + " 'z': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]},\n", + " 'origins': [[-1.948557375, 1.125, 0.0],\n", + " [0.0, 2.25, 0.0],\n", + " [1.948557375, 1.125, 0.0],\n", + " [1.948557375, -1.125, 0.0],\n", + " [0.0, -2.25, 0.0],\n", + " [-1.948557375, -1.125, 0.0]],\n", + " 'directions': [[0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0],\n", + " [0.0, 0.0, 1.0]],\n", + " 'vh_list': [[0, 42], [1, 42], [2, 42], [3, 42], [4, 42], [5, 42]],\n", + " 'strands': {'indices': [[[[0, 2], [3, 20], [21, 35]], []],\n", + " [[], [[0, 20], [21, 41]]],\n", + " [[[0, 23], [24, 41]], []],\n", + " [[], [[0, 9], [10, 23], [24, 30], [31, 41]]],\n", + " [[[0, 9], [10, 30], [31, 41]], []],\n", + " [[], [[0, 2], [3, 35], [36, 41]]]],\n", + " 'properties': [[['#0066cc', '#f7931e', '#f7931e'], []],\n", + " [[], ['#f7931e', '#f7931e']],\n", + " [['#f7931e', '#f7931e'], []],\n", + " [[], ['#0066cc', '#f7931e', '#f7931e', '#0066cc']],\n", + " [['#0066cc', '#f7931e', '#0066cc'], []],\n", + " [[], ['#333333', '#f7931e', '#0066cc']]]},\n", + " 'insertions': [],\n", + " 'xovers': [[0, True, 20, 1, False, 20],\n", + " [0, True, 35, 5, False, 35],\n", + " [1, False, 0, 2, True, 0],\n", + " [1, False, 21, 0, True, 21],\n", + " [2, True, 23, 3, False, 23],\n", + " [2, True, 41, 1, False, 41],\n", + " [3, False, 10, 4, True, 10],\n", + " [3, False, 24, 2, True, 24],\n", + " [3, False, 31, 4, True, 31],\n", + " [4, True, 9, 3, False, 9],\n", + " [4, True, 30, 3, False, 30],\n", + " [5, False, 3, 0, True, 3]],\n", + " 'oligos': [{'id_num': 4,\n", + " 'idx5p': 0,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo3632',\n", + " 'color': '#0066cc',\n", + " 'length': 20,\n", + " 'is_visible': True},\n", + " {'id_num': 3,\n", + " 'idx5p': 30,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': True,\n", + " 'sequence': None,\n", + " 'name': 'oligo8000',\n", + " 'color': '#f7931e',\n", + " 'length': 192,\n", + " 'is_visible': True},\n", + " {'id_num': 3,\n", + " 'idx5p': 41,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo0160',\n", + " 'color': '#0066cc',\n", + " 'length': 22,\n", + " 'is_visible': True},\n", + " {'id_num': 5,\n", + " 'idx5p': 41,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7152',\n", + " 'color': '#0066cc',\n", + " 'length': 6,\n", + " 'is_visible': True},\n", + " {'id_num': 0,\n", + " 'idx5p': 0,\n", + " 'is_5p_fwd': True,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo8896',\n", + " 'color': '#0066cc',\n", + " 'length': 3,\n", + " 'is_visible': True},\n", + " {'id_num': 5,\n", + " 'idx5p': 2,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo1168',\n", + " 'color': '#333333',\n", + " 'length': 3,\n", + " 'is_visible': True}],\n", + " 'instance_properties': [{'slice:position': [0.0, 0.0],\n", + " 'grid:position': [0.0, 0.0],\n", + " 'path:position': [-12.994158258098764, -4.331386086032921]}],\n", + " 'uuid': '7029b213616f4ab5a1adcbf0d3a59edb'}" ] }, - "execution_count": 439, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p" + "s=n[\"parts\"][0]\n", + "s" ] }, { @@ -891,7 +1391,7 @@ "metadata": {}, "outputs": [], "source": [ - "def mrdna_model_from_cadnano(json_data,**model_parameters):\n", + "def mrdna_model_from_cadnano_v2(json_data,**model_parameters):\n", " part,vslist=decode_cadnano_part(json_data)\n", " props = part.getModelProperties().copy()\n", "\n", @@ -3713,7 +4213,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -3727,7 +4227,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.8.19" } }, "nbformat": 4, diff --git a/mrdna/readers/test/test.sc b/mrdna/readers/test/test.sc new file mode 100644 index 0000000..4865197 --- /dev/null +++ b/mrdna/readers/test/test.sc @@ -0,0 +1,121 @@ +{ + "version": "0.19.3", + "grid": "honeycomb", + "helices": [ + {"grid_position": [16, 12]}, + {"grid_position": [15, 12]}, + {"grid_position": [15, 13]}, + {"grid_position": [16, 13]}, + {"grid_position": [17, 13]}, + {"grid_position": [17, 12]} + ], + "strands": [ + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 5, "forward": false, "start": 9, "end": 23}, + {"helix": 4, "forward": true, "start": 9, "end": 16}, + {"helix": 3, "forward": false, "start": 2, "end": 16}, + {"helix": 2, "forward": true, "start": 2, "end": 19}, + {"helix": 1, "forward": false, "start": 5, "end": 19}, + {"helix": 0, "forward": true, "start": 5, "end": 37}, + {"helix": 1, "forward": false, "start": 19, "end": 37}, + {"helix": 2, "forward": true, "start": 19, "end": 33}, + {"helix": 3, "forward": false, "start": 16, "end": 33}, + {"helix": 4, "forward": true, "start": 16, "end": 40}, + {"helix": 5, "forward": false, "start": 23, "end": 40} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 0, "forward": true, "start": 39, "end": 42} + ] + }, + { + "color": "#cc0000", + "domains": [ + {"helix": 1, "forward": true, "start": 3, "end": 21}, + {"helix": 0, "forward": false, "start": 2, "end": 21} + ] + }, + { + "color": "#b8056c", + "domains": [ + {"helix": 0, "forward": false, "start": 21, "end": 24}, + {"helix": 1, "forward": true, "start": 21, "end": 39} + ] + }, + { + "color": "#f74308", + "domains": [ + {"helix": 5, "forward": true, "start": 9, "end": 28}, + {"helix": 0, "forward": false, "start": 24, "end": 28} + ] + }, + { + "color": "#1700de", + "domains": [ + {"helix": 0, "forward": false, "start": 28, "end": 39}, + {"helix": 5, "forward": true, "start": 28, "end": 40} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 1, "forward": false, "start": 39, "end": 42} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 2, "forward": true, "start": 39, "end": 42} + ] + }, + { + "color": "#888888", + "domains": [ + {"helix": 2, "forward": false, "start": 0, "end": 35} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 3, "forward": false, "start": 37, "end": 42} + ] + }, + { + "color": "#cc0000", + "domains": [ + {"helix": 3, "forward": true, "start": 0, "end": 21}, + {"helix": 4, "forward": false, "start": 9, "end": 21} + ] + }, + { + "color": "#888888", + "domains": [ + {"helix": 4, "forward": false, "start": 21, "end": 40}, + {"helix": 3, "forward": true, "start": 21, "end": 35} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 4, "forward": true, "start": 0, "end": 4} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 5, "forward": false, "start": 0, "end": 4} + ] + } + ] +} \ No newline at end of file diff --git a/mrdna/readers/test/test2.ipynb b/mrdna/readers/test/test2.ipynb index 2fcb4e5..ff33e44 100644 --- a/mrdna/readers/test/test2.ipynb +++ b/mrdna/readers/test/test2.ipynb @@ -2,35 +2,7554 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "9ea65628", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " _\n", - " _____ ___ _| |___ ___\n", - "| | _| . | | .'|\n", - "|_|_|_|_| |___|_|_|__,| v1.0a.dev74 \n", - "it/its\n", - "\n" + "name": "stdout", + "output_type": "stream", + "text": [ + "pip3 install termcolor\n" + ] + } + ], + "source": [ + "\n", + "from cadnano.document import Document\n", + "import cadnano\n", + "import pandas as pd\n", + "import json\n", + "import re\n", + "import numpy as np\n", + "pd.options.mode.chained_assignment = None # default='warn'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1aaf81df-7464-4bd0-ace5-3b04e63815ac", + "metadata": {}, + "outputs": [], + "source": [ + "def get_lattice(part):\n", + " lattice_type = None\n", + " _gt = part.getGridType()\n", + " try:\n", + " lattice_type = _gt.name.lower()\n", + " except:\n", + " if _gt == 1:\n", + " lattice_type = 'square'\n", + " elif _gt == 2:\n", + " lattice_type = 'honeycomb'\n", + " else:\n", + " print(lattice_type)\n", + " return lattice_type\n", + "\n", + "\n", + "def read_json_file(filename):\n", + "\n", + " try:\n", + " with open(filename) as ch:\n", + " json_data = json.load(ch)\n", + " except:\n", + " with open(filename) as ch:\n", + " content = \"\"\n", + " for l in ch:\n", + " l = re.sub(r\"'\", r'\"', l)\n", + " # https://stackoverflow.com/questions/4033633/handling-lazy-json-in-python-expecting-property-name\n", + " # l = re.sub(r\"{\\s*(\\w)\", r'{\"\\1', l)\n", + " # l = re.sub(r\",\\s*(\\w)\", r',\"\\1', l)\n", + " # l = re.sub(r\"(\\w):\", r'\\1\":', l)\n", + " content += l+\"\\n\"\n", + " json_data = json.loads(content)\n", + "\n", + " try:\n", + " doc = Document()\n", + " cadnano.fileio.v3decode.decode(doc, json_data)\n", + " decoder = 3\n", + " except:\n", + " doc = Document()\n", + " cadnano.fileio.v2decode.decode(doc, json_data)\n", + " decoder = 2\n", + "\n", + " parts = [p for p in doc.getParts()]\n", + " if len(parts) != 1:\n", + " raise Exception(\"Only documents containing a single cadnano part are implemented at this time.\")\n", + " part = parts[0]\n", + "\n", + " if decoder == 2:\n", + " \"\"\" It seems cadnano2.5 (as of ce6ff019) does not set the EulerZ for square lattice structures correctly, doing so here \"\"\"\n", + " l = get_lattice(part)\n", + " if l == 'square':\n", + " for id_num in part.getIdNums():\n", + " if part.vh_properties.loc[id_num,'eulerZ'] == 0:\n", + " part.vh_properties.loc[id_num,'eulerZ'] = 360*(6/10.5)\n", + " df=pd.DataFrame(json_data[\"vstrands\"])\n", + " n_df=df.set_index(\"num\")\n", + " return part" + ] + }, + { + "cell_type": "code", + "execution_count": 581, + "id": "c72e5d53-f082-4daa-8e36-6d74bfe8802b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found cadnano version 2 file\n" + ] + } + ], + "source": [ + "part=read_json_file(\"test.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 574, + "id": "ff1c4a3c-9dde-4ea1-b360-f5d5d149b7d0", + "metadata": {}, + "outputs": [], + "source": [ + "def gen_id_series(strand,part):\n", + " df=pd.DataFrame(columns=[\"vh\",\"zid\",\"fwd\",\"stack_tuple\",\"threeprime_tuple\",\"x\",\"y\",\"z\"],index=range(strand.totalLength()),dtype=object)\n", + " df[\"vh\"]=strand._id_num\n", + " df[\"fwd\"]=strand.isForward()\n", + " df[\"x\"]=part.getVirtualHelixOrigin(strand._id_num)[0]*10\n", + " df[\"y\"]=part.getVirtualHelixOrigin(strand._id_num)[1]*10\n", + " id_lo,id_hi=strand.idxs()\n", + " zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + " insert_dict={}\n", + " insert_dict=dict([(j.idx(),j.length()) for j in strand.insertionsOnStrand()])\n", + " z=np.arange(id_lo,id_hi+1)\n", + " zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + " z=list(np.arange(id_lo,id_hi+1))\n", + " zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + " for insert_base in insert_dict:\n", + " z_ind=zids.index(str(insert_base))\n", + " z_val=insert_dict[insert_base]\n", + " z_pos_ind=z.index(insert_base)\n", + " zids.pop(z_ind)\n", + " z.pop(z_pos_ind)\n", + " if z_val!=-1:\n", + " #l=[str(insert_base)+\".\"+str(i) for i in range(z_val+1)]\n", + " l=list(range(z_val+1))\n", + " l.reverse()\n", + " for k in l: \n", + " zids.insert(z_ind,str(insert_base)+\".\"+str(k))\n", + " z.insert(z_pos_ind,insert_base+k/(z_val+1))\n", + " df[\"zid\"]=zids\n", + " df[\"z\"]=np.array(z)*3.4\n", + " \n", + " \n", + " L=[(df[\"vh\"][i],df[\"zid\"][i],df[\"fwd\"][i]) for i in df.index]\n", + " if strand.isForward()==True:\n", + " df[\"stack_tuple\"]=L[1:]+[-1]\n", + " if strand.connection3p() is None:\n", + " df[\"threeprime_tuple\"]=L[1:]+[-1]\n", + " else:\n", + " df[\"threeprime_tuple\"]=L[1:]+[(strand.connection3p().idNum(),str(strand.connection3p().idx5Prime()),strand.connection3p().isForward())]\n", + " \n", + " \n", + " else:\n", + " df[\"stack_tuple\"]=[-1]+L[0:-1]\n", + " if strand.connection3p() is None:\n", + " df[\"threeprime_tuple\"]=[-1]+L[0:-1]\n", + " else:\n", + " df[\"threeprime_tuple\"]=[(strand.connection3p().idNum(),str(strand.connection3p().idx5Prime()),strand.connection3p().isForward())]+L[0:-1]\n", + " ## cadnano 3.1 sequence assign is wrong if there is insertion or deletion. \n", + " df[\"r\"]=[np.array([df[\"x\"][i],df[\"y\"][i],df[\"z\"][i]],dtype=np.float32) for i in df.index]\n", + " \n", + " return [pd.Series(df.loc[i]) for i in df.index]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 577, + "id": "2356f6ba-8109-4ca1-8704-94f3c6a3bebd", + "metadata": {}, + "outputs": [], + "source": [ + "def gen_prop_table(part):\n", + " strand_set=[]\n", + " for i in part.getidNums():\n", + " fwd,rev=part.getStrandSets(i)\n", + " [strand_set.append(i) for i in fwd.strands()]\n", + " [strand_set.append(i) for i in rev.strands()]\n", + " id_series=[]\n", + " for i in strand_set:\n", + " id_series=id_series+gen_id_series(i,part)\n", + " \n", + " nt_prop=pd.DataFrame(id_series)\n", + " nt_prop.reset_index(names=list(range(len(nt_prop.index))),inplace=True)\n", + " nt_prop[\"seq\"]=-1\n", + " ind_tuple=[(nt_prop[\"vh\"][i],nt_prop[\"zid\"][i],nt_prop[\"fwd\"][i]) for i in nt_prop.index]\n", + " stacks=[]\n", + " for i in list(nt_prop[\"stack_tuple\"]):\n", + " if i ==-1:\n", + " stacks.append(i)\n", + " else:\n", + " stacks.append(ind_tuple.index(i))\n", + " nt_prop[\"stack\"]=stacks\n", + " tprime=[]\n", + " for i in list(nt_prop[\"threeprime_tuple\"]):\n", + " if i ==-1:\n", + " tprime.append(i)\n", + " else:\n", + " tprime.append(ind_tuple.index(i))\n", + " nt_prop[\"threeprime\"]=tprime\n", + " vhzid=list(zip(nt_prop[\"vh\"],nt_prop[\"zid\"]))\n", + " nt_prop[\"bp\"]=-1\n", + " nt_prop[\"orientation\"]=[get_helix_angle(part, helix_id, int(float(indices))) for helix_id,indices in vhzid]\n", + " nt_prop=nt_prop.fillna(-1)\n", + " for i in range(int(len(nt_prop.index)/2)):\n", + " try:\n", + " bp1,bp2=(i,1+i+vhzid[i+1:].index(vhzid[i]))\n", + " nt_prop[\"bp\"][bp1]=bp2\n", + " nt_prop[\"bp\"][bp2]=bp1\n", + " except:\n", + " pass\n", + " return nt_prop" + ] + }, + { + "cell_type": "code", + "execution_count": 582, + "id": "d1e57e0e-efba-43c9-abdb-9fd7a7d0760b", + "metadata": {}, + "outputs": [], + "source": [ + "p=gen_prop_table(part)\n", + "p.to_csv(\"s.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 573, + "id": "e8fb6171-a275-46b6-ac62-ac2867a30739", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 97.42787, 78.75 , 122.4 ], dtype=float32)" + ] + }, + "execution_count": 573, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array([97.42786875, 78.75, 122.39999999999999],dtype=np.float32)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 572, + "id": "675f4a88-18fe-4d6a-bae9-de364e2f4174", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 572, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strand_set[11].insertionsOnStrand()[0].idx()" + ] + }, + { + "cell_type": "code", + "execution_count": 412, + "id": "946198dc-c458-481f-a9aa-3dd4b0f86676", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5, 6, 7, 8, 9, 10, 11, 12, [13.0, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9], 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, [29.0, 29.09090909090909, 29.181818181818183, 29.272727272727273, 29.363636363636363, 29.454545454545453, 29.545454545454547, 29.636363636363637, 29.727272727272727, 29.818181818181817, 29.90909090909091], 30, 31, 32, 33, 34, 35, 36] ['5', '6', '7', '8', '9', '10', '11', '12', '13.0', '13.1', '13.2', '13.3', '13.4', '13.5', '13.6', '13.7', '13.8', '13.9', '13.10', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29.0', '29.1', '29.2', '29.3', '29.4', '29.5', '29.6', '29.7', '29.8', '29.9', '29.10', '29.11', '30', '31', '32', '33', '34', '35', '36']\n" + ] + } + ], + "source": [ + "zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + "z=list(np.arange(id_lo,id_hi+1))\n", + "zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + "for insert_base in insert_dict:\n", + " z_ind=zids.index(str(insert_base))\n", + " z_val=insert_dict[insert_base]\n", + " z_pos_ind=z.index(insert_base)\n", + " zids.pop(z_ind)\n", + " if z_val!=-1:\n", + " l=[str(insert_base)+\".\"+str(i) for i in range(z_val+1)]\n", + " l.reverse()\n", + " for k in l:\n", + " zids.insert(z_ind,k)\n", + " z[z_pos_ind]=list(np.arange(z_val)/z_val+insert_base)\n", + " else:\n", + " z[z_pos_ind]=[]\n", + "print(z,zids)" + ] + }, + { + "cell_type": "code", + "execution_count": 411, + "id": "59f3720b-b3c0-44c7-b7ea-6923d2e7f2d6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 411, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a=np.array([1,2,3,4])\n", + "list(a).index(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 404, + "id": "7f94d3f9-2f55-4e25-be6c-735e8de905f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[5,\n", + " 6,\n", + " 7,\n", + " 8,\n", + " 9,\n", + " 10,\n", + " 11,\n", + " 12,\n", + " 13,\n", + " 14,\n", + " 15,\n", + " 16,\n", + " 17,\n", + " [array([18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6, 18.7, 18.8, 18.9])],\n", + " 19,\n", + " 20,\n", + " 21,\n", + " 22,\n", + " 23,\n", + " 24,\n", + " 25,\n", + " 26,\n", + " 27,\n", + " 28,\n", + " 29,\n", + " 30,\n", + " 31,\n", + " 32,\n", + " 33,\n", + " [array([34. , 34.09090909, 34.18181818, 34.27272727, 34.36363636,\n", + " 34.45454545, 34.54545455, 34.63636364, 34.72727273, 34.81818182,\n", + " 34.90909091])],\n", + " 35,\n", + " 36]" + ] + }, + "execution_count": 404, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 340, + "id": "b29dc9a7-b4cd-43a8-b374-1a6c3c37e326", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n" + ] + } + ], + "source": [ + "part=read_json_file(\"test_insert_seq3.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 355, + "id": "c26b53aa-2b60-4a42-85f0-2cdf626cf14a", + "metadata": {}, + "outputs": [], + "source": [ + "def get_helix_angle(part, helix_id, indices):\n", + " \"\"\" Get \"start_orientation\" for helix \"\"\"\n", + " # import ipdb\n", + " # ipdb.set_trace()\n", + "\n", + " \"\"\" FROM CADNANO2.5\n", + " + angle is CCW\n", + " - angle is CW\n", + " Right handed DNA rotates clockwise from 5' to 3'\n", + " we use the convention the 5' end starts at 0 degrees\n", + " and it's pair is minor_groove_angle degrees away\n", + " direction, hence the minus signs. eulerZ\n", + " \"\"\"\n", + "\n", + " hp, bpr, tpr, eulerZ, mgroove = part.vh_properties.loc[helix_id,\n", + " ['helical_pitch',\n", + " 'bases_per_repeat',\n", + " 'turns_per_repeat',\n", + " 'eulerZ',\n", + " 'minor_groove_angle']]\n", + " twist_per_base = tpr*360./bpr\n", + " # angle = eulerZ - twist_per_base*indices + 0.5*mgroove + 180\n", + " angle = eulerZ + twist_per_base*indices - 0.5*mgroove\n", + " return angle" + ] + }, + { + "cell_type": "code", + "execution_count": 362, + "id": "25f9ab74-6b64-4bbf-a6c3-c67c811d42e6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "441.42857142857133" + ] + }, + "execution_count": 362, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_helix_angle(part, 0,15)" + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "id": "5d3b60a4-14ec-4723-9693-4b05b95554d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'id_num': 4, 'idx5p': 0, 'is_5p_fwd': True, 'is_circular': False, 'sequence': 'TGAT', 'name': 'oligo8144', 'color': '#0066cc', 'length': 4, 'is_visible': True} :\n", + "4\n", + "{'id_num': 4, 'idx5p': 39, 'is_5p_fwd': False, 'is_circular': False, 'sequence': 'CAGCAAGCGGTCCACGCTGGCAGGCGAAAA ', 'name': 'oligo0272', 'color': '#888888', 'length': 32, 'is_visible': True} :\n", + "33\n", + "{'id_num': 5, 'idx5p': 3, 'is_5p_fwd': False, 'is_circular': False, 'sequence': None, 'name': 'oligo8768', 'color': '#0066cc', 'length': 4, 'is_visible': True} :\n", + "{'id_num': 2, 'idx5p': 34, 'is_5p_fwd': False, 'is_circular': False, 'sequence': ' AAATCGGCAAAATCCACTATTAAAGAACGTG ', 'name': 'oligo8352', 'color': '#888888', 'length': 34, 'is_visible': True} :\n", + "35\n", + "{'id_num': 1, 'idx5p': 3, 'is_5p_fwd': True, 'is_circular': False, 'sequence': ' TTGGAACAAGAGTCCGGGAGATAGGGTTGAGTGTT', 'name': 'oligo8240', 'color': '#16e876', 'length': 48, 'is_visible': True} :\n", + "37\n", + "{'id_num': 0, 'idx5p': 38, 'is_5p_fwd': False, 'is_circular': False, 'sequence': ' TAGCCCGAGGGTCCACGCTGG', 'name': 'oligo0480', 'color': '#b8056c', 'length': 34, 'is_visible': True} :\n", + "23\n", + "{'id_num': 1, 'idx5p': 41, 'is_5p_fwd': False, 'is_circular': False, 'sequence': None, 'name': 'oligo4576', 'color': '#0066cc', 'length': 3, 'is_visible': True} :\n", + "{'id_num': 3, 'idx5p': 41, 'is_5p_fwd': False, 'is_circular': False, 'sequence': None, 'name': 'oligo7120', 'color': '#0066cc', 'length': 5, 'is_visible': True} :\n", + "{'id_num': 0, 'idx5p': 39, 'is_5p_fwd': True, 'is_circular': False, 'sequence': None, 'name': 'oligo6960', 'color': '#0066cc', 'length': 3, 'is_visible': True} :\n", + "{'id_num': 5, 'idx5p': 22, 'is_5p_fwd': False, 'is_circular': False, 'sequence': 'TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTCAACCCTATCTCCACCCTATCTCGGGCTATTCTTTTGATTTATAACGGATTTTGCCGATTT TTTTCGCCTGCCAAACAGGATCAGCGTGGACCGCTTGCTGCCAGCGTGGACCGCTTG', 'name': 'oligo3360', 'color': '#0066cc', 'length': 208, 'is_visible': True} :\n", + "188\n", + "{'id_num': 3, 'idx5p': 0, 'is_5p_fwd': True, 'is_circular': False, 'sequence': ' GACTCCAACGTCAAGTTTGATCCTAGGGCGA', 'name': 'oligo9376', 'color': '#cc0000', 'length': 33, 'is_visible': True} :\n", + "33\n", + "{'id_num': 2, 'idx5p': 39, 'is_5p_fwd': True, 'is_circular': False, 'sequence': None, 'name': 'oligo7392', 'color': '#0066cc', 'length': 3, 'is_visible': True} :\n", + "{'id_num': 0, 'idx5p': 23, 'is_5p_fwd': False, 'is_circular': False, 'sequence': 'GGTTTATAAATCAAAAGAA ', 'name': 'oligo9328', 'color': '#cc01d1', 'length': 21, 'is_visible': True} :\n", + "21\n", + "{'id_num': 5, 'idx5p': 9, 'is_5p_fwd': True, 'is_circular': False, 'sequence': 'AAAACCGTCTATCACAAGCATAG', 'name': 'oligo9456', 'color': '#000000', 'length': 23, 'is_visible': True} :\n", + "23\n" + ] + } + ], + "source": [ + "olist=list(part.oligos())\n", + "for i in olist:\n", + " print(i.dump(),\":\")\n", + " try:\n", + " print(len(i.sequence()))\n", + " except: continue\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "id": "0ec83cb6-9abf-4fca-a639-ec6aedf1b14a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_decrementLength',\n", + " '_incrementLength',\n", + " '_is_circular',\n", + " '_parent',\n", + " '_part',\n", + " '_props',\n", + " '_setColor',\n", + " '_setLength',\n", + " '_setLoop',\n", + " '_setProperty',\n", + " '_signals',\n", + " '_strand5p',\n", + " '_strandMergeUpdate',\n", + " '_strandSplitUpdate',\n", + " 'addToPart',\n", + " 'applyAbstractSequences',\n", + " 'applyColor',\n", + " 'applySequence',\n", + " 'applySequenceCMD',\n", + " 'clearAbstractSequences',\n", + " 'connect',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'displayAbstractSequences',\n", + " 'dump',\n", + " 'editable_properties',\n", + " 'getAbsolutePositionAtLength',\n", + " 'getColor',\n", + " 'getModelProperties',\n", + " 'getName',\n", + " 'getNumberOfBasesToEachXover',\n", + " 'getOutlineProperties',\n", + " 'getProperty',\n", + " 'getStrandLengths',\n", + " 'isCircular',\n", + " 'length',\n", + " 'locString',\n", + " 'oligoPropertyChangedSignal',\n", + " 'oligoRemovedSignal',\n", + " 'oligoSelectedChangedSignal',\n", + " 'oligoSequenceAddedSignal',\n", + " 'oligoSequenceClearedSignal',\n", + " 'parent',\n", + " 'part',\n", + " 'refreshLength',\n", + " 'remove',\n", + " 'removeFromPart',\n", + " 'sequence',\n", + " 'sequenceExport',\n", + " 'setParent',\n", + " 'setPart',\n", + " 'setProperty',\n", + " 'setStrand5p',\n", + " 'shallowCopy',\n", + " 'shouldHighlight',\n", + " 'signals',\n", + " 'splitAtAbsoluteLengths',\n", + " 'strand3p',\n", + " 'strand5p',\n", + " 'undoStack']" + ] + }, + "execution_count": 343, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(olist[4])" + ] + }, + { + "cell_type": "code", + "execution_count": 333, + "id": "fc57ba88-6a6a-4d47-8ac6-da84a9f2ab34", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NucleicAcidPart_-1_0272" + ] + }, + "execution_count": 333, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "part" + ] + }, + { + "cell_type": "code", + "execution_count": 334, + "id": "85312ea2-5b2c-4fff-a44c-c506686d74ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[34]" + ] + }, + "execution_count": 334, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "olist[4].getStrandLengths()" + ] + }, + { + "cell_type": "code", + "execution_count": 363, + "id": "fe8f6f2c-f9ac-48c5-868d-a9e90a4fc675", + "metadata": {}, + "outputs": [], + "source": [ + "strand_set=[]\n", + "for i in part.getidNums():\n", + " fwd,rev=part.getStrandSets(i)\n", + " [strand_set.append(i) for i in fwd.strands()]\n", + " [strand_set.append(i) for i in rev.strands()]" + ] + }, + { + "cell_type": "code", + "execution_count": 364, + "id": "64967867-a819-4345-9153-5dba2ec33ec3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_base_idx_high',\n", + " '_base_idx_low',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_id_num',\n", + " '_is_forward',\n", + " '_oligo',\n", + " '_parent',\n", + " '_sequence',\n", + " '_signals',\n", + " '_strand3p',\n", + " '_strand5p',\n", + " '_strandset',\n", + " 'abstractSeq',\n", + " 'abstract_sequence',\n", + " 'addInsertion',\n", + " 'addMods',\n", + " 'applyAbstractSequence',\n", + " 'canInstallXoverAt',\n", + " 'canResizeTo',\n", + " 'changeInsertion',\n", + " 'clearAbstractSequence',\n", + " 'clearDecoratorCommands',\n", + " 'clearInsertionsCommands',\n", + " 'connect',\n", + " 'connection3p',\n", + " 'connection5p',\n", + " 'connectionHigh',\n", + " 'connectionLow',\n", + " 'copyAbstractSequenceToSequence',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dump5p',\n", + " 'generator3pStrand',\n", + " 'generator5pStrand',\n", + " 'getColor',\n", + " 'getComplementStrands',\n", + " 'getRemoveInsertionCommands',\n", + " 'getResizeBounds',\n", + " 'getSequenceList',\n", + " 'hasInsertionAt',\n", + " 'hasXoverAt',\n", + " 'highIdx',\n", + " 'idNum',\n", + " 'idx3Prime',\n", + " 'idx5Prime',\n", + " 'idxs',\n", + " 'insertionLengthBetweenIdxs',\n", + " 'insertionsOnStrand',\n", + " 'isForward',\n", + " 'length',\n", + " 'lowIdx',\n", + " 'merge',\n", + " 'modifersOnStrand',\n", + " 'oligo',\n", + " 'parent',\n", + " 'part',\n", + " 'reapplySequence',\n", + " 'removeInsertion',\n", + " 'removeMods',\n", + " 'resize',\n", + " 'segments',\n", + " 'sequence',\n", + " 'setComplementSequence',\n", + " 'setConnection3p',\n", + " 'setConnection5p',\n", + " 'setConnectionHigh',\n", + " 'setConnectionLow',\n", + " 'setIdxs',\n", + " 'setOligo',\n", + " 'setParent',\n", + " 'setSequence',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'split',\n", + " 'strandConnectionChangedSignal',\n", + " 'strandFilter',\n", + " 'strandHasNewOligoSignal',\n", + " 'strandInsertionAddedSignal',\n", + " 'strandInsertionChangedSignal',\n", + " 'strandInsertionRemovedSignal',\n", + " 'strandModsAddedSignal',\n", + " 'strandModsChangedSignal',\n", + " 'strandModsRemovedSignal',\n", + " 'strandRemovedSignal',\n", + " 'strandResizedSignal',\n", + " 'strandSelectedChangedSignal',\n", + " 'strandSet',\n", + " 'strandType',\n", + " 'strandXover5pRemovedSignal',\n", + " 'totalLength',\n", + " 'undoStack']" + ] + }, + "execution_count": 364, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(strand_set[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 351, + "id": "6b942c47-1109-4ac2-ac1b-7210fa7a505e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<fwd_StrandSet(0)>.<Strand(5, 36)> : [(13, ('ACTCAACCC', 'TATCTCCACC')), (29, ('CTATCTCGGGCTA', '')), (58, ('', ''))]\n", + "<rev_StrandSet(0)>.<Strand(2, 20)> : [(13, ('GGGTTGAGTGTT', 'GGAGATA')), (31, ('', ''))]\n", + "<rev_StrandSet(0)>.<Strand(21, 23)> : [(24, ('GGT', ''))]\n", + "<rev_StrandSet(0)>.<Strand(24, 27)> : [(28, ('ATAG', ''))]\n", + "<rev_StrandSet(0)>.<Strand(28, 38)> : [(29, ('AG', ' TAGCCCG')), (50, ('', ''))]\n", + "<fwd_StrandSet(1)>.<Strand(3, 20)> : [(10, (' TTGGAA', 'C')), (22, ('AAGAGTCCG', ''))]\n", + "<fwd_StrandSet(1)>.<Strand(21, 38)> : [(39, ('TTATAAATCAAAAGAA ', ''))]\n", + "<rev_StrandSet(1)>.<Strand(5, 18)> : [(10, ('TTCCAA', 'G')), (20, ('GACTCTT', ''))]\n", + "<rev_StrandSet(1)>.<Strand(19, 36)> : [(37, ('TTCTTTTGATTTATAACG', ''))]\n", + "<fwd_StrandSet(2)>.<Strand(2, 18)> : [(11, ('CACGTTCTT ', '')), (18, ('TAATAGT', ''))]\n", + "<fwd_StrandSet(2)>.<Strand(19, 32)> : [(33, ('GATTTTGCCGATTT', ''))]\n", + "<rev_StrandSet(2)>.<Strand(0, 34)> : [(11, (' AAGAACGTG ', '')), (34, (' AAATCGGCAAAATCCACTATTA', ''))]\n", + "<fwd_StrandSet(3)>.<Strand(0, 20)> : [(21, (' GACTCCAACGTCAAGTTTG', ''))]\n", + "<fwd_StrandSet(3)>.<Strand(21, 34)> : [(28, ('GCAGGCG ', '')), (34, ('AAAA ', ''))]\n", + "<rev_StrandSet(3)>.<Strand(2, 15)> : [(16, ('TTGACGTTGGAGTC', ''))]\n", + "<rev_StrandSet(3)>.<Strand(16, 32)> : [(28, (' CGCCTGCCAAAC', '')), (32, ('TTTT', ''))]\n", + "<fwd_StrandSet(4)>.<Strand(0, 3)> : [(4, ('TGAT', ''))]\n", + "<fwd_StrandSet(4)>.<Strand(9, 15)> : [(16, ('TCGCCCT', ''))]\n", + "<fwd_StrandSet(4)>.<Strand(16, 39)> : [(40, ('AGGATCAGCGTGGACCGCTTGCTG', ''))]\n", + "<rev_StrandSet(4)>.<Strand(9, 20)> : [(21, ('ATCCTAGGGCGA', ''))]\n", + "<rev_StrandSet(4)>.<Strand(21, 39)> : [(40, ('CAGCAAGCGGTCCACGCTG', ''))]\n", + "<fwd_StrandSet(5)>.<Strand(9, 27)> : [(28, ('AAAACCGTCTATCACAAGC', ''))]\n", + "<fwd_StrandSet(5)>.<Strand(28, 39)> : [(40, ('GGTCCACGCTGG', ''))]\n", + "<rev_StrandSet(5)>.<Strand(9, 22)> : [(23, ('TGATAGACGGTTTT', ''))]\n", + "<rev_StrandSet(5)>.<Strand(23, 39)> : [(40, ('CCAGCGTGGACCGCTTG', ''))]\n" + ] + }, + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_base_idx_high',\n", + " '_base_idx_low',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_id_num',\n", + " '_is_forward',\n", + " '_oligo',\n", + " '_parent',\n", + " '_sequence',\n", + " '_signals',\n", + " '_strand3p',\n", + " '_strand5p',\n", + " '_strandset',\n", + " 'abstractSeq',\n", + " 'abstract_sequence',\n", + " 'addInsertion',\n", + " 'addMods',\n", + " 'applyAbstractSequence',\n", + " 'canInstallXoverAt',\n", + " 'canResizeTo',\n", + " 'changeInsertion',\n", + " 'clearAbstractSequence',\n", + " 'clearDecoratorCommands',\n", + " 'clearInsertionsCommands',\n", + " 'connect',\n", + " 'connection3p',\n", + " 'connection5p',\n", + " 'connectionHigh',\n", + " 'connectionLow',\n", + " 'copyAbstractSequenceToSequence',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dump5p',\n", + " 'generator3pStrand',\n", + " 'generator5pStrand',\n", + " 'getColor',\n", + " 'getComplementStrands',\n", + " 'getRemoveInsertionCommands',\n", + " 'getResizeBounds',\n", + " 'getSequenceList',\n", + " 'hasInsertionAt',\n", + " 'hasXoverAt',\n", + " 'highIdx',\n", + " 'idNum',\n", + " 'idx3Prime',\n", + " 'idx5Prime',\n", + " 'idxs',\n", + " 'insertionLengthBetweenIdxs',\n", + " 'insertionsOnStrand',\n", + " 'isForward',\n", + " 'length',\n", + " 'lowIdx',\n", + " 'merge',\n", + " 'modifersOnStrand',\n", + " 'oligo',\n", + " 'parent',\n", + " 'part',\n", + " 'reapplySequence',\n", + " 'removeInsertion',\n", + " 'removeMods',\n", + " 'resize',\n", + " 'segments',\n", + " 'sequence',\n", + " 'setComplementSequence',\n", + " 'setConnection3p',\n", + " 'setConnection5p',\n", + " 'setConnectionHigh',\n", + " 'setConnectionLow',\n", + " 'setIdxs',\n", + " 'setOligo',\n", + " 'setParent',\n", + " 'setSequence',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'split',\n", + " 'strandConnectionChangedSignal',\n", + " 'strandFilter',\n", + " 'strandHasNewOligoSignal',\n", + " 'strandInsertionAddedSignal',\n", + " 'strandInsertionChangedSignal',\n", + " 'strandInsertionRemovedSignal',\n", + " 'strandModsAddedSignal',\n", + " 'strandModsChangedSignal',\n", + " 'strandModsRemovedSignal',\n", + " 'strandRemovedSignal',\n", + " 'strandResizedSignal',\n", + " 'strandSelectedChangedSignal',\n", + " 'strandSet',\n", + " 'strandType',\n", + " 'strandXover5pRemovedSignal',\n", + " 'totalLength',\n", + " 'undoStack']" + ] + }, + "execution_count": 351, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "for i in strand_set:\n", + " try:\n", + " print(i,\":\",i.getSequenceList())\n", + " except:\n", + " continue\n", + "dir(strand_set[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 338, + "id": "678e48ea-568b-4ad3-98f3-2556b596b70f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ACTCAACCCTATCTCCACCCTATCTCGGGCTA'" + ] + }, + "execution_count": 338, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strand_set[0].sequence()" + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "id": "a27de404-e5c5-4526-9d18-bcff3d8d7b5f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(<fwd_StrandSet(0)>.<Strand(5, 36)>, 'ACTCAACCCTATCTCCACCCTATCTCGGGCTA'),\n", + " (<fwd_StrandSet(0)>.<Strand(39, 41)>, ''),\n", + " (<rev_StrandSet(0)>.<Strand(2, 20)>, 'GGAGATAGGGTTGAGTGTT'),\n", + " (<rev_StrandSet(0)>.<Strand(21, 23)>, 'GGT'),\n", + " (<rev_StrandSet(0)>.<Strand(24, 27)>, 'ATAG'),\n", + " (<rev_StrandSet(0)>.<Strand(28, 38)>, ' TAGCCCGAG'),\n", + " (<fwd_StrandSet(1)>.<Strand(3, 20)>, ' TTGGAACAAGAGTCCG'),\n", + " (<fwd_StrandSet(1)>.<Strand(21, 38)>, 'TTATAAATCAAAAGAA '),\n", + " (<rev_StrandSet(1)>.<Strand(5, 18)>, 'GACTCTTGTTCCAA'),\n", + " (<rev_StrandSet(1)>.<Strand(19, 36)>, 'TTCTTTTGATTTATAACG'),\n", + " (<rev_StrandSet(1)>.<Strand(39, 41)>, ''),\n", + " (<fwd_StrandSet(2)>.<Strand(2, 18)>, 'CACGTTCTTTAATAGTG'),\n", + " (<fwd_StrandSet(2)>.<Strand(19, 32)>, 'GATTTTGCCGATTT'),\n", + " (<fwd_StrandSet(2)>.<Strand(39, 41)>, ''),\n", + " (<rev_StrandSet(2)>.<Strand(0, 34)>, ' AAATCGGCAAAATCCACTATTAAAGAACGTG '),\n", + " (<fwd_StrandSet(3)>.<Strand(0, 20)>, ' GACTCCAACGTCAAGTTTG'),\n", + " (<fwd_StrandSet(3)>.<Strand(21, 34)>, 'GCAGGCGAAAA '),\n", + " (<rev_StrandSet(3)>.<Strand(2, 15)>, 'TTGACGTTGGAGTC'),\n", + " (<rev_StrandSet(3)>.<Strand(16, 32)>, ' TTTTCGCCTGCCAAAC'),\n", + " (<rev_StrandSet(3)>.<Strand(37, 41)>, ''),\n", + " (<fwd_StrandSet(4)>.<Strand(0, 3)>, 'TGAT'),\n", + " (<fwd_StrandSet(4)>.<Strand(9, 15)>, 'TCGCCCT'),\n", + " (<fwd_StrandSet(4)>.<Strand(16, 39)>, 'AGGATCAGCGTGGACCGCTTGCTG'),\n", + " (<rev_StrandSet(4)>.<Strand(9, 20)>, 'ATCCTAGGGCGA'),\n", + " (<rev_StrandSet(4)>.<Strand(21, 39)>, 'CAGCAAGCGGTCCACGCTG'),\n", + " (<fwd_StrandSet(5)>.<Strand(9, 27)>, 'AAAACCGTCTATCACAAGC'),\n", + " (<fwd_StrandSet(5)>.<Strand(28, 39)>, 'GGTCCACGCTGG'),\n", + " (<rev_StrandSet(5)>.<Strand(0, 3)>, ''),\n", + " (<rev_StrandSet(5)>.<Strand(9, 22)>, 'TGATAGACGGTTTT'),\n", + " (<rev_StrandSet(5)>.<Strand(23, 39)>, 'CCAGCGTGGACCGCTTG')]" + ] + }, + "execution_count": 339, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[(i,i.sequence()) for i in strand_set]" + ] + }, + { + "cell_type": "code", + "execution_count": 383, + "id": "02a111ba-ea1e-410b-918e-bccbbdd4141e", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'numpy.ndarray' object has no attribute 'pop'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[383], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mgen_id_series\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstrand_set\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43mpart\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[382], line 16\u001b[0m, in \u001b[0;36mgen_id_series\u001b[0;34m(strand, part)\u001b[0m\n\u001b[1;32m 14\u001b[0m z_val\u001b[38;5;241m=\u001b[39minsert_dict[inset_base]\n\u001b[1;32m 15\u001b[0m zids\u001b[38;5;241m.\u001b[39mpop(z_ind)\n\u001b[0;32m---> 16\u001b[0m \u001b[43mz\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpop\u001b[49m(z_ind)\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m z_val\u001b[38;5;241m!=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 18\u001b[0m l\u001b[38;5;241m=\u001b[39m[\u001b[38;5;28mstr\u001b[39m(inset_base)\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;28mstr\u001b[39m(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(z_val\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m)]\n", + "\u001b[0;31mAttributeError\u001b[0m: 'numpy.ndarray' object has no attribute 'pop'" + ] + } + ], + "source": [ + "gen_id_series(strand_set[0],part)" + ] + }, + { + "cell_type": "code", + "execution_count": 274, + "id": "8a27e1a0-fb25-475d-bc62-0adc23d6b261", + "metadata": {}, + "outputs": [], + "source": [ + "def gen_prop_table(part):\n", + " strand_set=[]\n", + " for i in part.getidNums():\n", + " fwd,rev=part.getStrandSets(i)\n", + " [strand_set.append(i) for i in fwd.strands()]\n", + " [strand_set.append(i) for i in rev.strands()]\n", + " id_series=[]\n", + " for i in strand_set:\n", + " id_series=id_series+gen_id_series(i)\n", + " \n", + " nt_prop=pd.DataFrame(id_series)\n", + " nt_prop.reset_index(names=list(range(len(nt_prop.index))),inplace=True)\n", + " \n", + " ind_tuple=[(nt_prop[\"vh\"][i],nt_prop[\"zid\"][i],nt_prop[\"fwd\"][i]) for i in nt_prop.index]\n", + " stacks=[]\n", + " for i in list(nt_prop[\"stack_tuple\"]):\n", + " if i ==-1:\n", + " stacks.append(i)\n", + " else:\n", + " stacks.append(ind_tuple.index(i))\n", + " nt_prop[\"stack\"]=stacks\n", + " tprime=[]\n", + " for i in list(nt_prop[\"threeprime_tuple\"]):\n", + " if i ==-1:\n", + " tprime.append(i)\n", + " else:\n", + " tprime.append(ind_tuple.index(i))\n", + " nt_prop[\"threeprime\"]=tprime\n", + " \n", + " return nt_prop\n" + ] + }, + { + "cell_type": "code", + "execution_count": 247, + "id": "1389dcb5-51f9-480c-b657-aa7abbd4a2fa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6]" + ] + }, + "execution_count": 247, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "part.getVirtualHelixOrder()" + ] + }, + { + "cell_type": "code", + "execution_count": 242, + "id": "c817bd74-a725-4520-826c-8c1f80c02d56", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: array([7.7942295, 9. ]),\n", + " 1: array([5.84567213, 7.875 ]),\n", + " 2: array([5.84567213, 5.625 ]),\n", + " 3: array([7.7942295, 4.5 ]),\n", + " 4: array([9.74278688, 5.625 ]),\n", + " 5: array([9.74278688, 7.875 ]),\n", + " 6: array([-13.63990163, -1.125 ])}" + ] + }, + "execution_count": 242, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "origins = {hid:part.getVirtualHelixOrigin(hid)[:2] for hid in part.getidNums()}\n", + "origins" + ] + }, + { + "cell_type": "code", + "execution_count": 359, + "id": "ca879ef9-1acc-4943-8c05-62b95558638c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.7942295" + ] + }, + "execution_count": 359, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "part.getVirtualHelixOrigin(0)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "1b55d792-37eb-453d-a3db-382b239cf62d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[stack -1\n", + " threeprime (0, (5, 28, True))\n", + " Name: (0, 28, False), dtype: object,\n", + " stack (0, 28, False)\n", + " threeprime (0, 28, False)\n", + " Name: (0, 29.0, False), dtype: object,\n", + " stack (0, 29.0, False)\n", + " threeprime (0, 29.0, False)\n", + " Name: (0, 29.1, False), dtype: object,\n", + " stack (0, 29.1, False)\n", + " threeprime (0, 29.1, False)\n", + " Name: (0, 29.2, False), dtype: object,\n", + " stack (0, 29.2, False)\n", + " threeprime (0, 29.2, False)\n", + " Name: (0, 29.3, False), dtype: object,\n", + " stack (0, 29.3, False)\n", + " threeprime (0, 29.3, False)\n", + " Name: (0, 29.4, False), dtype: object,\n", + " stack (0, 29.4, False)\n", + " threeprime (0, 29.4, False)\n", + " Name: (0, 29.5, False), dtype: object,\n", + " stack (0, 29.5, False)\n", + " threeprime (0, 29.5, False)\n", + " Name: (0, 29.6, False), dtype: object,\n", + " stack (0, 29.6, False)\n", + " threeprime (0, 29.6, False)\n", + " Name: (0, 29.7, False), dtype: object,\n", + " stack (0, 29.7, False)\n", + " threeprime (0, 29.7, False)\n", + " Name: (0, 29.8, False), dtype: object,\n", + " stack (0, 29.8, False)\n", + " threeprime (0, 29.8, False)\n", + " Name: (0, 29.9, False), dtype: object,\n", + " stack (0, 29.9, False)\n", + " threeprime (0, 29.9, False)\n", + " Name: (0, 29.10, False), dtype: object,\n", + " stack (0, 29.10, False)\n", + " threeprime (0, 29.10, False)\n", + " Name: (0, 29.11, False), dtype: object,\n", + " stack (0, 29.11, False)\n", + " threeprime (0, 29.11, False)\n", + " Name: (0, 30, False), dtype: object,\n", + " stack (0, 30, False)\n", + " threeprime (0, 30, False)\n", + " Name: (0, 31, False), dtype: object,\n", + " stack (0, 31, False)\n", + " threeprime (0, 31, False)\n", + " Name: (0, 32, False), dtype: object,\n", + " stack (0, 32, False)\n", + " threeprime (0, 32, False)\n", + " Name: (0, 33, False), dtype: object,\n", + " stack (0, 33, False)\n", + " threeprime (0, 33, False)\n", + " Name: (0, 34, False), dtype: object,\n", + " stack (0, 34, False)\n", + " threeprime (0, 34, False)\n", + " Name: (0, 35, False), dtype: object,\n", + " stack (0, 35, False)\n", + " threeprime (0, 35, False)\n", + " Name: (0, 36, False), dtype: object,\n", + " stack (0, 36, False)\n", + " threeprime (0, 36, False)\n", + " Name: (0, 37, False), dtype: object,\n", + " stack (0, 37, False)\n", + " threeprime (0, 37, False)\n", + " Name: (0, 38, False), dtype: object]" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "L" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "id": "f8302226-2614-4d47-8050-e332e0ade9f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "52" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(df[\"stack\"]==df[\"threeprime\"]).index(False)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "4221131e-75af-4676-bb67-24b91d978f72", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, '5', True),\n", + " (0, '6', True),\n", + " (0, '7', True),\n", + " (0, '8', True),\n", + " (0, '9', True),\n", + " (0, '10', True),\n", + " (0, '11', True),\n", + " (0, '12', True),\n", + " (0, '13.0', True),\n", + " (0, '13.1', True),\n", + " (0, '13.2', True),\n", + " (0, '13.3', True),\n", + " (0, '13.4', True),\n", + " (0, '13.5', True),\n", + " (0, '13.6', True),\n", + " (0, '13.7', True),\n", + " (0, '13.8', True),\n", + " (0, '13.9', True),\n", + " (0, '13.10', True),\n", + " (0, '14', True),\n", + " (0, '15', True),\n", + " (0, '16', True),\n", + " (0, '17', True),\n", + " (0, '18', True),\n", + " (0, '19', True),\n", + " (0, '20', True),\n", + " (0, '21', True),\n", + " (0, '22', True),\n", + " (0, '23', True),\n", + " (0, '24', True),\n", + " (0, '25', True),\n", + " (0, '26', True),\n", + " (0, '27', True),\n", + " (0, '28', True),\n", + " (0, '29.0', True),\n", + " (0, '29.1', True),\n", + " (0, '29.2', True),\n", + " (0, '29.3', True),\n", + " (0, '29.4', True),\n", + " (0, '29.5', True),\n", + " (0, '29.6', True),\n", + " (0, '29.7', True),\n", + " (0, '29.8', True),\n", + " (0, '29.9', True),\n", + " (0, '29.10', True),\n", + " (0, '29.11', True),\n", + " (0, '30', True),\n", + " (0, '31', True),\n", + " (0, '32', True),\n", + " (0, '33', True),\n", + " (0, '34', True),\n", + " (0, '35', True),\n", + " (0, '36', True),\n", + " (0, '39', True),\n", + " (0, '40', True),\n", + " (0, '41', True),\n", + " (0, '2', False),\n", + " (0, '3', False),\n", + " (0, '4', False),\n", + " (0, '5', False),\n", + " (0, '6', False),\n", + " (0, '7', False),\n", + " (0, '8', False),\n", + " (0, '9', False),\n", + " (0, '10', False),\n", + " (0, '11', False),\n", + " (0, '12', False),\n", + " (0, '13.0', False),\n", + " (0, '13.1', False),\n", + " (0, '13.2', False),\n", + " (0, '13.3', False),\n", + " (0, '13.4', False),\n", + " (0, '13.5', False),\n", + " (0, '13.6', False),\n", + " (0, '13.7', False),\n", + " (0, '13.8', False),\n", + " (0, '13.9', False),\n", + " (0, '13.10', False),\n", + " (0, '14', False),\n", + " (0, '15', False),\n", + " (0, '16', False),\n", + " (0, '17', False),\n", + " (0, '18', False),\n", + " (0, '19', False),\n", + " (0, '20', False),\n", + " (0, '21', False),\n", + " (0, '22', False),\n", + " (0, '23', False),\n", + " (0, '24', False),\n", + " (0, '25', False),\n", + " (0, '26', False),\n", + " (0, '27', False),\n", + " (0, '28', False),\n", + " (0, '29.0', False),\n", + " (0, '29.1', False),\n", + " (0, '29.2', False),\n", + " (0, '29.3', False),\n", + " (0, '29.4', False),\n", + " (0, '29.5', False),\n", + " (0, '29.6', False),\n", + " (0, '29.7', False),\n", + " (0, '29.8', False),\n", + " (0, '29.9', False),\n", + " (0, '29.10', False),\n", + " (0, '29.11', False),\n", + " (0, '30', False),\n", + " (0, '31', False),\n", + " (0, '32', False),\n", + " (0, '33', False),\n", + " (0, '34', False),\n", + " (0, '35', False),\n", + " (0, '36', False),\n", + " (0, '37', False),\n", + " (0, '38', False),\n", + " (1, '3', True),\n", + " (1, '4', True),\n", + " (1, '5', True),\n", + " (1, '6', True),\n", + " (1, '7', True),\n", + " (1, '8', True),\n", + " (1, '9', True),\n", + " (1, '10.0', True),\n", + " (1, '10.1', True),\n", + " (1, '11', True),\n", + " (1, '12', True),\n", + " (1, '13', True),\n", + " (1, '14', True),\n", + " (1, '15', True),\n", + " (1, '16', True),\n", + " (1, '17', True),\n", + " (1, '18', True),\n", + " (1, '19', True),\n", + " (1, '20', True),\n", + " (1, '21', True),\n", + " (1, '22', True),\n", + " (1, '23', True),\n", + " (1, '24', True),\n", + " (1, '25', True),\n", + " (1, '26', True),\n", + " (1, '27', True),\n", + " (1, '28', True),\n", + " (1, '29', True),\n", + " (1, '30', True),\n", + " (1, '31', True),\n", + " (1, '32', True),\n", + " (1, '33', True),\n", + " (1, '34', True),\n", + " (1, '35', True),\n", + " (1, '36', True),\n", + " (1, '37', True),\n", + " (1, '38', True),\n", + " (1, '5', False),\n", + " (1, '6', False),\n", + " (1, '7', False),\n", + " (1, '8', False),\n", + " (1, '9', False),\n", + " (1, '10.0', False),\n", + " (1, '10.1', False),\n", + " (1, '11', False),\n", + " (1, '12', False),\n", + " (1, '13', False),\n", + " (1, '14', False),\n", + " (1, '15', False),\n", + " (1, '16', False),\n", + " (1, '17', False),\n", + " (1, '18', False),\n", + " (1, '19', False),\n", + " (1, '20', False),\n", + " (1, '21', False),\n", + " (1, '22', False),\n", + " (1, '23', False),\n", + " (1, '24', False),\n", + " (1, '25', False),\n", + " (1, '26', False),\n", + " (1, '27', False),\n", + " (1, '28', False),\n", + " (1, '29', False),\n", + " (1, '30', False),\n", + " (1, '31', False),\n", + " (1, '32', False),\n", + " (1, '33', False),\n", + " (1, '34', False),\n", + " (1, '35', False),\n", + " (1, '36', False),\n", + " (1, '39', False),\n", + " (1, '40', False),\n", + " (1, '41', False),\n", + " (2, '2', True),\n", + " (2, '3', True),\n", + " (2, '4', True),\n", + " (2, '5', True),\n", + " (2, '6', True),\n", + " (2, '7', True),\n", + " (2, '8', True),\n", + " (2, '9', True),\n", + " (2, '10', True),\n", + " (2, '12', True),\n", + " (2, '13', True),\n", + " (2, '14', True),\n", + " (2, '15', True),\n", + " (2, '16', True),\n", + " (2, '17', True),\n", + " (2, '18', True),\n", + " (2, '19', True),\n", + " (2, '20', True),\n", + " (2, '21', True),\n", + " (2, '22', True),\n", + " (2, '23', True),\n", + " (2, '24', True),\n", + " (2, '25', True),\n", + " (2, '26', True),\n", + " (2, '27', True),\n", + " (2, '28', True),\n", + " (2, '29', True),\n", + " (2, '30', True),\n", + " (2, '31', True),\n", + " (2, '32', True),\n", + " (2, '39', True),\n", + " (2, '40', True),\n", + " (2, '41', True),\n", + " (2, '0', False),\n", + " (2, '1', False),\n", + " (2, '2', False),\n", + " (2, '3', False),\n", + " (2, '4', False),\n", + " (2, '5', False),\n", + " (2, '6', False),\n", + " (2, '7', False),\n", + " (2, '8', False),\n", + " (2, '9', False),\n", + " (2, '10', False),\n", + " (2, '12', False),\n", + " (2, '13', False),\n", + " (2, '14', False),\n", + " (2, '15', False),\n", + " (2, '16', False),\n", + " (2, '17', False),\n", + " (2, '18', False),\n", + " (2, '19', False),\n", + " (2, '20', False),\n", + " (2, '21', False),\n", + " (2, '22', False),\n", + " (2, '23', False),\n", + " (2, '24', False),\n", + " (2, '25', False),\n", + " (2, '26', False),\n", + " (2, '27', False),\n", + " (2, '28', False),\n", + " (2, '29', False),\n", + " (2, '30', False),\n", + " (2, '31', False),\n", + " (2, '32', False),\n", + " (2, '33', False),\n", + " (2, '34', False),\n", + " (3, '0', True),\n", + " (3, '1', True),\n", + " (3, '2', True),\n", + " (3, '3', True),\n", + " (3, '4', True),\n", + " (3, '5', True),\n", + " (3, '6', True),\n", + " (3, '7', True),\n", + " (3, '8', True),\n", + " (3, '9', True),\n", + " (3, '10', True),\n", + " (3, '11', True),\n", + " (3, '12', True),\n", + " (3, '13', True),\n", + " (3, '14', True),\n", + " (3, '15', True),\n", + " (3, '16', True),\n", + " (3, '17', True),\n", + " (3, '18', True),\n", + " (3, '19', True),\n", + " (3, '20', True),\n", + " (3, '21', True),\n", + " (3, '22', True),\n", + " (3, '23', True),\n", + " (3, '24', True),\n", + " (3, '25', True),\n", + " (3, '26', True),\n", + " (3, '27', True),\n", + " (3, '29', True),\n", + " (3, '30', True),\n", + " (3, '31', True),\n", + " (3, '32', True),\n", + " (3, '33', True),\n", + " (3, '34', True),\n", + " (3, '2', False),\n", + " (3, '3', False),\n", + " (3, '4', False),\n", + " (3, '5', False),\n", + " (3, '6', False),\n", + " (3, '7', False),\n", + " (3, '8', False),\n", + " (3, '9', False),\n", + " (3, '10', False),\n", + " (3, '11', False),\n", + " (3, '12', False),\n", + " (3, '13', False),\n", + " (3, '14', False),\n", + " (3, '15', False),\n", + " (3, '16', False),\n", + " (3, '17', False),\n", + " (3, '18', False),\n", + " (3, '19', False),\n", + " (3, '20', False),\n", + " (3, '21', False),\n", + " (3, '22', False),\n", + " (3, '23', False),\n", + " (3, '24', False),\n", + " (3, '25', False),\n", + " (3, '26', False),\n", + " (3, '27', False),\n", + " (3, '29', False),\n", + " (3, '30', False),\n", + " (3, '31', False),\n", + " (3, '32', False),\n", + " (3, '37', False),\n", + " (3, '38', False),\n", + " (3, '39', False),\n", + " (3, '40', False),\n", + " (3, '41', False),\n", + " (4, '0', True),\n", + " (4, '1', True),\n", + " (4, '2', True),\n", + " (4, '3', True),\n", + " (4, '9', True),\n", + " (4, '10', True),\n", + " (4, '11', True),\n", + " (4, '12', True),\n", + " (4, '13', True),\n", + " (4, '14', True),\n", + " (4, '15', True),\n", + " (4, '16', True),\n", + " (4, '17', True),\n", + " (4, '18', True),\n", + " (4, '19', True),\n", + " (4, '20', True),\n", + " (4, '21', True),\n", + " (4, '22', True),\n", + " (4, '23', True),\n", + " (4, '24', True),\n", + " (4, '25', True),\n", + " (4, '26', True),\n", + " (4, '27', True),\n", + " (4, '28', True),\n", + " (4, '29', True),\n", + " (4, '30', True),\n", + " (4, '31', True),\n", + " (4, '32', True),\n", + " (4, '33', True),\n", + " (4, '34', True),\n", + " (4, '35', True),\n", + " (4, '36', True),\n", + " (4, '37', True),\n", + " (4, '38', True),\n", + " (4, '39', True),\n", + " (4, '9', False),\n", + " (4, '10', False),\n", + " (4, '11', False),\n", + " (4, '12', False),\n", + " (4, '13', False),\n", + " (4, '14', False),\n", + " (4, '15', False),\n", + " (4, '16', False),\n", + " (4, '17', False),\n", + " (4, '18', False),\n", + " (4, '19', False),\n", + " (4, '20', False),\n", + " (4, '21', False),\n", + " (4, '22', False),\n", + " (4, '23', False),\n", + " (4, '24', False),\n", + " (4, '25', False),\n", + " (4, '26', False),\n", + " (4, '27', False),\n", + " (4, '28', False),\n", + " (4, '29', False),\n", + " (4, '30', False),\n", + " (4, '31', False),\n", + " (4, '32', False),\n", + " (4, '33', False),\n", + " (4, '34', False),\n", + " (4, '35', False),\n", + " (4, '36', False),\n", + " (4, '37', False),\n", + " (4, '38', False),\n", + " (4, '39', False),\n", + " (5, '9', True),\n", + " (5, '10', True),\n", + " (5, '11', True),\n", + " (5, '12', True),\n", + " (5, '13', True),\n", + " (5, '14', True),\n", + " (5, '15', True),\n", + " (5, '16', True),\n", + " (5, '17', True),\n", + " (5, '18', True),\n", + " (5, '19', True),\n", + " (5, '20', True),\n", + " (5, '21', True),\n", + " (5, '22', True),\n", + " (5, '23', True),\n", + " (5, '24', True),\n", + " (5, '25', True),\n", + " (5, '26', True),\n", + " (5, '27', True),\n", + " (5, '28', True),\n", + " (5, '29', True),\n", + " (5, '30', True),\n", + " (5, '31', True),\n", + " (5, '32', True),\n", + " (5, '33', True),\n", + " (5, '34', True),\n", + " (5, '35', True),\n", + " (5, '36', True),\n", + " (5, '37', True),\n", + " (5, '38', True),\n", + " (5, '39', True),\n", + " (5, '0', False),\n", + " (5, '1', False),\n", + " (5, '2', False),\n", + " (5, '3', False),\n", + " (5, '9', False),\n", + " (5, '10', False),\n", + " (5, '11', False),\n", + " (5, '12', False),\n", + " (5, '13', False),\n", + " (5, '14', False),\n", + " (5, '15', False),\n", + " (5, '16', False),\n", + " (5, '17', False),\n", + " (5, '18', False),\n", + " (5, '19', False),\n", + " (5, '20', False),\n", + " (5, '21', False),\n", + " (5, '22', False),\n", + " (5, '23', False),\n", + " (5, '24', False),\n", + " (5, '25', False),\n", + " (5, '26', False),\n", + " (5, '27', False),\n", + " (5, '28', False),\n", + " (5, '29', False),\n", + " (5, '30', False),\n", + " (5, '31', False),\n", + " (5, '32', False),\n", + " (5, '33', False),\n", + " (5, '34', False),\n", + " (5, '35', False),\n", + " (5, '36', False),\n", + " (5, '37', False),\n", + " (5, '38', False),\n", + " (5, '39', False)]" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=pd.DataFrame(L)\n", + "df.set_index([\"vh\",\"zid\",\"fwd\"],inplace=True)\n", + "L=list(df.index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb4c1c28-0bed-4f3a-b046-241137968efd", + "metadata": {}, + "outputs": [], + "source": [ + "np.array()" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "86772cec-5ebd-4a09-9068-3fe5684a8a00", + "metadata": {}, + "outputs": [], + "source": [ + "stacks=[]\n", + "for i in list(df[\"stack\"]):\n", + " if i ==-1:\n", + " stacks.append(i)\n", + " else:\n", + " stacks.append(list(df.index).index(i))" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "ca575331-81bb-4d12-8230-65450bbb7100", + "metadata": {}, + "outputs": [], + "source": [ + "tprime=[]\n", + "for i in list(df[\"stack\"]):\n", + " if i ==-1:\n", + " tprime.append(i)\n", + " else:\n", + " tprime.append(list(df.index).index(i))" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "9238476c-157b-4e47-bd2d-e2d66ebc91d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([], dtype=int64),)" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.where(np.array(stacks)!=np.array(tprime))" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "4ed59693-4783-4dda-bffa-e9f256c3d211", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "-1 is not in list", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[77], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[38;5;28mlist\u001b[39m(df\u001b[38;5;241m.\u001b[39mindex)\u001b[38;5;241m.\u001b[39mindex(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstack\u001b[39m\u001b[38;5;124m\"\u001b[39m]]\n", + "Cell \u001b[0;32mIn[77], line 1\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m [\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m(\u001b[49m\u001b[43mi\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstack\u001b[39m\u001b[38;5;124m\"\u001b[39m]]\n", + "\u001b[0;31mValueError\u001b[0m: -1 is not in list" + ] + } + ], + "source": [ + "[list(df.index).index(i) for i in df[\"stack\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "38a3dacc-7991-4475-b356-44043fd90984", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d9610cb-d6ea-4c56-be9b-1b23f623fe66", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def gen_prop_table_cad2(json_data,part):\n", + " \n", + " df=pd.DataFrame(json_data[\"vstrands\"])\n", + " vslist=df.set_index(\"num\")\n", + " props = part.getModelProperties().copy()\n", + "\n", + " try:\n", + " if props.get('point_type') == PointType.ARBITRARY:\n", + " # TODO add code to encode Parts with ARBITRARY point configurations\n", + " raise NotImplementedError(\"Not implemented\")\n", + " except:\n", + " try:\n", + " vh_props, origins = part.helixPropertiesAndOrigins()\n", + " except:\n", + " origins = {hid:part.getVirtualHelixOrigin(hid)[:2] for hid in part.getidNums()}\n", + " scaf_id=[nttype_v2(vslist['scaf'][i]) for i in vslist.index]\n", + " stap_id=[nttype_v2(vslist['stap'][i]) for i in vslist.index]\n", + " cad_bps=part.getIndices(0)\n", + " vslist[\"scafnt\"]=np.sum(np.array(scaf_id),axis=1)\n", + " vslist[\"stapnt\"]=np.sum(np.array(stap_id),axis=1)\n", + " totnt=np.sum(vslist[\"scafnt\"])+np.sum(vslist[\"stapnt\"])\n", + " is_scaf=np.zeros(totnt,dtype=bool)\n", + " is_scaf[0:np.sum(vslist[\"scafnt\"])]=1\n", + " nt_prop=pd.DataFrame(index=range(totnt),columns=[\"vh\",\"zid\",\"is_scaf\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"])\n", + " nt_prop[\"is_scaf\"]=is_scaf\n", + " tot_id=scaf_id+stap_id\n", + " vhi,zidi=np.where(np.array(scaf_id)==1)\n", + " vhj,zidj=np.where(np.array(stap_id)==1)\n", + " vhi=vslist.index[vhi]\n", + " vhj=vslist.index[vhj]\n", + " nt_prop[\"vh\"]=list(vhi)+list(vhj)\n", + " nt_prop[\"zid\"]=list(zidi)+list(zidj)\n", + " vhzid=list(zip(nt_prop[\"vh\"],nt_prop[\"zid\"]))\n", + " nt_prop[\"r\"]=[part.getCoordinate(helix_id, indices) for helix_id, indices in zip(nt_prop[\"vh\"],nt_prop[\"zid\"])]\n", + " nt_prop[\"orientation\"]=[get_helix_angle(part, helix_id, indices) for helix_id,indices in zip(nt_prop[\"vh\"],nt_prop[\"zid\"])]\n", + " nt_prop=nt_prop.fillna(-1)\n", + " for i in range(int(len(vhzid)/2)):\n", + " try:\n", + " bp1,bp2=(i,1+i+vhzid[i+1:].index(vhzid[i]))\n", + " nt_prop[\"bp\"][bp1]=bp2\n", + " nt_prop[\"bp\"][bp2]=bp1\n", + " except:\n", + " pass\n", + " tprime_list=-np.ones(len(nt_prop.index),dtype=int)\n", + " index2=list(zip(vhzid,nt_prop[\"is_scaf\"]))\n", + " for i in range(len(nt_prop.index)):\n", + " ((m,n),p)=list(zip(vhzid,nt_prop[\"is_scaf\"]))[i]\n", + " if p==True:\n", + " k,l=(vslist[\"scaf\"][m])[n][2:]\n", + " if k!=-1 and l!=-1:\n", + " n=index2.index(((k,l),True))\n", + " tprime_list[i]=int(n)\n", + " \n", + " else:\n", + " k,l=(vslist[\"stap\"][m])[n][2:]\n", + " if k!=-1 and l!=-1:\n", + " n=index2.index(((k,l),False))\n", + " tprime_list[i]=int(n)\n", + " nt_prop[\"threeprime\"]=tprime_list\n", + " #(n,)=np.where(nt_prop[\"threeprime\"]==-1)\n", + " #stackid=nt_prop[\"bp\"][[list(nt_prop[\"threeprime\"]).index(i) for i in n]]\n", + " index3=dict(zip(nt_prop.index,zip(nt_prop[\"vh\"],nt_prop[\"is_scaf\"])))\n", + " index3[-1]=(-1,-1)\n", + " nt_prop[\"stack\"]=np.where([index3[i]==index3[nt_prop[\"threeprime\"][i]] for i in (nt_prop.index)],nt_prop[\"threeprime\"],-1) \n", + " \n", + " return nt_prop" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "dbcb2c6d-2e3f-4952-b21e-c624ca2026dc", + "metadata": {}, + "outputs": [], + "source": [ + "import scadnano as sc" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "id": "e7b1dda8-1c43-4f22-b7bb-54e006134cb5", + "metadata": {}, + "outputs": [], + "source": [ + "s=sc.Design.from_scadnano_file(\"loopout.sc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "id": "4e2dd66e-fe4d-4728-8233-60cb1d9b156a", + "metadata": {}, + "outputs": [], + "source": [ + "tot=np.sum([i.dna_length() for i in s.strands])" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "id": "786068b5-fa4b-4c02-bdb8-a48af896cd09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "135" + ] + }, + "execution_count": 214, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tot\n" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "id": "4952a867-7839-4d65-b3d3-228b401fa4de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "32" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.strands[1].dna_length()" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "5d1d1bea-7d71-476b-928b-18b5cf0bd2e5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.strands[2].dna_length()" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "id": "91b1be83-f406-47f3-8e63-11a0262a653a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[20]" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.strands[0].domains[0].deletions" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "e616db25-a0fa-47ea-917d-28f2ec18c67e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Domain(, helix=1, forward=False, start=8, end=24, deletions=[20]),\n", + " Domain(, helix=1, forward=False, start=24, end=40),\n", + " Domain(, helix=1, forward=True, start=8, end=24, deletions=[20]),\n", + " Domain(, helix=1, forward=True, start=24, end=40)]" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.helices[1]._domains" + ] + }, + { + "cell_type": "code", + "execution_count": 732, + "id": "c0e69e86-6319-480e-a781-80c2a3524ea9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>vh</th>\n", + " <th>zid</th>\n", + " <th>is_scaf</th>\n", + " <th>r</th>\n", + " <th>bp</th>\n", + " <th>stack</th>\n", + " <th>threeprime</th>\n", + " <th>seq</th>\n", + " <th>orientation</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>10</th>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " vh zid is_scaf r bp stack threeprime seq orientation\n", + "0 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "10 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 732, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nt_prop=pd.DataFrame(columns=[\"vh\",\"zid\",\"is_scaf\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"],index=[0,10,2])\n", + "\n", + "s0=pd.Series(nt_prop.loc[0])\n", + "s1=pd.Series(nt_prop.loc[10])\n", + "pd.DataFrame([s0,s1])" + ] + }, + { + "cell_type": "code", + "execution_count": 740, + "id": "66d0e76d-3ab9-4caf-8a11-e73069372672", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "vh 2.0\n", + "zid NaN\n", + "is_scaf NaN\n", + "r NaN\n", + "bp NaN\n", + "stack NaN\n", + "threeprime NaN\n", + "seq NaN\n", + "orientation NaN\n", + "dtype: float64" + ] + }, + "execution_count": 740, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s=pd.Series(index=[\"vh\",\"zid\",\"is_scaf\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"])\n", + "s[\"vh\"]=2\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "c907f808-bcdc-4157-ac33-508aa748e42e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.strands[0].is_scaffold" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "id": "5d8aeaca-e795-41a0-a9be-f5e5db5e111f", + "metadata": {}, + "outputs": [], + "source": [ + "m=dict(s.helices)" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "id": "93c6bfde-9974-4b99-b65c-85b99ed70895", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Position3D(x=41.569219381653056, y=54.0, z=0)" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m[0].calculate_position(\"honeycomb\",s.geometry)" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "0dc56391-5cc7-49a5-bdc0-674c1ff93488", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: Helix(max_offset=42, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(16, 12), position=None, roll=0.0, idx=0, group='default_group', _domains=[Domain(, helix=0, forward=True, start=5, end=37), Domain(, helix=0, forward=True, start=39, end=42), Domain(, helix=0, forward=False, start=2, end=21), Domain(, helix=0, forward=False, start=21, end=24), Domain(, helix=0, forward=False, start=24, end=28), Domain(, helix=0, forward=False, start=28, end=39)]),\n", + " 1: Helix(max_offset=42, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(15, 12), position=None, roll=0.0, idx=1, group='default_group', _domains=[Domain(, helix=1, forward=False, start=5, end=19), Domain(, helix=1, forward=False, start=19, end=37), Domain(, helix=1, forward=True, start=3, end=21), Domain(, helix=1, forward=True, start=21, end=39), Domain(, helix=1, forward=False, start=39, end=42)]),\n", + " 2: Helix(max_offset=42, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(15, 13), position=None, roll=0.0, idx=2, group='default_group', _domains=[Domain(, helix=2, forward=True, start=2, end=19), Domain(, helix=2, forward=True, start=19, end=33), Domain(, helix=2, forward=True, start=39, end=42), Domain(, helix=2, forward=False, start=0, end=35)]),\n", + " 3: Helix(max_offset=42, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(16, 13), position=None, roll=0.0, idx=3, group='default_group', _domains=[Domain(, helix=3, forward=False, start=2, end=16), Domain(, helix=3, forward=False, start=16, end=33), Domain(, helix=3, forward=False, start=37, end=42), Domain(, helix=3, forward=True, start=0, end=21), Domain(, helix=3, forward=True, start=21, end=35)]),\n", + " 4: Helix(max_offset=40, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(17, 13), position=None, roll=0.0, idx=4, group='default_group', _domains=[Domain(, helix=4, forward=True, start=9, end=16), Domain(, helix=4, forward=True, start=16, end=40), Domain(, helix=4, forward=False, start=9, end=21), Domain(, helix=4, forward=False, start=21, end=40), Domain(, helix=4, forward=True, start=0, end=4)]),\n", + " 5: Helix(max_offset=40, min_offset=0, major_tick_start=0, major_tick_distance=None, major_tick_periodic_distances=None, major_ticks=None, grid_position=(17, 12), position=None, roll=0.0, idx=5, group='default_group', _domains=[Domain(, helix=5, forward=False, start=9, end=23), Domain(, helix=5, forward=False, start=23, end=40), Domain(, helix=5, forward=True, start=9, end=28), Domain(, helix=5, forward=True, start=28, end=40), Domain(, helix=5, forward=False, start=0, end=4)])}" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "522678a9-81e9-40e5-9e56-400f054bd5d4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "39f36967-8c42-45c5-84b5-e1fab790be36", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "ab8aa441-4b59-4d54-b44d-f776ab8e9e61", + "metadata": {}, + "outputs": [], + "source": [ + "n=s.to_cadnano_v2_serializable()" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "73e69794-fc0a-486e-85f9-88a57276ee68", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[OrderedDict([('num', 0),\n", + " ('row', 12),\n", + " ('col', 16),\n", + " ('scaf',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [1, 5, 0, 6],\n", + " [0, 5, 0, 7],\n", + " [0, 6, 0, 8],\n", + " [0, 7, 0, 9],\n", + " [0, 8, 0, 10],\n", + " [0, 9, 0, 11],\n", + " [0, 10, 0, 12],\n", + " [0, 11, 0, 13],\n", + " [0, 12, 0, 14],\n", + " [0, 13, 0, 15],\n", + " [0, 14, 0, 16],\n", + " [0, 15, 0, 17],\n", + " [0, 16, 0, 18],\n", + " [0, 17, 0, 19],\n", + " [0, 18, 0, 20],\n", + " [0, 19, 0, 21],\n", + " [0, 20, 0, 22],\n", + " [0, 21, 0, 23],\n", + " [0, 22, 0, 24],\n", + " [0, 23, 0, 25],\n", + " [0, 24, 0, 26],\n", + " [0, 25, 0, 27],\n", + " [0, 26, 0, 28],\n", + " [0, 27, 0, 29],\n", + " [0, 28, 0, 30],\n", + " [0, 29, 0, 31],\n", + " [0, 30, 0, 32],\n", + " [0, 31, 0, 33],\n", + " [0, 32, 0, 34],\n", + " [0, 33, 0, 35],\n", + " [0, 34, 0, 36],\n", + " [0, 35, 1, 36],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, 0, 40],\n", + " [0, 39, 0, 41],\n", + " [0, 40, -1, -1]]),\n", + " ('stap',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [0, 3, -1, -1],\n", + " [0, 4, 0, 2],\n", + " [0, 5, 0, 3],\n", + " [0, 6, 0, 4],\n", + " [0, 7, 0, 5],\n", + " [0, 8, 0, 6],\n", + " [0, 9, 0, 7],\n", + " [0, 10, 0, 8],\n", + " [0, 11, 0, 9],\n", + " [0, 12, 0, 10],\n", + " [0, 13, 0, 11],\n", + " [0, 14, 0, 12],\n", + " [0, 15, 0, 13],\n", + " [0, 16, 0, 14],\n", + " [0, 17, 0, 15],\n", + " [0, 18, 0, 16],\n", + " [0, 19, 0, 17],\n", + " [0, 20, 0, 18],\n", + " [1, 20, 0, 19],\n", + " [0, 22, 1, 21],\n", + " [0, 23, 0, 21],\n", + " [-1, -1, 0, 22],\n", + " [0, 25, -1, -1],\n", + " [0, 26, 0, 24],\n", + " [0, 27, 0, 25],\n", + " [5, 27, 0, 26],\n", + " [0, 29, 5, 28],\n", + " [0, 30, 0, 28],\n", + " [0, 31, 0, 29],\n", + " [0, 32, 0, 30],\n", + " [0, 33, 0, 31],\n", + " [0, 34, 0, 32],\n", + " [0, 35, 0, 33],\n", + " [0, 36, 0, 34],\n", + " [0, 37, 0, 35],\n", + " [0, 38, 0, 36],\n", + " [-1, -1, 0, 37],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors',\n", + " [[20, 13369344],\n", + " [23, 12060012],\n", + " [27, 16204552],\n", + " [38, 1507550]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])]),\n", + " OrderedDict([('num', 1),\n", + " ('row', 12),\n", + " ('col', 15),\n", + " ('scaf',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [1, 6, 0, 5],\n", + " [1, 7, 1, 5],\n", + " [1, 8, 1, 6],\n", + " [1, 9, 1, 7],\n", + " [1, 10, 1, 8],\n", + " [1, 11, 1, 9],\n", + " [1, 12, 1, 10],\n", + " [1, 13, 1, 11],\n", + " [1, 14, 1, 12],\n", + " [1, 15, 1, 13],\n", + " [1, 16, 1, 14],\n", + " [1, 17, 1, 15],\n", + " [1, 18, 1, 16],\n", + " [2, 18, 1, 17],\n", + " [1, 20, 2, 19],\n", + " [1, 21, 1, 19],\n", + " [1, 22, 1, 20],\n", + " [1, 23, 1, 21],\n", + " [1, 24, 1, 22],\n", + " [1, 25, 1, 23],\n", + " [1, 26, 1, 24],\n", + " [1, 27, 1, 25],\n", + " [1, 28, 1, 26],\n", + " [1, 29, 1, 27],\n", + " [1, 30, 1, 28],\n", + " [1, 31, 1, 29],\n", + " [1, 32, 1, 30],\n", + " [1, 33, 1, 31],\n", + " [1, 34, 1, 32],\n", + " [1, 35, 1, 33],\n", + " [1, 36, 1, 34],\n", + " [0, 36, 1, 35],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [1, 40, -1, -1],\n", + " [1, 41, 1, 39],\n", + " [-1, -1, 1, 40]]),\n", + " ('stap',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, 1, 4],\n", + " [1, 3, 1, 5],\n", + " [1, 4, 1, 6],\n", + " [1, 5, 1, 7],\n", + " [1, 6, 1, 8],\n", + " [1, 7, 1, 9],\n", + " [1, 8, 1, 10],\n", + " [1, 9, 1, 11],\n", + " [1, 10, 1, 12],\n", + " [1, 11, 1, 13],\n", + " [1, 12, 1, 14],\n", + " [1, 13, 1, 15],\n", + " [1, 14, 1, 16],\n", + " [1, 15, 1, 17],\n", + " [1, 16, 1, 18],\n", + " [1, 17, 1, 19],\n", + " [1, 18, 1, 20],\n", + " [1, 19, 0, 20],\n", + " [0, 21, 1, 22],\n", + " [1, 21, 1, 23],\n", + " [1, 22, 1, 24],\n", + " [1, 23, 1, 25],\n", + " [1, 24, 1, 26],\n", + " [1, 25, 1, 27],\n", + " [1, 26, 1, 28],\n", + " [1, 27, 1, 29],\n", + " [1, 28, 1, 30],\n", + " [1, 29, 1, 31],\n", + " [1, 30, 1, 32],\n", + " [1, 31, 1, 33],\n", + " [1, 32, 1, 34],\n", + " [1, 33, 1, 35],\n", + " [1, 34, 1, 36],\n", + " [1, 35, 1, 37],\n", + " [1, 36, 1, 38],\n", + " [1, 37, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors', [[3, 13369344], [21, 12060012]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])]),\n", + " OrderedDict([('num', 2),\n", + " ('row', 13),\n", + " ('col', 15),\n", + " ('scaf',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [3, 2, 2, 3],\n", + " [2, 2, 2, 4],\n", + " [2, 3, 2, 5],\n", + " [2, 4, 2, 6],\n", + " [2, 5, 2, 7],\n", + " [2, 6, 2, 8],\n", + " [2, 7, 2, 9],\n", + " [2, 8, 2, 10],\n", + " [2, 9, 2, 11],\n", + " [2, 10, 2, 12],\n", + " [2, 11, 2, 13],\n", + " [2, 12, 2, 14],\n", + " [2, 13, 2, 15],\n", + " [2, 14, 2, 16],\n", + " [2, 15, 2, 17],\n", + " [2, 16, 2, 18],\n", + " [2, 17, 1, 18],\n", + " [1, 19, 2, 20],\n", + " [2, 19, 2, 21],\n", + " [2, 20, 2, 22],\n", + " [2, 21, 2, 23],\n", + " [2, 22, 2, 24],\n", + " [2, 23, 2, 25],\n", + " [2, 24, 2, 26],\n", + " [2, 25, 2, 27],\n", + " [2, 26, 2, 28],\n", + " [2, 27, 2, 29],\n", + " [2, 28, 2, 30],\n", + " [2, 29, 2, 31],\n", + " [2, 30, 2, 32],\n", + " [2, 31, 3, 32],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, 2, 40],\n", + " [2, 39, 2, 41],\n", + " [2, 40, -1, -1]]),\n", + " ('stap',\n", + " [[2, 1, -1, -1],\n", + " [2, 2, 2, 0],\n", + " [2, 3, 2, 1],\n", + " [2, 4, 2, 2],\n", + " [2, 5, 2, 3],\n", + " [2, 6, 2, 4],\n", + " [2, 7, 2, 5],\n", + " [2, 8, 2, 6],\n", + " [2, 9, 2, 7],\n", + " [2, 10, 2, 8],\n", + " [2, 11, 2, 9],\n", + " [2, 12, 2, 10],\n", + " [2, 13, 2, 11],\n", + " [2, 14, 2, 12],\n", + " [2, 15, 2, 13],\n", + " [2, 16, 2, 14],\n", + " [2, 17, 2, 15],\n", + " [2, 18, 2, 16],\n", + " [2, 19, 2, 17],\n", + " [2, 20, 2, 18],\n", + " [2, 21, 2, 19],\n", + " [2, 22, 2, 20],\n", + " [2, 23, 2, 21],\n", + " [2, 24, 2, 22],\n", + " [2, 25, 2, 23],\n", + " [2, 26, 2, 24],\n", + " [2, 27, 2, 25],\n", + " [2, 28, 2, 26],\n", + " [2, 29, 2, 27],\n", + " [2, 30, 2, 28],\n", + " [2, 31, 2, 29],\n", + " [2, 32, 2, 30],\n", + " [2, 33, 2, 31],\n", + " [2, 34, 2, 32],\n", + " [-1, -1, 2, 33],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors', [[34, 8947848]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])]),\n", + " OrderedDict([('num', 3),\n", + " ('row', 13),\n", + " ('col', 16),\n", + " ('scaf',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [3, 3, 2, 2],\n", + " [3, 4, 3, 2],\n", + " [3, 5, 3, 3],\n", + " [3, 6, 3, 4],\n", + " [3, 7, 3, 5],\n", + " [3, 8, 3, 6],\n", + " [3, 9, 3, 7],\n", + " [3, 10, 3, 8],\n", + " [3, 11, 3, 9],\n", + " [3, 12, 3, 10],\n", + " [3, 13, 3, 11],\n", + " [3, 14, 3, 12],\n", + " [3, 15, 3, 13],\n", + " [4, 15, 3, 14],\n", + " [3, 17, 4, 16],\n", + " [3, 18, 3, 16],\n", + " [3, 19, 3, 17],\n", + " [3, 20, 3, 18],\n", + " [3, 21, 3, 19],\n", + " [3, 22, 3, 20],\n", + " [3, 23, 3, 21],\n", + " [3, 24, 3, 22],\n", + " [3, 25, 3, 23],\n", + " [3, 26, 3, 24],\n", + " [3, 27, 3, 25],\n", + " [3, 28, 3, 26],\n", + " [3, 29, 3, 27],\n", + " [3, 30, 3, 28],\n", + " [3, 31, 3, 29],\n", + " [3, 32, 3, 30],\n", + " [2, 32, 3, 31],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [3, 38, -1, -1],\n", + " [3, 39, 3, 37],\n", + " [3, 40, 3, 38],\n", + " [3, 41, 3, 39],\n", + " [-1, -1, 3, 40]]),\n", + " ('stap',\n", + " [[-1, -1, 3, 1],\n", + " [3, 0, 3, 2],\n", + " [3, 1, 3, 3],\n", + " [3, 2, 3, 4],\n", + " [3, 3, 3, 5],\n", + " [3, 4, 3, 6],\n", + " [3, 5, 3, 7],\n", + " [3, 6, 3, 8],\n", + " [3, 7, 3, 9],\n", + " [3, 8, 3, 10],\n", + " [3, 9, 3, 11],\n", + " [3, 10, 3, 12],\n", + " [3, 11, 3, 13],\n", + " [3, 12, 3, 14],\n", + " [3, 13, 3, 15],\n", + " [3, 14, 3, 16],\n", + " [3, 15, 3, 17],\n", + " [3, 16, 3, 18],\n", + " [3, 17, 3, 19],\n", + " [3, 18, 3, 20],\n", + " [3, 19, 4, 20],\n", + " [4, 21, 3, 22],\n", + " [3, 21, 3, 23],\n", + " [3, 22, 3, 24],\n", + " [3, 23, 3, 25],\n", + " [3, 24, 3, 26],\n", + " [3, 25, 3, 27],\n", + " [3, 26, 3, 28],\n", + " [3, 27, 3, 29],\n", + " [3, 28, 3, 30],\n", + " [3, 29, 3, 31],\n", + " [3, 30, 3, 32],\n", + " [3, 31, 3, 33],\n", + " [3, 32, 3, 34],\n", + " [3, 33, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors', [[0, 13369344], [21, 8947848]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])]),\n", + " OrderedDict([('num', 4),\n", + " ('row', 13),\n", + " ('col', 17),\n", + " ('scaf',\n", + " [[-1, -1, 4, 1],\n", + " [4, 0, 4, 2],\n", + " [4, 1, 4, 3],\n", + " [4, 2, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [5, 9, 4, 10],\n", + " [4, 9, 4, 11],\n", + " [4, 10, 4, 12],\n", + " [4, 11, 4, 13],\n", + " [4, 12, 4, 14],\n", + " [4, 13, 4, 15],\n", + " [4, 14, 3, 15],\n", + " [3, 16, 4, 17],\n", + " [4, 16, 4, 18],\n", + " [4, 17, 4, 19],\n", + " [4, 18, 4, 20],\n", + " [4, 19, 4, 21],\n", + " [4, 20, 4, 22],\n", + " [4, 21, 4, 23],\n", + " [4, 22, 4, 24],\n", + " [4, 23, 4, 25],\n", + " [4, 24, 4, 26],\n", + " [4, 25, 4, 27],\n", + " [4, 26, 4, 28],\n", + " [4, 27, 4, 29],\n", + " [4, 28, 4, 30],\n", + " [4, 29, 4, 31],\n", + " [4, 30, 4, 32],\n", + " [4, 31, 4, 33],\n", + " [4, 32, 4, 34],\n", + " [4, 33, 4, 35],\n", + " [4, 34, 4, 36],\n", + " [4, 35, 4, 37],\n", + " [4, 36, 4, 38],\n", + " [4, 37, 4, 39],\n", + " [4, 38, 5, 39],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('stap',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [4, 10, -1, -1],\n", + " [4, 11, 4, 9],\n", + " [4, 12, 4, 10],\n", + " [4, 13, 4, 11],\n", + " [4, 14, 4, 12],\n", + " [4, 15, 4, 13],\n", + " [4, 16, 4, 14],\n", + " [4, 17, 4, 15],\n", + " [4, 18, 4, 16],\n", + " [4, 19, 4, 17],\n", + " [4, 20, 4, 18],\n", + " [3, 20, 4, 19],\n", + " [4, 22, 3, 21],\n", + " [4, 23, 4, 21],\n", + " [4, 24, 4, 22],\n", + " [4, 25, 4, 23],\n", + " [4, 26, 4, 24],\n", + " [4, 27, 4, 25],\n", + " [4, 28, 4, 26],\n", + " [4, 29, 4, 27],\n", + " [4, 30, 4, 28],\n", + " [4, 31, 4, 29],\n", + " [4, 32, 4, 30],\n", + " [4, 33, 4, 31],\n", + " [4, 34, 4, 32],\n", + " [4, 35, 4, 33],\n", + " [4, 36, 4, 34],\n", + " [4, 37, 4, 35],\n", + " [4, 38, 4, 36],\n", + " [4, 39, 4, 37],\n", + " [-1, -1, 4, 38],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors', [[20, 13369344], [39, 8947848]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])]),\n", + " OrderedDict([('num', 5),\n", + " ('row', 12),\n", + " ('col', 17),\n", + " ('scaf',\n", + " [[5, 1, -1, -1],\n", + " [5, 2, 5, 0],\n", + " [5, 3, 5, 1],\n", + " [-1, -1, 5, 2],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [5, 10, 4, 9],\n", + " [5, 11, 5, 9],\n", + " [5, 12, 5, 10],\n", + " [5, 13, 5, 11],\n", + " [5, 14, 5, 12],\n", + " [5, 15, 5, 13],\n", + " [5, 16, 5, 14],\n", + " [5, 17, 5, 15],\n", + " [5, 18, 5, 16],\n", + " [5, 19, 5, 17],\n", + " [5, 20, 5, 18],\n", + " [5, 21, 5, 19],\n", + " [5, 22, 5, 20],\n", + " [-1, -1, 5, 21],\n", + " [5, 24, -1, -1],\n", + " [5, 25, 5, 23],\n", + " [5, 26, 5, 24],\n", + " [5, 27, 5, 25],\n", + " [5, 28, 5, 26],\n", + " [5, 29, 5, 27],\n", + " [5, 30, 5, 28],\n", + " [5, 31, 5, 29],\n", + " [5, 32, 5, 30],\n", + " [5, 33, 5, 31],\n", + " [5, 34, 5, 32],\n", + " [5, 35, 5, 33],\n", + " [5, 36, 5, 34],\n", + " [5, 37, 5, 35],\n", + " [5, 38, 5, 36],\n", + " [5, 39, 5, 37],\n", + " [4, 39, 5, 38],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('stap',\n", + " [[-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, 5, 10],\n", + " [5, 9, 5, 11],\n", + " [5, 10, 5, 12],\n", + " [5, 11, 5, 13],\n", + " [5, 12, 5, 14],\n", + " [5, 13, 5, 15],\n", + " [5, 14, 5, 16],\n", + " [5, 15, 5, 17],\n", + " [5, 16, 5, 18],\n", + " [5, 17, 5, 19],\n", + " [5, 18, 5, 20],\n", + " [5, 19, 5, 21],\n", + " [5, 20, 5, 22],\n", + " [5, 21, 5, 23],\n", + " [5, 22, 5, 24],\n", + " [5, 23, 5, 25],\n", + " [5, 24, 5, 26],\n", + " [5, 25, 5, 27],\n", + " [5, 26, 0, 27],\n", + " [0, 28, 5, 29],\n", + " [5, 28, 5, 30],\n", + " [5, 29, 5, 31],\n", + " [5, 30, 5, 32],\n", + " [5, 31, 5, 33],\n", + " [5, 32, 5, 34],\n", + " [5, 33, 5, 35],\n", + " [5, 34, 5, 36],\n", + " [5, 35, 5, 37],\n", + " [5, 36, 5, 38],\n", + " [5, 37, 5, 39],\n", + " [5, 38, -1, -1],\n", + " [-1, -1, -1, -1],\n", + " [-1, -1, -1, -1]]),\n", + " ('loop',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('skip',\n", + " [0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]),\n", + " ('stap_colors', [[9, 16204552], [28, 1507550]]),\n", + " ('scafLoop', []),\n", + " ('stapLoop', [])])]" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n['vstrands']" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "acf7fe2e-0203-485e-a176-d711c847477a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found cadnano version 2 file\n" + ] + } + ], + "source": [ + "doc = Document()\n", + "cadnano.fileio.v2decode.decode(doc,n)\n", + "decoder = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 962, + "id": "bce3f7a8-b003-4a82-ade5-37501b68c0f4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n", + "/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:1105: RuntimeWarning: invalid value encountered in scalar divide\n", + " np.add(m2, m1*((1 - cos_)/sin_squared), out=m0)\n" + ] + } + ], + "source": [ + "doc = Document()\n", + "cadnano.fileio.v3decode.decode(doc,json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "8208056b-181d-43bd-a344-ec6d0a24b7f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NucleicAcidPart_-1_5920" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parts = [p for p in doc.getParts()]\n", + "parts[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 961, + "id": "f07e1b32", + "metadata": {}, + "outputs": [], + "source": [ + "#json_data=read_json_file(\"test_cad2.5.json\")\n", + "filename=\"test_insert_2.5.json\"\n", + "try:\n", + " with open(filename) as ch:\n", + " json_data = json.load(ch)\n", + "except:\n", + " with open(filename) as ch:\n", + " content = \"\"\n", + " for l in ch:\n", + " l = re.sub(r\"'\", r'\"', l)\n", + " # https://stackoverflow.com/questions/4033633/handling-lazy-json-in-python-expecting-property-name\n", + " # l = re.sub(r\"{\\s*(\\w)\", r'{\"\\1', l)\n", + " # l = re.sub(r\",\\s*(\\w)\", r',\"\\1', l)\n", + " # l = re.sub(r\"(\\w):\", r'\\1\":', l)\n", + " content += l+\"\\n\"\n", + " json_data = json.loads(content)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 575, + "id": "6931b352-2f85-4ba1-9de3-a53c24041c0c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(34, <rev_StrandSet(2)>.<Strand(0, 34)>, <rev_StrandSet(2)>.<Strand(0, 34)>),\n", + " (31, <fwd_StrandSet(6)>.<Strand(1, 31)>, <fwd_StrandSet(6)>.<Strand(1, 31)>),\n", + " (3, <fwd_StrandSet(0)>.<Strand(39, 41)>, <fwd_StrandSet(0)>.<Strand(39, 41)>),\n", + " (21,\n", + " <rev_StrandSet(0)>.<Strand(21, 23)>,\n", + " <fwd_StrandSet(1)>.<Strand(21, 38)>),\n", + " (23, <fwd_StrandSet(5)>.<Strand(9, 27)>, <rev_StrandSet(0)>.<Strand(24, 27)>),\n", + " (5, <rev_StrandSet(3)>.<Strand(37, 41)>, <rev_StrandSet(3)>.<Strand(37, 41)>),\n", + " (32,\n", + " <rev_StrandSet(4)>.<Strand(21, 39)>,\n", + " <fwd_StrandSet(3)>.<Strand(21, 34)>),\n", + " (208,\n", + " <rev_StrandSet(5)>.<Strand(9, 22)>,\n", + " <rev_StrandSet(5)>.<Strand(23, 39)>),\n", + " (3, <rev_StrandSet(1)>.<Strand(39, 41)>, <rev_StrandSet(1)>.<Strand(39, 41)>),\n", + " (33, <fwd_StrandSet(3)>.<Strand(0, 20)>, <rev_StrandSet(4)>.<Strand(9, 20)>),\n", + " (31, <rev_StrandSet(6)>.<Strand(1, 31)>, <rev_StrandSet(6)>.<Strand(1, 31)>),\n", + " (34,\n", + " <rev_StrandSet(0)>.<Strand(28, 38)>,\n", + " <fwd_StrandSet(5)>.<Strand(28, 39)>),\n", + " (4, <rev_StrandSet(5)>.<Strand(0, 3)>, <rev_StrandSet(5)>.<Strand(0, 3)>),\n", + " (48, <fwd_StrandSet(1)>.<Strand(3, 20)>, <rev_StrandSet(0)>.<Strand(2, 20)>),\n", + " (4, <fwd_StrandSet(4)>.<Strand(0, 3)>, <fwd_StrandSet(4)>.<Strand(0, 3)>),\n", + " (3, <fwd_StrandSet(2)>.<Strand(39, 41)>, <fwd_StrandSet(2)>.<Strand(39, 41)>)]" + ] + }, + "execution_count": 575, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "o0=list(part.oligos())[11]\n", + "[(i.length(),i.strand5p(),i.strand3p()) for i in part.oligos()]" + ] + }, + { + "cell_type": "code", + "execution_count": 600, + "id": "43cda523-ec1a-42ca-b546-17ffac4dea17", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[(2, <StrandEnum.STAPLE: 1>, 34),\n", + " (2, <StrandEnum.STAPLE: 1>, 35),\n", + " (2, <StrandEnum.STAPLE: 1>, 36),\n", + " (2, <StrandEnum.STAPLE: 1>, 37),\n", + " (2, <StrandEnum.STAPLE: 1>, 38),\n", + " (2, <StrandEnum.STAPLE: 1>, 39),\n", + " (2, <StrandEnum.STAPLE: 1>, 40),\n", + " (2, <StrandEnum.STAPLE: 1>, 41),\n", + " (2, <StrandEnum.STAPLE: 1>, 42),\n", + " (2, <StrandEnum.STAPLE: 1>, 43),\n", + " (2, <StrandEnum.STAPLE: 1>, 44),\n", + " (2, <StrandEnum.STAPLE: 1>, 45),\n", + " (2, <StrandEnum.STAPLE: 1>, 46),\n", + " (2, <StrandEnum.STAPLE: 1>, 47),\n", + " (2, <StrandEnum.STAPLE: 1>, 48),\n", + " (2, <StrandEnum.STAPLE: 1>, 49),\n", + " (2, <StrandEnum.STAPLE: 1>, 50),\n", + " (2, <StrandEnum.STAPLE: 1>, 51),\n", + " (2, <StrandEnum.STAPLE: 1>, 52),\n", + " (2, <StrandEnum.STAPLE: 1>, 53),\n", + " (2, <StrandEnum.STAPLE: 1>, 54),\n", + " (2, <StrandEnum.STAPLE: 1>, 55),\n", + " (2, <StrandEnum.STAPLE: 1>, 56),\n", + " (2, <StrandEnum.STAPLE: 1>, 57),\n", + " (2, <StrandEnum.STAPLE: 1>, 58),\n", + " (2, <StrandEnum.STAPLE: 1>, 59),\n", + " (2, <StrandEnum.STAPLE: 1>, 60),\n", + " (2, <StrandEnum.STAPLE: 1>, 61),\n", + " (2, <StrandEnum.STAPLE: 1>, 62),\n", + " (2, <StrandEnum.STAPLE: 1>, 63),\n", + " (2, <StrandEnum.STAPLE: 1>, 64),\n", + " (2, <StrandEnum.STAPLE: 1>, 65),\n", + " (2, <StrandEnum.STAPLE: 1>, 66),\n", + " (2, <StrandEnum.STAPLE: 1>, 67)],\n", + " [(6, <StrandEnum.SCAFFOLD: 0>, 1),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 2),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 3),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 4),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 5),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 6),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 7),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 8),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (6, <StrandEnum.SCAFFOLD: 0>, 31)],\n", + " [(0, <StrandEnum.SCAFFOLD: 0>, 39),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 40),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 41)],\n", + " [(0, <StrandEnum.STAPLE: 1>, 23),\n", + " (0, <StrandEnum.STAPLE: 1>, 24),\n", + " (0, <StrandEnum.STAPLE: 1>, 25),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 38)],\n", + " [(5, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (0, <StrandEnum.STAPLE: 1>, 27),\n", + " (0, <StrandEnum.STAPLE: 1>, 28),\n", + " (0, <StrandEnum.STAPLE: 1>, 29),\n", + " (0, <StrandEnum.STAPLE: 1>, 30)],\n", + " [(3, <StrandEnum.STAPLE: 1>, 41),\n", + " (3, <StrandEnum.STAPLE: 1>, 42),\n", + " (3, <StrandEnum.STAPLE: 1>, 43),\n", + " (3, <StrandEnum.STAPLE: 1>, 44),\n", + " (3, <StrandEnum.STAPLE: 1>, 45)],\n", + " [(4, <StrandEnum.STAPLE: 1>, 39),\n", + " (4, <StrandEnum.STAPLE: 1>, 40),\n", + " (4, <StrandEnum.STAPLE: 1>, 41),\n", + " (4, <StrandEnum.STAPLE: 1>, 42),\n", + " (4, <StrandEnum.STAPLE: 1>, 43),\n", + " (4, <StrandEnum.STAPLE: 1>, 44),\n", + " (4, <StrandEnum.STAPLE: 1>, 45),\n", + " (4, <StrandEnum.STAPLE: 1>, 46),\n", + " (4, <StrandEnum.STAPLE: 1>, 47),\n", + " (4, <StrandEnum.STAPLE: 1>, 48),\n", + " (4, <StrandEnum.STAPLE: 1>, 49),\n", + " (4, <StrandEnum.STAPLE: 1>, 50),\n", + " (4, <StrandEnum.STAPLE: 1>, 51),\n", + " (4, <StrandEnum.STAPLE: 1>, 52),\n", + " (4, <StrandEnum.STAPLE: 1>, 53),\n", + " (4, <StrandEnum.STAPLE: 1>, 54),\n", + " (4, <StrandEnum.STAPLE: 1>, 55),\n", + " (4, <StrandEnum.STAPLE: 1>, 56),\n", + " (4, <StrandEnum.STAPLE: 1>, 57),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 33)],\n", + " [(5, <StrandEnum.STAPLE: 1>, 22),\n", + " (5, <StrandEnum.STAPLE: 1>, 23),\n", + " (5, <StrandEnum.STAPLE: 1>, 24),\n", + " (5, <StrandEnum.STAPLE: 1>, 25),\n", + " (5, <StrandEnum.STAPLE: 1>, 26),\n", + " (5, <StrandEnum.STAPLE: 1>, 27),\n", + " (5, <StrandEnum.STAPLE: 1>, 28),\n", + " (5, <StrandEnum.STAPLE: 1>, 29),\n", + " (5, <StrandEnum.STAPLE: 1>, 30),\n", + " (5, <StrandEnum.STAPLE: 1>, 31),\n", + " (5, <StrandEnum.STAPLE: 1>, 32),\n", + " (5, <StrandEnum.STAPLE: 1>, 33),\n", + " (5, <StrandEnum.STAPLE: 1>, 34),\n", + " (5, <StrandEnum.STAPLE: 1>, 35),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (3, <StrandEnum.STAPLE: 1>, 15),\n", + " (3, <StrandEnum.STAPLE: 1>, 16),\n", + " (3, <StrandEnum.STAPLE: 1>, 17),\n", + " (3, <StrandEnum.STAPLE: 1>, 18),\n", + " (3, <StrandEnum.STAPLE: 1>, 19),\n", + " (3, <StrandEnum.STAPLE: 1>, 20),\n", + " (3, <StrandEnum.STAPLE: 1>, 21),\n", + " (3, <StrandEnum.STAPLE: 1>, 22),\n", + " (3, <StrandEnum.STAPLE: 1>, 23),\n", + " (3, <StrandEnum.STAPLE: 1>, 24),\n", + " (3, <StrandEnum.STAPLE: 1>, 25),\n", + " (3, <StrandEnum.STAPLE: 1>, 26),\n", + " (3, <StrandEnum.STAPLE: 1>, 27),\n", + " (3, <StrandEnum.STAPLE: 1>, 28),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 2),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 3),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 4),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 5),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 6),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 7),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 8),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (1, <StrandEnum.STAPLE: 1>, 18),\n", + " (1, <StrandEnum.STAPLE: 1>, 19),\n", + " (1, <StrandEnum.STAPLE: 1>, 20),\n", + " (1, <StrandEnum.STAPLE: 1>, 21),\n", + " (1, <StrandEnum.STAPLE: 1>, 22),\n", + " (1, <StrandEnum.STAPLE: 1>, 23),\n", + " (1, <StrandEnum.STAPLE: 1>, 24),\n", + " (1, <StrandEnum.STAPLE: 1>, 25),\n", + " (1, <StrandEnum.STAPLE: 1>, 26),\n", + " (1, <StrandEnum.STAPLE: 1>, 27),\n", + " (1, <StrandEnum.STAPLE: 1>, 28),\n", + " (1, <StrandEnum.STAPLE: 1>, 29),\n", + " (1, <StrandEnum.STAPLE: 1>, 30),\n", + " (1, <StrandEnum.STAPLE: 1>, 31),\n", + " (1, <StrandEnum.STAPLE: 1>, 32),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 5),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 6),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 7),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 8),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 38),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 39),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 40),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 41),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 42),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 43),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 44),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 45),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 46),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 47),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 48),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 49),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 50),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 51),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 52),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 53),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 54),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 55),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 56),\n", + " (0, <StrandEnum.SCAFFOLD: 0>, 57),\n", + " (1, <StrandEnum.STAPLE: 1>, 36),\n", + " (1, <StrandEnum.STAPLE: 1>, 37),\n", + " (1, <StrandEnum.STAPLE: 1>, 38),\n", + " (1, <StrandEnum.STAPLE: 1>, 39),\n", + " (1, <StrandEnum.STAPLE: 1>, 40),\n", + " (1, <StrandEnum.STAPLE: 1>, 41),\n", + " (1, <StrandEnum.STAPLE: 1>, 42),\n", + " (1, <StrandEnum.STAPLE: 1>, 43),\n", + " (1, <StrandEnum.STAPLE: 1>, 44),\n", + " (1, <StrandEnum.STAPLE: 1>, 45),\n", + " (1, <StrandEnum.STAPLE: 1>, 46),\n", + " (1, <StrandEnum.STAPLE: 1>, 47),\n", + " (1, <StrandEnum.STAPLE: 1>, 48),\n", + " (1, <StrandEnum.STAPLE: 1>, 49),\n", + " (1, <StrandEnum.STAPLE: 1>, 50),\n", + " (1, <StrandEnum.STAPLE: 1>, 51),\n", + " (1, <StrandEnum.STAPLE: 1>, 52),\n", + " (1, <StrandEnum.STAPLE: 1>, 53),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (3, <StrandEnum.STAPLE: 1>, 32),\n", + " (3, <StrandEnum.STAPLE: 1>, 33),\n", + " (3, <StrandEnum.STAPLE: 1>, 34),\n", + " (3, <StrandEnum.STAPLE: 1>, 35),\n", + " (3, <StrandEnum.STAPLE: 1>, 36),\n", + " (3, <StrandEnum.STAPLE: 1>, 37),\n", + " (3, <StrandEnum.STAPLE: 1>, 38),\n", + " (3, <StrandEnum.STAPLE: 1>, 39),\n", + " (3, <StrandEnum.STAPLE: 1>, 40),\n", + " (3, <StrandEnum.STAPLE: 1>, 41),\n", + " (3, <StrandEnum.STAPLE: 1>, 42),\n", + " (3, <StrandEnum.STAPLE: 1>, 43),\n", + " (3, <StrandEnum.STAPLE: 1>, 44),\n", + " (3, <StrandEnum.STAPLE: 1>, 45),\n", + " (3, <StrandEnum.STAPLE: 1>, 46),\n", + " (3, <StrandEnum.STAPLE: 1>, 47),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 22),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 23),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 24),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 25),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 26),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 27),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 38),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 39),\n", + " (5, <StrandEnum.STAPLE: 1>, 39),\n", + " (5, <StrandEnum.STAPLE: 1>, 40),\n", + " (5, <StrandEnum.STAPLE: 1>, 41),\n", + " (5, <StrandEnum.STAPLE: 1>, 42),\n", + " (5, <StrandEnum.STAPLE: 1>, 43),\n", + " (5, <StrandEnum.STAPLE: 1>, 44),\n", + " (5, <StrandEnum.STAPLE: 1>, 45),\n", + " (5, <StrandEnum.STAPLE: 1>, 46),\n", + " (5, <StrandEnum.STAPLE: 1>, 47),\n", + " (5, <StrandEnum.STAPLE: 1>, 48),\n", + " (5, <StrandEnum.STAPLE: 1>, 49),\n", + " (5, <StrandEnum.STAPLE: 1>, 50),\n", + " (5, <StrandEnum.STAPLE: 1>, 51),\n", + " (5, <StrandEnum.STAPLE: 1>, 52),\n", + " (5, <StrandEnum.STAPLE: 1>, 53),\n", + " (5, <StrandEnum.STAPLE: 1>, 54),\n", + " (5, <StrandEnum.STAPLE: 1>, 55)],\n", + " [(1, <StrandEnum.STAPLE: 1>, 41),\n", + " (1, <StrandEnum.STAPLE: 1>, 42),\n", + " (1, <StrandEnum.STAPLE: 1>, 43)],\n", + " [(3, <StrandEnum.SCAFFOLD: 0>, 0),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 1),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 2),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 3),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 4),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 5),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 6),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 7),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 8),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (3, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (4, <StrandEnum.STAPLE: 1>, 20),\n", + " (4, <StrandEnum.STAPLE: 1>, 21),\n", + " (4, <StrandEnum.STAPLE: 1>, 22),\n", + " (4, <StrandEnum.STAPLE: 1>, 23),\n", + " (4, <StrandEnum.STAPLE: 1>, 24),\n", + " (4, <StrandEnum.STAPLE: 1>, 25),\n", + " (4, <StrandEnum.STAPLE: 1>, 26),\n", + " (4, <StrandEnum.STAPLE: 1>, 27),\n", + " (4, <StrandEnum.STAPLE: 1>, 28),\n", + " (4, <StrandEnum.STAPLE: 1>, 29),\n", + " (4, <StrandEnum.STAPLE: 1>, 30),\n", + " (4, <StrandEnum.STAPLE: 1>, 31)],\n", + " [(6, <StrandEnum.STAPLE: 1>, 31),\n", + " (6, <StrandEnum.STAPLE: 1>, 32),\n", + " (6, <StrandEnum.STAPLE: 1>, 33),\n", + " (6, <StrandEnum.STAPLE: 1>, 34),\n", + " (6, <StrandEnum.STAPLE: 1>, 35),\n", + " (6, <StrandEnum.STAPLE: 1>, 36),\n", + " (6, <StrandEnum.STAPLE: 1>, 37),\n", + " (6, <StrandEnum.STAPLE: 1>, 38),\n", + " (6, <StrandEnum.STAPLE: 1>, 39),\n", + " (6, <StrandEnum.STAPLE: 1>, 40),\n", + " (6, <StrandEnum.STAPLE: 1>, 41),\n", + " (6, <StrandEnum.STAPLE: 1>, 42),\n", + " (6, <StrandEnum.STAPLE: 1>, 43),\n", + " (6, <StrandEnum.STAPLE: 1>, 44),\n", + " (6, <StrandEnum.STAPLE: 1>, 45),\n", + " (6, <StrandEnum.STAPLE: 1>, 46),\n", + " (6, <StrandEnum.STAPLE: 1>, 47),\n", + " (6, <StrandEnum.STAPLE: 1>, 48),\n", + " (6, <StrandEnum.STAPLE: 1>, 49),\n", + " (6, <StrandEnum.STAPLE: 1>, 50),\n", + " (6, <StrandEnum.STAPLE: 1>, 51),\n", + " (6, <StrandEnum.STAPLE: 1>, 52),\n", + " (6, <StrandEnum.STAPLE: 1>, 53),\n", + " (6, <StrandEnum.STAPLE: 1>, 54),\n", + " (6, <StrandEnum.STAPLE: 1>, 55),\n", + " (6, <StrandEnum.STAPLE: 1>, 56),\n", + " (6, <StrandEnum.STAPLE: 1>, 57),\n", + " (6, <StrandEnum.STAPLE: 1>, 58),\n", + " (6, <StrandEnum.STAPLE: 1>, 59),\n", + " (6, <StrandEnum.STAPLE: 1>, 60),\n", + " (6, <StrandEnum.STAPLE: 1>, 61)],\n", + " [(0, <StrandEnum.STAPLE: 1>, 38),\n", + " (0, <StrandEnum.STAPLE: 1>, 39),\n", + " (0, <StrandEnum.STAPLE: 1>, 40),\n", + " (0, <StrandEnum.STAPLE: 1>, 41),\n", + " (0, <StrandEnum.STAPLE: 1>, 42),\n", + " (0, <StrandEnum.STAPLE: 1>, 43),\n", + " (0, <StrandEnum.STAPLE: 1>, 44),\n", + " (0, <StrandEnum.STAPLE: 1>, 45),\n", + " (0, <StrandEnum.STAPLE: 1>, 46),\n", + " (0, <StrandEnum.STAPLE: 1>, 47),\n", + " (0, <StrandEnum.STAPLE: 1>, 48),\n", + " (0, <StrandEnum.STAPLE: 1>, 49),\n", + " (0, <StrandEnum.STAPLE: 1>, 50),\n", + " (0, <StrandEnum.STAPLE: 1>, 51),\n", + " (0, <StrandEnum.STAPLE: 1>, 52),\n", + " (0, <StrandEnum.STAPLE: 1>, 53),\n", + " (0, <StrandEnum.STAPLE: 1>, 54),\n", + " (0, <StrandEnum.STAPLE: 1>, 55),\n", + " (0, <StrandEnum.STAPLE: 1>, 56),\n", + " (0, <StrandEnum.STAPLE: 1>, 57),\n", + " (0, <StrandEnum.STAPLE: 1>, 58),\n", + " (0, <StrandEnum.STAPLE: 1>, 59),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 38),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 39)],\n", + " [(5, <StrandEnum.STAPLE: 1>, 3),\n", + " (5, <StrandEnum.STAPLE: 1>, 4),\n", + " (5, <StrandEnum.STAPLE: 1>, 5),\n", + " (5, <StrandEnum.STAPLE: 1>, 6)],\n", + " [(1, <StrandEnum.SCAFFOLD: 0>, 3),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 4),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 5),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 6),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 7),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 8),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 9),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 10),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 11),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 12),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 13),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 14),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 15),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 16),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 17),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 18),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 19),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 20),\n", + " (1, <StrandEnum.SCAFFOLD: 0>, 21),\n", + " (0, <StrandEnum.STAPLE: 1>, 20),\n", + " (0, <StrandEnum.STAPLE: 1>, 21),\n", + " (0, <StrandEnum.STAPLE: 1>, 22),\n", + " (0, <StrandEnum.STAPLE: 1>, 23),\n", + " (0, <StrandEnum.STAPLE: 1>, 24),\n", + " (0, <StrandEnum.STAPLE: 1>, 25),\n", + " (0, <StrandEnum.STAPLE: 1>, 26),\n", + " (0, <StrandEnum.STAPLE: 1>, 27),\n", + " (0, <StrandEnum.STAPLE: 1>, 28),\n", + " (0, <StrandEnum.STAPLE: 1>, 29),\n", + " (0, <StrandEnum.STAPLE: 1>, 30),\n", + " (0, <StrandEnum.STAPLE: 1>, 31),\n", + " (0, <StrandEnum.STAPLE: 1>, 32),\n", + " (0, <StrandEnum.STAPLE: 1>, 33),\n", + " (0, <StrandEnum.STAPLE: 1>, 34),\n", + " (0, <StrandEnum.STAPLE: 1>, 35),\n", + " (0, <StrandEnum.STAPLE: 1>, 36),\n", + " (0, <StrandEnum.STAPLE: 1>, 37),\n", + " (0, <StrandEnum.STAPLE: 1>, 38),\n", + " (0, <StrandEnum.STAPLE: 1>, 39),\n", + " (0, <StrandEnum.STAPLE: 1>, 40),\n", + " (0, <StrandEnum.STAPLE: 1>, 41),\n", + " (0, <StrandEnum.STAPLE: 1>, 42),\n", + " (0, <StrandEnum.STAPLE: 1>, 43),\n", + " (0, <StrandEnum.STAPLE: 1>, 44),\n", + " (0, <StrandEnum.STAPLE: 1>, 45),\n", + " (0, <StrandEnum.STAPLE: 1>, 46),\n", + " (0, <StrandEnum.STAPLE: 1>, 47),\n", + " (0, <StrandEnum.STAPLE: 1>, 48)],\n", + " [(4, <StrandEnum.SCAFFOLD: 0>, 0),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 1),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 2),\n", + " (4, <StrandEnum.SCAFFOLD: 0>, 3)],\n", + " [(2, <StrandEnum.SCAFFOLD: 0>, 39),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 40),\n", + " (2, <StrandEnum.SCAFFOLD: 0>, 41)]]" + ] + }, + "execution_count": 600, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[[i.getAbsolutePositionAtLength(j) for j in range(i.length())] for i in part.oligos()]" + ] + }, + { + "cell_type": "code", + "execution_count": 584, + "id": "ec3b6b7c-f03a-4c34-85d9-e4f44ed59792", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[22, 12]" + ] + }, + "execution_count": 584, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "o0.getStrandLengths()" + ] + }, + { + "cell_type": "code", + "execution_count": 596, + "id": "dadccba2-b9b3-4110-8328-1076ede1432c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_decrementLength',\n", + " '_incrementLength',\n", + " '_is_circular',\n", + " '_parent',\n", + " '_part',\n", + " '_props',\n", + " '_setColor',\n", + " '_setLength',\n", + " '_setLoop',\n", + " '_setProperty',\n", + " '_signals',\n", + " '_strand5p',\n", + " '_strandMergeUpdate',\n", + " '_strandSplitUpdate',\n", + " 'addToPart',\n", + " 'applyAbstractSequences',\n", + " 'applyColor',\n", + " 'applySequence',\n", + " 'applySequenceCMD',\n", + " 'clearAbstractSequences',\n", + " 'connect',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'displayAbstractSequences',\n", + " 'dump',\n", + " 'editable_properties',\n", + " 'getAbsolutePositionAtLength',\n", + " 'getColor',\n", + " 'getModelProperties',\n", + " 'getName',\n", + " 'getNumberOfBasesToEachXover',\n", + " 'getOutlineProperties',\n", + " 'getProperty',\n", + " 'getStrandLengths',\n", + " 'isCircular',\n", + " 'length',\n", + " 'locString',\n", + " 'oligoPropertyChangedSignal',\n", + " 'oligoRemovedSignal',\n", + " 'oligoSelectedChangedSignal',\n", + " 'oligoSequenceAddedSignal',\n", + " 'oligoSequenceClearedSignal',\n", + " 'parent',\n", + " 'part',\n", + " 'refreshLength',\n", + " 'remove',\n", + " 'removeFromPart',\n", + " 'sequence',\n", + " 'sequenceExport',\n", + " 'setParent',\n", + " 'setPart',\n", + " 'setProperty',\n", + " 'setStrand5p',\n", + " 'shallowCopy',\n", + " 'shouldHighlight',\n", + " 'signals',\n", + " 'splitAtAbsoluteLengths',\n", + " 'strand3p',\n", + " 'strand5p',\n", + " 'undoStack']" + ] + }, + "execution_count": 596, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(o0)" + ] + }, + { + "cell_type": "code", + "execution_count": 588, + "id": "0db298ba-4f29-49d8-bdc3-a6faa4674e22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, <StrandEnum.STAPLE: 1>, 38),\n", + " (0, <StrandEnum.STAPLE: 1>, 39),\n", + " (0, <StrandEnum.STAPLE: 1>, 40),\n", + " (0, <StrandEnum.STAPLE: 1>, 41),\n", + " (0, <StrandEnum.STAPLE: 1>, 42),\n", + " (0, <StrandEnum.STAPLE: 1>, 43),\n", + " (0, <StrandEnum.STAPLE: 1>, 44),\n", + " (0, <StrandEnum.STAPLE: 1>, 45),\n", + " (0, <StrandEnum.STAPLE: 1>, 46),\n", + " (0, <StrandEnum.STAPLE: 1>, 47),\n", + " (0, <StrandEnum.STAPLE: 1>, 48),\n", + " (0, <StrandEnum.STAPLE: 1>, 49),\n", + " (0, <StrandEnum.STAPLE: 1>, 50),\n", + " (0, <StrandEnum.STAPLE: 1>, 51),\n", + " (0, <StrandEnum.STAPLE: 1>, 52),\n", + " (0, <StrandEnum.STAPLE: 1>, 53),\n", + " (0, <StrandEnum.STAPLE: 1>, 54),\n", + " (0, <StrandEnum.STAPLE: 1>, 55),\n", + " (0, <StrandEnum.STAPLE: 1>, 56),\n", + " (0, <StrandEnum.STAPLE: 1>, 57),\n", + " (0, <StrandEnum.STAPLE: 1>, 58),\n", + " (0, <StrandEnum.STAPLE: 1>, 59),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 38),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 39)]" + ] + }, + "execution_count": 588, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[o0.getAbsolutePositionAtLength(i) for i in range(34)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72874b29-ac4d-4c89-abd6-187e1d2a99aa", + "metadata": {}, + "outputs": [], + "source": [ + "o0.getAbsolutePositionAtLength(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 578, + "id": "4af733b6-ebfd-47fc-aaef-2ee5d4267c88", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<rev_StrandSet(0)>.<Strand(28, 38)>" + ] + }, + "execution_count": 578, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "o0.strand5p()" + ] + }, + { + "cell_type": "code", + "execution_count": 582, + "id": "828c35da-7c02-469d-9a8e-ee2420bed581", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, <StrandEnum.STAPLE: 1>, 38),\n", + " (0, <StrandEnum.STAPLE: 1>, 39),\n", + " (0, <StrandEnum.STAPLE: 1>, 40),\n", + " (0, <StrandEnum.STAPLE: 1>, 41),\n", + " (0, <StrandEnum.STAPLE: 1>, 42),\n", + " (0, <StrandEnum.STAPLE: 1>, 43),\n", + " (0, <StrandEnum.STAPLE: 1>, 44),\n", + " (0, <StrandEnum.STAPLE: 1>, 45),\n", + " (0, <StrandEnum.STAPLE: 1>, 46),\n", + " (0, <StrandEnum.STAPLE: 1>, 47),\n", + " (0, <StrandEnum.STAPLE: 1>, 48),\n", + " (0, <StrandEnum.STAPLE: 1>, 49),\n", + " (0, <StrandEnum.STAPLE: 1>, 50),\n", + " (0, <StrandEnum.STAPLE: 1>, 51),\n", + " (0, <StrandEnum.STAPLE: 1>, 52),\n", + " (0, <StrandEnum.STAPLE: 1>, 53),\n", + " (0, <StrandEnum.STAPLE: 1>, 54),\n", + " (0, <StrandEnum.STAPLE: 1>, 55),\n", + " (0, <StrandEnum.STAPLE: 1>, 56),\n", + " (0, <StrandEnum.STAPLE: 1>, 57),\n", + " (0, <StrandEnum.STAPLE: 1>, 58),\n", + " (0, <StrandEnum.STAPLE: 1>, 59),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 28),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 29),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 30),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 31),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 32),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 33),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 34),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 35),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 36),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 37),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 38),\n", + " (5, <StrandEnum.SCAFFOLD: 0>, 39)]" + ] + }, + "execution_count": 582, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[o0.getAbsolutePositionAtLength(i) for i in range(o0.length())]" + ] + }, + { + "cell_type": "code", + "execution_count": 563, + "id": "ffd99357-946a-4334-8202-4fd78e63e062", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_decrementLength',\n", + " '_incrementLength',\n", + " '_is_circular',\n", + " '_parent',\n", + " '_part',\n", + " '_props',\n", + " '_setColor',\n", + " '_setLength',\n", + " '_setLoop',\n", + " '_setProperty',\n", + " '_signals',\n", + " '_strand5p',\n", + " '_strandMergeUpdate',\n", + " '_strandSplitUpdate',\n", + " 'addToPart',\n", + " 'applyAbstractSequences',\n", + " 'applyColor',\n", + " 'applySequence',\n", + " 'applySequenceCMD',\n", + " 'clearAbstractSequences',\n", + " 'connect',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'displayAbstractSequences',\n", + " 'dump',\n", + " 'editable_properties',\n", + " 'getAbsolutePositionAtLength',\n", + " 'getColor',\n", + " 'getModelProperties',\n", + " 'getName',\n", + " 'getNumberOfBasesToEachXover',\n", + " 'getOutlineProperties',\n", + " 'getProperty',\n", + " 'getStrandLengths',\n", + " 'isCircular',\n", + " 'length',\n", + " 'locString',\n", + " 'oligoPropertyChangedSignal',\n", + " 'oligoRemovedSignal',\n", + " 'oligoSelectedChangedSignal',\n", + " 'oligoSequenceAddedSignal',\n", + " 'oligoSequenceClearedSignal',\n", + " 'parent',\n", + " 'part',\n", + " 'refreshLength',\n", + " 'remove',\n", + " 'removeFromPart',\n", + " 'sequence',\n", + " 'sequenceExport',\n", + " 'setParent',\n", + " 'setPart',\n", + " 'setProperty',\n", + " 'setStrand5p',\n", + " 'shallowCopy',\n", + " 'shouldHighlight',\n", + " 'signals',\n", + " 'splitAtAbsoluteLengths',\n", + " 'strand3p',\n", + " 'strand5p',\n", + " 'undoStack']" + ] + }, + "execution_count": 563, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(o0)" + ] + }, + { + "cell_type": "code", + "execution_count": 562, + "id": "828c7161-0700-4bcd-a51e-eeb195340e35", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id_num': 2,\n", + " 'idx5p': 34,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7088',\n", + " 'color': '#888888',\n", + " 'length': 34,\n", + " 'is_visible': True}" + ] + }, + "execution_count": 562, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "o0.dump()" + ] + }, + { + "cell_type": "code", + "execution_count": 439, + "id": "4c0546f8-b0d4-45b2-9d81-d3699ee95921", + "metadata": {}, + "outputs": [], + "source": [ + "strands5 = [o.strand5p() for o in part.oligos()]\n", + "strands3 = [o.strand3p() for o in part.oligos()]\n", + " \n", + "fprime_list = [(s.idNum(),s.isForward(),s.idx5Prime()) for s in strands5]\n", + "tprime_list = [(s.idNum(),s.isForward(),s.idx3Prime()) for s in strands3]" + ] + }, + { + "cell_type": "code", + "execution_count": 557, + "id": "7c15d8bc-7c0e-46bb-860b-cfa5cf5a5a0c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<rev_StrandSet(2)>.<Strand(0, 34)>" + ] + }, + "execution_count": 557, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strands5[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 556, + "id": "eaef916c-98d2-47c9-948e-a7fd76a1d3b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34" + ] + }, + "execution_count": 556, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strands5[0].totalLength()" + ] + }, + { + "cell_type": "code", + "execution_count": 543, + "id": "ca6571df-2523-484a-a5b8-32cf44bb5afc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(2, False, 34),\n", + " (6, True, 1),\n", + " (0, True, 39),\n", + " (0, False, 23),\n", + " (5, True, 9),\n", + " (3, False, 41),\n", + " (4, False, 39),\n", + " (5, False, 22),\n", + " (1, False, 41),\n", + " (3, True, 0),\n", + " (6, False, 31),\n", + " (0, False, 38),\n", + " (5, False, 3),\n", + " (1, True, 3),\n", + " (4, True, 0),\n", + " (2, True, 39)]" + ] + }, + "execution_count": 543, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fprime_list" + ] + }, + { + "cell_type": "code", + "execution_count": 544, + "id": "b5d1a3b8-f616-4050-ae12-de34bd18b4c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(2, False, 0),\n", + " (6, True, 31),\n", + " (0, True, 41),\n", + " (1, True, 38),\n", + " (0, False, 24),\n", + " (3, False, 37),\n", + " (3, True, 34),\n", + " (5, False, 23),\n", + " (1, False, 39),\n", + " (4, False, 9),\n", + " (6, False, 1),\n", + " (5, True, 39),\n", + " (5, False, 0),\n", + " (0, False, 2),\n", + " (4, True, 3),\n", + " (2, True, 41)]" + ] + }, + "execution_count": 544, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tprime_list" + ] + }, + { + "cell_type": "code", + "execution_count": 442, + "id": "559bab5d-b474-4d30-99dc-e97ae61e39e5", + "metadata": {}, + "outputs": [], + "source": [ + "hp, bpr, tpr, eulerZ, mgroove = part.vh_properties.loc[5,\n", + " ['helical_pitch',\n", + " 'bases_per_repeat',\n", + " 'turns_per_repeat',\n", + " 'eulerZ',\n", + " 'minor_groove_angle']]" + ] + }, + { + "cell_type": "code", + "execution_count": 969, + "id": "a500615f-07df-4e65-9dc6-ef94af3dfcdf", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'generator' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[969], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m part\u001b[38;5;241m=\u001b[39mdoc\u001b[38;5;241m.\u001b[39mgetParts()\n\u001b[0;32m----> 2\u001b[0m \u001b[43mpart\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: 'generator' object is not subscriptable" + ] + } + ], + "source": [ + "part=doc.getParts()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 495, + "id": "69e89135-155f-4413-a4f4-d7323528c211", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6]" + ] + }, + "execution_count": 495, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "part.getidNums()" + ] + }, + { + "cell_type": "code", + "execution_count": 502, + "id": "9139dfed-d055-408f-986f-c96da4cb88af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(<fwd_StrandSet(0)>, <rev_StrandSet(0)>),\n", + " (<fwd_StrandSet(1)>, <rev_StrandSet(1)>),\n", + " (<fwd_StrandSet(2)>, <rev_StrandSet(2)>),\n", + " (<fwd_StrandSet(3)>, <rev_StrandSet(3)>),\n", + " (<fwd_StrandSet(4)>, <rev_StrandSet(4)>),\n", + " (<fwd_StrandSet(5)>, <rev_StrandSet(5)>),\n", + " (<fwd_StrandSet(6)>, <rev_StrandSet(6)>)]" + ] + }, + "execution_count": 502, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[part.getStrandSets(i) for i in part.getidNums()]" + ] + }, + { + "cell_type": "code", + "execution_count": 971, + "id": "7e39d2ea-b5d7-40a6-b43f-7e43ab26cc4f", + "metadata": {}, + "outputs": [], + "source": [ + "parts = [p for p in doc.getParts()]\n", + "part=parts[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 972, + "id": "a5ba9310-16b1-4faa-b9c7-6ac5073df569", + "metadata": {}, + "outputs": [], + "source": [ + "strand_set={}\n", + "for i in part.getidNums():\n", + " fwd,rev=part.getStrandSets(i)\n", + " strand_set[(i,True)]=fwd.strands()\n", + " strand_set[(i,False)]=rev.strands()" + ] + }, + { + "cell_type": "code", + "execution_count": 975, + "id": "05b7fa7d-5329-4f0c-8a94-c3631494e9bb", + "metadata": {}, + "outputs": [], + "source": [ + "i=strand_set[(0,0)][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 980, + "id": "cfc0060c-188c-4cc5-9cbe-ff7fa2eb89e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(2, 4), (5, 20)]" + ] + }, + "execution_count": 980, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i.segments" + ] + }, + { + "cell_type": "code", + "execution_count": 989, + "id": "2b8a31bf-f956-4bf1-8546-140ebca169f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'TGAGTGTTGTTCCAGTGTT'" + ] + }, + "execution_count": 989, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i.sequence()" + ] + }, + { + "cell_type": "code", + "execution_count": 928, + "id": "36855d5e-c95c-4642-a162-ca1ef378a3d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 928, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i._id_num" + ] + }, + { + "cell_type": "code", + "execution_count": 1000, + "id": "dfaef123-43a8-43af-869d-cd4407c41e8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "' TTGGAACAAGAGTCGATGAGTGTTGTTCCAGTGTT'" + ] + }, + "execution_count": 1000, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i.oligo().sequence()" + ] + }, + { + "cell_type": "code", + "execution_count": 1004, + "id": "a9a3b1f8-eae4-42f6-ae88-99832ab47070", + "metadata": {}, + "outputs": [], + "source": [ + "id_num,s,ind=i.oligo().getAbsolutePositionAtLength(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 1007, + "id": "13618171-1df2-4db0-b24c-7a7470a6c615", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'SCAFFOLD'" + ] + }, + "execution_count": 1007, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.name" + ] + }, + { + "cell_type": "code", + "execution_count": 1030, + "id": "d9e4b3c5-cecb-4d1f-a283-6069b6837dad", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>vh</th>\n", + " <th>zid</th>\n", + " <th>fwd</th>\n", + " <th>stack</th>\n", + " <th>threeprime</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>0</td>\n", + " <td>2</td>\n", + " <td>False</td>\n", + " <td>-1</td>\n", + " <td>-1</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>False</td>\n", + " <td>(0, 2, False)</td>\n", + " <td>(0, 2, False)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>0</td>\n", + " <td>4</td>\n", + " <td>False</td>\n", + " <td>(0, 3, False)</td>\n", + " <td>(0, 3, False)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>0</td>\n", + " <td>5</td>\n", + " <td>False</td>\n", + " <td>(0, 4, False)</td>\n", + " <td>(0, 4, False)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>0</td>\n", + " <td>6</td>\n", + " <td>False</td>\n", + " <td>(0, 5, False)</td>\n", + " <td>(0, 5, False)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>48</th>\n", + " <td>0</td>\n", + " <td>32</td>\n", + " <td>True</td>\n", + " <td>(0, 33, True)</td>\n", + " <td>(0, 33, True)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>49</th>\n", + " <td>0</td>\n", + " <td>33</td>\n", + " <td>True</td>\n", + " <td>(0, 34, True)</td>\n", + " <td>(0, 34, True)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>50</th>\n", + " <td>0</td>\n", + " <td>34</td>\n", + " <td>True</td>\n", + " <td>(0, 35, True)</td>\n", + " <td>(0, 35, True)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>51</th>\n", + " <td>0</td>\n", + " <td>35</td>\n", + " <td>True</td>\n", + " <td>(0, 36, True)</td>\n", + " <td>(0, 36, True)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>52</th>\n", + " <td>0</td>\n", + " <td>36</td>\n", + " <td>True</td>\n", + " <td>(1, 36, False)</td>\n", + " <td>(1, 36, False)</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "<p>82 rows × 5 columns</p>\n", + "</div>" + ], + "text/plain": [ + " vh zid fwd stack threeprime\n", + "0 0 2 False -1 -1\n", + "1 0 3 False (0, 2, False) (0, 2, False)\n", + "2 0 4 False (0, 3, False) (0, 3, False)\n", + "3 0 5 False (0, 4, False) (0, 4, False)\n", + "4 0 6 False (0, 5, False) (0, 5, False)\n", + ".. .. .. ... ... ...\n", + "48 0 32 True (0, 33, True) (0, 33, True)\n", + "49 0 33 True (0, 34, True) (0, 34, True)\n", + "50 0 34 True (0, 35, True) (0, 35, True)\n", + "51 0 35 True (0, 36, True) (0, 36, True)\n", + "52 0 36 True (1, 36, False) (1, 36, False)\n", + "\n", + "[82 rows x 5 columns]" + ] + }, + "execution_count": 1030, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(gen_id_series(strand_set[(0,0)][0])+gen_id_series(strand_set[(0,1)][0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f18fdcc9-6ead-4bd2-ab0e-1c759e328f2f", + "metadata": {}, + "outputs": [], + "source": [ + "def gen_id_series(strand):\n", + " df=pd.DataFrame(columns=[\"vh\",\"zid\",\"fwd\",\"stack\",\"threeprime\"],index=range(strand.totalLength()),dtype=object)\n", + " df[\"vh\"]=strand._id_num\n", + " df[\"fwd\"]=strand.isForward()\n", + " id_lo,id_hi=strand.idxs()\n", + " zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + " insert_dict={}\n", + " insert_dict=dict([(j.idx(),j.length()) for j in strand.insertionsOnStrand()])\n", + " for inset_base in insert_dict:\n", + " z_ind=zids.index(str(inset_base))\n", + " z_val=insert_dict[inset_base]\n", + " zids.pop(z_ind)\n", + " if z_val!=-1:\n", + " l=[str(inset_base)+\".\"+str(i) for i in range(z_val+1)]\n", + " l.reverse()\n", + " for k in l:\n", + " zids.insert(z_ind,k)\n", + " df[\"zid\"]=zids\n", + " dg=df.set_index([\"vh\",\"zid\",\"fwd\"])\n", + " L=list(dg.index)\n", + " if strand.isForward()==True:\n", + " if strand.connection3p() is None:\n", + " L.append(-1)\n", + " else:\n", + " L.append((strand.connection3p().idNum(),strand.connection3p().idx5Prime(),strand.connection3p().isForward()))\n", + " df[\"stack\"]=L[1:]\n", + " \n", + " else:\n", + " if strand.connection3p() is None:\n", + " L.insert(0,-1)\n", + " else:\n", + " L.insert(0,(strand.connection3p().idNum(),strand.connection3p().idx5Prime(),strand.connection3p().isForward()))\n", + " df[\"stack\"]=L[0:-1]\n", + " df[\"threeprime\"]=df[\"stack\"]\n", + " df_ind=list(df.index)\n", + " return [pd.Series(df.loc[i]) for i in df_ind]\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 951, + "id": "2d929c54-7b65-48d2-b28b-68562af15104", + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.DataFrame(columns=[\"vh\",\"zid\",\"fwd\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"],index=range(i.totalLength()),dtype=object)\n", + "df[\"vh\"]=i._id_num\n", + "df[\"fwd\"]=i.isForward()\n", + "id_lo,id_hi=i.idxs()\n", + "zids=[str(i) for i in range(id_lo,id_hi+1)]\n", + "insert_dict={}\n", + "insert_dict=dict([(j.idx(),j.length()) for j in i.insertionsOnStrand()])\n", + "for j in insert_dict:\n", + " z_ind=zids.index(str(j))\n", + " z_val=insert_dict[j]\n", + " zids.pop(z_ind)\n", + " if z_val!=-1:\n", + " l=[str(j)+\".\"+str(i) for i in range(z_val+1)]\n", + " l.reverse()\n", + " for k in l:\n", + " zids.insert(z_ind,k)\n", + "df[\"zid\"]=zids\n", + "dg=df.set_index([\"vh\",\"zid\",\"fwd\"])\n", + "L=list(dg.index)\n", + "if i.isForward()==True:\n", + " if i.connection3p() is None:\n", + " L.append(-1)\n", + " else:\n", + " L.append((i.connection3p().idNum(),i.connection3p().idx5Prime(),i.connection3p().isForward()))\n", + " df[\"stack\"]=L[1:]\n", + " \n", + "else:\n", + " if i.connection3p() is None:\n", + " L.insert(0,-1)\n", + " else:\n", + " L.insert(0,(i.connection3p().idNum(),i.connection3p().idx5Prime(),i.connection3p().isForward()))\n", + " df[\"stack\"]=L[0:-1]\n", + "df[\"threeprime\"]=df[\"stack\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 1013, + "id": "d20b67b7-94fc-4200-a84b-edd66b355c01", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'RangeIndex' object is not callable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1013], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: 'RangeIndex' object is not callable" + ] + } + ], + "source": [ + "df.index()" + ] + }, + { + "cell_type": "code", + "execution_count": 948, + "id": "5daca1b7-beb5-42ba-94c6-911ab6ca33be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "18 False 1\n" + ] + } + ], + "source": [ + "print(i.connection3p().idx5Prime(),i.connection3p().isForward(),i.connection3p().idNum())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 901, + "id": "d4bc3787-567f-4e57-823e-7c844c7eb262", + "metadata": {}, + "outputs": [], + "source": [ + "df[\"zid\"]=zids" + ] + }, + { + "cell_type": "code", + "execution_count": 902, + "id": "3a01b186-cb93-4f92-b8d0-0db0bc45e104", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>vh</th>\n", + " <th>zid</th>\n", + " <th>fwd</th>\n", + " <th>r</th>\n", + " <th>bp</th>\n", + " <th>stack</th>\n", + " <th>threeprime</th>\n", + " <th>seq</th>\n", + " <th>orientation</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>0</td>\n", + " <td>2</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>0</td>\n", + " <td>4</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>0</td>\n", + " <td>5</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>0</td>\n", + " <td>6</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>0</td>\n", + " <td>7</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>0</td>\n", + " <td>8</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>0</td>\n", + " <td>9</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>8</th>\n", + " <td>0</td>\n", + " <td>10</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>9</th>\n", + " <td>0</td>\n", + " <td>11</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>10</th>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>11</th>\n", + " <td>0</td>\n", + " <td>13.0</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>12</th>\n", + " <td>0</td>\n", + " <td>13.1</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>13</th>\n", + " <td>0</td>\n", + " <td>13.2</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>14</th>\n", + " <td>0</td>\n", + " <td>13.3</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>15</th>\n", + " <td>0</td>\n", + " <td>13.4</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>16</th>\n", + " <td>0</td>\n", + " <td>13.5</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>17</th>\n", + " <td>0</td>\n", + " <td>13.6</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>18</th>\n", + " <td>0</td>\n", + " <td>13.7</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>19</th>\n", + " <td>0</td>\n", + " <td>13.8</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>20</th>\n", + " <td>0</td>\n", + " <td>13.9</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>21</th>\n", + " <td>0</td>\n", + " <td>13.10</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>22</th>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>23</th>\n", + " <td>0</td>\n", + " <td>15</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>24</th>\n", + " <td>0</td>\n", + " <td>16</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>25</th>\n", + " <td>0</td>\n", + " <td>17</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>26</th>\n", + " <td>0</td>\n", + " <td>18</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>27</th>\n", + " <td>0</td>\n", + " <td>19</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " <tr>\n", + " <th>28</th>\n", + " <td>0</td>\n", + " <td>20</td>\n", + " <td>False</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " vh zid fwd r bp stack threeprime seq orientation\n", + "0 0 2 False NaN NaN NaN NaN NaN NaN\n", + "1 0 3 False NaN NaN NaN NaN NaN NaN\n", + "2 0 4 False NaN NaN NaN NaN NaN NaN\n", + "3 0 5 False NaN NaN NaN NaN NaN NaN\n", + "4 0 6 False NaN NaN NaN NaN NaN NaN\n", + "5 0 7 False NaN NaN NaN NaN NaN NaN\n", + "6 0 8 False NaN NaN NaN NaN NaN NaN\n", + "7 0 9 False NaN NaN NaN NaN NaN NaN\n", + "8 0 10 False NaN NaN NaN NaN NaN NaN\n", + "9 0 11 False NaN NaN NaN NaN NaN NaN\n", + "10 0 12 False NaN NaN NaN NaN NaN NaN\n", + "11 0 13.0 False NaN NaN NaN NaN NaN NaN\n", + "12 0 13.1 False NaN NaN NaN NaN NaN NaN\n", + "13 0 13.2 False NaN NaN NaN NaN NaN NaN\n", + "14 0 13.3 False NaN NaN NaN NaN NaN NaN\n", + "15 0 13.4 False NaN NaN NaN NaN NaN NaN\n", + "16 0 13.5 False NaN NaN NaN NaN NaN NaN\n", + "17 0 13.6 False NaN NaN NaN NaN NaN NaN\n", + "18 0 13.7 False NaN NaN NaN NaN NaN NaN\n", + "19 0 13.8 False NaN NaN NaN NaN NaN NaN\n", + "20 0 13.9 False NaN NaN NaN NaN NaN NaN\n", + "21 0 13.10 False NaN NaN NaN NaN NaN NaN\n", + "22 0 14 False NaN NaN NaN NaN NaN NaN\n", + "23 0 15 False NaN NaN NaN NaN NaN NaN\n", + "24 0 16 False NaN NaN NaN NaN NaN NaN\n", + "25 0 17 False NaN NaN NaN NaN NaN NaN\n", + "26 0 18 False NaN NaN NaN NaN NaN NaN\n", + "27 0 19 False NaN NaN NaN NaN NaN NaN\n", + "28 0 20 False NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 902, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 864, + "id": "1d2a4032-a6b6-4ad7-bcf5-03bf37cb68e0", + "metadata": {}, + "outputs": [], + "source": [ + "zids.insert(11,\"test\")" + ] + }, + { + "cell_type": "code", + "execution_count": 865, + "id": "3cd82283-e341-4dfd-95c4-e789d3630f74", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['2',\n", + " '3',\n", + " '4',\n", + " '5',\n", + " '6',\n", + " '7',\n", + " '8',\n", + " '9',\n", + " '10',\n", + " '11',\n", + " '12',\n", + " 'test',\n", + " '13',\n", + " '14',\n", + " '15',\n", + " '16',\n", + " '17',\n", + " '18',\n", + " '19']" + ] + }, + "execution_count": 865, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zids" + ] + }, + { + "cell_type": "code", + "execution_count": 847, + "id": "c5eba0d7-3972-4553-a9dd-f6fccaef7a4e", + "metadata": {}, + "outputs": [], + "source": [ + "z=np.insert(zids,11,insertions)" + ] + }, + { + "cell_type": "code", + "execution_count": 848, + "id": "a650a181-1258-4dfd-b41c-f4142f6034ef", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13',\n", + " '13', '13', '13', '13', '13', '13', '13', '13', '13', '13', '13',\n", + " '13', '13', '13', '13', '13', '13', '13', '13', '13', '14', '15',\n", + " '16', '17', '18', '19'], dtype='<U2')" + ] + }, + "execution_count": 848, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 823, + "id": "324e02ef-7688-45bf-80be-f80d25cc1516", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4]" + ] + }, + "execution_count": 823, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zids.pop(11)" + ] + }, + { + "cell_type": "code", + "execution_count": 820, + "id": "6b7d23a1-b66a-47ca-b59e-42d1addabee5", + "metadata": {}, + "outputs": [], + "source": [ + "zids.insert(11,[0,1,2,3,4])" + ] + }, + { + "cell_type": "code", + "execution_count": 821, + "id": "ab0b76c4-c77d-4bbb-9883-bd7b8c1569f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2,\n", + " 3,\n", + " 4,\n", + " 5,\n", + " 6,\n", + " 7,\n", + " 8,\n", + " 9,\n", + " 10,\n", + " 11,\n", + " 12,\n", + " [0, 1, 2, 3, 4],\n", + " 13,\n", + " 14,\n", + " 15,\n", + " 16,\n", + " 17,\n", + " 18,\n", + " 19]" + ] + }, + "execution_count": 821, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zids" + ] + }, + { + "cell_type": "code", + "execution_count": 712, + "id": "0e8099a0-70d1-4119-bd56-33b79a83359c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 18 <rev_StrandSet(1)>.<Strand(5, 18)> <rev_StrandSet(3)>.<Strand(2, 15)> [(11, -1)] 16\n" + ] + } + ], + "source": [ + "print(i.idx5Prime(),i.idx3Prime(),i.connection3p(),i.connection5p(),[(j.idx(),j.length()) for j in i.insertionsOnStrand()],i.totalLength())" + ] + }, + { + "cell_type": "code", + "execution_count": 746, + "id": "55d4b8da-692a-40ae-9e1a-3030f2dd659f", + "metadata": {}, + "outputs": [], + "source": [ + "s=pd.Series(index=[\"vh\",\"zid\",\"fwd\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"],dtype=object)\n", + "s[\"vh\"]=2\n", + "s[\"zid\"]=2\n", + "s[\"stack\"]=(2,2,1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7a02cdd-7409-441a-8e60-07b5912d8e56", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65ebfe49-aae9-42a3-acb5-0a7afb390e8d", + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a5ea8a4-3353-4779-b6aa-98c8919259c9", + "metadata": {}, + "outputs": [], + "source": [ + "i.idx5Prime(),i.idx3Prime()" + ] + }, + { + "cell_type": "code", + "execution_count": 710, + "id": "ff047223-c82c-4ac4-b30e-65c41613a9e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(19, 36) 1\n" + ] + } + ], + "source": [ + "print(i.connection3p().idxs(),i.connection3p().idNum())" + ] + }, + { + "cell_type": "code", + "execution_count": 510, + "id": "c5832bdd-1df9-4af7-8cb7-89d522a33c86", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[None,\n", + " None,\n", + " None,\n", + " None,\n", + " None,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " <fwd_StrandSet(0)>.<Strand(5, 36)>,\n", + " None,\n", + " None,\n", + " <fwd_StrandSet(0)>.<Strand(39, 41)>,\n", + " <fwd_StrandSet(0)>.<Strand(39, 41)>,\n", + " <fwd_StrandSet(0)>.<Strand(39, 41)>]" + ] + }, + "execution_count": 510, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd.strand_array" + ] + }, + { + "cell_type": "code", + "execution_count": 644, + "id": "a7a8c302-165a-404f-aa98-f857b8839638", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Oligo_(1.0[3])_7344" + ] + }, + "execution_count": 644, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0._oligo" + ] + }, + { + "cell_type": "code", + "execution_count": 618, + "id": "6b6ab174-90a3-4414-a798-806fb1793937", + "metadata": {}, + "outputs": [], + "source": [ + "rev0=rev.strands()[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 623, + "id": "843291d1-530f-4c2b-97e3-65b30d814cf9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "29" + ] + }, + "execution_count": 623, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0.totalLength()" + ] + }, + { + "cell_type": "code", + "execution_count": 629, + "id": "4a4cbdb1-f626-4817-9bee-c2d9fed0675d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_base_idx_high',\n", + " '_base_idx_low',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_id_num',\n", + " '_is_forward',\n", + " '_oligo',\n", + " '_parent',\n", + " '_sequence',\n", + " '_signals',\n", + " '_strand3p',\n", + " '_strand5p',\n", + " '_strandset',\n", + " 'abstractSeq',\n", + " 'abstract_sequence',\n", + " 'addInsertion',\n", + " 'addMods',\n", + " 'applyAbstractSequence',\n", + " 'canInstallXoverAt',\n", + " 'canResizeTo',\n", + " 'changeInsertion',\n", + " 'clearAbstractSequence',\n", + " 'clearDecoratorCommands',\n", + " 'clearInsertionsCommands',\n", + " 'connect',\n", + " 'connection3p',\n", + " 'connection5p',\n", + " 'connectionHigh',\n", + " 'connectionLow',\n", + " 'copyAbstractSequenceToSequence',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dump5p',\n", + " 'generator3pStrand',\n", + " 'generator5pStrand',\n", + " 'getColor',\n", + " 'getComplementStrands',\n", + " 'getRemoveInsertionCommands',\n", + " 'getResizeBounds',\n", + " 'getSequenceList',\n", + " 'hasInsertionAt',\n", + " 'hasXoverAt',\n", + " 'highIdx',\n", + " 'idNum',\n", + " 'idx3Prime',\n", + " 'idx5Prime',\n", + " 'idxs',\n", + " 'insertionLengthBetweenIdxs',\n", + " 'insertionsOnStrand',\n", + " 'isForward',\n", + " 'length',\n", + " 'lowIdx',\n", + " 'merge',\n", + " 'modifersOnStrand',\n", + " 'oligo',\n", + " 'parent',\n", + " 'part',\n", + " 'reapplySequence',\n", + " 'removeInsertion',\n", + " 'removeMods',\n", + " 'resize',\n", + " 'segments',\n", + " 'sequence',\n", + " 'setComplementSequence',\n", + " 'setConnection3p',\n", + " 'setConnection5p',\n", + " 'setConnectionHigh',\n", + " 'setConnectionLow',\n", + " 'setIdxs',\n", + " 'setOligo',\n", + " 'setParent',\n", + " 'setSequence',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'split',\n", + " 'strandConnectionChangedSignal',\n", + " 'strandFilter',\n", + " 'strandHasNewOligoSignal',\n", + " 'strandInsertionAddedSignal',\n", + " 'strandInsertionChangedSignal',\n", + " 'strandInsertionRemovedSignal',\n", + " 'strandModsAddedSignal',\n", + " 'strandModsChangedSignal',\n", + " 'strandModsRemovedSignal',\n", + " 'strandRemovedSignal',\n", + " 'strandResizedSignal',\n", + " 'strandSelectedChangedSignal',\n", + " 'strandSet',\n", + " 'strandType',\n", + " 'strandXover5pRemovedSignal',\n", + " 'totalLength',\n", + " 'undoStack']" + ] + }, + "execution_count": 629, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(rev0)" + ] + }, + { + "cell_type": "code", + "execution_count": 633, + "id": "a6e188a0-52c9-4f27-9e91-f9f0f6b43829", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<fwd_StrandSet(1)>.<Strand(3, 20)>" + ] + }, + "execution_count": 633, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0.connection5p()" + ] + }, + { + "cell_type": "code", + "execution_count": 663, + "id": "6dbd83c9-1542-4acf-8e54-1f279db6da3a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<fwd_StrandSet(2)>.<Strand(2, 18)>" + ] + }, + "execution_count": 663, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strand_set[\"2fwd\"].strands()[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 640, + "id": "08856a0e-eb36-4e2f-a68d-55b43ca38a82", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13" + ] + }, + "execution_count": 640, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0.insertionsOnStrand()[0].idx()" + ] + }, + { + "cell_type": "code", + "execution_count": 642, + "id": "15747c0b-8bcc-414e-b570-03c1a61cf8b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 642, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0.insertionsOnStrand()[0].length()" + ] + }, + { + "cell_type": "code", + "execution_count": 631, + "id": "5164cbab-4cad-49cb-b578-162f4df8fb3d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "29" + ] + }, + "execution_count": 631, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rev0.totalLength()" + ] + }, + { + "cell_type": "code", + "execution_count": 628, + "id": "9de2a715-9a6d-48ca-98d3-154c6856f73c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 628, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd0.hasInsertionAt(13)" + ] + }, + { + "cell_type": "code", + "execution_count": 539, + "id": "4fa350d1-50a9-4d03-a808-a948f9db12af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 539, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd.isForward()" + ] + }, + { + "cell_type": "code", + "execution_count": 532, + "id": "f9246900-a13c-40d8-b345-8167199f45de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 532, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd.isScaffold()" + ] + }, + { + "cell_type": "code", + "execution_count": 537, + "id": "bc02e0de-08a8-42d3-afd8-2b21f616d470", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, True, 36, 1, False, 36)]" + ] + }, + "execution_count": 537, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=[]\n", + "fwd_connect,col=fwd.dump(x)\n", + "fwd_connect" + ] + }, + { + "cell_type": "code", + "execution_count": 538, + "id": "e5238c66-a33b-4e93-ad9a-1a8fefe574cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(5, 36), (39, 41)]" + ] + }, + "execution_count": 538, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd_connect" + ] + }, + { + "cell_type": "code", + "execution_count": 541, + "id": "803533ed-9577-4eca-9d51-c106f3efb3d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(2, 20), (21, 23), (24, 27), (28, 38)],\n", + " ['#16e876', '#cc01d1', '#000000', '#b8056c'])" + ] + }, + "execution_count": 541, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y=[]\n", + "rev.dump(y)" + ] + }, + { + "cell_type": "code", + "execution_count": 505, + "id": "75d655fc-46e1-4b4d-9e05-ee1403e2e363", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'strand_set' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[505], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mpart\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetOligoAt\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43mfwd\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m15\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/part/nucleicacidpart.py:3283\u001b[0m, in \u001b[0;36mNucleicAcidPart.getOligoAt\u001b[0;34m(self, id_num, is_rev, idx)\u001b[0m\n\u001b[1;32m 3271\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Convenience method. Given a id_num strand_set, idx, return\u001b[39;00m\n\u001b[1;32m 3272\u001b[0m \u001b[38;5;124;03mthe oligo at that location, if it exists. Otherwise return None.\u001b[39;00m\n\u001b[1;32m 3273\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3280\u001b[0m \u001b[38;5;124;03m Oligo: reference to oligo at (id_num, strand_set, idx) or None.\u001b[39;00m\n\u001b[1;32m 3281\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 3282\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 3283\u001b[0m ss \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgetStrandSets(id_num)[\u001b[43mstrand_set\u001b[49m]\n\u001b[1;32m 3284\u001b[0m strand \u001b[38;5;241m=\u001b[39m ss\u001b[38;5;241m.\u001b[39mgetStrand(idx)\n\u001b[1;32m 3285\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m strand\u001b[38;5;241m.\u001b[39moligo()\n", + "\u001b[0;31mNameError\u001b[0m: name 'strand_set' is not defined" + ] + } + ], + "source": [ + "part.getOligoAt(0,fwd,15)" + ] + }, + { + "cell_type": "code", + "execution_count": 460, + "id": "1dda0acd-7dd4-467c-9633-66c5350d1911", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['_BASE_WIDTH',\n", + " '_FLOAT_PROPERTY_KEYS',\n", + " '_HELICAL_PITCH',\n", + " '_NucleicAcidPart__count',\n", + " '_STEP_SIZE',\n", + " '_SUB_STEP_SIZE',\n", + " '_TURNS_PER_STEP',\n", + " '_TWIST_PER_BASE',\n", + " '__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_abstract_segment_id',\n", + " '_active_base_index',\n", + " '_active_id_num',\n", + " '_addCoordinates',\n", + " '_addModInstanceKey',\n", + " '_addOligoToSet',\n", + " '_canReAdd',\n", + " '_canRemove',\n", + " '_count',\n", + " '_createHelix',\n", + " '_current_base_count',\n", + " '_decrementInstance',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_getModKeyTokens',\n", + " '_getNewIdNum',\n", + " '_getVirtualHelixOriginNeighbors',\n", + " '_group_properties',\n", + " '_highest_even_id_num_used',\n", + " '_highest_odd_id_num_used',\n", + " '_incrementInstance',\n", + " '_insertions',\n", + " '_instance_count',\n", + " '_instances',\n", + " '_mods',\n", + " '_offset_and_size',\n", + " '_oligos',\n", + " '_origin_cache',\n", + " '_origin_cache_keys',\n", + " '_origin_pts',\n", + " '_parent',\n", + " '_point_cache',\n", + " '_point_cache_keys',\n", + " '_pointsFromDirection',\n", + " '_projectionPointOnPlane',\n", + " '_queryBasePoint',\n", + " '_queryIdNumRange',\n", + " '_queryIdNumRangeNeighbor',\n", + " '_queryVirtualHelixOrigin',\n", + " '_queryVirtualHelixOriginRect',\n", + " '_radius',\n", + " '_recycleIdNum',\n", + " '_refreshSegments',\n", + " '_removeCoordinates',\n", + " '_removeHelix',\n", + " '_removeOligoFromSet',\n", + " '_reserveIdNum',\n", + " '_resetOriginCache',\n", + " '_resetPointCache',\n", + " '_resizeHelix',\n", + " '_sanity_check_id_numbers',\n", + " '_selected',\n", + " '_selections',\n", + " '_setCoordinates',\n", + " '_setProperty',\n", + " '_setVirtualHelixOriginLimits',\n", + " '_setVirtualHelixProperties',\n", + " '_signals',\n", + " '_translateCoordinates',\n", + " '_translateVirtualHelices',\n", + " '_virtual_helices_dict',\n", + " 'activeBaseIndex',\n", + " 'activeIdNum',\n", + " 'active_base_info',\n", + " 'addModInstance',\n", + " 'addModStrandInstance',\n", + " 'angleNormalize',\n", + " 'angleRangeCheck',\n", + " 'axis_pts',\n", + " 'baseWidth',\n", + " 'batchCreateVirtualHelices',\n", + " 'boundDimensions',\n", + " 'changeInstanceProperty',\n", + " 'clearActiveVirtualHelix',\n", + " 'connect',\n", + " 'copy',\n", + " 'createVirtualHelix',\n", + " 'createXover',\n", + " 'cross',\n", + " 'deleteLater',\n", + " 'delta2D_scratch',\n", + " 'delta3D_scratch',\n", + " 'destroy',\n", + " 'directions',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dumpInsertions',\n", + " 'dumpModInstances',\n", + " 'editable_properties',\n", + " 'eye3_scratch',\n", + " 'fwd_pts',\n", + " 'fwd_strandsets',\n", + " 'getAllVirtualHelixProperties',\n", + " 'getCircularOligos',\n", + " 'getColor',\n", + " 'getCoordinate',\n", + " 'getCoordinates',\n", + " 'getDirections',\n", + " 'getGridType',\n", + " 'getIdNums',\n", + " 'getIndices',\n", + " 'getInstanceProperty',\n", + " 'getMaxIdNum',\n", + " 'getModID',\n", + " 'getModStrandIdx',\n", + " 'getModelProperties',\n", + " 'getName',\n", + " 'getNeighbors',\n", + " 'getNewAbstractSegmentId',\n", + " 'getOffsetAndSize',\n", + " 'getOligoAt',\n", + " 'getOutlineProperties',\n", + " 'getProperty',\n", + " 'getSequences',\n", + " 'getStrand',\n", + " 'getStrandModSequence',\n", + " 'getStrandSets',\n", + " 'getVirtualHelicesInArea',\n", + " 'getVirtualHelix',\n", + " 'getVirtualHelixAtPoint',\n", + " 'getVirtualHelixOrder',\n", + " 'getVirtualHelixOrigin',\n", + " 'getVirtualHelixOriginLimits',\n", + " 'getVirtualHelixProperties',\n", + " 'getidNums',\n", + " 'hasStrandAtIdx',\n", + " 'helicalPitch',\n", + " 'helixProperties',\n", + " 'id_nums',\n", + " 'indexOfRightmostNonemptyBase',\n", + " 'indices',\n", + " 'initializeAbstractSegmentId',\n", + " 'insertions',\n", + " 'instanceProperties',\n", + " 'isAGreaterThanB_Z',\n", + " 'isSelected',\n", + " 'isVirtualHelixActive',\n", + " 'isVirtualHelixNearPoint',\n", + " 'isZEditable',\n", + " 'is_active',\n", + " 'lengthSq',\n", + " 'locationQt',\n", + " 'm3_scratch0',\n", + " 'm3_scratch1',\n", + " 'm3_scratch2',\n", + " 'makeRotation',\n", + " 'maxBaseIdx',\n", + " 'newPart',\n", + " 'normalize',\n", + " 'normalizedRange',\n", + " 'oligos',\n", + " 'origin_limits',\n", + " 'parent',\n", + " 'partActiveBaseInfoSignal',\n", + " 'partActiveChangedSignal',\n", + " 'partActiveVirtualHelixChangedSignal',\n", + " 'partDocumentSettingChangedSignal',\n", + " 'partInstanceAddedSignal',\n", + " 'partInstancePropertySignal',\n", + " 'partOligoAddedSignal',\n", + " 'partParentChangedSignal',\n", + " 'partPropertyChangedSignal',\n", + " 'partRemovedSignal',\n", + " 'partSelectedChangedSignal',\n", + " 'partStrandChangedSignal',\n", + " 'partType',\n", + " 'partVirtualHelicesSelectedSignal',\n", + " 'partVirtualHelicesTranslatedSignal',\n", + " 'partVirtualHelixAddedSignal',\n", + " 'partVirtualHelixPropertyChangedSignal',\n", + " 'partVirtualHelixRemovedSignal',\n", + " 'partVirtualHelixRemovingSignal',\n", + " 'partVirtualHelixResizedSignal',\n", + " 'partZDimensionsChangedSignal',\n", + " 'potentialCrossoverMap',\n", + " 'queryBasePoint',\n", + " 'queryIdNumNeighbor',\n", + " 'queryVirtualHelixOrigin',\n", + " 'radius',\n", + " 'radiusForAngle',\n", + " 'recycle_bin',\n", + " 'reemitActiveVirtualHelix',\n", + " 'refreshSegments',\n", + " 'remove',\n", + " 'removeAllOligos',\n", + " 'removeModInstance',\n", + " 'removeModStrandInstance',\n", + " 'removeVirtualHelices',\n", + " 'removeVirtualHelix',\n", + " 'removeXover',\n", + " 'reserved_ids',\n", + " 'resetCoordinates',\n", + " 'rev_pts',\n", + " 'rev_strandsets',\n", + " 'segment_dict',\n", + " 'setAbstractSequences',\n", + " 'setActive',\n", + " 'setActiveBaseInfo',\n", + " 'setActiveVirtualHelix',\n", + " 'setAllVirtualHelixSizes',\n", + " 'setDocument',\n", + " 'setGridType',\n", + " 'setImportedVHelixOrder',\n", + " 'setInstanceProperty',\n", + " 'setParent',\n", + " 'setProperty',\n", + " 'setSelected',\n", + " 'setVirtualHelixProperties',\n", + " 'setVirtualHelixSize',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'splitOligoAtAbsoluteLengths',\n", + " 'stepSize',\n", + " 'subStepSize',\n", + " 'total_id_nums',\n", + " 'total_points',\n", + " 'translateVirtualHelices',\n", + " 'twistPerBase',\n", + " 'undoStack',\n", + " 'uuid',\n", + " 'verifyOligos',\n", + " 'vh_editable_properties',\n", + " 'vh_properties',\n", + " 'xoverSnapTo',\n", + " 'zBoundsIds']" + ] + }, + "execution_count": 460, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(part)" + ] + }, + { + "cell_type": "code", + "execution_count": 445, + "id": "67b2283f-b3ec-4941-9753-8939883fc634", + "metadata": {}, + "outputs": [], + "source": [ + "k=[s.idxs() for s in rev_ss.strands()]" + ] + }, + { + "cell_type": "code", + "execution_count": 451, + "id": "055da421-6f35-47ba-b54a-dedaff3851f5", + "metadata": {}, + "outputs": [], + "source": [ + "fwd_ss, rev_ss = part.getStrandSets(5)\n", + "xover_list=[]" + ] + }, + { + "cell_type": "code", + "execution_count": 452, + "id": "b9337cb3-5725-4a22-956d-0f7bfdf98f1e", + "metadata": {}, + "outputs": [], + "source": [ + "fwd_idxs, fwd_colors = fwd_ss.dump(xover_list)\n", + "rev_idxs, rev_colors = rev_ss.dump(xover_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 455, + "id": "307dcec8-b15f-48c0-895e-b57794d96c1e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(5, True, 27, 0, False, 27), (5, False, 9, 4, True, 9)]" + ] + }, + "execution_count": 455, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xover_list" + ] + }, + { + "cell_type": "code", + "execution_count": 456, + "id": "9ff52284-e37d-466c-a844-3cbc929433b8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(9, 27), (28, 39)]" + ] + }, + "execution_count": 456, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd_idxs" + ] + }, + { + "cell_type": "code", + "execution_count": 457, + "id": "319ede75-f8a8-4f80-9d90-f990d351cc1b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<fwd_StrandSet(5)>" + ] + }, + "execution_count": 457, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 431, + "id": "9e6bd392-559f-449b-8a4e-049d8b100349", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'StrandSet' object has no attribute 'revStrandSet'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[431], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mv0\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrevStrandSet\u001b[49m()\u001b[38;5;241m.\u001b[39mstrands()[\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39midNum())\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(v0\u001b[38;5;241m.\u001b[39mrevStrandSet()\u001b[38;5;241m.\u001b[39mstrands()[\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39midxs())\n", + "\u001b[0;31mAttributeError\u001b[0m: 'StrandSet' object has no attribute 'revStrandSet'" + ] + } + ], + "source": [ + "print(v0.revStrandSet().strands()[1].idNum())\n", + "print(v0.revStrandSet().strands()[1].idxs())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 421, + "id": "03cc2f40-8c54-44ff-b590-81cf857c2965", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(2, 20), (21, 23), (24, 27), (28, 38)],\n", + " ['#16e876', '#cc01d1', '#000000', '#b8056c'])" + ] + }, + "execution_count": 421, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=[]\n", + "k.dump(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 386, + "id": "6efd2667-59d7-4ad3-b9a9-faf8f003399b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[34, 31, 3, 21, 23, 5, 32, 208, 3, 33, 31, 34, 4, 48, 4, 3]" + ] + }, + "execution_count": 386, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s=list(n.oligos())\n", + "a=s[5]\n", + "l=[i.length() for i in s]\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 399, + "id": "9063878f-b3bd-4856-9d5b-68f459ea6e06", + "metadata": {}, + "outputs": [], + "source": [ + "a=s[7]" + ] + }, + { + "cell_type": "code", + "execution_count": 397, + "id": "69c6d275-9b13-4add-bcb0-75c281628f09", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 398, + "id": "dcba5559-a9c1-40ce-854d-ca2ceefd61d0", + "metadata": {}, + "outputs": [], + "source": [ + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 401, + "id": "0b3beb34-9715-4719-b0b2-778c54891555", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id_num': 5,\n", + " 'idx5p': 22,\n", + " 'is_5p_fwd': False,\n", + " 'is_circular': False,\n", + " 'sequence': None,\n", + " 'name': 'oligo7456',\n", + " 'color': '#0066cc',\n", + " 'length': 208,\n", + " 'is_visible': True}" + ] + }, + "execution_count": 401, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.dump()" + ] + }, + { + "cell_type": "code", + "execution_count": 258, + "id": "efdc824b-d784-40c8-98fd-af86f4887319", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(<fwd_StrandSet(0)>, <rev_StrandSet(0)>)" + ] + }, + "execution_count": 258, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fwd,rev=n.getStrandSets(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 232, + "id": "07cb8a8b-32c0-4aac-a8e2-9b10ab938fbc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['oligo2304',\n", + " 'oligo8960',\n", + " 'oligo9296',\n", + " 'oligo1120',\n", + " 'oligo7728',\n", + " 'oligo4848',\n", + " 'oligo3552',\n", + " 'oligo7008',\n", + " 'oligo5696',\n", + " 'oligo7856',\n", + " 'oligo6016',\n", + " 'oligo4560',\n", + " 'oligo5504',\n", + " 'oligo3488',\n", + " 'oligo1648',\n", + " 'oligo1536']" + ] + }, + "execution_count": 232, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "names=[i[\"name\"] for i in cad3[\"parts\"][0][\"oligos\"]]\n", + "names" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "id": "fc06b8ed-283f-4365-a063-c87f43598bef", + "metadata": {}, + "outputs": [], + "source": [ + "sc=dict(json_data2)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "9c67d96b-a9e9-43cb-8617-bae9d6fb36bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'version': '0.19.3',\n", + " 'grid': 'honeycomb',\n", + " 'helices': [{'grid_position': [16, 12]},\n", + " {'grid_position': [15, 12]},\n", + " {'grid_position': [15, 13]},\n", + " {'grid_position': [16, 13]},\n", + " {'grid_position': [17, 13]},\n", + " {'grid_position': [17, 12]},\n", + " {'grid_position': [5, 15]}],\n", + " 'strands': [{'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 5, 'forward': False, 'start': 9, 'end': 23},\n", + " {'helix': 4, 'forward': True, 'start': 9, 'end': 16},\n", + " {'helix': 3, 'forward': False, 'start': 2, 'end': 16},\n", + " {'helix': 2, 'forward': True, 'start': 2, 'end': 19, 'deletions': [11]},\n", + " {'helix': 1,\n", + " 'forward': False,\n", + " 'start': 5,\n", + " 'end': 19,\n", + " 'insertions': [[10, 1]]},\n", + " {'helix': 0,\n", + " 'forward': True,\n", + " 'start': 5,\n", + " 'end': 37,\n", + " 'insertions': [[13, 10], [29, 11]]},\n", + " {'helix': 1, 'forward': False, 'start': 19, 'end': 37},\n", + " {'helix': 2, 'forward': True, 'start': 19, 'end': 33},\n", + " {'helix': 3, 'forward': False, 'start': 16, 'end': 33, 'deletions': [28]},\n", + " {'helix': 4, 'forward': True, 'start': 16, 'end': 40},\n", + " {'helix': 5, 'forward': False, 'start': 23, 'end': 40}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 0, 'forward': True, 'start': 39, 'end': 42}]},\n", + " {'color': '#16e876',\n", + " 'domains': [{'helix': 1,\n", + " 'forward': True,\n", + " 'start': 3,\n", + " 'end': 21,\n", + " 'insertions': [[10, 1]]},\n", + " {'helix': 0,\n", + " 'forward': False,\n", + " 'start': 2,\n", + " 'end': 21,\n", + " 'insertions': [[13, 10]]}]},\n", + " {'color': '#cc01d1',\n", + " 'domains': [{'helix': 0, 'forward': False, 'start': 21, 'end': 24},\n", + " {'helix': 1, 'forward': True, 'start': 21, 'end': 39}]},\n", + " {'color': '#000000',\n", + " 'domains': [{'helix': 5, 'forward': True, 'start': 9, 'end': 28},\n", + " {'helix': 0, 'forward': False, 'start': 24, 'end': 28}]},\n", + " {'color': '#b8056c',\n", + " 'domains': [{'helix': 0,\n", + " 'forward': False,\n", + " 'start': 28,\n", + " 'end': 39,\n", + " 'insertions': [[29, 11]]},\n", + " {'helix': 5, 'forward': True, 'start': 28, 'end': 40}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 1, 'forward': False, 'start': 39, 'end': 42}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 2, 'forward': True, 'start': 39, 'end': 42}]},\n", + " {'color': '#888888',\n", + " 'domains': [{'helix': 2,\n", + " 'forward': False,\n", + " 'start': 0,\n", + " 'end': 35,\n", + " 'deletions': [11]}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 3, 'forward': False, 'start': 37, 'end': 42}]},\n", + " {'color': '#cc0000',\n", + " 'domains': [{'helix': 3, 'forward': True, 'start': 0, 'end': 21},\n", + " {'helix': 4, 'forward': False, 'start': 9, 'end': 21}]},\n", + " {'color': '#888888',\n", + " 'domains': [{'helix': 4, 'forward': False, 'start': 21, 'end': 40},\n", + " {'helix': 3, 'forward': True, 'start': 21, 'end': 35, 'deletions': [28]}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 4, 'forward': True, 'start': 0, 'end': 4}]},\n", + " {'color': '#0066cc',\n", + " 'is_scaffold': True,\n", + " 'domains': [{'helix': 5, 'forward': False, 'start': 0, 'end': 4}]}]}" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sc" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "66a215f5-fac0-455b-b990-a0713a2e3e62", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['_BASE_WIDTH',\n", + " '_FLOAT_PROPERTY_KEYS',\n", + " '_HELICAL_PITCH',\n", + " '_NucleicAcidPart__count',\n", + " '_STEP_SIZE',\n", + " '_SUB_STEP_SIZE',\n", + " '_TURNS_PER_STEP',\n", + " '_TWIST_PER_BASE',\n", + " '__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_abstract_segment_id',\n", + " '_active_base_index',\n", + " '_active_id_num',\n", + " '_addCoordinates',\n", + " '_addModInstanceKey',\n", + " '_addOligoToSet',\n", + " '_canReAdd',\n", + " '_canRemove',\n", + " '_count',\n", + " '_createHelix',\n", + " '_current_base_count',\n", + " '_decrementInstance',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_getModKeyTokens',\n", + " '_getNewIdNum',\n", + " '_getVirtualHelixOriginNeighbors',\n", + " '_group_properties',\n", + " '_highest_even_id_num_used',\n", + " '_highest_odd_id_num_used',\n", + " '_incrementInstance',\n", + " '_insertions',\n", + " '_instance_count',\n", + " '_instances',\n", + " '_mods',\n", + " '_offset_and_size',\n", + " '_oligos',\n", + " '_origin_cache',\n", + " '_origin_cache_keys',\n", + " '_origin_pts',\n", + " '_parent',\n", + " '_point_cache',\n", + " '_point_cache_keys',\n", + " '_pointsFromDirection',\n", + " '_projectionPointOnPlane',\n", + " '_queryBasePoint',\n", + " '_queryIdNumRange',\n", + " '_queryIdNumRangeNeighbor',\n", + " '_queryVirtualHelixOrigin',\n", + " '_queryVirtualHelixOriginRect',\n", + " '_radius',\n", + " '_recycleIdNum',\n", + " '_refreshSegments',\n", + " '_removeCoordinates',\n", + " '_removeHelix',\n", + " '_removeOligoFromSet',\n", + " '_reserveIdNum',\n", + " '_resetOriginCache',\n", + " '_resetPointCache',\n", + " '_resizeHelix',\n", + " '_sanity_check_id_numbers',\n", + " '_selected',\n", + " '_selections',\n", + " '_setCoordinates',\n", + " '_setProperty',\n", + " '_setVirtualHelixOriginLimits',\n", + " '_setVirtualHelixProperties',\n", + " '_signals',\n", + " '_translateCoordinates',\n", + " '_translateVirtualHelices',\n", + " '_virtual_helices_dict',\n", + " 'activeBaseIndex',\n", + " 'activeIdNum',\n", + " 'active_base_info',\n", + " 'addModInstance',\n", + " 'addModStrandInstance',\n", + " 'angleNormalize',\n", + " 'angleRangeCheck',\n", + " 'axis_pts',\n", + " 'baseWidth',\n", + " 'batchCreateVirtualHelices',\n", + " 'boundDimensions',\n", + " 'changeInstanceProperty',\n", + " 'clearActiveVirtualHelix',\n", + " 'connect',\n", + " 'copy',\n", + " 'createVirtualHelix',\n", + " 'createXover',\n", + " 'cross',\n", + " 'deleteLater',\n", + " 'delta2D_scratch',\n", + " 'delta3D_scratch',\n", + " 'destroy',\n", + " 'directions',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dumpInsertions',\n", + " 'dumpModInstances',\n", + " 'editable_properties',\n", + " 'eye3_scratch',\n", + " 'fwd_pts',\n", + " 'fwd_strandsets',\n", + " 'getAllVirtualHelixProperties',\n", + " 'getCircularOligos',\n", + " 'getColor',\n", + " 'getCoordinate',\n", + " 'getCoordinates',\n", + " 'getDirections',\n", + " 'getGridType',\n", + " 'getIdNums',\n", + " 'getIndices',\n", + " 'getInstanceProperty',\n", + " 'getMaxIdNum',\n", + " 'getModID',\n", + " 'getModStrandIdx',\n", + " 'getModelProperties',\n", + " 'getName',\n", + " 'getNeighbors',\n", + " 'getNewAbstractSegmentId',\n", + " 'getOffsetAndSize',\n", + " 'getOligoAt',\n", + " 'getOutlineProperties',\n", + " 'getProperty',\n", + " 'getSequences',\n", + " 'getStrand',\n", + " 'getStrandModSequence',\n", + " 'getStrandSets',\n", + " 'getVirtualHelicesInArea',\n", + " 'getVirtualHelix',\n", + " 'getVirtualHelixAtPoint',\n", + " 'getVirtualHelixOrder',\n", + " 'getVirtualHelixOrigin',\n", + " 'getVirtualHelixOriginLimits',\n", + " 'getVirtualHelixProperties',\n", + " 'getidNums',\n", + " 'hasStrandAtIdx',\n", + " 'helicalPitch',\n", + " 'helixProperties',\n", + " 'id_nums',\n", + " 'indexOfRightmostNonemptyBase',\n", + " 'indices',\n", + " 'initializeAbstractSegmentId',\n", + " 'insertions',\n", + " 'instanceProperties',\n", + " 'isAGreaterThanB_Z',\n", + " 'isSelected',\n", + " 'isVirtualHelixActive',\n", + " 'isVirtualHelixNearPoint',\n", + " 'isZEditable',\n", + " 'is_active',\n", + " 'lengthSq',\n", + " 'locationQt',\n", + " 'm3_scratch0',\n", + " 'm3_scratch1',\n", + " 'm3_scratch2',\n", + " 'makeRotation',\n", + " 'maxBaseIdx',\n", + " 'newPart',\n", + " 'normalize',\n", + " 'normalizedRange',\n", + " 'oligos',\n", + " 'origin_limits',\n", + " 'parent',\n", + " 'partActiveBaseInfoSignal',\n", + " 'partActiveChangedSignal',\n", + " 'partActiveVirtualHelixChangedSignal',\n", + " 'partDocumentSettingChangedSignal',\n", + " 'partInstanceAddedSignal',\n", + " 'partInstancePropertySignal',\n", + " 'partOligoAddedSignal',\n", + " 'partParentChangedSignal',\n", + " 'partPropertyChangedSignal',\n", + " 'partRemovedSignal',\n", + " 'partSelectedChangedSignal',\n", + " 'partStrandChangedSignal',\n", + " 'partType',\n", + " 'partVirtualHelicesSelectedSignal',\n", + " 'partVirtualHelicesTranslatedSignal',\n", + " 'partVirtualHelixAddedSignal',\n", + " 'partVirtualHelixPropertyChangedSignal',\n", + " 'partVirtualHelixRemovedSignal',\n", + " 'partVirtualHelixRemovingSignal',\n", + " 'partVirtualHelixResizedSignal',\n", + " 'partZDimensionsChangedSignal',\n", + " 'potentialCrossoverMap',\n", + " 'queryBasePoint',\n", + " 'queryIdNumNeighbor',\n", + " 'queryVirtualHelixOrigin',\n", + " 'radius',\n", + " 'radiusForAngle',\n", + " 'recycle_bin',\n", + " 'reemitActiveVirtualHelix',\n", + " 'refreshSegments',\n", + " 'remove',\n", + " 'removeAllOligos',\n", + " 'removeModInstance',\n", + " 'removeModStrandInstance',\n", + " 'removeVirtualHelices',\n", + " 'removeVirtualHelix',\n", + " 'removeXover',\n", + " 'reserved_ids',\n", + " 'resetCoordinates',\n", + " 'rev_pts',\n", + " 'rev_strandsets',\n", + " 'segment_dict',\n", + " 'setAbstractSequences',\n", + " 'setActive',\n", + " 'setActiveBaseInfo',\n", + " 'setActiveVirtualHelix',\n", + " 'setAllVirtualHelixSizes',\n", + " 'setDocument',\n", + " 'setGridType',\n", + " 'setImportedVHelixOrder',\n", + " 'setInstanceProperty',\n", + " 'setParent',\n", + " 'setProperty',\n", + " 'setSelected',\n", + " 'setVirtualHelixProperties',\n", + " 'setVirtualHelixSize',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'splitOligoAtAbsoluteLengths',\n", + " 'stepSize',\n", + " 'subStepSize',\n", + " 'total_id_nums',\n", + " 'total_points',\n", + " 'translateVirtualHelices',\n", + " 'twistPerBase',\n", + " 'undoStack',\n", + " 'uuid',\n", + " 'verifyOligos',\n", + " 'vh_editable_properties',\n", + " 'vh_properties',\n", + " 'xoverSnapTo',\n", + " 'zBoundsIds']" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "id": "6c6b8a93-aa6d-4a5e-83c9-fb66381c6ce3", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'dict' object has no attribute 'fwd_strandsets'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[344], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m s\u001b[38;5;241m=\u001b[39m\u001b[43mjson_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfwd_strandsets\u001b[49m\n\u001b[1;32m 2\u001b[0m s[\u001b[38;5;241m0\u001b[39m]\n", + "\u001b[0;31mAttributeError\u001b[0m: 'dict' object has no attribute 'fwd_strandsets'" ] } ], "source": [ + "s=json_data.fwd_strandsets\n", + "s[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "fe082e4f-7622-4a9c-ac54-17cd2cb741d2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__slots__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_base_idx_high',\n", + " '_base_idx_low',\n", + " '_deepCopy',\n", + " '_document',\n", + " '_id_num',\n", + " '_is_forward',\n", + " '_oligo',\n", + " '_parent',\n", + " '_sequence',\n", + " '_signals',\n", + " '_strand3p',\n", + " '_strand5p',\n", + " '_strandset',\n", + " 'abstractSeq',\n", + " 'abstract_sequence',\n", + " 'addInsertion',\n", + " 'addMods',\n", + " 'applyAbstractSequence',\n", + " 'canInstallXoverAt',\n", + " 'canResizeTo',\n", + " 'changeInsertion',\n", + " 'clearAbstractSequence',\n", + " 'clearDecoratorCommands',\n", + " 'clearInsertionsCommands',\n", + " 'connect',\n", + " 'connection3p',\n", + " 'connection5p',\n", + " 'connectionHigh',\n", + " 'connectionLow',\n", + " 'copyAbstractSequenceToSequence',\n", + " 'deleteLater',\n", + " 'destroy',\n", + " 'disconnect',\n", + " 'document',\n", + " 'dump5p',\n", + " 'generator3pStrand',\n", + " 'generator5pStrand',\n", + " 'getColor',\n", + " 'getComplementStrands',\n", + " 'getRemoveInsertionCommands',\n", + " 'getResizeBounds',\n", + " 'getSequenceList',\n", + " 'hasInsertionAt',\n", + " 'hasXoverAt',\n", + " 'highIdx',\n", + " 'idNum',\n", + " 'idx3Prime',\n", + " 'idx5Prime',\n", + " 'idxs',\n", + " 'insertionLengthBetweenIdxs',\n", + " 'insertionsOnStrand',\n", + " 'isForward',\n", + " 'length',\n", + " 'lowIdx',\n", + " 'merge',\n", + " 'modifersOnStrand',\n", + " 'oligo',\n", + " 'parent',\n", + " 'part',\n", + " 'reapplySequence',\n", + " 'removeInsertion',\n", + " 'removeMods',\n", + " 'resize',\n", + " 'segments',\n", + " 'sequence',\n", + " 'setComplementSequence',\n", + " 'setConnection3p',\n", + " 'setConnection5p',\n", + " 'setConnectionHigh',\n", + " 'setConnectionLow',\n", + " 'setIdxs',\n", + " 'setOligo',\n", + " 'setParent',\n", + " 'setSequence',\n", + " 'shallowCopy',\n", + " 'signals',\n", + " 'split',\n", + " 'strandConnectionChangedSignal',\n", + " 'strandFilter',\n", + " 'strandHasNewOligoSignal',\n", + " 'strandInsertionAddedSignal',\n", + " 'strandInsertionChangedSignal',\n", + " 'strandInsertionRemovedSignal',\n", + " 'strandModsAddedSignal',\n", + " 'strandModsChangedSignal',\n", + " 'strandModsRemovedSignal',\n", + " 'strandRemovedSignal',\n", + " 'strandResizedSignal',\n", + " 'strandSelectedChangedSignal',\n", + " 'strandSet',\n", + " 'strandType',\n", + " 'strandXover5pRemovedSignal',\n", + " 'totalLength',\n", + " 'undoStack']" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i=[s[0].getStrand(i) for i in range(s[0].length())]\n", + "dir(i[6])" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "4d9e756f-8f34-4738-909c-a1714e4a4459", + "metadata": {}, + "outputs": [], + "source": [ + "def get_helix_angle(part, helix_id, indices):\n", + " \"\"\" Get \"start_orientation\" for helix \"\"\"\n", + " # import ipdb\n", + " # ipdb.set_trace()\n", "\n", + " \"\"\" FROM CADNANO2.5\n", + " + angle is CCW\n", + " - angle is CW\n", + " Right handed DNA rotates clockwise from 5' to 3'\n", + " we use the convention the 5' end starts at 0 degrees\n", + " and it's pair is minor_groove_angle degrees away\n", + " direction, hence the minus signs. eulerZ\n", + " \"\"\"\n", "\n", - "from mrdna.readers.cadnano_segments import *\n", - "from cadnano.document import Document\n", - "import cadnano" + " hp, bpr, tpr, eulerZ, mgroove = part.vh_properties.loc[helix_id,\n", + " ['helical_pitch',\n", + " 'bases_per_repeat',\n", + " 'turns_per_repeat',\n", + " 'eulerZ',\n", + " 'minor_groove_angle']]\n", + " twist_per_base = tpr*360./bpr\n", + " # angle = eulerZ - twist_per_base*indices + 0.5*mgroove + 180\n", + " angle = eulerZ + twist_per_base*indices - 0.5*mgroove\n", + " return rotationAboutAxis(np.array((0,0,1)),angle)\n", + "\n", + "def nttype(scafs):\n", + " def judge(i):\n", + " if i ==[-1,-1,-1,-1]:\n", + " return 0\n", + " else: return 1\n", + " n=np.array([judge(i) for i in scafs])\n", + " return n\n", + "\n", + " \n", + "def gen_prop_table(json_file):\n", + " part,vslist=read_json_file(json_file)\n", + " props = part.getModelProperties().copy()\n", + " try:\n", + " if props.get('point_type') == PointType.ARBITRARY:\n", + " # TODO add code to encode Parts with ARBITRARY point configurations\n", + " raise NotImplementedError(\"Not implemented\")\n", + " except:\n", + " try:\n", + " vh_props, origins = part.helixPropertiesAndOrigins()\n", + " except:\n", + " origins = {hid:part.getVirtualHelixOrigin(hid)[:2] for hid in part.getidNums()}\n", + " scaf_id=[nttype(vslist['scaf'][i]) for i in vslist.index]\n", + " stap_id=[nttype(vslist['stap'][i]) for i in vslist.index]\n", + " cad_bps=part.getIndices(0)\n", + " vslist[\"scafnt\"]=np.sum(np.array(scaf_id),axis=1)\n", + " vslist[\"stapnt\"]=np.sum(np.array(stap_id),axis=1)\n", + " totnt=np.sum(vslist[\"scafnt\"])+np.sum(vslist[\"stapnt\"])\n", + " is_scaf=np.zeros(totnt,dtype=bool)\n", + " is_scaf[0:np.sum(vslist[\"scafnt\"])]=1\n", + " nt_prop=pd.DataFrame(index=range(totnt),columns=[\"vh\",\"zid\",\"is_scaf\",\"r\",\"bp\",\"stack\",\"threeprime\",\"seq\",\"orientation\"])\n", + " nt_prop[\"is_scaf\"]=is_scaf\n", + " tot_id=scaf_id+stap_id\n", + " vhi,zidi=np.where(np.array(scaf_id)==1)\n", + " vhj,zidj=np.where(np.array(stap_id)==1)\n", + " vhi=vslist.index[vhi]\n", + " vhj=vslist.index[vhj]\n", + " nt_prop[\"vh\"]=list(vhi)+list(vhj)\n", + " nt_prop[\"zid\"]=list(zidi)+list(zidj)\n", + " vhzid=list(zip(nt_prop[\"vh\"],nt_prop[\"zid\"]))\n", + " nt_prop[\"r\"]=[part.getCoordinate(helix_id, indices) for helix_id, indices in zip(nt_prop[\"vh\"],nt_prop[\"zid\"])]\n", + " #nt_prop[\"orientation\"]=[get_helix_angle(part, helix_id, indices) for helix_id,indices in zip(nt_prop[\"vh\"],nt_prop[\"zid\"])]\n", + " nt_prop=nt_prop.fillna(-1)\n", + " for i in range(int(len(vhzid)/2)):\n", + " try:\n", + " bp1,bp2=(i,1+i+vhzid[i+1:].index(vhzid[i]))\n", + " nt_prop[\"bp\"][bp1]=bp2\n", + " nt_prop[\"bp\"][bp2]=bp1\n", + " except:\n", + " pass\n", + " tprime_list=-np.ones(len(nt_prop.index),dtype=int)\n", + " index2=list(zip(vhzid,nt_prop[\"is_scaf\"]))\n", + " for i in range(len(nt_prop.index)):\n", + " ((m,n),p)=list(zip(vhzid,nt_prop[\"is_scaf\"]))[i]\n", + " if p==True:\n", + " k,l=(vslist[\"scaf\"][m])[n][2:]\n", + " if k!=-1 and l!=-1:\n", + " n=index2.index(((k,l),True))\n", + " tprime_list[i]=int(n)\n", + " \n", + " else:\n", + " k,l=(vslist[\"stap\"][m])[n][2:]\n", + " if k!=-1 and l!=-1:\n", + " n=index2.index(((k,l),False))\n", + " tprime_list[i]=int(n)\n", + " nt_prop[\"threeprime\"]=tprime_list\n", + " #(n,)=np.where(nt_prop[\"threeprime\"]==-1)\n", + " #stackid=nt_prop[\"bp\"][[list(nt_prop[\"threeprime\"]).index(i) for i in n]]\n", + " index3=dict(zip(nt_prop.index,zip(nt_prop[\"vh\"],nt_prop[\"is_scaf\"])))\n", + " index3[-1]=(-1,-1)\n", + " nt_prop[\"stack\"]=np.where([index3[i]==index3[nt_prop[\"threeprime\"][i]] for i in (nt_prop.index)],nt_prop[\"threeprime\"],-1) \n", + " \n", + "\n", + " return nt_prop\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 27, - "id": "f07e1b32", + "execution_count": 60, + "id": "dd26d9a2-9676-4286-8032-442997d872c2", "metadata": {}, "outputs": [ { @@ -39,25 +7558,940 @@ "text": [ "Found cadnano version 2 file\n" ] + }, + { + "ename": "TypeError", + "evalue": "cannot unpack non-iterable NucleicAcidPart object", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[60], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m s\u001b[38;5;241m=\u001b[39m\u001b[43mgen_prop_table\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtest_insert.json\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[59], line 36\u001b[0m, in \u001b[0;36mgen_prop_table\u001b[0;34m(json_file)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgen_prop_table\u001b[39m(json_file):\n\u001b[0;32m---> 36\u001b[0m part,vslist\u001b[38;5;241m=\u001b[39mread_json_file(json_file)\n\u001b[1;32m 37\u001b[0m props \u001b[38;5;241m=\u001b[39m part\u001b[38;5;241m.\u001b[39mgetModelProperties()\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "\u001b[0;31mTypeError\u001b[0m: cannot unpack non-iterable NucleicAcidPart object" + ] + } + ], + "source": [ + "s=gen_prop_table(\"test_insert.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "26d573d8-7e97-40bb-81f2-554009fbe689", + "metadata": {}, + "outputs": [], + "source": [ + "s.to_csv(\"s.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "caa9367f-1047-4d70-b0c0-2ea99015adc9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " 2,\n", + " 3,\n", + " 4,\n", + " 5,\n", + " 6,\n", + " 7,\n", + " 8,\n", + " 9,\n", + " 10,\n", + " 11,\n", + " 12,\n", + " 13,\n", + " 14,\n", + " 15,\n", + " 16,\n", + " 17,\n", + " 18,\n", + " 19,\n", + " 20,\n", + " 21,\n", + " 22,\n", + " 23,\n", + " 24,\n", + " 25,\n", + " 26,\n", + " 27,\n", + " 28,\n", + " 29,\n", + " 30,\n", + " 31,\n", + " -1,\n", + " 33,\n", + " 34,\n", + " -1,\n", + " -1,\n", + " 35,\n", + " 36,\n", + " 37,\n", + " 38,\n", + " 39,\n", + " 40,\n", + " 41,\n", + " 42,\n", + " 43,\n", + " 44,\n", + " 45,\n", + " 46,\n", + " 47,\n", + " -1,\n", + " 49,\n", + " 50,\n", + " 51,\n", + " 52,\n", + " 53,\n", + " 54,\n", + " 55,\n", + " 56,\n", + " 57,\n", + " 58,\n", + " 59,\n", + " 60,\n", + " 61,\n", + " 62,\n", + " 63,\n", + " 64,\n", + " 65,\n", + " -1,\n", + " 67,\n", + " 68,\n", + " 71,\n", + " 72,\n", + " 73,\n", + " 74,\n", + " 75,\n", + " 76,\n", + " 77,\n", + " 78,\n", + " 79,\n", + " 80,\n", + " 81,\n", + " 82,\n", + " 83,\n", + " 84,\n", + " 85,\n", + " 86,\n", + " -1,\n", + " 88,\n", + " 89,\n", + " 90,\n", + " 91,\n", + " 92,\n", + " 93,\n", + " 94,\n", + " 95,\n", + " 96,\n", + " 97,\n", + " 98,\n", + " 99,\n", + " 100,\n", + " -1,\n", + " 102,\n", + " 103,\n", + " -1,\n", + " -1,\n", + " 104,\n", + " 105,\n", + " 106,\n", + " 107,\n", + " 108,\n", + " 109,\n", + " 110,\n", + " 111,\n", + " 112,\n", + " 113,\n", + " 114,\n", + " 115,\n", + " 116,\n", + " -1,\n", + " 118,\n", + " 119,\n", + " 120,\n", + " 121,\n", + " 122,\n", + " 123,\n", + " 124,\n", + " 125,\n", + " 126,\n", + " 127,\n", + " 128,\n", + " 129,\n", + " 130,\n", + " 131,\n", + " 132,\n", + " 133,\n", + " -1,\n", + " 135,\n", + " 136,\n", + " 137,\n", + " 138,\n", + " 141,\n", + " 142,\n", + " 143,\n", + " -1,\n", + " 145,\n", + " 146,\n", + " 147,\n", + " 148,\n", + " 149,\n", + " 150,\n", + " -1,\n", + " 152,\n", + " 153,\n", + " 154,\n", + " 155,\n", + " 156,\n", + " 157,\n", + " 158,\n", + " 159,\n", + " 160,\n", + " 161,\n", + " 162,\n", + " 163,\n", + " 164,\n", + " 165,\n", + " 166,\n", + " 167,\n", + " 168,\n", + " 169,\n", + " 170,\n", + " 171,\n", + " 172,\n", + " 173,\n", + " 174,\n", + " -1,\n", + " -1,\n", + " 175,\n", + " 176,\n", + " 177,\n", + " -1,\n", + " 179,\n", + " 180,\n", + " 181,\n", + " 182,\n", + " 183,\n", + " 184,\n", + " 185,\n", + " 186,\n", + " 187,\n", + " 188,\n", + " 189,\n", + " 190,\n", + " 191,\n", + " -1,\n", + " 193,\n", + " 194,\n", + " 195,\n", + " 196,\n", + " 197,\n", + " 198,\n", + " 199,\n", + " 200,\n", + " 201,\n", + " 202,\n", + " 203,\n", + " 204,\n", + " 205,\n", + " 206,\n", + " 207,\n", + " 208,\n", + " -1,\n", + " 210,\n", + " 211,\n", + " 212,\n", + " 213,\n", + " 214,\n", + " 215,\n", + " 216,\n", + " 217,\n", + " 218,\n", + " 219,\n", + " 220,\n", + " 221,\n", + " 222,\n", + " 223,\n", + " 224,\n", + " 225,\n", + " 226,\n", + " 227,\n", + " -1,\n", + " 229,\n", + " 230,\n", + " -1,\n", + " 232,\n", + " 233,\n", + " 234,\n", + " -1,\n", + " 236,\n", + " 237,\n", + " 238,\n", + " 239,\n", + " 240,\n", + " 241,\n", + " 242,\n", + " 243,\n", + " 244,\n", + " 245,\n", + " 248,\n", + " 249,\n", + " 250,\n", + " 251,\n", + " 252,\n", + " 253,\n", + " 254,\n", + " 255,\n", + " 256,\n", + " 257,\n", + " 258,\n", + " 259,\n", + " 260,\n", + " 261,\n", + " 262,\n", + " 263,\n", + " 264,\n", + " -1,\n", + " 266,\n", + " 267,\n", + " 268,\n", + " 269,\n", + " 270,\n", + " 271,\n", + " 272,\n", + " 273,\n", + " 274,\n", + " 275,\n", + " 276,\n", + " 277,\n", + " 278,\n", + " 279,\n", + " 280,\n", + " 281,\n", + " 282,\n", + " -1,\n", + " -1,\n", + " 283,\n", + " 284,\n", + " 285,\n", + " 286,\n", + " 287,\n", + " 288,\n", + " 289,\n", + " 290,\n", + " 291,\n", + " 292,\n", + " 293,\n", + " 294,\n", + " 295,\n", + " 296,\n", + " 297,\n", + " 298,\n", + " 299,\n", + " 300,\n", + " 301,\n", + " 302,\n", + " 303,\n", + " 304,\n", + " 305,\n", + " 306,\n", + " 307,\n", + " 308,\n", + " 309,\n", + " 310,\n", + " 311,\n", + " 312,\n", + " 313,\n", + " 314,\n", + " 315,\n", + " 316,\n", + " 319,\n", + " 320,\n", + " 321,\n", + " 322,\n", + " 323,\n", + " 324,\n", + " 325,\n", + " 326,\n", + " 327,\n", + " 328,\n", + " 329,\n", + " 330,\n", + " 331,\n", + " 332,\n", + " 333,\n", + " 334,\n", + " 335,\n", + " 336,\n", + " 337,\n", + " 338,\n", + " -1,\n", + " 340,\n", + " 341,\n", + " 342,\n", + " 343,\n", + " 344,\n", + " 345,\n", + " 346,\n", + " 347,\n", + " 348,\n", + " 349,\n", + " 350,\n", + " 351,\n", + " 352,\n", + " -1,\n", + " -1,\n", + " 353,\n", + " 354,\n", + " 355,\n", + " 356,\n", + " 357,\n", + " 358,\n", + " 359,\n", + " 360,\n", + " 361,\n", + " 362,\n", + " 363,\n", + " -1,\n", + " 365,\n", + " 366,\n", + " 367,\n", + " 368,\n", + " 369,\n", + " 370,\n", + " 371,\n", + " 372,\n", + " 373,\n", + " 374,\n", + " 375,\n", + " 376,\n", + " 377,\n", + " 378,\n", + " 379,\n", + " 380,\n", + " 381,\n", + " 382,\n", + " 385,\n", + " 386,\n", + " 387,\n", + " 388,\n", + " 389,\n", + " 390,\n", + " 391,\n", + " 392,\n", + " 393,\n", + " 394,\n", + " 395,\n", + " 396,\n", + " 397,\n", + " 398,\n", + " 399,\n", + " 400,\n", + " 401,\n", + " 402,\n", + " -1,\n", + " 404,\n", + " 405,\n", + " 406,\n", + " 407,\n", + " 408,\n", + " 409,\n", + " 410,\n", + " 411,\n", + " 412,\n", + " 413,\n", + " 414,\n", + " -1]" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(s[\"stack\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "2ac38001-5cb0-4df8-b6ff-0853f3b4a7f3", + "metadata": {}, + "outputs": [], + "source": [ + "ind=dict(zip(s.index,zip(s[\"vh\"],s[\"is_scaf\"])))" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "7c2c51bb-c1d5-4ec3-abb6-15d7d357cf63", + "metadata": {}, + "outputs": [], + "source": [ + "ind[-1]=(-1,-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "3fc0b810-6b65-4cbe-adbb-13ebe72ee1b8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " False,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " False,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " True,\n", + " False]" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "json_data=read_json_file(\"test.json\")\n", - "part=decode_cadnano_part(json_data)\n", - "model=cadnano_part(part)" + "[ind[i]==ind[s[\"threeprime\"][i]] for i in (s.index)]" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 24, "id": "a4d48fe0", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found cadnano version 2 file\n" + "ename": "TypeError", + "evalue": "'NucleicAcidPart' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[24], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m doc\u001b[38;5;241m=\u001b[39mDocument()\n\u001b[0;32m----> 2\u001b[0m \u001b[43mcadnano\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfileio\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mv2decode\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson_data\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m parts \u001b[38;5;241m=\u001b[39m [p \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m doc\u001b[38;5;241m.\u001b[39mgetParts()]\n\u001b[1;32m 4\u001b[0m part\u001b[38;5;241m=\u001b[39mparts[\u001b[38;5;241m0\u001b[39m]\n", + "File \u001b[0;32m/usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/cadnano/fileio/v2decode.py:36\u001b[0m, in \u001b[0;36mdecode\u001b[0;34m(document, obj, emit_signals)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(document: DocT, obj: \u001b[38;5;28mdict\u001b[39m, emit_signals: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[1;32m 25\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Parses a dictionary (obj) created from reading a json file and uses it\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;124;03m to populate the given document with model data.\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;124;03m IOError, AssertionError, TypeError\u001b[39;00m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 36\u001b[0m num_bases \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[43mobj\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mvstrands\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mscaf\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[1;32m 37\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m num_bases \u001b[38;5;241m%\u001b[39m \u001b[38;5;241m32\u001b[39m \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 38\u001b[0m lattice_type \u001b[38;5;241m=\u001b[39m LatticeEnum\u001b[38;5;241m.\u001b[39mSQUARE\n", + "\u001b[0;31mTypeError\u001b[0m: 'NucleicAcidPart' object is not subscriptable" ] } ], @@ -154,13 +8588,47 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 92, "id": "1e934f2b", "metadata": {}, "outputs": [], "source": [ - "strands5 = [o.strand5p() for o in part.oligos()]\n", - "strands3 = [o.strand3p() for o in part.oligos()]" + "strands5 = [o.strand5p() for o in json_data.oligos()]\n", + "strands3 = [o.strand3p() for o in json_data.oligos()]" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "1f942831-b170-4d1b-b445-1f58565bf2f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[<rev_StrandSet(0)>.<Strand(24, 27)>,\n", + " <rev_StrandSet(2)>.<Strand(0, 34)>,\n", + " <rev_StrandSet(3)>.<Strand(37, 41)>,\n", + " <rev_StrandSet(4)>.<Strand(9, 20)>,\n", + " <fwd_StrandSet(1)>.<Strand(21, 38)>,\n", + " <fwd_StrandSet(4)>.<Strand(0, 3)>,\n", + " <rev_StrandSet(5)>.<Strand(0, 3)>,\n", + " <fwd_StrandSet(3)>.<Strand(21, 34)>,\n", + " <fwd_StrandSet(2)>.<Strand(39, 41)>,\n", + " <fwd_StrandSet(0)>.<Strand(39, 41)>,\n", + " <rev_StrandSet(0)>.<Strand(2, 20)>,\n", + " <fwd_StrandSet(5)>.<Strand(28, 39)>,\n", + " <rev_StrandSet(1)>.<Strand(39, 41)>,\n", + " <rev_StrandSet(5)>.<Strand(23, 39)>]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strands3" ] }, { @@ -951,7 +9419,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -965,7 +9433,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.8.19" } }, "nbformat": 4, diff --git a/mrdna/readers/test/test3.ipynb b/mrdna/readers/test/test3.ipynb index 0985a55..6f04987 100644 --- a/mrdna/readers/test/test3.ipynb +++ b/mrdna/readers/test/test3.ipynb @@ -536,9 +536,7 @@ "cell_type": "code", "execution_count": 62, "id": "f666ffb1", - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2115,7 +2113,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2129,7 +2127,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.8.19" } }, "nbformat": 4, diff --git a/mrdna/readers/test/test_cad2.5.json b/mrdna/readers/test/test_cad2.5.json new file mode 100644 index 0000000..e46b1cd --- /dev/null +++ b/mrdna/readers/test/test_cad2.5.json @@ -0,0 +1 @@ +{"format":"3.1","date":"2024-08-08 23:20:21","name":"","parts":[{"name":"NaPart1","color":"#0066cc","is_visible":true,"active_phos":null,"crossover_span_angle":45,"max_vhelix_length":42,"neighbor_active_angle":"","grid_type":2,"virtual_helix_order":[0,1,2,3,4,5],"is_lattice":true,"virtual_helices":{"name":["vh0","vh1","vh2","vh3","vh4","vh5"],"is_visible":[true,true,true,true,true,true],"color":["#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc"],"eulerZ":[0.0,0.0,0.0,0.0,0.0,0.0],"neighbor_active_angle":[0.0,0.0,0.0,0.0,0.0,0.0],"neighbors":["[1, 5]","[0, 2]","[1, 3]","[2, 4]","[3, 5]","[0, 4]"],"bases_per_repeat":[21,21,21,21,21,21],"turns_per_repeat":[2,2,2,2,2,2],"repeat_hint":[2,2,2,2,2,2],"helical_pitch":[1.0,1.0,1.0,1.0,1.0,1.0],"minor_groove_angle":[180.0,180.0,180.0,180.0,180.0,180.0],"length":[42,42,42,42,42,42],"z":[0.0,0.0,0.0,0.0,0.0,0.0]},"origins":[[-1.948557375,1.125,0.0],[0.0,2.25,0.0],[1.948557375,1.125,0.0],[1.948557375,-1.125,0.0],[0.0,-2.25,0.0],[-1.948557375,-1.125,0.0]],"directions":[[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]],"vh_list":[[0,42],[1,42],[2,42],[3,42],[4,42],[5,42]],"strands":{"indices":[[[[0,2],[3,20],[21,35]],[]],[[],[[0,20],[21,41]]],[[[0,23],[24,41]],[]],[[],[[0,9],[10,23],[24,30],[31,41]]],[[[0,9],[10,30],[31,41]],[]],[[],[[0,2],[3,35],[36,41]]]],"properties":[[["#0066cc","#f7931e","#f7931e"],[]],[[],["#f7931e","#f7931e"]],[["#f7931e","#f7931e"],[]],[[],["#0066cc","#f7931e","#f7931e","#0066cc"]],[["#0066cc","#f7931e","#0066cc"],[]],[[],["#333333","#f7931e","#0066cc"]]]},"insertions":[],"xovers":[[0,true,20,1,false,20],[0,true,35,5,false,35],[1,false,0,2,true,0],[1,false,21,0,true,21],[2,true,23,3,false,23],[2,true,41,1,false,41],[3,false,10,4,true,10],[3,false,24,2,true,24],[3,false,31,4,true,31],[4,true,9,3,false,9],[4,true,30,3,false,30],[5,false,3,0,true,3]],"oligos":[{"id_num":4,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo3632","color":"#0066cc","length":20,"is_visible":true},{"id_num":3,"idx5p":30,"is_5p_fwd":false,"is_circular":true,"sequence":null,"name":"oligo8000","color":"#f7931e","length":192,"is_visible":true},{"id_num":3,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo0160","color":"#0066cc","length":22,"is_visible":true},{"id_num":5,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo7152","color":"#0066cc","length":6,"is_visible":true},{"id_num":0,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo8896","color":"#0066cc","length":3,"is_visible":true},{"id_num":5,"idx5p":2,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo1168","color":"#333333","length":3,"is_visible":true}],"instance_properties":[{"slice:position":[0.0,0.0],"grid:position":[0.0,0.0],"path:position":[-12.994158258098764,-4.331386086032921]}],"uuid":"7029b213616f4ab5a1adcbf0d3a59edb"}],"modifications":{}} \ No newline at end of file diff --git a/mrdna/readers/test/test_insert.sc b/mrdna/readers/test/test_insert.sc new file mode 100644 index 0000000..5414ea7 --- /dev/null +++ b/mrdna/readers/test/test_insert.sc @@ -0,0 +1,122 @@ +{ + "version": "0.19.3", + "grid": "honeycomb", + "helices": [ + {"grid_position": [16, 12]}, + {"grid_position": [15, 12]}, + {"grid_position": [15, 13]}, + {"grid_position": [16, 13]}, + {"grid_position": [17, 13]}, + {"grid_position": [17, 12]}, + {"grid_position": [5, 15]} + ], + "strands": [ + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 5, "forward": false, "start": 9, "end": 23}, + {"helix": 4, "forward": true, "start": 9, "end": 16}, + {"helix": 3, "forward": false, "start": 2, "end": 16}, + {"helix": 2, "forward": true, "start": 2, "end": 19, "deletions": [11]}, + {"helix": 1, "forward": false, "start": 5, "end": 19, "insertions": [[10, 1]]}, + {"helix": 0, "forward": true, "start": 5, "end": 37, "insertions": [[13, 10], [29, 11]]}, + {"helix": 1, "forward": false, "start": 19, "end": 37}, + {"helix": 2, "forward": true, "start": 19, "end": 33}, + {"helix": 3, "forward": false, "start": 16, "end": 33, "deletions": [28]}, + {"helix": 4, "forward": true, "start": 16, "end": 40}, + {"helix": 5, "forward": false, "start": 23, "end": 40} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 0, "forward": true, "start": 39, "end": 42} + ] + }, + { + "color": "#16e876", + "domains": [ + {"helix": 1, "forward": true, "start": 3, "end": 21, "insertions": [[10, 1]]}, + {"helix": 0, "forward": false, "start": 2, "end": 21, "insertions": [[13, 10]]} + ] + }, + { + "color": "#cc01d1", + "domains": [ + {"helix": 0, "forward": false, "start": 21, "end": 24}, + {"helix": 1, "forward": true, "start": 21, "end": 39} + ] + }, + { + "color": "#000000", + "domains": [ + {"helix": 5, "forward": true, "start": 9, "end": 28}, + {"helix": 0, "forward": false, "start": 24, "end": 28} + ] + }, + { + "color": "#b8056c", + "domains": [ + {"helix": 0, "forward": false, "start": 28, "end": 39, "insertions": [[29, 11]]}, + {"helix": 5, "forward": true, "start": 28, "end": 40} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 1, "forward": false, "start": 39, "end": 42} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 2, "forward": true, "start": 39, "end": 42} + ] + }, + { + "color": "#888888", + "domains": [ + {"helix": 2, "forward": false, "start": 0, "end": 35, "deletions": [11]} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 3, "forward": false, "start": 37, "end": 42} + ] + }, + { + "color": "#cc0000", + "domains": [ + {"helix": 3, "forward": true, "start": 0, "end": 21}, + {"helix": 4, "forward": false, "start": 9, "end": 21} + ] + }, + { + "color": "#888888", + "domains": [ + {"helix": 4, "forward": false, "start": 21, "end": 40}, + {"helix": 3, "forward": true, "start": 21, "end": 35, "deletions": [28]} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 4, "forward": true, "start": 0, "end": 4} + ] + }, + { + "color": "#0066cc", + "is_scaffold": true, + "domains": [ + {"helix": 5, "forward": false, "start": 0, "end": 4} + ] + } + ] +} \ No newline at end of file diff --git a/mrdna/readers/test/test_insert_2.5.json b/mrdna/readers/test/test_insert_2.5.json new file mode 100644 index 0000000..98fba76 --- /dev/null +++ b/mrdna/readers/test/test_insert_2.5.json @@ -0,0 +1 @@ +{"format":"3.1","date":"2024-08-12 23:06:06","name":"","parts":[{"name":"NaPart1","color":"#0066cc","is_visible":true,"active_phos":null,"crossover_span_angle":45,"max_vhelix_length":42,"neighbor_active_angle":"","grid_type":2,"virtual_helix_order":[0,1,2,3,4,5,6],"is_lattice":true,"2":0,"virtual_helices":{"name":["vh0","vh1","vh2","vh3","vh4","vh5","vh6"],"is_visible":[true,true,true,true,true,true,true],"color":["#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc"],"eulerZ":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbor_active_angle":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbors":["[1, 5]","[0, 2]","[1, 3]","[2, 4]","[3, 5]","[0, 4]","[]"],"bases_per_repeat":[21,21,21,21,21,21,21],"turns_per_repeat":[2,2,2,2,2,2,2],"repeat_hint":[2,2,2,2,2,2,2],"helical_pitch":[1.0,1.0,1.0,1.0,1.0,1.0,1.0],"minor_groove_angle":[180.0,180.0,180.0,180.0,180.0,180.0,180.0],"length":[42,42,42,42,42,42,42],"z":[0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"origins":[[7.7942295,9.0,0.0],[5.845672125,7.875,0.0],[5.845672125,5.625,0.0],[7.7942295,4.5,0.0],[9.742786875,5.625,0.0],[9.742786875,7.875,0.0],[-13.639901625,-1.125,0.0]],"directions":[[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]],"vh_list":[[0,42],[1,42],[2,42],[3,42],[4,42],[5,42],[6,42]],"strands":{"indices":[[[[5,36],[39,41]],[[2,20],[21,23],[24,27],[28,38]]],[[[3,20],[21,38]],[[5,18],[19,36],[39,41]]],[[[2,18],[19,32],[39,41]],[[0,34]]],[[[0,20],[21,34]],[[2,15],[16,32],[37,41]]],[[[0,3],[9,15],[16,39]],[[9,20],[21,39]]],[[[9,27],[28,39]],[[0,3],[9,22],[23,39]]],[[],[]]],"properties":[[["#0066cc","#0066cc"],["#16e876","#cc01d1","#000000","#b8056c"]],[["#16e876","#cc01d1"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#888888"]],[["#cc0000","#888888"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#cc0000","#888888"]],[["#000000","#b8056c"],["#0066cc","#0066cc","#0066cc"]],[[],[]]]},"insertions":[[0,13,10],[0,29,11],[1,10,1],[2,11,-1],[3,28,-1]],"xovers":[[0,true,36,1,false,36],[0,false,21,1,true,21],[0,false,28,5,true,28],[1,true,20,0,false,20],[1,false,5,0,true,5],[1,false,19,2,true,19],[2,true,18,1,false,18],[2,true,32,3,false,32],[3,true,20,4,false,20],[3,false,2,2,true,2],[3,false,16,4,true,16],[4,true,15,3,false,15],[4,true,39,5,false,39],[4,false,21,3,true,21],[5,true,27,0,false,27],[5,false,9,4,true,9]],"oligos":[{"id_num":1,"idx5p":3,"is_5p_fwd":true,"is_circular":false,"sequence":" TTGGAACAAGAGTCCGGGAGATAGGGTTGAGTGTTGTTCCAGT ","name":"oligo3216","color":"#16e876","length":48,"is_visible":true},{"id_num":0,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo6480","color":"#0066cc","length":3,"is_visible":true},{"id_num":5,"idx5p":22,"is_5p_fwd":false,"is_circular":false,"sequence":"TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCA","name":"oligo8640","color":"#0066cc","length":208,"is_visible":true},{"id_num":1,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo6720","color":"#0066cc","length":3,"is_visible":true},{"id_num":3,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo6128","color":"#0066cc","length":5,"is_visible":true},{"id_num":3,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":" GACTCCAACGTCAACCCCAGTTTGAGGGCGA","name":"oligo8288","color":"#cc0000","length":33,"is_visible":true},{"id_num":4,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo1072","color":"#0066cc","length":4,"is_visible":true},{"id_num":4,"idx5p":39,"is_5p_fwd":false,"is_circular":false,"sequence":"CAGCAAGCGGTCCACGCTGGCAGGCGAAAA ","name":"oligo3232","color":"#888888","length":32,"is_visible":true},{"id_num":2,"idx5p":34,"is_5p_fwd":false,"is_circular":false,"sequence":" TCCTGTTTGATGGTACTATTAAAGAACGTG ","name":"oligo8144","color":"#888888","length":34,"is_visible":true},{"id_num":2,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo0304","color":"#0066cc","length":3,"is_visible":true},{"id_num":5,"idx5p":9,"is_5p_fwd":true,"is_circular":false,"sequence":"AAAACCGTCTATCATGGCCATAG","name":"oligo2160","color":"#000000","length":23,"is_visible":true},{"id_num":0,"idx5p":23,"is_5p_fwd":false,"is_circular":false,"sequence":"CCCTTCCGAAATCGGCAAA ","name":"oligo4320","color":"#cc01d1","length":21,"is_visible":true},{"id_num":0,"idx5p":38,"is_5p_fwd":false,"is_circular":false,"sequence":" ATCCCTTATAAATCAAAAGACTGAGAGAGTTG","name":"oligo2032","color":"#b8056c","length":34,"is_visible":true},{"id_num":5,"idx5p":3,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo7088","color":"#0066cc","length":4,"is_visible":true}],"instance_properties":[{"slice:position":[0.0,0.0],"grid:position":[0.0,0.0],"path:position":[0.0,0.0]}],"uuid":"b0dc440fa30e4f96bb04ce198ab14d55"}],"modifications":{}} \ No newline at end of file diff --git a/mrdna/readers/test/test_insert_seq2.json b/mrdna/readers/test/test_insert_seq2.json new file mode 100644 index 0000000..09eafc2 --- /dev/null +++ b/mrdna/readers/test/test_insert_seq2.json @@ -0,0 +1 @@ +{"format":"3.1","date":"2024-08-13 19:10:11","name":"","parts":[{"name":"NaPart2","color":"#0066cc","is_visible":true,"active_phos":null,"crossover_span_angle":45,"max_vhelix_length":42,"neighbor_active_angle":"","grid_type":2,"virtual_helix_order":[0,1,2,3,4,5,6],"is_lattice":true,"2":0,"virtual_helices":{"name":["vh0","vh1","vh2","vh3","vh4","vh5","vh6"],"is_visible":[true,true,true,true,true,true,true],"color":["#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc"],"eulerZ":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbor_active_angle":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbors":["[1, 5]","[0, 2]","[1, 3]","[2, 4]","[3, 5]","[0, 4]","[]"],"bases_per_repeat":[21,21,21,21,21,21,21],"turns_per_repeat":[2,2,2,2,2,2,2],"repeat_hint":[2,2,2,2,2,2,2],"helical_pitch":[1.0,1.0,1.0,1.0,1.0,1.0,1.0],"minor_groove_angle":[180.0,180.0,180.0,180.0,180.0,180.0,180.0],"length":[42,42,42,42,42,42,42],"z":[0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"origins":[[7.7942295,9.0,0.0],[5.845672125,7.875,0.0],[5.845672125,5.625,0.0],[7.7942295,4.5,0.0],[9.742786875,5.625,0.0],[9.742786875,7.875,0.0],[-13.639901625,-1.125,0.0]],"directions":[[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]],"vh_list":[[0,42],[1,42],[2,42],[3,42],[4,42],[5,42],[6,42]],"strands":{"indices":[[[[5,36],[39,41]],[[2,20],[21,23],[24,27],[28,38]]],[[[3,20],[21,38]],[[5,18],[19,36],[39,41]]],[[[2,18],[19,32],[39,41]],[[0,34]]],[[[0,20],[21,34]],[[2,15],[16,32],[37,41]]],[[[0,3],[9,15],[16,39]],[[9,20],[21,39]]],[[[9,27],[28,39]],[[0,3],[9,22],[23,39]]],[[],[]]],"properties":[[["#0066cc","#0066cc"],["#16e876","#cc01d1","#000000","#b8056c"]],[["#16e876","#cc01d1"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#888888"]],[["#cc0000","#888888"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#cc0000","#888888"]],[["#000000","#b8056c"],["#0066cc","#0066cc","#0066cc"]],[[],[]]]},"insertions":[[0,13,10],[0,29,11],[1,10,1],[2,11,-1],[3,28,-1]],"xovers":[[0,true,36,1,false,36],[0,false,21,1,true,21],[0,false,28,5,true,28],[1,true,20,0,false,20],[1,false,5,0,true,5],[1,false,19,2,true,19],[2,true,18,1,false,18],[2,true,32,3,false,32],[3,true,20,4,false,20],[3,false,2,2,true,2],[3,false,16,4,true,16],[4,true,15,3,false,15],[4,true,39,5,false,39],[4,false,21,3,true,21],[5,true,27,0,false,27],[5,false,9,4,true,9]],"oligos":[{"id_num":5,"idx5p":3,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo5104","color":"#0066cc","length":4,"is_visible":true},{"id_num":1,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo8096","color":"#0066cc","length":3,"is_visible":true},{"id_num":0,"idx5p":38,"is_5p_fwd":false,"is_circular":false,"sequence":" ATCCCTTATAAATCAAAAGACTGAGAGAGTTG","name":"oligo8448","color":"#b8056c","length":34,"is_visible":true},{"id_num":0,"idx5p":23,"is_5p_fwd":false,"is_circular":false,"sequence":"CCCTTCCGAAATCGGCAAA ","name":"oligo6928","color":"#cc01d1","length":21,"is_visible":true},{"id_num":3,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":" GACTCCAACGTCAACCCCAGTTTGAGGGCGA","name":"oligo5280","color":"#cc0000","length":33,"is_visible":true},{"id_num":5,"idx5p":9,"is_5p_fwd":true,"is_circular":false,"sequence":"AAAACCGTCTATCATGGCCATAG","name":"oligo5056","color":"#000000","length":23,"is_visible":true},{"id_num":2,"idx5p":34,"is_5p_fwd":false,"is_circular":false,"sequence":" TCCTGTTTGATGGTACTATTAAAGAACGTG ","name":"oligo3616","color":"#888888","length":34,"is_visible":true},{"id_num":0,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo9504","color":"#0066cc","length":3,"is_visible":true},{"id_num":5,"idx5p":22,"is_5p_fwd":false,"is_circular":false,"sequence":"TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCA","name":"oligo3120","color":"#0066cc","length":208,"is_visible":true},{"id_num":3,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo7728","color":"#0066cc","length":5,"is_visible":true},{"id_num":1,"idx5p":3,"is_5p_fwd":true,"is_circular":false,"sequence":" TTGGAACAAGAGTCCGGGAGATAGGGTTGAGTGTTGTTCCAGT ","name":"oligo7632","color":"#16e876","length":48,"is_visible":true},{"id_num":2,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo6336","color":"#0066cc","length":3,"is_visible":true},{"id_num":4,"idx5p":39,"is_5p_fwd":false,"is_circular":false,"sequence":"CAGCAAGCGGTCCACGCTGGCAGGCGAAAA ","name":"oligo7376","color":"#888888","length":32,"is_visible":true},{"id_num":4,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":"TGAT","name":"oligo9536","color":"#0066cc","length":4,"is_visible":true}],"instance_properties":[{"slice:position":[0.0,0.0],"grid:position":[0.0,0.0],"path:position":[0.0,0.0]}],"uuid":"82ed578c79094c379b902a07db3713e9"}],"modifications":{}} \ No newline at end of file diff --git a/mrdna/readers/test/test_insert_seq3.json b/mrdna/readers/test/test_insert_seq3.json new file mode 100644 index 0000000..462575c --- /dev/null +++ b/mrdna/readers/test/test_insert_seq3.json @@ -0,0 +1 @@ +{"format":"3.1","date":"2024-08-13 19:40:10","name":"","parts":[{"name":"NaPart2","color":"#0066cc","is_visible":true,"active_phos":null,"crossover_span_angle":45,"max_vhelix_length":42,"neighbor_active_angle":"","grid_type":2,"virtual_helix_order":[0,1,2,3,4,5,6],"is_lattice":true,"2":0,"virtual_helices":{"name":["vh0","vh1","vh2","vh3","vh4","vh5","vh6"],"is_visible":[true,true,true,true,true,true,true],"color":["#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc","#0066cc"],"eulerZ":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbor_active_angle":[0.0,0.0,0.0,0.0,0.0,0.0,0.0],"neighbors":["[1, 5]","[0, 2]","[1, 3]","[2, 4]","[3, 5]","[0, 4]","[]"],"bases_per_repeat":[21,21,21,21,21,21,21],"turns_per_repeat":[2,2,2,2,2,2,2],"repeat_hint":[2,2,2,2,2,2,2],"helical_pitch":[1.0,1.0,1.0,1.0,1.0,1.0,1.0],"minor_groove_angle":[180.0,180.0,180.0,180.0,180.0,180.0,180.0],"length":[42,42,42,42,42,42,42],"z":[0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"origins":[[7.7942295,9.0,0.0],[5.845672125,7.875,0.0],[5.845672125,5.625,0.0],[7.7942295,4.5,0.0],[9.742786875,5.625,0.0],[9.742786875,7.875,0.0],[-13.639901625,-1.125,0.0]],"directions":[[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]],"vh_list":[[0,42],[1,42],[2,42],[3,42],[4,42],[5,42],[6,42]],"strands":{"indices":[[[[5,36],[39,41]],[[2,20],[21,23],[24,27],[28,38]]],[[[3,20],[21,38]],[[5,18],[19,36],[39,41]]],[[[2,18],[19,32],[39,41]],[[0,34]]],[[[0,20],[21,34]],[[2,15],[16,32],[37,41]]],[[[0,3],[9,15],[16,39]],[[9,20],[21,39]]],[[[9,27],[28,39]],[[0,3],[9,22],[23,39]]],[[],[]]],"properties":[[["#0066cc","#0066cc"],["#16e876","#cc01d1","#000000","#b8056c"]],[["#16e876","#cc01d1"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#888888"]],[["#cc0000","#888888"],["#0066cc","#0066cc","#0066cc"]],[["#0066cc","#0066cc","#0066cc"],["#cc0000","#888888"]],[["#000000","#b8056c"],["#0066cc","#0066cc","#0066cc"]],[[],[]]]},"insertions":[[0,13,10],[0,29,11],[1,10,1],[2,11,-1],[3,28,-1]],"xovers":[[0,true,36,1,false,36],[0,false,21,1,true,21],[0,false,28,5,true,28],[1,true,20,0,false,20],[1,false,5,0,true,5],[1,false,19,2,true,19],[2,true,18,1,false,18],[2,true,32,3,false,32],[3,true,20,4,false,20],[3,false,2,2,true,2],[3,false,16,4,true,16],[4,true,15,3,false,15],[4,true,39,5,false,39],[4,false,21,3,true,21],[5,true,27,0,false,27],[5,false,9,4,true,9]],"oligos":[{"id_num":5,"idx5p":3,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo5104","color":"#0066cc","length":4,"is_visible":true},{"id_num":1,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo8096","color":"#0066cc","length":3,"is_visible":true},{"id_num":0,"idx5p":38,"is_5p_fwd":false,"is_circular":false,"sequence":" ATCCCTTATAAATCAAAAGACTGAGAGAGTTG","name":"oligo8448","color":"#b8056c","length":34,"is_visible":true},{"id_num":0,"idx5p":23,"is_5p_fwd":false,"is_circular":false,"sequence":"CCCTTCCGAAATCGGCAAA ","name":"oligo6928","color":"#cc01d1","length":21,"is_visible":true},{"id_num":3,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":" GACTCCAACGTCAACCCCAGTTTGAGGGCGA","name":"oligo5280","color":"#cc0000","length":33,"is_visible":true},{"id_num":5,"idx5p":9,"is_5p_fwd":true,"is_circular":false,"sequence":"AAAACCGTCTATCATGGCCATAG","name":"oligo5056","color":"#000000","length":23,"is_visible":true},{"id_num":2,"idx5p":34,"is_5p_fwd":false,"is_circular":false,"sequence":" TCCTGTTTGATGGTACTATTAAAGAACGTG ","name":"oligo3616","color":"#888888","length":34,"is_visible":true},{"id_num":0,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo9504","color":"#0066cc","length":3,"is_visible":true},{"id_num":5,"idx5p":22,"is_5p_fwd":false,"is_circular":false,"sequence":"TGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGGCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGAACCACCATCAAACAGGATTTTCGCCTGCTGGGGCAAACCAGCGTGGACCGCTTGCTGCAACTCTCTCAGGGCCA","name":"oligo3120","color":"#0066cc","length":208,"is_visible":true},{"id_num":3,"idx5p":41,"is_5p_fwd":false,"is_circular":false,"sequence":null,"name":"oligo7728","color":"#0066cc","length":5,"is_visible":true},{"id_num":1,"idx5p":3,"is_5p_fwd":true,"is_circular":false,"sequence":" TTGGAACAAGAGTCCGGGAGATAGGGTTGAGTGTTGTTCCAGT ","name":"oligo7632","color":"#16e876","length":48,"is_visible":true},{"id_num":2,"idx5p":39,"is_5p_fwd":true,"is_circular":false,"sequence":null,"name":"oligo6336","color":"#0066cc","length":3,"is_visible":true},{"id_num":4,"idx5p":39,"is_5p_fwd":false,"is_circular":false,"sequence":"CAGCAAGCGGTCCACGCTGGCAGGCGAAAA ","name":"oligo7376","color":"#888888","length":32,"is_visible":true},{"id_num":4,"idx5p":0,"is_5p_fwd":true,"is_circular":false,"sequence":"TGAT","name":"oligo9536","color":"#0066cc","length":4,"is_visible":true}],"instance_properties":[{"slice:position":[0.0,0.0],"grid:position":[0.0,0.0],"path:position":[0.0,0.0]}],"uuid":"82ed578c79094c379b902a07db3713e9"}],"modifications":{}} \ No newline at end of file -- GitLab