Commit 4d277115 authored by Stelios Karozis's avatar Stelios Karozis

Print data function

parent cec97309
......@@ -4,3 +4,8 @@ __pycache__/
.vscode/
*.png
*test*
*.json
*.pkl
*.trr
*.gro
*.code-workspace
\ No newline at end of file
......@@ -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
......
......@@ -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
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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment