latmatcher / app.py
Andrei tomut
90
e2f1e25
raw
history blame
No virus
3.14 kB
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
import gradio as gr
from interface_connection import compute_supercell_a, compute_supercell_b
with gr.Blocks() as latmatcher:
gr.Markdown(
"\n Please drop your XYZ files here to compute the minimum supercell.")
with gr.Tabs():
with gr.TabItem(label="file"):
with gr.Row():
with gr.Column(scale=1, min_width=400):
example_file_a = gr.File(label="example file:",value="EXAMPLES/1WSe2-1.xyz" )
file_material_a = gr.File(label="material A file", )
with gr.Column(scale=1, min_width=400):
example_file_b = gr.File(label="example file:",value="EXAMPLES/2C-1.xyz" )
file_material_b = gr.File(label="material B file", )
max_angle = gr.Slider(0, 180, label=" min Angle:", step=1, value=90)
max_strain = gr.Slider(0, 1, label=" max Strain:", step=0.05)
inter_distance = gr.Slider(-0.05, 10, label=" Inter-layer distance:",info="If set to -0.05 is computed automatically.", step=0.05)
msc_button = gr.Button("Compute minimum super cel")
file_angle = gr.Text(label="Optimum Angle:")
file_strain = gr.Text(label="Best Strain:")
file_material_ab = gr.File(label="Result", )
plot_overlap = gr.Plot()
file_txt = gr.Text(label="Result:", info=" You can use the text below to create a 3D plot in Speck \n(high-quality atomistic system rendering).")
msc_button.click(compute_supercell_a,
inputs=[file_material_a, file_material_b, inter_distance, max_angle,
max_strain],
outputs=[file_material_ab, file_angle, file_strain, plot_overlap, file_txt])
with gr.TabItem(label="data"):
with gr.Row():
with gr.Column(scale=1, min_width=400):
gr.Markdown(
"## Host lattice:")
host_lattice = gr.Textbox(label="Host lattice:", lines=4)
host_atoms = gr.Textbox(label="Host atoms:", lines=50)
with gr.Column(scale=1, min_width=400):
gr.Markdown("## Guest lattice:")
guest_lattice = gr.Textbox(label="Guest lattice:", lines=4)
guest_atoms = gr.Textbox(label="Guest atoms:", lines=50)
max_angle = gr.Slider(0, 180, label=" max Angle:", step=1)
max_strain = gr.Slider(0, 1, label=" max Strain:", step=0.05)
msc_button = gr.Button("Compute minimum super cel")
file_angle = gr.Text(label="Optimum Angle:")
file_strain = gr.Text(label="Best Strain:")
msc_button.click(compute_supercell_b,
inputs=[host_lattice, guest_lattice,
host_atoms, guest_atoms,
max_angle, max_strain],
outputs=[file_angle, file_strain])
latmatcher.launch(share=True)