Curls: Difference between revisions
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
---- | ---- | ||
---- | |||
# /usr/bin/env python3 | # /usr/bin/env python3 | ||
Revision as of 14:06, 17 July 2018
In preparation.
- /usr/bin/env python3
- coding: utf-8
import numpy as np import pandas as pd import sys file=sys.argv[1] cell_vec=pd.read_csv(file, delim_whitespace=True,skiprows=2,nrows=3,names=['x','y','z']) cell_vec.head() a1=np.array([float(cell_vec.loc[0].x),float(cell_vec.loc[0].y),float(cell_vec.loc[0].z)]) a2=np.array([float(cell_vec.loc[1].x),float(cell_vec.loc[1].y),float(cell_vec.loc[1].z)]) a3=np.array([float(cell_vec.loc[2].x),float(cell_vec.loc[2].y),float(cell_vec.loc[2].z)]) atoms_n=pd.read_csv(file, delim_whitespace=True,skiprows=5,nrows=1) data=pd.read_csv(file, delim_whitespace=True,skiprows=7,names=['x','y','z'], index_col=False) nloops=data.x.value_counts().loc["Direct"] n_atoms=atoms_n.T.sum().loc[0] n1=int(sys.argv[2]) n2=int(sys.argv[3]) low=1 for i in range(nloops):
up=low+n_atoms
frame=data[low:up]
low=low+n_atoms+1
atom_pos1=frame.iloc[n1-1]
coord1=(float(atom_pos1.x)*a1)+(float(atom_pos1.y)*a2)+(float(atom_pos1.z)*a3)
atom_pos2=frame.iloc[n2-1]
coord2=(float(atom_pos2.x)*a1)+(float(atom_pos2.y)*a2)+(float(atom_pos2.z)*a3)
distance=min(np.linalg.norm(coord1-coord2),
np.linalg.norm(coord1-(coord2+a1)),
np.linalg.norm(coord1-(coord2+a2)),
np.linalg.norm(coord1-(coord2+a1+a2)),
np.linalg.norm(coord1-(coord2-a1)),
np.linalg.norm(coord1-(coord2-a2)),
np.linalg.norm(coord1-(coord2-a1-a2))
)
print(distance)
~