From 4d277115938b7001cf21dcaa081df7663e645028 Mon Sep 17 00:00:00 2001 From: skarozis Date: Tue, 19 May 2020 15:10:35 +0300 Subject: [PATCH] Print data function --- .gitignore | 5 +++++ CHANGELOG | 10 ++++++++++ main.py | 12 +++++++++--- tooba_f.py | 43 +++++++++++++++++++++++++++++++++++-------- 4 files changed, 59 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b43ee8c..5a81c17 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,8 @@ __pycache__/ .vscode/ *.png *test* +*.json +*.pkl +*.trr +*.gro +*.code-workspace \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG index 7614f20..c1a3b89 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.4] - 2020-05-19 +### Added +- code for print data in json and pickle format + +### Changed +- debug decomposition code + +### Removed +- None + ## [0.0.3] - 2020-05-14 ### Added - code for assign coordinates to subdomain diff --git a/main.py b/main.py index 3f0f399..b06d708 100644 --- a/main.py +++ b/main.py @@ -10,15 +10,17 @@ NUM_FR=1 GRO='initial.gro' HEAD=True HD_GROUP={'MMA':['C1', 'C2']} -TAIL=True +TAIL=False TL_GROUP={'MMA':['C3', 'C4', 'C5']} +DISCET=[1, 1, 1] +RES_NAME='time_domain_c-normal-cg' ################################################### #Read .trr file data_all=tbf.fr_export(trajfile=TRAJ,num_frames=NUM_FR) #Read .gro file _,data_num,_,res_num,res_type,atom_type,atom_num,_ = tbf.read_gro(GRO) #Create subdomains coordinates -box_p=tbf.domain_decomposition(data=data_all,dx=2,dy=2,dz=2) +box_p=tbf.domain_decomposition(data=data_all,dx=DISCET[0],dy=DISCET[1],dz=DISCET[2]) ################################################### if HEAD==True: @@ -32,6 +34,9 @@ if HEAD==True: 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) + + tbf.topickle(fl=surf, sv_name=RES_NAME) + tbf.tojson(fl=surf, sv_name=RES_NAME) ################################################### if TAIL==True: #Find atom type index in lists created above @@ -44,4 +49,5 @@ if TAIL==True: _,coord_vector=tbf.sub_coord(box=box_res, data=data_all, res_num=res_num) vector=tbf.coord2vector(coord_vector) ################################################### -tbf.SurfVector_angle(surf,vector) \ No newline at end of file +if HEAD==True and TAIL==True: + tbf.SurfVector_angle(surf,vector) \ No newline at end of file diff --git a/tooba_f.py b/tooba_f.py index 3497f3f..3fbc733 100644 --- a/tooba_f.py +++ b/tooba_f.py @@ -1,6 +1,7 @@ import numpy as np import scipy.optimize - +import pickle as pkl +import json #from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt @@ -43,6 +44,19 @@ def angle_between3D(v1, v2): else: return 360 - angle +def center_gravity(a): + m=len(a) + cg = np.sum(a)/m + return cg + +def topickle(fl, sv_name): + with open(sv_name+'.pkl', 'wb') as handle: + pkl.dump(fl, handle, protocol=pkl.HIGHEST_PROTOCOL) + +def tojson(fl, sv_name): + with open(sv_name+'.json', 'w') as file: + file.write(json.dumps(str(fl))) + def plot_surf(data, normal, c, save_name): #Plot surface fig = plt.figure() @@ -72,6 +86,9 @@ def plot_surf(data, normal, c, save_name): ax.set_zlabel('z') plt.savefig(save_name+'.png') #plt.show() + plt.clf() + plt.cla() + plt.close() def points2vector(data): """ @@ -202,26 +219,33 @@ def domain_decomposition(data,dx,dy,dz): box_y=int(ys/dy) box_z=int(zs/dz) + xx=[] - for i in range(0,xs+1,box_x): +# for i in range(0,xs+1,dx): + for i in range(0,box_x): xx.append(i) box_p[step]['x']=xx yy=[] - for i in range(0,ys+1,box_y): +# for i in range(0,ys+1,dy): + for i in range(0,box_y): yy.append(i) box_p[step]['y']=yy zz=[] - for i in range(0,zs+1,box_z): +# for i in range(0,zs+1,dz): + for i in range(0,box_z): zz.append(i) box_p[step]['z']=zz xyz=[] - for ix in range(0,xs+1,box_x): - for iy in range(0,ys+1,box_y): - for iz in range(0,zs+1,box_z): +# for ix in range(0,xs+1,dx): + for ix in range(0,box_x): +# for iy in range(0,ys+1,dy): + for iy in range(0,box_y): +# for iz in range(0,zs+1,dz): + for iz in range(0,box_z): xyz.append([ix,iy,iz]) box_p[step]['xyz']=xyz @@ -388,7 +412,10 @@ def coord2norm(coord,img=True): surf[step]={} for subdomain in coord[step].keys(): c,normal = fitPlaneLTSQ(np.array(coord[step][subdomain])) - surf[step][subdomain]={'c':c, 'normal':normal} + cgx = center_gravity(coord[step][subdomain]) + cgy = center_gravity(coord[step][subdomain]) + cgz = center_gravity(coord[step][subdomain]) + surf[step][subdomain]={'c':c, 'normal':normal, 'cg':[cgx,cgy,cgz]} #Change save variable if you want to save .png elsewere save='png/'+str(subdomain) if img==True: -- 2.24.1