gims 1.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gims/__init__.py +231 -0
- gims/__main__.py +3 -0
- gims/bz_utilities.py +49 -0
- gims/cif.py +160 -0
- gims/constants.py +1 -0
- gims/data.py +509 -0
- gims/inputs/Exciting.py +168 -0
- gims/inputs/FHIVibes.py +160 -0
- gims/inputs/FHIaims.py +209 -0
- gims/inputs/__init__.py +39 -0
- gims/inputs/codeinputs.py +59 -0
- gims/prepare_input.py +244 -0
- gims/slab.py +164 -0
- gims/static/BandStructure-icon.96108d58.png +0 -0
- gims/static/ControlGenerator-icon.3bf95693.png +0 -0
- gims/static/Convergence-icon.png +0 -0
- gims/static/DFTCalculation-icon.png +0 -0
- gims/static/DesignedWorkflow-icon.9d72da14.png +0 -0
- gims/static/Exciting-logo.1e70ea73.png +0 -0
- gims/static/FHIaims-logo.d35cea16.png +0 -0
- gims/static/GIMS-logo-circle.969f4d01.png +0 -0
- gims/static/GIMS-logo.5672921f.png +0 -0
- gims/static/GW-Workflow-icon.ffaeefb2.png +0 -0
- gims/static/GWCalculation-icon.png +0 -0
- gims/static/MD-Workflow-icon.2ec9a2c9.png +0 -0
- gims/static/OutputAnalyzer-icon.75d78489.png +0 -0
- gims/static/Roboto-Bold-webfont.699eb688.woff +0 -0
- gims/static/Roboto-Italic-webfont.2bbc16da.woff +0 -0
- gims/static/Roboto-Light-webfont.29fa1411.woff +0 -0
- gims/static/Roboto-Regular-webfont.55e67705.woff +0 -0
- gims/static/SISSOactive-icon.9f12ee4c.png +0 -0
- gims/static/SimpleCalculation-icon.90277242.png +0 -0
- gims/static/Spectroscopy-icon.efe9f07e.png +0 -0
- gims/static/StructureBuilder-icon.6febfb87.png +0 -0
- gims/static/StructureBuilder-icon.png +0 -0
- gims/static/atom_properties_shot.ddc6ad3f.png +0 -0
- gims/static/binicon.9e4fc9e8.png +0 -0
- gims/static/client.7897db11.css +2 -0
- gims/static/client.7897db11.css.map +1 -0
- gims/static/client.854a9ceb.js +1183 -0
- gims/static/client.854a9ceb.js.map +1 -0
- gims/static/collapse-icon.342eb74b.svg +1 -0
- gims/static/collapsible-icon.d2f0b254.png +0 -0
- gims/static/data/CdSrTa.in +19 -0
- gims/static/data/species_defaults/Exciting/Ac.xml +48 -0
- gims/static/data/species_defaults/Exciting/Ag.xml +37 -0
- gims/static/data/species_defaults/Exciting/Al.xml +22 -0
- gims/static/data/species_defaults/Exciting/Am.xml +50 -0
- gims/static/data/species_defaults/Exciting/Ar.xml +18 -0
- gims/static/data/species_defaults/Exciting/As.xml +29 -0
- gims/static/data/species_defaults/Exciting/At.xml +41 -0
- gims/static/data/species_defaults/Exciting/Au.xml +45 -0
- gims/static/data/species_defaults/Exciting/B.xml +14 -0
- gims/static/data/species_defaults/Exciting/Ba.xml +40 -0
- gims/static/data/species_defaults/Exciting/Be.xml +12 -0
- gims/static/data/species_defaults/Exciting/Bi.xml +41 -0
- gims/static/data/species_defaults/Exciting/Bk.xml +50 -0
- gims/static/data/species_defaults/Exciting/Br.xml +34 -0
- gims/static/data/species_defaults/Exciting/C.xml +15 -0
- gims/static/data/species_defaults/Exciting/Ca.xml +29 -0
- gims/static/data/species_defaults/Exciting/Cd.xml +32 -0
- gims/static/data/species_defaults/Exciting/Ce.xml +42 -0
- gims/static/data/species_defaults/Exciting/Cf.xml +50 -0
- gims/static/data/species_defaults/Exciting/Cl.xml +18 -0
- gims/static/data/species_defaults/Exciting/Cm.xml +51 -0
- gims/static/data/species_defaults/Exciting/Co.xml +27 -0
- gims/static/data/species_defaults/Exciting/Cr.xml +32 -0
- gims/static/data/species_defaults/Exciting/Cs.xml +40 -0
- gims/static/data/species_defaults/Exciting/Cu.xml +27 -0
- gims/static/data/species_defaults/Exciting/Dy.xml +43 -0
- gims/static/data/species_defaults/Exciting/Er.xml +43 -0
- gims/static/data/species_defaults/Exciting/Es.xml +50 -0
- gims/static/data/species_defaults/Exciting/Eu.xml +43 -0
- gims/static/data/species_defaults/Exciting/F.xml +20 -0
- gims/static/data/species_defaults/Exciting/Fe.xml +32 -0
- gims/static/data/species_defaults/Exciting/Fm.xml +50 -0
- gims/static/data/species_defaults/Exciting/Fr.xml +47 -0
- gims/static/data/species_defaults/Exciting/Ga.xml +28 -0
- gims/static/data/species_defaults/Exciting/Gd.xml +44 -0
- gims/static/data/species_defaults/Exciting/Ge.xml +29 -0
- gims/static/data/species_defaults/Exciting/H.xml +11 -0
- gims/static/data/species_defaults/Exciting/He.xml +11 -0
- gims/static/data/species_defaults/Exciting/Hf.xml +49 -0
- gims/static/data/species_defaults/Exciting/Hg.xml +39 -0
- gims/static/data/species_defaults/Exciting/Ho.xml +43 -0
- gims/static/data/species_defaults/Exciting/I.xml +34 -0
- gims/static/data/species_defaults/Exciting/In.xml +38 -0
- gims/static/data/species_defaults/Exciting/Ir.xml +45 -0
- gims/static/data/species_defaults/Exciting/K.xml +29 -0
- gims/static/data/species_defaults/Exciting/Kr.xml +34 -0
- gims/static/data/species_defaults/Exciting/La.xml +41 -0
- gims/static/data/species_defaults/Exciting/Li.xml +17 -0
- gims/static/data/species_defaults/Exciting/Lr.xml +51 -0
- gims/static/data/species_defaults/Exciting/Lu.xml +44 -0
- gims/static/data/species_defaults/Exciting/Makefile +6 -0
- gims/static/data/species_defaults/Exciting/Md.xml +50 -0
- gims/static/data/species_defaults/Exciting/Mg.xml +26 -0
- gims/static/data/species_defaults/Exciting/Mn.xml +32 -0
- gims/static/data/species_defaults/Exciting/Mo.xml +37 -0
- gims/static/data/species_defaults/Exciting/N.xml +15 -0
- gims/static/data/species_defaults/Exciting/Na.xml +26 -0
- gims/static/data/species_defaults/Exciting/Nb.xml +37 -0
- gims/static/data/species_defaults/Exciting/Nd.xml +43 -0
- gims/static/data/species_defaults/Exciting/Ne.xml +20 -0
- gims/static/data/species_defaults/Exciting/Ni.xml +27 -0
- gims/static/data/species_defaults/Exciting/No.xml +50 -0
- gims/static/data/species_defaults/Exciting/Np.xml +51 -0
- gims/static/data/species_defaults/Exciting/O.xml +15 -0
- gims/static/data/species_defaults/Exciting/Os.xml +50 -0
- gims/static/data/species_defaults/Exciting/P.xml +18 -0
- gims/static/data/species_defaults/Exciting/Pa.xml +50 -0
- gims/static/data/species_defaults/Exciting/Pb.xml +41 -0
- gims/static/data/species_defaults/Exciting/Pd.xml +36 -0
- gims/static/data/species_defaults/Exciting/Pm.xml +43 -0
- gims/static/data/species_defaults/Exciting/Po.xml +41 -0
- gims/static/data/species_defaults/Exciting/Pr.xml +42 -0
- gims/static/data/species_defaults/Exciting/Pt.xml +45 -0
- gims/static/data/species_defaults/Exciting/Pu.xml +50 -0
- gims/static/data/species_defaults/Exciting/Ra.xml +47 -0
- gims/static/data/species_defaults/Exciting/Rb.xml +34 -0
- gims/static/data/species_defaults/Exciting/Re.xml +50 -0
- gims/static/data/species_defaults/Exciting/Rf.xml +56 -0
- gims/static/data/species_defaults/Exciting/Rh.xml +37 -0
- gims/static/data/species_defaults/Exciting/Rn.xml +41 -0
- gims/static/data/species_defaults/Exciting/Ru.xml +37 -0
- gims/static/data/species_defaults/Exciting/S.xml +18 -0
- gims/static/data/species_defaults/Exciting/Sb.xml +34 -0
- gims/static/data/species_defaults/Exciting/Sc.xml +31 -0
- gims/static/data/species_defaults/Exciting/Se.xml +29 -0
- gims/static/data/species_defaults/Exciting/Si.xml +18 -0
- gims/static/data/species_defaults/Exciting/Sm.xml +43 -0
- gims/static/data/species_defaults/Exciting/Sn.xml +39 -0
- gims/static/data/species_defaults/Exciting/Sr.xml +34 -0
- gims/static/data/species_defaults/Exciting/Ta.xml +49 -0
- gims/static/data/species_defaults/Exciting/Tb.xml +43 -0
- gims/static/data/species_defaults/Exciting/Tc.xml +37 -0
- gims/static/data/species_defaults/Exciting/Te.xml +34 -0
- gims/static/data/species_defaults/Exciting/Th.xml +53 -0
- gims/static/data/species_defaults/Exciting/Ti.xml +31 -0
- gims/static/data/species_defaults/Exciting/Tl.xml +45 -0
- gims/static/data/species_defaults/Exciting/Tm.xml +43 -0
- gims/static/data/species_defaults/Exciting/U.xml +45 -0
- gims/static/data/species_defaults/Exciting/V.xml +31 -0
- gims/static/data/species_defaults/Exciting/W.xml +50 -0
- gims/static/data/species_defaults/Exciting/Xe.xml +34 -0
- gims/static/data/species_defaults/Exciting/Y.xml +36 -0
- gims/static/data/species_defaults/Exciting/Yb.xml +43 -0
- gims/static/data/species_defaults/Exciting/Zn.xml +27 -0
- gims/static/data/species_defaults/Exciting/Zr.xml +36 -0
- gims/static/data/species_defaults/Exciting/generateallspecies +6 -0
- gims/static/data/species_defaults/Exciting/markversion.sh +15 -0
- gims/static/data/species_defaults/Exciting/species.dat +2424 -0
- gims/static/data/species_defaults/Exciting/species.input +56 -0
- gims/static/data/species_defaults/FHIaims/intermediate/01_H_default +62 -0
- gims/static/data/species_defaults/FHIaims/intermediate/02_He_default +69 -0
- gims/static/data/species_defaults/FHIaims/intermediate/03_Li_default +86 -0
- gims/static/data/species_defaults/FHIaims/intermediate/04_Be_default +76 -0
- gims/static/data/species_defaults/FHIaims/intermediate/05_B_default +83 -0
- gims/static/data/species_defaults/FHIaims/intermediate/06_C_default +77 -0
- gims/static/data/species_defaults/FHIaims/intermediate/07_N_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/08_O_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/09_F_default +81 -0
- gims/static/data/species_defaults/FHIaims/intermediate/10_Ne_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/11_Na_default +72 -0
- gims/static/data/species_defaults/FHIaims/intermediate/12_Mg_default +85 -0
- gims/static/data/species_defaults/FHIaims/intermediate/13_Al_default +87 -0
- gims/static/data/species_defaults/FHIaims/intermediate/14_Si_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/15_P_default +89 -0
- gims/static/data/species_defaults/FHIaims/intermediate/16_S_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/17_Cl_default +73 -0
- gims/static/data/species_defaults/FHIaims/intermediate/18_Ar_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/19_K_default +72 -0
- gims/static/data/species_defaults/FHIaims/intermediate/20_Ca_default +95 -0
- gims/static/data/species_defaults/FHIaims/intermediate/21_Sc_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/22_Ti_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/23_V_default +86 -0
- gims/static/data/species_defaults/FHIaims/intermediate/24_Cr_default +90 -0
- gims/static/data/species_defaults/FHIaims/intermediate/25_Mn_default +87 -0
- gims/static/data/species_defaults/FHIaims/intermediate/26_Fe_default +93 -0
- gims/static/data/species_defaults/FHIaims/intermediate/27_Co_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/28_Ni_default +77 -0
- gims/static/data/species_defaults/FHIaims/intermediate/29_Cu_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/30_Zn_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/31_Ga_default +83 -0
- gims/static/data/species_defaults/FHIaims/intermediate/32_Ge_default +81 -0
- gims/static/data/species_defaults/FHIaims/intermediate/33_As_default +82 -0
- gims/static/data/species_defaults/FHIaims/intermediate/34_Se_default +82 -0
- gims/static/data/species_defaults/FHIaims/intermediate/35_Br_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/36_Kr_default +76 -0
- gims/static/data/species_defaults/FHIaims/intermediate/37_Rb_default +94 -0
- gims/static/data/species_defaults/FHIaims/intermediate/38_Sr_default +97 -0
- gims/static/data/species_defaults/FHIaims/intermediate/39_Y_default +81 -0
- gims/static/data/species_defaults/FHIaims/intermediate/40_Zr_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/41_Nb_default +84 -0
- gims/static/data/species_defaults/FHIaims/intermediate/42_Mo_default +85 -0
- gims/static/data/species_defaults/FHIaims/intermediate/43_Tc_default +83 -0
- gims/static/data/species_defaults/FHIaims/intermediate/44_Ru_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/45_Rh_default +81 -0
- gims/static/data/species_defaults/FHIaims/intermediate/46_Pd_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/47_Ag_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/48_Cd_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/49_In_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/50_Sn_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/51_Sb_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/52_Te_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/53_I_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/54_Xe_default +73 -0
- gims/static/data/species_defaults/FHIaims/intermediate/55_Cs_default +94 -0
- gims/static/data/species_defaults/FHIaims/intermediate/56_Ba_default +98 -0
- gims/static/data/species_defaults/FHIaims/intermediate/71_Lu_default +83 -0
- gims/static/data/species_defaults/FHIaims/intermediate/72_Hf_default +90 -0
- gims/static/data/species_defaults/FHIaims/intermediate/73_Ta_default +86 -0
- gims/static/data/species_defaults/FHIaims/intermediate/74_W_default +88 -0
- gims/static/data/species_defaults/FHIaims/intermediate/75_Re_default +88 -0
- gims/static/data/species_defaults/FHIaims/intermediate/76_Os_default +84 -0
- gims/static/data/species_defaults/FHIaims/intermediate/77_Ir_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/78_Pt_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/79_Au_default +81 -0
- gims/static/data/species_defaults/FHIaims/intermediate/80_Hg_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/81_Tl_default +82 -0
- gims/static/data/species_defaults/FHIaims/intermediate/82_Pb_default +79 -0
- gims/static/data/species_defaults/FHIaims/intermediate/83_Bi_default +75 -0
- gims/static/data/species_defaults/FHIaims/intermediate/84_Po_default +80 -0
- gims/static/data/species_defaults/FHIaims/intermediate/85_At_default +78 -0
- gims/static/data/species_defaults/FHIaims/intermediate/86_Rn_default +73 -0
- gims/static/data/species_defaults/FHIaims/intermediate/README +32 -0
- gims/static/data/species_defaults/FHIaims/light/00_Emptium_default +40 -0
- gims/static/data/species_defaults/FHIaims/light/01_H_default +64 -0
- gims/static/data/species_defaults/FHIaims/light/02_He_default +58 -0
- gims/static/data/species_defaults/FHIaims/light/03_Li_default +75 -0
- gims/static/data/species_defaults/FHIaims/light/04_Be_default +72 -0
- gims/static/data/species_defaults/FHIaims/light/05_B_default +73 -0
- gims/static/data/species_defaults/FHIaims/light/06_C_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/07_N_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/08_O_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/09_F_default +71 -0
- gims/static/data/species_defaults/FHIaims/light/100_Fm_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/101_Md_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/102_No_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/10_Ne_default +70 -0
- gims/static/data/species_defaults/FHIaims/light/11_Na_default +73 -0
- gims/static/data/species_defaults/FHIaims/light/12_Mg_default +75 -0
- gims/static/data/species_defaults/FHIaims/light/13_Al_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/14_Si_default +87 -0
- gims/static/data/species_defaults/FHIaims/light/15_P_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/16_S_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/17_Cl_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/18_Ar_default +69 -0
- gims/static/data/species_defaults/FHIaims/light/19_K_default +75 -0
- gims/static/data/species_defaults/FHIaims/light/20_Ca_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/21_Sc_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/22_Ti_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/23_V_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/24_Cr_default +90 -0
- gims/static/data/species_defaults/FHIaims/light/25_Mn_default +87 -0
- gims/static/data/species_defaults/FHIaims/light/26_Fe_default +84 -0
- gims/static/data/species_defaults/FHIaims/light/27_Co_default +84 -0
- gims/static/data/species_defaults/FHIaims/light/28_Ni_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/29_Cu_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/30_Zn_default +77 -0
- gims/static/data/species_defaults/FHIaims/light/31_Ga_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/32_Ge_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/33_As_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/34_Se_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/35_Br_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/36_Kr_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/37_Rb_default +78 -0
- gims/static/data/species_defaults/FHIaims/light/38_Sr_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/39_Y_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/40_Zr_default +77 -0
- gims/static/data/species_defaults/FHIaims/light/41_Nb_default +86 -0
- gims/static/data/species_defaults/FHIaims/light/42_Mo_default +84 -0
- gims/static/data/species_defaults/FHIaims/light/43_Tc_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/44_Ru_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/45_Rh_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/46_Pd_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/47_Ag_default +77 -0
- gims/static/data/species_defaults/FHIaims/light/48_Cd_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/49_In_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/50_Sn_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/51_Sb_default +76 -0
- gims/static/data/species_defaults/FHIaims/light/52_Te_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/53_I_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/54_Xe_default +78 -0
- gims/static/data/species_defaults/FHIaims/light/55_Cs_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/56_Ba_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/57_La_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/58_Ce_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/59_Pr_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/60_Nd_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/61_Pm_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/62_Sm_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/63_Eu_default +91 -0
- gims/static/data/species_defaults/FHIaims/light/64_Gd_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/65_Tb_default +87 -0
- gims/static/data/species_defaults/FHIaims/light/66_Dy_default +84 -0
- gims/static/data/species_defaults/FHIaims/light/67_Ho_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/68_Er_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/69_Tm_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/70_Yb_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/71_Lu_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/72_Hf_default +92 -0
- gims/static/data/species_defaults/FHIaims/light/73_Ta_default +88 -0
- gims/static/data/species_defaults/FHIaims/light/74_W_default +90 -0
- gims/static/data/species_defaults/FHIaims/light/75_Re_default +90 -0
- gims/static/data/species_defaults/FHIaims/light/76_Os_default +86 -0
- gims/static/data/species_defaults/FHIaims/light/77_Ir_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/78_Pt_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/79_Au_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/80_Hg_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/81_Tl_default +85 -0
- gims/static/data/species_defaults/FHIaims/light/82_Pb_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/83_Bi_default +78 -0
- gims/static/data/species_defaults/FHIaims/light/84_Po_default +83 -0
- gims/static/data/species_defaults/FHIaims/light/85_At_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/86_Rn_default +81 -0
- gims/static/data/species_defaults/FHIaims/light/87_Fr_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/88_Ra_default +84 -0
- gims/static/data/species_defaults/FHIaims/light/89_Ac_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/90_Th_default +78 -0
- gims/static/data/species_defaults/FHIaims/light/91_Pa_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/92_U_default +79 -0
- gims/static/data/species_defaults/FHIaims/light/93_Np_default +80 -0
- gims/static/data/species_defaults/FHIaims/light/94_Pu_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/95_Am_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/96_Cm_default +78 -0
- gims/static/data/species_defaults/FHIaims/light/97_Bk_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/98_Cf_default +82 -0
- gims/static/data/species_defaults/FHIaims/light/99_Es_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/01_H_default +60 -0
- gims/static/data/species_defaults/FHIaims/really_tight/02_He_default +56 -0
- gims/static/data/species_defaults/FHIaims/really_tight/03_Li_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/04_Be_default +64 -0
- gims/static/data/species_defaults/FHIaims/really_tight/05_B_default +71 -0
- gims/static/data/species_defaults/FHIaims/really_tight/06_C_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/07_N_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/08_O_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/09_F_default +69 -0
- gims/static/data/species_defaults/FHIaims/really_tight/100_Fm_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/101_Md_default +80 -0
- gims/static/data/species_defaults/FHIaims/really_tight/102_No_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/10_Ne_default +68 -0
- gims/static/data/species_defaults/FHIaims/really_tight/11_Na_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/12_Mg_default +83 -0
- gims/static/data/species_defaults/FHIaims/really_tight/13_Al_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/14_Si_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/15_P_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/16_S_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/17_Cl_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/18_Ar_default +67 -0
- gims/static/data/species_defaults/FHIaims/really_tight/19_K_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/20_Ca_default +80 -0
- gims/static/data/species_defaults/FHIaims/really_tight/21_Sc_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/22_Ti_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/23_V_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/24_Cr_default +84 -0
- gims/static/data/species_defaults/FHIaims/really_tight/25_Mn_default +101 -0
- gims/static/data/species_defaults/FHIaims/really_tight/26_Fe_default +97 -0
- gims/static/data/species_defaults/FHIaims/really_tight/27_Co_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/28_Ni_default +80 -0
- gims/static/data/species_defaults/FHIaims/really_tight/29_Cu_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/30_Zn_default +74 -0
- gims/static/data/species_defaults/FHIaims/really_tight/31_Ga_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/32_Ge_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/33_As_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/34_Se_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/35_Br_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/36_Kr_default +71 -0
- gims/static/data/species_defaults/FHIaims/really_tight/37_Rb_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/38_Sr_default +87 -0
- gims/static/data/species_defaults/FHIaims/really_tight/39_Y_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/40_Zr_default +73 -0
- gims/static/data/species_defaults/FHIaims/really_tight/41_Nb_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/42_Mo_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/43_Tc_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/44_Ru_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/45_Rh_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/46_Pd_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/47_Ag_default +74 -0
- gims/static/data/species_defaults/FHIaims/really_tight/48_Cd_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/49_In_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/50_Sn_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/51_Sb_default +72 -0
- gims/static/data/species_defaults/FHIaims/really_tight/52_Te_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/53_I_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/54_Xe_default +70 -0
- gims/static/data/species_defaults/FHIaims/really_tight/55_Cs_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/56_Ba_default +88 -0
- gims/static/data/species_defaults/FHIaims/really_tight/57_La_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/58_Ce_default +83 -0
- gims/static/data/species_defaults/FHIaims/really_tight/59_Pr_default +86 -0
- gims/static/data/species_defaults/FHIaims/really_tight/60_Nd_default +86 -0
- gims/static/data/species_defaults/FHIaims/really_tight/61_Pm_default +86 -0
- gims/static/data/species_defaults/FHIaims/really_tight/62_Sm_default +83 -0
- gims/static/data/species_defaults/FHIaims/really_tight/63_Eu_default +89 -0
- gims/static/data/species_defaults/FHIaims/really_tight/64_Gd_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/65_Tb_default +85 -0
- gims/static/data/species_defaults/FHIaims/really_tight/66_Dy_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/67_Ho_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/68_Er_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/69_Tm_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/70_Yb_default +80 -0
- gims/static/data/species_defaults/FHIaims/really_tight/71_Lu_default +83 -0
- gims/static/data/species_defaults/FHIaims/really_tight/72_Hf_default +88 -0
- gims/static/data/species_defaults/FHIaims/really_tight/73_Ta_default +84 -0
- gims/static/data/species_defaults/FHIaims/really_tight/74_W_default +86 -0
- gims/static/data/species_defaults/FHIaims/really_tight/75_Re_default +86 -0
- gims/static/data/species_defaults/FHIaims/really_tight/76_Os_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/77_Ir_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/78_Pt_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/79_Au_default +83 -0
- gims/static/data/species_defaults/FHIaims/really_tight/80_Hg_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/81_Tl_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/82_Pb_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/83_Bi_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/84_Po_default +80 -0
- gims/static/data/species_defaults/FHIaims/really_tight/85_At_default +78 -0
- gims/static/data/species_defaults/FHIaims/really_tight/86_Rn_default +73 -0
- gims/static/data/species_defaults/FHIaims/really_tight/87_Fr_default +82 -0
- gims/static/data/species_defaults/FHIaims/really_tight/88_Ra_default +81 -0
- gims/static/data/species_defaults/FHIaims/really_tight/89_Ac_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/90_Th_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/91_Pa_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/92_U_default +76 -0
- gims/static/data/species_defaults/FHIaims/really_tight/93_Np_default +77 -0
- gims/static/data/species_defaults/FHIaims/really_tight/94_Pu_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/95_Am_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/96_Cm_default +75 -0
- gims/static/data/species_defaults/FHIaims/really_tight/97_Bk_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/98_Cf_default +79 -0
- gims/static/data/species_defaults/FHIaims/really_tight/99_Es_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/01_H_default +74 -0
- gims/static/data/species_defaults/FHIaims/tight/02_He_default +68 -0
- gims/static/data/species_defaults/FHIaims/tight/03_Li_default +87 -0
- gims/static/data/species_defaults/FHIaims/tight/04_Be_default +76 -0
- gims/static/data/species_defaults/FHIaims/tight/05_B_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/06_C_default +89 -0
- gims/static/data/species_defaults/FHIaims/tight/07_N_default +90 -0
- gims/static/data/species_defaults/FHIaims/tight/08_O_default +90 -0
- gims/static/data/species_defaults/FHIaims/tight/09_F_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/100_Fm_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/101_Md_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/102_No_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/10_Ne_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/11_Na_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/12_Mg_default +97 -0
- gims/static/data/species_defaults/FHIaims/tight/13_Al_default +91 -0
- gims/static/data/species_defaults/FHIaims/tight/14_Si_default +94 -0
- gims/static/data/species_defaults/FHIaims/tight/15_P_default +92 -0
- gims/static/data/species_defaults/FHIaims/tight/16_S_default +90 -0
- gims/static/data/species_defaults/FHIaims/tight/17_Cl_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/18_Ar_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/19_K_default +87 -0
- gims/static/data/species_defaults/FHIaims/tight/20_Ca_default +92 -0
- gims/static/data/species_defaults/FHIaims/tight/21_Sc_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/22_Ti_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/23_V_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/24_Cr_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/25_Mn_default +106 -0
- gims/static/data/species_defaults/FHIaims/tight/26_Fe_default +99 -0
- gims/static/data/species_defaults/FHIaims/tight/27_Co_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/28_Ni_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/29_Cu_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/30_Zn_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/31_Ga_default +85 -0
- gims/static/data/species_defaults/FHIaims/tight/32_Ge_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/33_As_default +84 -0
- gims/static/data/species_defaults/FHIaims/tight/34_Se_default +84 -0
- gims/static/data/species_defaults/FHIaims/tight/35_Br_default +82 -0
- gims/static/data/species_defaults/FHIaims/tight/36_Kr_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/37_Rb_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/38_Sr_default +87 -0
- gims/static/data/species_defaults/FHIaims/tight/39_Y_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/40_Zr_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/41_Nb_default +84 -0
- gims/static/data/species_defaults/FHIaims/tight/42_Mo_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/43_Tc_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/44_Ru_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/45_Rh_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/46_Pd_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/47_Ag_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/48_Cd_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/49_In_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/50_Sn_default +82 -0
- gims/static/data/species_defaults/FHIaims/tight/51_Sb_default +77 -0
- gims/static/data/species_defaults/FHIaims/tight/52_Te_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/53_I_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/54_Xe_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/55_Cs_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/56_Ba_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/57_La_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/58_Ce_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/59_Pr_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/60_Nd_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/61_Pm_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/62_Sm_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/63_Eu_default +89 -0
- gims/static/data/species_defaults/FHIaims/tight/64_Gd_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/65_Tb_default +85 -0
- gims/static/data/species_defaults/FHIaims/tight/66_Dy_default +82 -0
- gims/static/data/species_defaults/FHIaims/tight/67_Ho_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/68_Er_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/69_Tm_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/70_Yb_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/71_Lu_default +83 -0
- gims/static/data/species_defaults/FHIaims/tight/72_Hf_default +90 -0
- gims/static/data/species_defaults/FHIaims/tight/73_Ta_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/74_W_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/75_Re_default +88 -0
- gims/static/data/species_defaults/FHIaims/tight/76_Os_default +84 -0
- gims/static/data/species_defaults/FHIaims/tight/77_Ir_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/78_Pt_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/79_Au_default +86 -0
- gims/static/data/species_defaults/FHIaims/tight/80_Hg_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/81_Tl_default +82 -0
- gims/static/data/species_defaults/FHIaims/tight/82_Pb_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/83_Bi_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/84_Po_default +80 -0
- gims/static/data/species_defaults/FHIaims/tight/85_At_default +78 -0
- gims/static/data/species_defaults/FHIaims/tight/86_Rn_default +73 -0
- gims/static/data/species_defaults/FHIaims/tight/87_Fr_default +82 -0
- gims/static/data/species_defaults/FHIaims/tight/88_Ra_default +81 -0
- gims/static/data/species_defaults/FHIaims/tight/89_Ac_default +76 -0
- gims/static/data/species_defaults/FHIaims/tight/90_Th_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/91_Pa_default +76 -0
- gims/static/data/species_defaults/FHIaims/tight/92_U_default +76 -0
- gims/static/data/species_defaults/FHIaims/tight/93_Np_default +77 -0
- gims/static/data/species_defaults/FHIaims/tight/94_Pu_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/95_Am_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/96_Cm_default +75 -0
- gims/static/data/species_defaults/FHIaims/tight/97_Bk_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/98_Cf_default +79 -0
- gims/static/data/species_defaults/FHIaims/tight/99_Es_default +79 -0
- gims/static/download-icon.c5f977ab.png +0 -0
- gims/static/expand-icon.e96667b6.svg +1 -0
- gims/static/help-icon.49032d2d.png +0 -0
- gims/static/index.html +38 -0
- gims/static/k_grid_density-formula.d528f386.png +0 -0
- gims/static/next-arrow-white-icon.2494dc84.png +0 -0
- gims/static/pause-icon.b46d2246.png +0 -0
- gims/static/play-icon.f05ab42d.png +0 -0
- gims/static/prev-arrow-white-icon.0b4086d7.png +0 -0
- gims/static/redo-icon.ecb789f5.png +0 -0
- gims/static/refresh-icon.42a24637.png +0 -0
- gims/static/screenshot-icon.a88631d6.png +0 -0
- gims/static/settings-icon.6b0d01a5.png +0 -0
- gims/static/step-back-icon.7a109486.svg +1 -0
- gims/static/step-forward-icon.7b2bc68e.svg +1 -0
- gims/static/undo-icon.df3ed69f.png +0 -0
- gims/structure.py +172 -0
- gims/structure_info.py +98 -0
- gims/workflow.py +138 -0
- gims-1.4.0.dist-info/METADATA +143 -0
- gims-1.4.0.dist-info/RECORD +558 -0
- gims-1.4.0.dist-info/WHEEL +5 -0
- gims-1.4.0.dist-info/entry_points.txt +2 -0
- gims-1.4.0.dist-info/licenses/LICENSE +504 -0
- gims-1.4.0.dist-info/top_level.txt +1 -0
gims/__init__.py
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
import json
|
|
4
|
+
import tarfile
|
|
5
|
+
import tempfile
|
|
6
|
+
import webbrowser
|
|
7
|
+
from io import BytesIO
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from threading import Timer
|
|
10
|
+
|
|
11
|
+
from flask import Flask, request, Response, redirect, url_for, session, abort, send_from_directory, Blueprint
|
|
12
|
+
|
|
13
|
+
from gims.prepare_input import generate_slab, terminate_slab
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# The main.py file sets up the Flask app and handles the client requests.
|
|
17
|
+
# ----------------- Set up the internal paths --------------------------
|
|
18
|
+
|
|
19
|
+
if getattr(sys, "frozen", False) and hasattr(sys, '_MEIPASS'):
|
|
20
|
+
# Offline version
|
|
21
|
+
# noinspection PyProtectedMember
|
|
22
|
+
static_folder = os.path.join(sys._MEIPASS, "static")
|
|
23
|
+
# noinspection PyProtectedMember
|
|
24
|
+
SPECIES_DIR = os.path.join(sys._MEIPASS, "static/data/species_defaults/")
|
|
25
|
+
# print(f'I am frozen!: {static_folder}')
|
|
26
|
+
app = Flask(__name__, static_folder=static_folder, static_url_path="/static")
|
|
27
|
+
else:
|
|
28
|
+
# Server version
|
|
29
|
+
SPECIES_DIR = "static/data/species_defaults/"
|
|
30
|
+
app = Flask(__name__)
|
|
31
|
+
|
|
32
|
+
if os.getenv("GIMS_BUILD_SISSO_WORKFLOW", 'False').lower() in ('true', '1', 't'):
|
|
33
|
+
from sisso_active_learning_workflow.app import create_sisso_activete_learning_workflow_app
|
|
34
|
+
import inspect
|
|
35
|
+
assets_folder = Path(inspect.getfile(create_sisso_activete_learning_workflow_app)).parent / "assets"
|
|
36
|
+
@app.route('/dash/assets/<path:filename>')
|
|
37
|
+
def custom_static(filename):
|
|
38
|
+
return send_from_directory(str(assets_folder), filename)
|
|
39
|
+
app_sisso_workflow = create_sisso_activete_learning_workflow_app(app, "/dash/")
|
|
40
|
+
|
|
41
|
+
app.secret_key = os.urandom(16)
|
|
42
|
+
app.config.update(
|
|
43
|
+
SESSION_COOKIE_SECURE=True,
|
|
44
|
+
SESSION_COOKIE_SAMESITE='Lax'
|
|
45
|
+
)
|
|
46
|
+
# ----------------- Client requests start here --------------------------
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@app.route("/")
|
|
50
|
+
def index():
|
|
51
|
+
return redirect(url_for("static", filename="index.html"))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@app.route("/parse-geometry-file", methods=["GET", "POST"])
|
|
55
|
+
def parse_geometry_file():
|
|
56
|
+
"""Captures client request to parse structure data.
|
|
57
|
+
|
|
58
|
+
Expects a text file either of unknown
|
|
59
|
+
format (then the ASE auto-detection is used) or of known format (then `ase.io.read`
|
|
60
|
+
for that particular format is used). If parsed successfully, returns the structure
|
|
61
|
+
data in json format. Otherwise, returns error message.
|
|
62
|
+
"""
|
|
63
|
+
from gims.prepare_input import get_json_structure
|
|
64
|
+
|
|
65
|
+
if request.method == "POST":
|
|
66
|
+
json_structure = get_json_structure(request.files, session)
|
|
67
|
+
return Response(json_structure, mimetype="application/json")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@app.route("/update-structure-info", methods=["GET", "POST"])
|
|
71
|
+
def update_structure_info():
|
|
72
|
+
"""Captures client request to update the supportive information (e.g. chemical
|
|
73
|
+
formula, number of atoms, symmetry information for periodic structures, etc.)
|
|
74
|
+
|
|
75
|
+
Expects structure data in json format. Returns a json structure data with updated
|
|
76
|
+
supportive information.
|
|
77
|
+
"""
|
|
78
|
+
from gims.prepare_input import update_json_structure
|
|
79
|
+
|
|
80
|
+
if request.method == "POST":
|
|
81
|
+
struct_data = json.loads(request.data)
|
|
82
|
+
if "symThresh" in struct_data:
|
|
83
|
+
session["symThresh"] = float(struct_data.pop("symThresh"))
|
|
84
|
+
# update struct_data with unknown type
|
|
85
|
+
struct_data["positions"] = [dict(**d, species="X") if "species" not in d else d
|
|
86
|
+
for d in struct_data["positions"]]
|
|
87
|
+
json_structure = update_json_structure(struct_data, session)
|
|
88
|
+
return Response(json_structure, mimetype="application/json")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@app.route("/generate-control-in", methods=["GET", "POST"])
|
|
92
|
+
def generate_control_in():
|
|
93
|
+
"""Captures client request to generate input file(s) with numerical parameters and
|
|
94
|
+
run-time choices (including basis set information).
|
|
95
|
+
|
|
96
|
+
Expects a json file with the specified numerical parameters. Returns a tar-ball
|
|
97
|
+
with the corresponding input file(s).
|
|
98
|
+
"""
|
|
99
|
+
from gims.prepare_input import get_input_files
|
|
100
|
+
if request.method == "POST":
|
|
101
|
+
species_dir = os.path.join(app.root_path, SPECIES_DIR)
|
|
102
|
+
return get_input_files(request.data, species_dir, session)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@app.route("/get-download-info", methods=["POST"])
|
|
106
|
+
def get_download_info():
|
|
107
|
+
"""Request download information before actual input files are downloaded.
|
|
108
|
+
|
|
109
|
+
Currently, this function is used to summarize the information about the
|
|
110
|
+
automatically generated band path. However, this function can be generalized
|
|
111
|
+
for any future workflow.
|
|
112
|
+
"""
|
|
113
|
+
from gims.prepare_input import get_download_info
|
|
114
|
+
|
|
115
|
+
if request.method == "POST":
|
|
116
|
+
species_dir = os.path.join(app.root_path, SPECIES_DIR)
|
|
117
|
+
return get_download_info(request.data, species_dir, session)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
@app.route("/get-standard-cell", methods=["POST"])
|
|
121
|
+
def get_standard_cell():
|
|
122
|
+
"""Generate standardized structure (either primitive or conventional).
|
|
123
|
+
|
|
124
|
+
Captures client request to generate the primitive structure. Expects structure
|
|
125
|
+
data in json format and returns the primitive structure, if current structure is
|
|
126
|
+
not primitive. If the current structure is primitive, return message.
|
|
127
|
+
"""
|
|
128
|
+
from gims.prepare_input import primitive_cell, conventional_cell
|
|
129
|
+
|
|
130
|
+
struct_data = json.loads(request.data)
|
|
131
|
+
if "symThresh" in struct_data:
|
|
132
|
+
session["symThresh"] = float(struct_data.pop("symThresh"))
|
|
133
|
+
is_primitive = struct_data.pop("is_primitive", True)
|
|
134
|
+
return primitive_cell(struct_data, session) if is_primitive else conventional_cell(struct_data, session)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
@app.route('/upload-workflow', methods=['POST'])
|
|
138
|
+
def upload_workflow_output():
|
|
139
|
+
""" Unpacks and prepares the data for the post-processing on the client side
|
|
140
|
+
|
|
141
|
+
Returns: prepared data
|
|
142
|
+
"""
|
|
143
|
+
files = []
|
|
144
|
+
f = tarfile.open(fileobj=BytesIO(request.data), mode='r:gz')
|
|
145
|
+
for f_name in f.getnames():
|
|
146
|
+
file_handle = f.extractfile(f_name)
|
|
147
|
+
if file_handle is not None:
|
|
148
|
+
try:
|
|
149
|
+
files.append({"name": f_name, "content": file_handle.read().decode('utf-8')})
|
|
150
|
+
except UnicodeDecodeError:
|
|
151
|
+
# a binary file is found in the archive, skip for now
|
|
152
|
+
pass
|
|
153
|
+
return json.dumps(files)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
@app.route("/get-slab", methods=["POST"])
|
|
157
|
+
def get_slab():
|
|
158
|
+
"""Generates a slab from a given data.
|
|
159
|
+
"""
|
|
160
|
+
if request.method == "POST":
|
|
161
|
+
try:
|
|
162
|
+
return generate_slab(request.data, session)
|
|
163
|
+
except KeyError: # no slab_data in request
|
|
164
|
+
return abort(400)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
@app.route("/terminate-slab", methods=["POST"])
|
|
168
|
+
def term_slab():
|
|
169
|
+
"""Terminates a slab from a given data.
|
|
170
|
+
"""
|
|
171
|
+
if request.method == "POST":
|
|
172
|
+
return terminate_slab(request.data, session)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@app.route("/generate-workflow", methods=["POST"])
|
|
176
|
+
def generate_workflow():
|
|
177
|
+
from gims.workflow import Workflow
|
|
178
|
+
workflow = Workflow(json.loads(request.data))
|
|
179
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
180
|
+
tar_dir, tar_file, info = workflow.run(temp_dir)
|
|
181
|
+
if tar_file == "FileNotFoundError":
|
|
182
|
+
response = "FileNotFoundError"
|
|
183
|
+
else:
|
|
184
|
+
print("I am sending the tar", tar_dir, tar_file)
|
|
185
|
+
response = send_from_directory(tar_dir, tar_file, as_attachment=True)
|
|
186
|
+
return response
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
@app.route("/get-bz-vertices", methods=["POST"])
|
|
190
|
+
def get_bz_vertices():
|
|
191
|
+
"""Captures client request to calculate Brillouin Zone for a periodic structure.
|
|
192
|
+
|
|
193
|
+
Expects the lattice vectors in json format (`[[lat_v1],[lat_v2],[lat_v3]]`).
|
|
194
|
+
Returns a dictionary of vertices and band paths needed for drawing the BZ and the
|
|
195
|
+
path along the high-symmetry points.
|
|
196
|
+
"""
|
|
197
|
+
from gims.bz_utilities import calculate_bz_from_cell_json
|
|
198
|
+
|
|
199
|
+
if request.method == "POST":
|
|
200
|
+
return calculate_bz_from_cell_json(request.data)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
@app.route("/get-bases", methods=["GET"])
|
|
204
|
+
def get_available_bases():
|
|
205
|
+
"""Returns a JSON with available basis directories for a given code. Should accept code name in the request"""
|
|
206
|
+
code_name = request.args.get('code', None)
|
|
207
|
+
if code_name is None:
|
|
208
|
+
return "Code not found", 400
|
|
209
|
+
species_dir = Path(__file__).parent / SPECIES_DIR / code_name
|
|
210
|
+
if not species_dir.exists():
|
|
211
|
+
return "Basis directory not found", 400
|
|
212
|
+
return json.dumps(os.listdir(species_dir))
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
HOST = '127.0.0.1'
|
|
216
|
+
PORT = 5000
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def open_browser():
|
|
220
|
+
"""Opens a browser with GIMS in it"""
|
|
221
|
+
webbrowser.open_new(f'http://{HOST}:{PORT}/')
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def main():
|
|
225
|
+
"""Main flask application — runs the dev server on http://localhost:5000"""
|
|
226
|
+
Timer(1, open_browser).start()
|
|
227
|
+
app.run(host=HOST, port=PORT)
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
if __name__ == "__main__":
|
|
231
|
+
main()
|
gims/__main__.py
ADDED
gims/bz_utilities.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from scipy.spatial import Voronoi
|
|
3
|
+
import json
|
|
4
|
+
import itertools
|
|
5
|
+
from ase.cell import Cell
|
|
6
|
+
from ase.dft.kpoints import resolve_kpt_path_string
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def calculate_bz_from_cell(cell):
|
|
10
|
+
"""Calculates the Brillouin Zone vertices and path of high-symmetry points.
|
|
11
|
+
|
|
12
|
+
Parameters:
|
|
13
|
+
|
|
14
|
+
cell: numpy array
|
|
15
|
+
Three lattice vectors arranged as [[lat_v1],[lat_v2],[lat_v3]]
|
|
16
|
+
"""
|
|
17
|
+
corners = np.array(list(itertools.product([-2, -1, 0, 1, 2], repeat=3)))
|
|
18
|
+
points = np.dot(corners, cell)
|
|
19
|
+
vor = Voronoi(points)
|
|
20
|
+
bz_vertices = []
|
|
21
|
+
for r in vor.ridge_dict:
|
|
22
|
+
# This is not the general solution. It might happen that for very skewed cells
|
|
23
|
+
# that next-next-nearest neighbors are building the faces of the BZ.
|
|
24
|
+
if r[0] == 62 or r[1] == 62:
|
|
25
|
+
bz_vertices.append([list(vor.vertices[i]) for i in vor.ridge_dict[r]])
|
|
26
|
+
|
|
27
|
+
cell_o = Cell(2 * np.pi * Cell(cell).reciprocal())
|
|
28
|
+
bp = cell_o.bandpath()
|
|
29
|
+
# print(cell.get_bravais_lattice())
|
|
30
|
+
r_kpts = resolve_kpt_path_string(bp.path, bp.special_points)
|
|
31
|
+
segments = []
|
|
32
|
+
for labels, coords in zip(*r_kpts):
|
|
33
|
+
segments.append([labels, coords.tolist()])
|
|
34
|
+
return {"vertices": bz_vertices, "path": segments}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def calculate_bz_from_cell_json(cell_json):
|
|
38
|
+
"""Convert lattice vectors (`cell`) in json format to numpy array and return
|
|
39
|
+
Brillouin zone results in json format.
|
|
40
|
+
|
|
41
|
+
Parameters:
|
|
42
|
+
|
|
43
|
+
cell: json array
|
|
44
|
+
Three lattice vectors arranged as [[lat_v1],[lat_v2],[lat_v3]]
|
|
45
|
+
"""
|
|
46
|
+
cell = np.array(json.loads(cell_json))
|
|
47
|
+
bz_vertices = calculate_bz_from_cell(cell)
|
|
48
|
+
# print(bz_vertices)
|
|
49
|
+
return json.dumps(bz_vertices)
|
gims/cif.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
""" The CIF reader and preprocessor (uses gemmi package)
|
|
2
|
+
"""
|
|
3
|
+
import re
|
|
4
|
+
from io import TextIOWrapper, BufferedReader
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
from ase.data import chemical_symbols
|
|
8
|
+
from gemmi.cif import read_string, as_number, as_string
|
|
9
|
+
from werkzeug.datastructures import FileStorage
|
|
10
|
+
|
|
11
|
+
from gims.data import hm_groups
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ['CifPreprocessor', ]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CifPreprocessor:
|
|
18
|
+
def __init__(self, cif_file):
|
|
19
|
+
""" A class that reads and preprocesses cif files
|
|
20
|
+
Args:
|
|
21
|
+
cif_file: a file name or object
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
self._block = None
|
|
25
|
+
self.lines = None
|
|
26
|
+
self.symbols = None
|
|
27
|
+
self.coords = None
|
|
28
|
+
self.cell_pars = None
|
|
29
|
+
self.space_group = None
|
|
30
|
+
|
|
31
|
+
if isinstance(cif_file, TextIOWrapper): # file object got with open
|
|
32
|
+
self.lines = cif_file.read()
|
|
33
|
+
elif isinstance(cif_file, (BufferedReader, FileStorage)): # 1 - file object got with open(rb0
|
|
34
|
+
self.lines = cif_file.read().decode('utf-8')
|
|
35
|
+
else:
|
|
36
|
+
with open(cif_file) as f:
|
|
37
|
+
self.lines = f.read()
|
|
38
|
+
|
|
39
|
+
cif = read_string(self.lines)
|
|
40
|
+
try:
|
|
41
|
+
# stands almost for every case
|
|
42
|
+
self._block = cif.sole_block()
|
|
43
|
+
except RuntimeError:
|
|
44
|
+
# Springer Materials
|
|
45
|
+
for block in cif:
|
|
46
|
+
if 'standardized_unitcell' in block.name:
|
|
47
|
+
self._block = block
|
|
48
|
+
break
|
|
49
|
+
except IndexError:
|
|
50
|
+
raise ValueError('Did not find block with data in the given CIF file')
|
|
51
|
+
if self._block is None:
|
|
52
|
+
raise ValueError('Did not find block with data in the given CIF file')
|
|
53
|
+
|
|
54
|
+
def save(self, save_name):
|
|
55
|
+
""" Checks cif file for errors and saves it to a file
|
|
56
|
+
Args:
|
|
57
|
+
save_name: a name of the file to save cif to
|
|
58
|
+
"""
|
|
59
|
+
self._parse()
|
|
60
|
+
# if everything is fine, then go ahead with saving
|
|
61
|
+
hm_re = re.compile(r"_symmetry_space_group_name_H-M +'?(.*)\b")
|
|
62
|
+
hm_match = hm_re.search(self.lines)
|
|
63
|
+
if hm_match is not None:
|
|
64
|
+
given_hm = hm_match.group(1)
|
|
65
|
+
hm = re.sub(r"[()_ ]", r"", given_hm)
|
|
66
|
+
if hm in hm_groups:
|
|
67
|
+
print(given_hm, hm_groups[hm])
|
|
68
|
+
self.lines = self.lines.replace(given_hm, hm_groups[hm])
|
|
69
|
+
with open(save_name, 'w') as f:
|
|
70
|
+
f.write(self.lines)
|
|
71
|
+
|
|
72
|
+
def _parse(self):
|
|
73
|
+
""" Checks CIF block for errors, and parses it
|
|
74
|
+
"""
|
|
75
|
+
# trying to parse the file and return meaningful error in case of failure
|
|
76
|
+
# cell key-value pairs
|
|
77
|
+
cell_kwds = ['length_a', 'length_b', 'length_c', 'angle_alpha', 'angle_beta', 'angle_gamma']
|
|
78
|
+
# symmetry key-value pairs
|
|
79
|
+
symm_kwds = ['space_group_name_h-m', 'int_tables_number']
|
|
80
|
+
sg_kwds = ['group_name_h-m_alt', 'it_number']
|
|
81
|
+
# given in a loop
|
|
82
|
+
atom_site_kwds = ['label', 'type_symbol', '?wyckoff_symbol', '?symmetry_multiplicity', '?wyckoff_label',
|
|
83
|
+
'?fract_x', '?cartn_x', '?fract_y', '?cartn_y', '?fract_z', '?cartn_z']
|
|
84
|
+
|
|
85
|
+
try:
|
|
86
|
+
self.cell_pars = [as_number(self._block.find_value(f'_cell_{kwd}')) for kwd in cell_kwds]
|
|
87
|
+
except TypeError as e:
|
|
88
|
+
raise ValueError('Some cell parameters are missing in the given CIF file') from e
|
|
89
|
+
|
|
90
|
+
symm_pars = [self._block.find_value(f'_symmetry_{kwd}') for kwd in symm_kwds]
|
|
91
|
+
sg_pars = [self._block.find_value(f'_space_group_{kwd}') for kwd in sg_kwds]
|
|
92
|
+
|
|
93
|
+
if all([x is None for x in symm_pars + sg_pars]):
|
|
94
|
+
raise ValueError('Symmetry information is missing from the given CIF file')
|
|
95
|
+
|
|
96
|
+
atoms_table = self._block.find('_atom_site_', atom_site_kwds)
|
|
97
|
+
existing_site_kwds = [kwd[1:] if kwd.startswith('?') else kwd for i, kwd in enumerate(atom_site_kwds)
|
|
98
|
+
if atoms_table.has_column(i)]
|
|
99
|
+
|
|
100
|
+
is_fractional = sum(['fract' in x for x in existing_site_kwds]) == 3
|
|
101
|
+
is_cartesian = sum(['cartn' in x for x in existing_site_kwds]) == 3
|
|
102
|
+
|
|
103
|
+
if is_fractional == is_cartesian:
|
|
104
|
+
raise ValueError('A mix of fractional and cartesian coordinates in CIF file is not implemented')
|
|
105
|
+
if is_cartesian:
|
|
106
|
+
raise ValueError('Cartesian coordinates in CIF files are not yet implemented')
|
|
107
|
+
|
|
108
|
+
try:
|
|
109
|
+
labels_idx = existing_site_kwds.index('label')
|
|
110
|
+
symbols_idx = existing_site_kwds.index('type_symbol')
|
|
111
|
+
except ValueError as e:
|
|
112
|
+
raise ValueError('No atomic labels or types found in the given CIF file') from e
|
|
113
|
+
|
|
114
|
+
atoms_table = self._block.find('_atom_site_', existing_site_kwds)
|
|
115
|
+
|
|
116
|
+
self.symbols = _parse_atom_symbols([as_string(x) for x in atoms_table.column(labels_idx)],
|
|
117
|
+
[as_string(x) for x in atoms_table.column(symbols_idx)])
|
|
118
|
+
self.space_group = _parse_symmetries(symm_pars, sg_pars)
|
|
119
|
+
# change setting! (maybe employ the code from ASE?)
|
|
120
|
+
coords = [[as_number(x) for x in atoms_table.column(i)]
|
|
121
|
+
for i, kwd in enumerate(existing_site_kwds) if 'fract' in kwd or 'cartn' in kwd
|
|
122
|
+
]
|
|
123
|
+
self.coords = np.array(coords).T
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _parse_atom_symbols(labels, types):
|
|
127
|
+
# find atomic symbols (won't work for something like 'boron', which is valid, but I have not met
|
|
128
|
+
# such a type)
|
|
129
|
+
types_symbols = [re.findall('[A-Z][a-z]?', t) for t in types]
|
|
130
|
+
# check for partial occupancies
|
|
131
|
+
if any([len(s) > 1 for s in types_symbols]):
|
|
132
|
+
raise ValueError('Partial occupancies met in the given CIF file')
|
|
133
|
+
# check for atomic types to be present in the Periodic table
|
|
134
|
+
if any([len(s) < 1 for s in types_symbols]) or any([any([s_i not in chemical_symbols for s_i in s])
|
|
135
|
+
for s in types_symbols]):
|
|
136
|
+
raise ValueError('Unknown atomic types met in the given CIF file')
|
|
137
|
+
# check for labels to be consistent with types (should give a warning though)
|
|
138
|
+
types_symbols = [s_i for s in types_symbols for s_i in s]
|
|
139
|
+
if len(labels) != len(types_symbols):
|
|
140
|
+
raise ValueError('The number of labels differs with the number of types in the given CIF file')
|
|
141
|
+
return types_symbols
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def _parse_symmetries(symmetry_params, sg_params):
|
|
145
|
+
# returns the space group number if it's given
|
|
146
|
+
sg, sg_alt = symmetry_params[1], sg_params[1]
|
|
147
|
+
if sg is not None and sg_alt is not None and sg != sg_alt:
|
|
148
|
+
raise ValueError('Inconsistent space group numbers given in a CIF file')
|
|
149
|
+
sg = sg if sg is not None else sg_alt
|
|
150
|
+
if sg is not None:
|
|
151
|
+
return as_number(sg)
|
|
152
|
+
# if space group is not given, then check the H-M notation
|
|
153
|
+
hm, hm_alt = symmetry_params[0], sg_params[0]
|
|
154
|
+
if hm is not None and hm_alt is not None and hm != hm_alt:
|
|
155
|
+
raise ValueError('Inconsistent Hermann-Mauguin groups given in a CIF file')
|
|
156
|
+
hm = as_string(hm) if hm is not None else as_string(hm_alt)
|
|
157
|
+
# check the H-M notation
|
|
158
|
+
if hm.replace(" ", "") in hm_groups:
|
|
159
|
+
return hm_groups[hm.replace(" ", "")]
|
|
160
|
+
return hm
|
gims/constants.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sym_thresh = 0.00001
|