Curls: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
In preparation. | In preparation. | ||
# /usr/bin/env python3 | # /usr/bin/env python3 | ||
# coding: utf-8 | # coding: utf-8 | ||
import numpy as np | import numpy as np | ||
import pandas as pd | import pandas as pd | ||
import sys | import sys | ||
file=sys.argv[1] | file=sys.argv[1] | ||
cell_vec=pd.read_csv(file, delim_whitespace=True,skiprows=2,nrows=3,names=['x','y','z']) | cell_vec=pd.read_csv(file, delim_whitespace=True,skiprows=2,nrows=3,names=['x','y','z']) | ||
cell_vec.head() | cell_vec.head() | ||
a1=np.array([float(cell_vec.loc[0].x),float(cell_vec.loc[0].y),float(cell_vec.loc[0].z)]) | 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)]) | 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)]) | 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) | 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) | data=pd.read_csv(file, delim_whitespace=True,skiprows=7,names=['x','y','z'], index_col=False) | ||
nloops=data.x.value_counts().loc["Direct"] | nloops=data.x.value_counts().loc["Direct"] | ||
n_atoms=atoms_n.T.sum().loc[0] | n_atoms=atoms_n.T.sum().loc[0] | ||
n1=int(sys.argv[2]) | n1=int(sys.argv[2]) | ||
n2=int(sys.argv[3]) | n2=int(sys.argv[3]) | ||
low=1 | low=1 | ||
for i in range(nloops): | 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) | |||
~ | ~ | ||
---- | ---- | ||
Revision as of 14:10, 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)
~