latmatcher / Example_LatmatherExample.py
Andrei tomut
angle+
c3760cf
raw
history blame
No virus
1.97 kB
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
from backend.latmathcher import PipelineLatMatch
from backend.db_utils.parse_c2db import from_c2db_structure, read_c2db_json
from backend.db_utils.utils import structure_ato_list
from backend.latmathcher.plots import plot_atom_list
from backend.latmathcher import atoms_to_greed
import matplotlib.pyplot as plt
import matplotlib.patches as patches
filepathA = "EXAMPLES/WSe2-1cfbe6183886.json"
filepathB = "EXAMPLES/C2-a6735a4a3797.json"
A_structure = from_c2db_structure(read_c2db_json(filepathA))
B_structure = from_c2db_structure(read_c2db_json(filepathB))
min_supercel = PipelineLatMatch(A_structure["cell"],B_structure["cell"],
Aatoms3D=structure_ato_list(A_structure),
Batoms3D=structure_ato_list(B_structure),
dim=(10, 10), optimize_angle=True, optimize_strain=True)
print(min_supercel.Alat)
print(min_supercel.Blat)
new_structure = min_supercel.get_new_structure()
super_xyz = structure_ato_list(new_structure)
atoms = atoms_to_greed(super_xyz, lat_v=min_supercel.sc_vec3, dim=(10,10,0))
print(atoms)
plot_atom_list(atoms, marker=".")
x = [0.0,min_supercel.sc_vec3[0][0],min_supercel.sc_vec3[0][0]+min_supercel.sc_vec3[0][1],min_supercel.sc_vec3[0][1],0.0]
y = [0.0,min_supercel.sc_vec3[1][0],min_supercel.sc_vec3[1][0]+min_supercel.sc_vec3[1][1],min_supercel.sc_vec3[1][1],0.0]
plt.gca().add_patch(patches.Polygon(xy=list(zip(x,y)), fill=True, alpha=0.4,color="green"))
plt.ylim(min(y) - 10, max(y) + 10)
plt.xlim(min(x) - 10, max(x) + 10)
super_a = [super_xyz[i] for i in range(len(new_structure["host_guest"])) if new_structure["host_guest"][i] == "host"]
super_b = [super_xyz[i] for i in range(len(new_structure["host_guest"])) if new_structure["host_guest"][i] == "guest"]
plt.show()
print(min_supercel.sc_vec)
print(min_supercel.Alat)
print(min_supercel.Blat)
print(new_structure)
plt.show()