diff --git a/.gitignore b/.gitignore index b43ee8cd6efdd4dc8593907136011cb052d7c41a..5a81c17e3e5ce67207cddd18cfce55663b8af2a1 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 7614f2038210290e69e4910cb22862081d17f969..c1a3b898a82d783014f26ac90fa168d810116f5a 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 3f0f3996a69cb1a627b6539ea897a6c2c7f56a37..b06d7080f88a92b9e14ff98507601eb45c3d55db 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 3497f3f607bf882a235dbb48180b6fff5051011c..3fbc73396958b7d3ec13dea194cb1d71f58f6eba 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: