From ab0e3b721bdba8a06dc71559d31c91f9041fe4ba Mon Sep 17 00:00:00 2001 From: pinyili2 <pinyili2@illinois.edu> Date: Wed, 21 Aug 2024 14:16:49 -0500 Subject: [PATCH] add --- mrdna/readers/segmentmodel_from_cadnano.py | 5 +---- .../readers/segmentmodel_from_oxdna_pinyi.py | 21 ++++++++++++++----- mrdna/readers/segmentmodel_from_scadnano.py | 8 +++++++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/mrdna/readers/segmentmodel_from_cadnano.py b/mrdna/readers/segmentmodel_from_cadnano.py index 7c6c33c..a31a134 100644 --- a/mrdna/readers/segmentmodel_from_cadnano.py +++ b/mrdna/readers/segmentmodel_from_cadnano.py @@ -178,10 +178,7 @@ def gen_prop_table(part): for i in not_stacked: zid=int(nt_prop.loc[i]["zid"]) fwd=nt_prop.loc[i]["fwd"] - if fwd == True: - zid+=1 - else: - zid-=1 + zid+=fwd*2-1 try: ind_tuple.index((nt_prop.loc[i]["vh"],str(zid),fwd)) nt_prop["stack_tuple"][i]=(nt_prop.loc[i]["vh"],str(zid),fwd) diff --git a/mrdna/readers/segmentmodel_from_oxdna_pinyi.py b/mrdna/readers/segmentmodel_from_oxdna_pinyi.py index b14e94f..9dcbbd1 100644 --- a/mrdna/readers/segmentmodel_from_oxdna_pinyi.py +++ b/mrdna/readers/segmentmodel_from_oxdna_pinyi.py @@ -103,15 +103,21 @@ def mrdna_model_from_oxdna(coordinate_file, topology_file,virt2nuc=None,get_nt_p vh_bool=1-(nt_prop["vh"]%2)*2 is_scaf_bool=nt_prop["is_scaf"]*2-1 nt_prop["fwd"]=np.array((is_scaf_bool.T*vh_bool+1)/2,dtype=bool) - + bp_map=dict(zip(zip(nt_prop["vh"],nt_prop["zid"],nt_prop["fwd"]),nt_prop.index)) + for i in nt_prop.index: if nt_prop.loc[i]["threeprime"] in nt_prop.index: if nt_prop.loc[nt_prop.loc[i]["threeprime"]]["vh"]!=nt_prop.loc[i]["vh"]: - nt_prop["stack"][i]=-1 - bp_map=dict(zip(zip(nt_prop["vh"],nt_prop["zid"],nt_prop["is_scaf"]),nt_prop.index)) + vh=nt_prop.loc[i]["vh"] + zid=int(nt_prop.loc[i]["zid"])+int(nt_prop.loc[i]["fwd"])*2-1 + if (vh,str(zid),nt_prop.loc[i]["fwd"]) in bp_map.keys(): + nt_prop["stack"][i]=bp_map[ (vh,str(zid),nt_prop.loc[i]["fwd"])] + else: + nt_prop["stack"][i]=-1 + bp=-np.ones(len(nt_prop.index),dtype=int) counter=0 - for i,j,k in zip(nt_prop["vh"],nt_prop["zid"],nt_prop["is_scaf"]): + for i,j,k in zip(nt_prop["vh"],nt_prop["zid"],nt_prop["fwd"]): try: bp[counter]=bp_map[(i,j,not(k))] except: @@ -121,7 +127,12 @@ def mrdna_model_from_oxdna(coordinate_file, topology_file,virt2nuc=None,get_nt_p non_stack_ind,=np.where(nt_prop["stack"]==-1) for i in non_stack_ind: - zid=nt_prop + zid=int(nt_prop.loc[i][zid])+int(nt_prop.loc[i]["fwd"])*2-1 + try: + nt_prop["stack"][i]=bp_map[(nt_prop.loc[i]["vh"],str(zid),nt_prop.loc[i]["fwd"])] + except: + continue + return nt_prop try: nt_prop=get_virt2nuc(virt2nuc,top_data) diff --git a/mrdna/readers/segmentmodel_from_scadnano.py b/mrdna/readers/segmentmodel_from_scadnano.py index da2d4c4..863a61b 100644 --- a/mrdna/readers/segmentmodel_from_scadnano.py +++ b/mrdna/readers/segmentmodel_from_scadnano.py @@ -120,6 +120,14 @@ def gen_prop_table(fname): except: continue nt_prop["bp"]=bp + non_stack_ind,=np.where(nt_prop["stack"]==-1) + for i in non_stack_ind: + zid=int(nt_prop.loc[i][zid])+int(nt_prop.loc[i]["fwd"])*2-1 + try: + nt_prop["stack"][i]=bp_map[(nt_prop.loc[i]["vh"],str(zid),nt_prop.loc[i]["fwd"])] + except: + continue + nt_prop["r"]=list(np.array([nt_prop["x"],nt_prop["y"],nt_prop["z"]],dtype="<f4").T) return nt_prop -- GitLab