main.py 3.65 KB
Newer Older
Stelios Karozis's avatar
Stelios Karozis committed
1
import os
Stelios Karozis's avatar
Stelios Karozis committed
2
import tooba_f as tbf
Stelios Karozis's avatar
Stelios Karozis committed
3 4 5 6 7 8
###################################################
#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 
###################################################
Stelios Karozis's avatar
Stelios Karozis committed
9
TRAJ='system/eq_traj.trr'
Stelios Karozis's avatar
Stelios Karozis committed
10
NUM_FR=1
Stelios Karozis's avatar
Stelios Karozis committed
11
GRO='system/eq_final.gro'
Stelios Karozis's avatar
Stelios Karozis committed
12
HEAD=True
Stelios Karozis's avatar
Stelios Karozis committed
13
HD_GROUP={'NS':['C6', 'Na', 'P4', 'P3', 'C7'], 'CHOL':['ROH'], 'FFA':['AC']}
Stelios Karozis's avatar
Stelios Karozis committed
14
TAIL=False
Stelios Karozis's avatar
Stelios Karozis committed
15 16
TL_GROUP={'NS':['C3', 'C4', 'C5', 'C8', 'C9', 'C10'], 'CHOL':['R1', 'R2', 'R3', 'R4', 'R5'], 'FFA':['C1', 'C2', 'C3', 'C4']}
DISCET=[3, 3, 3]
Stelios Karozis's avatar
Stelios Karozis committed
17
RES_NAME='time_domain_c-normal-cg'
Stelios Karozis's avatar
Stelios Karozis committed
18
###################################################
Stelios Karozis's avatar
Stelios Karozis committed
19 20 21 22 23 24 25
###################################################
print(' ')
print('================')
print('Starting process')
print('================')
###################################################
###################################################
26
#Read .gro file
Stelios Karozis's avatar
Stelios Karozis committed
27
_,data_num,_,res_num,res_type,atom_type,atom_num,_ = tbf.read_gro(GRO)
Stelios Karozis's avatar
Stelios Karozis committed
28 29 30 31 32 33 34 35 36 37 38
print(' ')
###################################################
if os.path.isfile('./data.pkl'):
    print('WARNING: Preprocessing files exist.')
    print('         Erase data.pkl if the system is new.')
    print('--------------------------------------------')
    data_all=tbf.frompickle('./data.pkl')
else:
    #Read .trr file
    data_all=tbf.fr_export(trajfile=TRAJ,num_frames=NUM_FR)
    tbf.topickle(fl=data_all, sv_name='data')
39 40
###################################################
if HEAD==True:
Stelios Karozis's avatar
Stelios Karozis committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
    if os.path.isfile('./ndx_HEAD.pkl'): 
        print('WARNING: Preprocessing files exist.')
        print('         Erase ndx_HEAD.pkl if the system is new.')
        print('--------------------------------------------')
        group_ndx=tbf.frompickle('./ndx_HEAD.pkl')
    else:
        #Find atom type index in lists created above
        group_ndx=tbf.atomid_data(res_num, res_type, atom_type, atom_num, group=HD_GROUP)
        tbf.topickle(fl=group_ndx, sv_name='ndx_HEAD')
###################################################
if os.path.isfile('./box.pkl'):
    print('WARNING: Preprocessing files exist.')
    print('         Erase box.pkl if the system is new')
    print('         or new grid is applied !')
    print('--------------------------------------------')
    box_res=tbf.frompickle('./box.pkl')
else:
    #Create subdomains coordinates
    box_p=tbf.domain_decomposition(data=data_all,dx=DISCET[0],dy=DISCET[1],dz=DISCET[2])
60 61 62 63
    #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)
Stelios Karozis's avatar
Stelios Karozis committed
64 65 66 67
    tbf.topickle(fl=box_res, sv_name='box')
###################################################
###################################################
if HEAD==True:
68
    #Creates dictionary with coordinates per subdomain for each frame
Stelios Karozis's avatar
Stelios Karozis committed
69
    coord_norm,coord_vector=tbf.sub_coord(box=box_res, data=data_all, res_num=res_num)
70
    #Creates dictionary with c, normal per subdomain for each frame
Stelios Karozis's avatar
Stelios Karozis committed
71 72 73
    surf=tbf.coord2norm2cg(coord_vector,img=True)
    print(surf)
    exit()
Stelios Karozis's avatar
Stelios Karozis committed
74 75
    tbf.topickle(fl=surf, sv_name=RES_NAME)
    tbf.tojson(fl=surf, sv_name=RES_NAME)
76 77 78 79
###################################################
if TAIL==True:
    #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
80 81
    vector=tbf.coord2vector(coord_vector)
###################################################
Stelios Karozis's avatar
Stelios Karozis committed
82 83
if HEAD==True and TAIL==True:
    tbf.SurfVector_angle(surf,vector)