main.py 2.37 KB
Newer Older
Stelios Karozis's avatar
Stelios Karozis committed
1
import tooba_f as tbf
Stelios Karozis's avatar
Stelios Karozis committed
2 3 4 5 6 7 8 9 10 11 12
###################################################
#NOTICE:    resids of head in each subdomain may differ in tail case
#           keep all atoms of group in the first occurent subdomain
#           in case of tail is the one closest to the head, hence
#           the code is a good approximation 
###################################################
TRAJ='traj.trr'
NUM_FR=1
GRO='initial.gro'
HEAD=True
HD_GROUP={'MMA':['C1', 'C2']}
Stelios Karozis's avatar
Stelios Karozis committed
13
TAIL=False
Stelios Karozis's avatar
Stelios Karozis committed
14
TL_GROUP={'MMA':['C3', 'C4', 'C5']}
Stelios Karozis's avatar
Stelios Karozis committed
15 16
DISCET=[1, 1, 1]
RES_NAME='time_domain_c-normal-cg'
Stelios Karozis's avatar
Stelios Karozis committed
17
###################################################
18
#Read .trr file
Stelios Karozis's avatar
Stelios Karozis committed
19
data_all=tbf.fr_export(trajfile=TRAJ,num_frames=NUM_FR)
20
#Read .gro file
Stelios Karozis's avatar
Stelios Karozis committed
21
_,data_num,_,res_num,res_type,atom_type,atom_num,_ = tbf.read_gro(GRO)
22
#Create subdomains coordinates
Stelios Karozis's avatar
Stelios Karozis committed
23
box_p=tbf.domain_decomposition(data=data_all,dx=DISCET[0],dy=DISCET[1],dz=DISCET[2])
Stelios Karozis's avatar
Stelios Karozis committed
24

25 26 27
###################################################
if HEAD==True:
    #Find atom type index in lists created above
Stelios Karozis's avatar
Stelios Karozis committed
28
    group_ndx=tbf.atomid_data(res_num, atom_type, atom_num, group=HD_GROUP)
29 30 31 32 33 34 35 36
    #Assign desired atoms (from above function) to subdomains
    ##result1: {step:{res:{atom_type:{atom_num:(subX,subYsubZ)}}}}
    ##result2: {step:{res:{atom_type:{(subX,subYsubZ):[atom_num]}}}}
    _,box_res=tbf.atom2grid(data_all,box_p, group_ndx)
    #Creates dictionary with coordinates per subdomain for each frame
    coord_norm,_=tbf.sub_coord(box=box_res, data=data_all, res_num=res_num)
    #Creates dictionary with c, normal per subdomain for each frame
    surf=tbf.coord2norm(coord_norm,img=True)
Stelios Karozis's avatar
Stelios Karozis committed
37 38 39

    tbf.topickle(fl=surf, sv_name=RES_NAME)
    tbf.tojson(fl=surf, sv_name=RES_NAME)
40 41 42
###################################################
if TAIL==True:
    #Find atom type index in lists created above
Stelios Karozis's avatar
Stelios Karozis committed
43
    group_ndx=tbf.atomid_data(res_num, atom_type, atom_num, group=TL_GROUP)
44 45 46 47 48 49
    #Assign desired atoms (from above function) to subdomains
    ##result1: {step:{res:{atom_type:{atom_num:(subX,subYsubZ)}}}}
    ##result2: {step:{res:{atom_type:{(subX,subYsubZ):[atom_num]}}}}
    _,box_res=tbf.atom2grid(data_all,box_p, group_ndx)
    #Creates dictionary with coordinates per subdomain for each frame
    _,coord_vector=tbf.sub_coord(box=box_res, data=data_all, res_num=res_num)
Stelios Karozis's avatar
Stelios Karozis committed
50 51
    vector=tbf.coord2vector(coord_vector)
###################################################
Stelios Karozis's avatar
Stelios Karozis committed
52 53
if HEAD==True and TAIL==True:
    tbf.SurfVector_angle(surf,vector)