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.
Files changed (558) hide show
  1. gims/__init__.py +231 -0
  2. gims/__main__.py +3 -0
  3. gims/bz_utilities.py +49 -0
  4. gims/cif.py +160 -0
  5. gims/constants.py +1 -0
  6. gims/data.py +509 -0
  7. gims/inputs/Exciting.py +168 -0
  8. gims/inputs/FHIVibes.py +160 -0
  9. gims/inputs/FHIaims.py +209 -0
  10. gims/inputs/__init__.py +39 -0
  11. gims/inputs/codeinputs.py +59 -0
  12. gims/prepare_input.py +244 -0
  13. gims/slab.py +164 -0
  14. gims/static/BandStructure-icon.96108d58.png +0 -0
  15. gims/static/ControlGenerator-icon.3bf95693.png +0 -0
  16. gims/static/Convergence-icon.png +0 -0
  17. gims/static/DFTCalculation-icon.png +0 -0
  18. gims/static/DesignedWorkflow-icon.9d72da14.png +0 -0
  19. gims/static/Exciting-logo.1e70ea73.png +0 -0
  20. gims/static/FHIaims-logo.d35cea16.png +0 -0
  21. gims/static/GIMS-logo-circle.969f4d01.png +0 -0
  22. gims/static/GIMS-logo.5672921f.png +0 -0
  23. gims/static/GW-Workflow-icon.ffaeefb2.png +0 -0
  24. gims/static/GWCalculation-icon.png +0 -0
  25. gims/static/MD-Workflow-icon.2ec9a2c9.png +0 -0
  26. gims/static/OutputAnalyzer-icon.75d78489.png +0 -0
  27. gims/static/Roboto-Bold-webfont.699eb688.woff +0 -0
  28. gims/static/Roboto-Italic-webfont.2bbc16da.woff +0 -0
  29. gims/static/Roboto-Light-webfont.29fa1411.woff +0 -0
  30. gims/static/Roboto-Regular-webfont.55e67705.woff +0 -0
  31. gims/static/SISSOactive-icon.9f12ee4c.png +0 -0
  32. gims/static/SimpleCalculation-icon.90277242.png +0 -0
  33. gims/static/Spectroscopy-icon.efe9f07e.png +0 -0
  34. gims/static/StructureBuilder-icon.6febfb87.png +0 -0
  35. gims/static/StructureBuilder-icon.png +0 -0
  36. gims/static/atom_properties_shot.ddc6ad3f.png +0 -0
  37. gims/static/binicon.9e4fc9e8.png +0 -0
  38. gims/static/client.7897db11.css +2 -0
  39. gims/static/client.7897db11.css.map +1 -0
  40. gims/static/client.854a9ceb.js +1183 -0
  41. gims/static/client.854a9ceb.js.map +1 -0
  42. gims/static/collapse-icon.342eb74b.svg +1 -0
  43. gims/static/collapsible-icon.d2f0b254.png +0 -0
  44. gims/static/data/CdSrTa.in +19 -0
  45. gims/static/data/species_defaults/Exciting/Ac.xml +48 -0
  46. gims/static/data/species_defaults/Exciting/Ag.xml +37 -0
  47. gims/static/data/species_defaults/Exciting/Al.xml +22 -0
  48. gims/static/data/species_defaults/Exciting/Am.xml +50 -0
  49. gims/static/data/species_defaults/Exciting/Ar.xml +18 -0
  50. gims/static/data/species_defaults/Exciting/As.xml +29 -0
  51. gims/static/data/species_defaults/Exciting/At.xml +41 -0
  52. gims/static/data/species_defaults/Exciting/Au.xml +45 -0
  53. gims/static/data/species_defaults/Exciting/B.xml +14 -0
  54. gims/static/data/species_defaults/Exciting/Ba.xml +40 -0
  55. gims/static/data/species_defaults/Exciting/Be.xml +12 -0
  56. gims/static/data/species_defaults/Exciting/Bi.xml +41 -0
  57. gims/static/data/species_defaults/Exciting/Bk.xml +50 -0
  58. gims/static/data/species_defaults/Exciting/Br.xml +34 -0
  59. gims/static/data/species_defaults/Exciting/C.xml +15 -0
  60. gims/static/data/species_defaults/Exciting/Ca.xml +29 -0
  61. gims/static/data/species_defaults/Exciting/Cd.xml +32 -0
  62. gims/static/data/species_defaults/Exciting/Ce.xml +42 -0
  63. gims/static/data/species_defaults/Exciting/Cf.xml +50 -0
  64. gims/static/data/species_defaults/Exciting/Cl.xml +18 -0
  65. gims/static/data/species_defaults/Exciting/Cm.xml +51 -0
  66. gims/static/data/species_defaults/Exciting/Co.xml +27 -0
  67. gims/static/data/species_defaults/Exciting/Cr.xml +32 -0
  68. gims/static/data/species_defaults/Exciting/Cs.xml +40 -0
  69. gims/static/data/species_defaults/Exciting/Cu.xml +27 -0
  70. gims/static/data/species_defaults/Exciting/Dy.xml +43 -0
  71. gims/static/data/species_defaults/Exciting/Er.xml +43 -0
  72. gims/static/data/species_defaults/Exciting/Es.xml +50 -0
  73. gims/static/data/species_defaults/Exciting/Eu.xml +43 -0
  74. gims/static/data/species_defaults/Exciting/F.xml +20 -0
  75. gims/static/data/species_defaults/Exciting/Fe.xml +32 -0
  76. gims/static/data/species_defaults/Exciting/Fm.xml +50 -0
  77. gims/static/data/species_defaults/Exciting/Fr.xml +47 -0
  78. gims/static/data/species_defaults/Exciting/Ga.xml +28 -0
  79. gims/static/data/species_defaults/Exciting/Gd.xml +44 -0
  80. gims/static/data/species_defaults/Exciting/Ge.xml +29 -0
  81. gims/static/data/species_defaults/Exciting/H.xml +11 -0
  82. gims/static/data/species_defaults/Exciting/He.xml +11 -0
  83. gims/static/data/species_defaults/Exciting/Hf.xml +49 -0
  84. gims/static/data/species_defaults/Exciting/Hg.xml +39 -0
  85. gims/static/data/species_defaults/Exciting/Ho.xml +43 -0
  86. gims/static/data/species_defaults/Exciting/I.xml +34 -0
  87. gims/static/data/species_defaults/Exciting/In.xml +38 -0
  88. gims/static/data/species_defaults/Exciting/Ir.xml +45 -0
  89. gims/static/data/species_defaults/Exciting/K.xml +29 -0
  90. gims/static/data/species_defaults/Exciting/Kr.xml +34 -0
  91. gims/static/data/species_defaults/Exciting/La.xml +41 -0
  92. gims/static/data/species_defaults/Exciting/Li.xml +17 -0
  93. gims/static/data/species_defaults/Exciting/Lr.xml +51 -0
  94. gims/static/data/species_defaults/Exciting/Lu.xml +44 -0
  95. gims/static/data/species_defaults/Exciting/Makefile +6 -0
  96. gims/static/data/species_defaults/Exciting/Md.xml +50 -0
  97. gims/static/data/species_defaults/Exciting/Mg.xml +26 -0
  98. gims/static/data/species_defaults/Exciting/Mn.xml +32 -0
  99. gims/static/data/species_defaults/Exciting/Mo.xml +37 -0
  100. gims/static/data/species_defaults/Exciting/N.xml +15 -0
  101. gims/static/data/species_defaults/Exciting/Na.xml +26 -0
  102. gims/static/data/species_defaults/Exciting/Nb.xml +37 -0
  103. gims/static/data/species_defaults/Exciting/Nd.xml +43 -0
  104. gims/static/data/species_defaults/Exciting/Ne.xml +20 -0
  105. gims/static/data/species_defaults/Exciting/Ni.xml +27 -0
  106. gims/static/data/species_defaults/Exciting/No.xml +50 -0
  107. gims/static/data/species_defaults/Exciting/Np.xml +51 -0
  108. gims/static/data/species_defaults/Exciting/O.xml +15 -0
  109. gims/static/data/species_defaults/Exciting/Os.xml +50 -0
  110. gims/static/data/species_defaults/Exciting/P.xml +18 -0
  111. gims/static/data/species_defaults/Exciting/Pa.xml +50 -0
  112. gims/static/data/species_defaults/Exciting/Pb.xml +41 -0
  113. gims/static/data/species_defaults/Exciting/Pd.xml +36 -0
  114. gims/static/data/species_defaults/Exciting/Pm.xml +43 -0
  115. gims/static/data/species_defaults/Exciting/Po.xml +41 -0
  116. gims/static/data/species_defaults/Exciting/Pr.xml +42 -0
  117. gims/static/data/species_defaults/Exciting/Pt.xml +45 -0
  118. gims/static/data/species_defaults/Exciting/Pu.xml +50 -0
  119. gims/static/data/species_defaults/Exciting/Ra.xml +47 -0
  120. gims/static/data/species_defaults/Exciting/Rb.xml +34 -0
  121. gims/static/data/species_defaults/Exciting/Re.xml +50 -0
  122. gims/static/data/species_defaults/Exciting/Rf.xml +56 -0
  123. gims/static/data/species_defaults/Exciting/Rh.xml +37 -0
  124. gims/static/data/species_defaults/Exciting/Rn.xml +41 -0
  125. gims/static/data/species_defaults/Exciting/Ru.xml +37 -0
  126. gims/static/data/species_defaults/Exciting/S.xml +18 -0
  127. gims/static/data/species_defaults/Exciting/Sb.xml +34 -0
  128. gims/static/data/species_defaults/Exciting/Sc.xml +31 -0
  129. gims/static/data/species_defaults/Exciting/Se.xml +29 -0
  130. gims/static/data/species_defaults/Exciting/Si.xml +18 -0
  131. gims/static/data/species_defaults/Exciting/Sm.xml +43 -0
  132. gims/static/data/species_defaults/Exciting/Sn.xml +39 -0
  133. gims/static/data/species_defaults/Exciting/Sr.xml +34 -0
  134. gims/static/data/species_defaults/Exciting/Ta.xml +49 -0
  135. gims/static/data/species_defaults/Exciting/Tb.xml +43 -0
  136. gims/static/data/species_defaults/Exciting/Tc.xml +37 -0
  137. gims/static/data/species_defaults/Exciting/Te.xml +34 -0
  138. gims/static/data/species_defaults/Exciting/Th.xml +53 -0
  139. gims/static/data/species_defaults/Exciting/Ti.xml +31 -0
  140. gims/static/data/species_defaults/Exciting/Tl.xml +45 -0
  141. gims/static/data/species_defaults/Exciting/Tm.xml +43 -0
  142. gims/static/data/species_defaults/Exciting/U.xml +45 -0
  143. gims/static/data/species_defaults/Exciting/V.xml +31 -0
  144. gims/static/data/species_defaults/Exciting/W.xml +50 -0
  145. gims/static/data/species_defaults/Exciting/Xe.xml +34 -0
  146. gims/static/data/species_defaults/Exciting/Y.xml +36 -0
  147. gims/static/data/species_defaults/Exciting/Yb.xml +43 -0
  148. gims/static/data/species_defaults/Exciting/Zn.xml +27 -0
  149. gims/static/data/species_defaults/Exciting/Zr.xml +36 -0
  150. gims/static/data/species_defaults/Exciting/generateallspecies +6 -0
  151. gims/static/data/species_defaults/Exciting/markversion.sh +15 -0
  152. gims/static/data/species_defaults/Exciting/species.dat +2424 -0
  153. gims/static/data/species_defaults/Exciting/species.input +56 -0
  154. gims/static/data/species_defaults/FHIaims/intermediate/01_H_default +62 -0
  155. gims/static/data/species_defaults/FHIaims/intermediate/02_He_default +69 -0
  156. gims/static/data/species_defaults/FHIaims/intermediate/03_Li_default +86 -0
  157. gims/static/data/species_defaults/FHIaims/intermediate/04_Be_default +76 -0
  158. gims/static/data/species_defaults/FHIaims/intermediate/05_B_default +83 -0
  159. gims/static/data/species_defaults/FHIaims/intermediate/06_C_default +77 -0
  160. gims/static/data/species_defaults/FHIaims/intermediate/07_N_default +78 -0
  161. gims/static/data/species_defaults/FHIaims/intermediate/08_O_default +78 -0
  162. gims/static/data/species_defaults/FHIaims/intermediate/09_F_default +81 -0
  163. gims/static/data/species_defaults/FHIaims/intermediate/10_Ne_default +80 -0
  164. gims/static/data/species_defaults/FHIaims/intermediate/11_Na_default +72 -0
  165. gims/static/data/species_defaults/FHIaims/intermediate/12_Mg_default +85 -0
  166. gims/static/data/species_defaults/FHIaims/intermediate/13_Al_default +87 -0
  167. gims/static/data/species_defaults/FHIaims/intermediate/14_Si_default +79 -0
  168. gims/static/data/species_defaults/FHIaims/intermediate/15_P_default +89 -0
  169. gims/static/data/species_defaults/FHIaims/intermediate/16_S_default +75 -0
  170. gims/static/data/species_defaults/FHIaims/intermediate/17_Cl_default +73 -0
  171. gims/static/data/species_defaults/FHIaims/intermediate/18_Ar_default +79 -0
  172. gims/static/data/species_defaults/FHIaims/intermediate/19_K_default +72 -0
  173. gims/static/data/species_defaults/FHIaims/intermediate/20_Ca_default +95 -0
  174. gims/static/data/species_defaults/FHIaims/intermediate/21_Sc_default +79 -0
  175. gims/static/data/species_defaults/FHIaims/intermediate/22_Ti_default +80 -0
  176. gims/static/data/species_defaults/FHIaims/intermediate/23_V_default +86 -0
  177. gims/static/data/species_defaults/FHIaims/intermediate/24_Cr_default +90 -0
  178. gims/static/data/species_defaults/FHIaims/intermediate/25_Mn_default +87 -0
  179. gims/static/data/species_defaults/FHIaims/intermediate/26_Fe_default +93 -0
  180. gims/static/data/species_defaults/FHIaims/intermediate/27_Co_default +79 -0
  181. gims/static/data/species_defaults/FHIaims/intermediate/28_Ni_default +77 -0
  182. gims/static/data/species_defaults/FHIaims/intermediate/29_Cu_default +78 -0
  183. gims/static/data/species_defaults/FHIaims/intermediate/30_Zn_default +75 -0
  184. gims/static/data/species_defaults/FHIaims/intermediate/31_Ga_default +83 -0
  185. gims/static/data/species_defaults/FHIaims/intermediate/32_Ge_default +81 -0
  186. gims/static/data/species_defaults/FHIaims/intermediate/33_As_default +82 -0
  187. gims/static/data/species_defaults/FHIaims/intermediate/34_Se_default +82 -0
  188. gims/static/data/species_defaults/FHIaims/intermediate/35_Br_default +80 -0
  189. gims/static/data/species_defaults/FHIaims/intermediate/36_Kr_default +76 -0
  190. gims/static/data/species_defaults/FHIaims/intermediate/37_Rb_default +94 -0
  191. gims/static/data/species_defaults/FHIaims/intermediate/38_Sr_default +97 -0
  192. gims/static/data/species_defaults/FHIaims/intermediate/39_Y_default +81 -0
  193. gims/static/data/species_defaults/FHIaims/intermediate/40_Zr_default +75 -0
  194. gims/static/data/species_defaults/FHIaims/intermediate/41_Nb_default +84 -0
  195. gims/static/data/species_defaults/FHIaims/intermediate/42_Mo_default +85 -0
  196. gims/static/data/species_defaults/FHIaims/intermediate/43_Tc_default +83 -0
  197. gims/static/data/species_defaults/FHIaims/intermediate/44_Ru_default +80 -0
  198. gims/static/data/species_defaults/FHIaims/intermediate/45_Rh_default +81 -0
  199. gims/static/data/species_defaults/FHIaims/intermediate/46_Pd_default +80 -0
  200. gims/static/data/species_defaults/FHIaims/intermediate/47_Ag_default +75 -0
  201. gims/static/data/species_defaults/FHIaims/intermediate/48_Cd_default +78 -0
  202. gims/static/data/species_defaults/FHIaims/intermediate/49_In_default +79 -0
  203. gims/static/data/species_defaults/FHIaims/intermediate/50_Sn_default +80 -0
  204. gims/static/data/species_defaults/FHIaims/intermediate/51_Sb_default +75 -0
  205. gims/static/data/species_defaults/FHIaims/intermediate/52_Te_default +79 -0
  206. gims/static/data/species_defaults/FHIaims/intermediate/53_I_default +78 -0
  207. gims/static/data/species_defaults/FHIaims/intermediate/54_Xe_default +73 -0
  208. gims/static/data/species_defaults/FHIaims/intermediate/55_Cs_default +94 -0
  209. gims/static/data/species_defaults/FHIaims/intermediate/56_Ba_default +98 -0
  210. gims/static/data/species_defaults/FHIaims/intermediate/71_Lu_default +83 -0
  211. gims/static/data/species_defaults/FHIaims/intermediate/72_Hf_default +90 -0
  212. gims/static/data/species_defaults/FHIaims/intermediate/73_Ta_default +86 -0
  213. gims/static/data/species_defaults/FHIaims/intermediate/74_W_default +88 -0
  214. gims/static/data/species_defaults/FHIaims/intermediate/75_Re_default +88 -0
  215. gims/static/data/species_defaults/FHIaims/intermediate/76_Os_default +84 -0
  216. gims/static/data/species_defaults/FHIaims/intermediate/77_Ir_default +80 -0
  217. gims/static/data/species_defaults/FHIaims/intermediate/78_Pt_default +80 -0
  218. gims/static/data/species_defaults/FHIaims/intermediate/79_Au_default +81 -0
  219. gims/static/data/species_defaults/FHIaims/intermediate/80_Hg_default +79 -0
  220. gims/static/data/species_defaults/FHIaims/intermediate/81_Tl_default +82 -0
  221. gims/static/data/species_defaults/FHIaims/intermediate/82_Pb_default +79 -0
  222. gims/static/data/species_defaults/FHIaims/intermediate/83_Bi_default +75 -0
  223. gims/static/data/species_defaults/FHIaims/intermediate/84_Po_default +80 -0
  224. gims/static/data/species_defaults/FHIaims/intermediate/85_At_default +78 -0
  225. gims/static/data/species_defaults/FHIaims/intermediate/86_Rn_default +73 -0
  226. gims/static/data/species_defaults/FHIaims/intermediate/README +32 -0
  227. gims/static/data/species_defaults/FHIaims/light/00_Emptium_default +40 -0
  228. gims/static/data/species_defaults/FHIaims/light/01_H_default +64 -0
  229. gims/static/data/species_defaults/FHIaims/light/02_He_default +58 -0
  230. gims/static/data/species_defaults/FHIaims/light/03_Li_default +75 -0
  231. gims/static/data/species_defaults/FHIaims/light/04_Be_default +72 -0
  232. gims/static/data/species_defaults/FHIaims/light/05_B_default +73 -0
  233. gims/static/data/species_defaults/FHIaims/light/06_C_default +79 -0
  234. gims/static/data/species_defaults/FHIaims/light/07_N_default +80 -0
  235. gims/static/data/species_defaults/FHIaims/light/08_O_default +80 -0
  236. gims/static/data/species_defaults/FHIaims/light/09_F_default +71 -0
  237. gims/static/data/species_defaults/FHIaims/light/100_Fm_default +82 -0
  238. gims/static/data/species_defaults/FHIaims/light/101_Md_default +83 -0
  239. gims/static/data/species_defaults/FHIaims/light/102_No_default +81 -0
  240. gims/static/data/species_defaults/FHIaims/light/10_Ne_default +70 -0
  241. gims/static/data/species_defaults/FHIaims/light/11_Na_default +73 -0
  242. gims/static/data/species_defaults/FHIaims/light/12_Mg_default +75 -0
  243. gims/static/data/species_defaults/FHIaims/light/13_Al_default +83 -0
  244. gims/static/data/species_defaults/FHIaims/light/14_Si_default +87 -0
  245. gims/static/data/species_defaults/FHIaims/light/15_P_default +85 -0
  246. gims/static/data/species_defaults/FHIaims/light/16_S_default +83 -0
  247. gims/static/data/species_defaults/FHIaims/light/17_Cl_default +81 -0
  248. gims/static/data/species_defaults/FHIaims/light/18_Ar_default +69 -0
  249. gims/static/data/species_defaults/FHIaims/light/19_K_default +75 -0
  250. gims/static/data/species_defaults/FHIaims/light/20_Ca_default +82 -0
  251. gims/static/data/species_defaults/FHIaims/light/21_Sc_default +81 -0
  252. gims/static/data/species_defaults/FHIaims/light/22_Ti_default +82 -0
  253. gims/static/data/species_defaults/FHIaims/light/23_V_default +88 -0
  254. gims/static/data/species_defaults/FHIaims/light/24_Cr_default +90 -0
  255. gims/static/data/species_defaults/FHIaims/light/25_Mn_default +87 -0
  256. gims/static/data/species_defaults/FHIaims/light/26_Fe_default +84 -0
  257. gims/static/data/species_defaults/FHIaims/light/27_Co_default +84 -0
  258. gims/static/data/species_defaults/FHIaims/light/28_Ni_default +82 -0
  259. gims/static/data/species_defaults/FHIaims/light/29_Cu_default +80 -0
  260. gims/static/data/species_defaults/FHIaims/light/30_Zn_default +77 -0
  261. gims/static/data/species_defaults/FHIaims/light/31_Ga_default +83 -0
  262. gims/static/data/species_defaults/FHIaims/light/32_Ge_default +82 -0
  263. gims/static/data/species_defaults/FHIaims/light/33_As_default +83 -0
  264. gims/static/data/species_defaults/FHIaims/light/34_Se_default +83 -0
  265. gims/static/data/species_defaults/FHIaims/light/35_Br_default +81 -0
  266. gims/static/data/species_defaults/FHIaims/light/36_Kr_default +81 -0
  267. gims/static/data/species_defaults/FHIaims/light/37_Rb_default +78 -0
  268. gims/static/data/species_defaults/FHIaims/light/38_Sr_default +85 -0
  269. gims/static/data/species_defaults/FHIaims/light/39_Y_default +83 -0
  270. gims/static/data/species_defaults/FHIaims/light/40_Zr_default +77 -0
  271. gims/static/data/species_defaults/FHIaims/light/41_Nb_default +86 -0
  272. gims/static/data/species_defaults/FHIaims/light/42_Mo_default +84 -0
  273. gims/static/data/species_defaults/FHIaims/light/43_Tc_default +85 -0
  274. gims/static/data/species_defaults/FHIaims/light/44_Ru_default +82 -0
  275. gims/static/data/species_defaults/FHIaims/light/45_Rh_default +82 -0
  276. gims/static/data/species_defaults/FHIaims/light/46_Pd_default +83 -0
  277. gims/static/data/species_defaults/FHIaims/light/47_Ag_default +77 -0
  278. gims/static/data/species_defaults/FHIaims/light/48_Cd_default +80 -0
  279. gims/static/data/species_defaults/FHIaims/light/49_In_default +81 -0
  280. gims/static/data/species_defaults/FHIaims/light/50_Sn_default +81 -0
  281. gims/static/data/species_defaults/FHIaims/light/51_Sb_default +76 -0
  282. gims/static/data/species_defaults/FHIaims/light/52_Te_default +80 -0
  283. gims/static/data/species_defaults/FHIaims/light/53_I_default +79 -0
  284. gims/static/data/species_defaults/FHIaims/light/54_Xe_default +78 -0
  285. gims/static/data/species_defaults/FHIaims/light/55_Cs_default +88 -0
  286. gims/static/data/species_defaults/FHIaims/light/56_Ba_default +81 -0
  287. gims/static/data/species_defaults/FHIaims/light/57_La_default +83 -0
  288. gims/static/data/species_defaults/FHIaims/light/58_Ce_default +85 -0
  289. gims/static/data/species_defaults/FHIaims/light/59_Pr_default +88 -0
  290. gims/static/data/species_defaults/FHIaims/light/60_Nd_default +88 -0
  291. gims/static/data/species_defaults/FHIaims/light/61_Pm_default +88 -0
  292. gims/static/data/species_defaults/FHIaims/light/62_Sm_default +85 -0
  293. gims/static/data/species_defaults/FHIaims/light/63_Eu_default +91 -0
  294. gims/static/data/species_defaults/FHIaims/light/64_Gd_default +80 -0
  295. gims/static/data/species_defaults/FHIaims/light/65_Tb_default +87 -0
  296. gims/static/data/species_defaults/FHIaims/light/66_Dy_default +84 -0
  297. gims/static/data/species_defaults/FHIaims/light/67_Ho_default +81 -0
  298. gims/static/data/species_defaults/FHIaims/light/68_Er_default +80 -0
  299. gims/static/data/species_defaults/FHIaims/light/69_Tm_default +80 -0
  300. gims/static/data/species_defaults/FHIaims/light/70_Yb_default +82 -0
  301. gims/static/data/species_defaults/FHIaims/light/71_Lu_default +85 -0
  302. gims/static/data/species_defaults/FHIaims/light/72_Hf_default +92 -0
  303. gims/static/data/species_defaults/FHIaims/light/73_Ta_default +88 -0
  304. gims/static/data/species_defaults/FHIaims/light/74_W_default +90 -0
  305. gims/static/data/species_defaults/FHIaims/light/75_Re_default +90 -0
  306. gims/static/data/species_defaults/FHIaims/light/76_Os_default +86 -0
  307. gims/static/data/species_defaults/FHIaims/light/77_Ir_default +82 -0
  308. gims/static/data/species_defaults/FHIaims/light/78_Pt_default +80 -0
  309. gims/static/data/species_defaults/FHIaims/light/79_Au_default +83 -0
  310. gims/static/data/species_defaults/FHIaims/light/80_Hg_default +82 -0
  311. gims/static/data/species_defaults/FHIaims/light/81_Tl_default +85 -0
  312. gims/static/data/species_defaults/FHIaims/light/82_Pb_default +82 -0
  313. gims/static/data/species_defaults/FHIaims/light/83_Bi_default +78 -0
  314. gims/static/data/species_defaults/FHIaims/light/84_Po_default +83 -0
  315. gims/static/data/species_defaults/FHIaims/light/85_At_default +81 -0
  316. gims/static/data/species_defaults/FHIaims/light/86_Rn_default +81 -0
  317. gims/static/data/species_defaults/FHIaims/light/87_Fr_default +79 -0
  318. gims/static/data/species_defaults/FHIaims/light/88_Ra_default +84 -0
  319. gims/static/data/species_defaults/FHIaims/light/89_Ac_default +79 -0
  320. gims/static/data/species_defaults/FHIaims/light/90_Th_default +78 -0
  321. gims/static/data/species_defaults/FHIaims/light/91_Pa_default +79 -0
  322. gims/static/data/species_defaults/FHIaims/light/92_U_default +79 -0
  323. gims/static/data/species_defaults/FHIaims/light/93_Np_default +80 -0
  324. gims/static/data/species_defaults/FHIaims/light/94_Pu_default +82 -0
  325. gims/static/data/species_defaults/FHIaims/light/95_Am_default +82 -0
  326. gims/static/data/species_defaults/FHIaims/light/96_Cm_default +78 -0
  327. gims/static/data/species_defaults/FHIaims/light/97_Bk_default +82 -0
  328. gims/static/data/species_defaults/FHIaims/light/98_Cf_default +82 -0
  329. gims/static/data/species_defaults/FHIaims/light/99_Es_default +79 -0
  330. gims/static/data/species_defaults/FHIaims/really_tight/01_H_default +60 -0
  331. gims/static/data/species_defaults/FHIaims/really_tight/02_He_default +56 -0
  332. gims/static/data/species_defaults/FHIaims/really_tight/03_Li_default +75 -0
  333. gims/static/data/species_defaults/FHIaims/really_tight/04_Be_default +64 -0
  334. gims/static/data/species_defaults/FHIaims/really_tight/05_B_default +71 -0
  335. gims/static/data/species_defaults/FHIaims/really_tight/06_C_default +75 -0
  336. gims/static/data/species_defaults/FHIaims/really_tight/07_N_default +75 -0
  337. gims/static/data/species_defaults/FHIaims/really_tight/08_O_default +76 -0
  338. gims/static/data/species_defaults/FHIaims/really_tight/09_F_default +69 -0
  339. gims/static/data/species_defaults/FHIaims/really_tight/100_Fm_default +79 -0
  340. gims/static/data/species_defaults/FHIaims/really_tight/101_Md_default +80 -0
  341. gims/static/data/species_defaults/FHIaims/really_tight/102_No_default +78 -0
  342. gims/static/data/species_defaults/FHIaims/really_tight/10_Ne_default +68 -0
  343. gims/static/data/species_defaults/FHIaims/really_tight/11_Na_default +76 -0
  344. gims/static/data/species_defaults/FHIaims/really_tight/12_Mg_default +83 -0
  345. gims/static/data/species_defaults/FHIaims/really_tight/13_Al_default +79 -0
  346. gims/static/data/species_defaults/FHIaims/really_tight/14_Si_default +77 -0
  347. gims/static/data/species_defaults/FHIaims/really_tight/15_P_default +79 -0
  348. gims/static/data/species_defaults/FHIaims/really_tight/16_S_default +78 -0
  349. gims/static/data/species_defaults/FHIaims/really_tight/17_Cl_default +76 -0
  350. gims/static/data/species_defaults/FHIaims/really_tight/18_Ar_default +67 -0
  351. gims/static/data/species_defaults/FHIaims/really_tight/19_K_default +75 -0
  352. gims/static/data/species_defaults/FHIaims/really_tight/20_Ca_default +80 -0
  353. gims/static/data/species_defaults/FHIaims/really_tight/21_Sc_default +75 -0
  354. gims/static/data/species_defaults/FHIaims/really_tight/22_Ti_default +77 -0
  355. gims/static/data/species_defaults/FHIaims/really_tight/23_V_default +82 -0
  356. gims/static/data/species_defaults/FHIaims/really_tight/24_Cr_default +84 -0
  357. gims/static/data/species_defaults/FHIaims/really_tight/25_Mn_default +101 -0
  358. gims/static/data/species_defaults/FHIaims/really_tight/26_Fe_default +97 -0
  359. gims/static/data/species_defaults/FHIaims/really_tight/27_Co_default +81 -0
  360. gims/static/data/species_defaults/FHIaims/really_tight/28_Ni_default +80 -0
  361. gims/static/data/species_defaults/FHIaims/really_tight/29_Cu_default +77 -0
  362. gims/static/data/species_defaults/FHIaims/really_tight/30_Zn_default +74 -0
  363. gims/static/data/species_defaults/FHIaims/really_tight/31_Ga_default +78 -0
  364. gims/static/data/species_defaults/FHIaims/really_tight/32_Ge_default +78 -0
  365. gims/static/data/species_defaults/FHIaims/really_tight/33_As_default +77 -0
  366. gims/static/data/species_defaults/FHIaims/really_tight/34_Se_default +79 -0
  367. gims/static/data/species_defaults/FHIaims/really_tight/35_Br_default +77 -0
  368. gims/static/data/species_defaults/FHIaims/really_tight/36_Kr_default +71 -0
  369. gims/static/data/species_defaults/FHIaims/really_tight/37_Rb_default +81 -0
  370. gims/static/data/species_defaults/FHIaims/really_tight/38_Sr_default +87 -0
  371. gims/static/data/species_defaults/FHIaims/really_tight/39_Y_default +79 -0
  372. gims/static/data/species_defaults/FHIaims/really_tight/40_Zr_default +73 -0
  373. gims/static/data/species_defaults/FHIaims/really_tight/41_Nb_default +82 -0
  374. gims/static/data/species_defaults/FHIaims/really_tight/42_Mo_default +81 -0
  375. gims/static/data/species_defaults/FHIaims/really_tight/43_Tc_default +81 -0
  376. gims/static/data/species_defaults/FHIaims/really_tight/44_Ru_default +78 -0
  377. gims/static/data/species_defaults/FHIaims/really_tight/45_Rh_default +79 -0
  378. gims/static/data/species_defaults/FHIaims/really_tight/46_Pd_default +79 -0
  379. gims/static/data/species_defaults/FHIaims/really_tight/47_Ag_default +74 -0
  380. gims/static/data/species_defaults/FHIaims/really_tight/48_Cd_default +76 -0
  381. gims/static/data/species_defaults/FHIaims/really_tight/49_In_default +76 -0
  382. gims/static/data/species_defaults/FHIaims/really_tight/50_Sn_default +77 -0
  383. gims/static/data/species_defaults/FHIaims/really_tight/51_Sb_default +72 -0
  384. gims/static/data/species_defaults/FHIaims/really_tight/52_Te_default +76 -0
  385. gims/static/data/species_defaults/FHIaims/really_tight/53_I_default +75 -0
  386. gims/static/data/species_defaults/FHIaims/really_tight/54_Xe_default +70 -0
  387. gims/static/data/species_defaults/FHIaims/really_tight/55_Cs_default +81 -0
  388. gims/static/data/species_defaults/FHIaims/really_tight/56_Ba_default +88 -0
  389. gims/static/data/species_defaults/FHIaims/really_tight/57_La_default +81 -0
  390. gims/static/data/species_defaults/FHIaims/really_tight/58_Ce_default +83 -0
  391. gims/static/data/species_defaults/FHIaims/really_tight/59_Pr_default +86 -0
  392. gims/static/data/species_defaults/FHIaims/really_tight/60_Nd_default +86 -0
  393. gims/static/data/species_defaults/FHIaims/really_tight/61_Pm_default +86 -0
  394. gims/static/data/species_defaults/FHIaims/really_tight/62_Sm_default +83 -0
  395. gims/static/data/species_defaults/FHIaims/really_tight/63_Eu_default +89 -0
  396. gims/static/data/species_defaults/FHIaims/really_tight/64_Gd_default +78 -0
  397. gims/static/data/species_defaults/FHIaims/really_tight/65_Tb_default +85 -0
  398. gims/static/data/species_defaults/FHIaims/really_tight/66_Dy_default +82 -0
  399. gims/static/data/species_defaults/FHIaims/really_tight/67_Ho_default +79 -0
  400. gims/static/data/species_defaults/FHIaims/really_tight/68_Er_default +78 -0
  401. gims/static/data/species_defaults/FHIaims/really_tight/69_Tm_default +78 -0
  402. gims/static/data/species_defaults/FHIaims/really_tight/70_Yb_default +80 -0
  403. gims/static/data/species_defaults/FHIaims/really_tight/71_Lu_default +83 -0
  404. gims/static/data/species_defaults/FHIaims/really_tight/72_Hf_default +88 -0
  405. gims/static/data/species_defaults/FHIaims/really_tight/73_Ta_default +84 -0
  406. gims/static/data/species_defaults/FHIaims/really_tight/74_W_default +86 -0
  407. gims/static/data/species_defaults/FHIaims/really_tight/75_Re_default +86 -0
  408. gims/static/data/species_defaults/FHIaims/really_tight/76_Os_default +82 -0
  409. gims/static/data/species_defaults/FHIaims/really_tight/77_Ir_default +78 -0
  410. gims/static/data/species_defaults/FHIaims/really_tight/78_Pt_default +76 -0
  411. gims/static/data/species_defaults/FHIaims/really_tight/79_Au_default +83 -0
  412. gims/static/data/species_defaults/FHIaims/really_tight/80_Hg_default +77 -0
  413. gims/static/data/species_defaults/FHIaims/really_tight/81_Tl_default +82 -0
  414. gims/static/data/species_defaults/FHIaims/really_tight/82_Pb_default +79 -0
  415. gims/static/data/species_defaults/FHIaims/really_tight/83_Bi_default +75 -0
  416. gims/static/data/species_defaults/FHIaims/really_tight/84_Po_default +80 -0
  417. gims/static/data/species_defaults/FHIaims/really_tight/85_At_default +78 -0
  418. gims/static/data/species_defaults/FHIaims/really_tight/86_Rn_default +73 -0
  419. gims/static/data/species_defaults/FHIaims/really_tight/87_Fr_default +82 -0
  420. gims/static/data/species_defaults/FHIaims/really_tight/88_Ra_default +81 -0
  421. gims/static/data/species_defaults/FHIaims/really_tight/89_Ac_default +76 -0
  422. gims/static/data/species_defaults/FHIaims/really_tight/90_Th_default +75 -0
  423. gims/static/data/species_defaults/FHIaims/really_tight/91_Pa_default +76 -0
  424. gims/static/data/species_defaults/FHIaims/really_tight/92_U_default +76 -0
  425. gims/static/data/species_defaults/FHIaims/really_tight/93_Np_default +77 -0
  426. gims/static/data/species_defaults/FHIaims/really_tight/94_Pu_default +79 -0
  427. gims/static/data/species_defaults/FHIaims/really_tight/95_Am_default +79 -0
  428. gims/static/data/species_defaults/FHIaims/really_tight/96_Cm_default +75 -0
  429. gims/static/data/species_defaults/FHIaims/really_tight/97_Bk_default +79 -0
  430. gims/static/data/species_defaults/FHIaims/really_tight/98_Cf_default +79 -0
  431. gims/static/data/species_defaults/FHIaims/really_tight/99_Es_default +79 -0
  432. gims/static/data/species_defaults/FHIaims/tight/01_H_default +74 -0
  433. gims/static/data/species_defaults/FHIaims/tight/02_He_default +68 -0
  434. gims/static/data/species_defaults/FHIaims/tight/03_Li_default +87 -0
  435. gims/static/data/species_defaults/FHIaims/tight/04_Be_default +76 -0
  436. gims/static/data/species_defaults/FHIaims/tight/05_B_default +83 -0
  437. gims/static/data/species_defaults/FHIaims/tight/06_C_default +89 -0
  438. gims/static/data/species_defaults/FHIaims/tight/07_N_default +90 -0
  439. gims/static/data/species_defaults/FHIaims/tight/08_O_default +90 -0
  440. gims/static/data/species_defaults/FHIaims/tight/09_F_default +81 -0
  441. gims/static/data/species_defaults/FHIaims/tight/100_Fm_default +79 -0
  442. gims/static/data/species_defaults/FHIaims/tight/101_Md_default +80 -0
  443. gims/static/data/species_defaults/FHIaims/tight/102_No_default +78 -0
  444. gims/static/data/species_defaults/FHIaims/tight/10_Ne_default +80 -0
  445. gims/static/data/species_defaults/FHIaims/tight/11_Na_default +88 -0
  446. gims/static/data/species_defaults/FHIaims/tight/12_Mg_default +97 -0
  447. gims/static/data/species_defaults/FHIaims/tight/13_Al_default +91 -0
  448. gims/static/data/species_defaults/FHIaims/tight/14_Si_default +94 -0
  449. gims/static/data/species_defaults/FHIaims/tight/15_P_default +92 -0
  450. gims/static/data/species_defaults/FHIaims/tight/16_S_default +90 -0
  451. gims/static/data/species_defaults/FHIaims/tight/17_Cl_default +88 -0
  452. gims/static/data/species_defaults/FHIaims/tight/18_Ar_default +79 -0
  453. gims/static/data/species_defaults/FHIaims/tight/19_K_default +87 -0
  454. gims/static/data/species_defaults/FHIaims/tight/20_Ca_default +92 -0
  455. gims/static/data/species_defaults/FHIaims/tight/21_Sc_default +79 -0
  456. gims/static/data/species_defaults/FHIaims/tight/22_Ti_default +80 -0
  457. gims/static/data/species_defaults/FHIaims/tight/23_V_default +86 -0
  458. gims/static/data/species_defaults/FHIaims/tight/24_Cr_default +88 -0
  459. gims/static/data/species_defaults/FHIaims/tight/25_Mn_default +106 -0
  460. gims/static/data/species_defaults/FHIaims/tight/26_Fe_default +99 -0
  461. gims/static/data/species_defaults/FHIaims/tight/27_Co_default +83 -0
  462. gims/static/data/species_defaults/FHIaims/tight/28_Ni_default +81 -0
  463. gims/static/data/species_defaults/FHIaims/tight/29_Cu_default +78 -0
  464. gims/static/data/species_defaults/FHIaims/tight/30_Zn_default +78 -0
  465. gims/static/data/species_defaults/FHIaims/tight/31_Ga_default +85 -0
  466. gims/static/data/species_defaults/FHIaims/tight/32_Ge_default +83 -0
  467. gims/static/data/species_defaults/FHIaims/tight/33_As_default +84 -0
  468. gims/static/data/species_defaults/FHIaims/tight/34_Se_default +84 -0
  469. gims/static/data/species_defaults/FHIaims/tight/35_Br_default +82 -0
  470. gims/static/data/species_defaults/FHIaims/tight/36_Kr_default +78 -0
  471. gims/static/data/species_defaults/FHIaims/tight/37_Rb_default +81 -0
  472. gims/static/data/species_defaults/FHIaims/tight/38_Sr_default +87 -0
  473. gims/static/data/species_defaults/FHIaims/tight/39_Y_default +81 -0
  474. gims/static/data/species_defaults/FHIaims/tight/40_Zr_default +75 -0
  475. gims/static/data/species_defaults/FHIaims/tight/41_Nb_default +84 -0
  476. gims/static/data/species_defaults/FHIaims/tight/42_Mo_default +83 -0
  477. gims/static/data/species_defaults/FHIaims/tight/43_Tc_default +83 -0
  478. gims/static/data/species_defaults/FHIaims/tight/44_Ru_default +80 -0
  479. gims/static/data/species_defaults/FHIaims/tight/45_Rh_default +81 -0
  480. gims/static/data/species_defaults/FHIaims/tight/46_Pd_default +80 -0
  481. gims/static/data/species_defaults/FHIaims/tight/47_Ag_default +75 -0
  482. gims/static/data/species_defaults/FHIaims/tight/48_Cd_default +78 -0
  483. gims/static/data/species_defaults/FHIaims/tight/49_In_default +81 -0
  484. gims/static/data/species_defaults/FHIaims/tight/50_Sn_default +82 -0
  485. gims/static/data/species_defaults/FHIaims/tight/51_Sb_default +77 -0
  486. gims/static/data/species_defaults/FHIaims/tight/52_Te_default +81 -0
  487. gims/static/data/species_defaults/FHIaims/tight/53_I_default +80 -0
  488. gims/static/data/species_defaults/FHIaims/tight/54_Xe_default +75 -0
  489. gims/static/data/species_defaults/FHIaims/tight/55_Cs_default +81 -0
  490. gims/static/data/species_defaults/FHIaims/tight/56_Ba_default +88 -0
  491. gims/static/data/species_defaults/FHIaims/tight/57_La_default +81 -0
  492. gims/static/data/species_defaults/FHIaims/tight/58_Ce_default +83 -0
  493. gims/static/data/species_defaults/FHIaims/tight/59_Pr_default +86 -0
  494. gims/static/data/species_defaults/FHIaims/tight/60_Nd_default +86 -0
  495. gims/static/data/species_defaults/FHIaims/tight/61_Pm_default +86 -0
  496. gims/static/data/species_defaults/FHIaims/tight/62_Sm_default +83 -0
  497. gims/static/data/species_defaults/FHIaims/tight/63_Eu_default +89 -0
  498. gims/static/data/species_defaults/FHIaims/tight/64_Gd_default +78 -0
  499. gims/static/data/species_defaults/FHIaims/tight/65_Tb_default +85 -0
  500. gims/static/data/species_defaults/FHIaims/tight/66_Dy_default +82 -0
  501. gims/static/data/species_defaults/FHIaims/tight/67_Ho_default +79 -0
  502. gims/static/data/species_defaults/FHIaims/tight/68_Er_default +78 -0
  503. gims/static/data/species_defaults/FHIaims/tight/69_Tm_default +78 -0
  504. gims/static/data/species_defaults/FHIaims/tight/70_Yb_default +80 -0
  505. gims/static/data/species_defaults/FHIaims/tight/71_Lu_default +83 -0
  506. gims/static/data/species_defaults/FHIaims/tight/72_Hf_default +90 -0
  507. gims/static/data/species_defaults/FHIaims/tight/73_Ta_default +86 -0
  508. gims/static/data/species_defaults/FHIaims/tight/74_W_default +88 -0
  509. gims/static/data/species_defaults/FHIaims/tight/75_Re_default +88 -0
  510. gims/static/data/species_defaults/FHIaims/tight/76_Os_default +84 -0
  511. gims/static/data/species_defaults/FHIaims/tight/77_Ir_default +80 -0
  512. gims/static/data/species_defaults/FHIaims/tight/78_Pt_default +78 -0
  513. gims/static/data/species_defaults/FHIaims/tight/79_Au_default +86 -0
  514. gims/static/data/species_defaults/FHIaims/tight/80_Hg_default +79 -0
  515. gims/static/data/species_defaults/FHIaims/tight/81_Tl_default +82 -0
  516. gims/static/data/species_defaults/FHIaims/tight/82_Pb_default +79 -0
  517. gims/static/data/species_defaults/FHIaims/tight/83_Bi_default +75 -0
  518. gims/static/data/species_defaults/FHIaims/tight/84_Po_default +80 -0
  519. gims/static/data/species_defaults/FHIaims/tight/85_At_default +78 -0
  520. gims/static/data/species_defaults/FHIaims/tight/86_Rn_default +73 -0
  521. gims/static/data/species_defaults/FHIaims/tight/87_Fr_default +82 -0
  522. gims/static/data/species_defaults/FHIaims/tight/88_Ra_default +81 -0
  523. gims/static/data/species_defaults/FHIaims/tight/89_Ac_default +76 -0
  524. gims/static/data/species_defaults/FHIaims/tight/90_Th_default +75 -0
  525. gims/static/data/species_defaults/FHIaims/tight/91_Pa_default +76 -0
  526. gims/static/data/species_defaults/FHIaims/tight/92_U_default +76 -0
  527. gims/static/data/species_defaults/FHIaims/tight/93_Np_default +77 -0
  528. gims/static/data/species_defaults/FHIaims/tight/94_Pu_default +79 -0
  529. gims/static/data/species_defaults/FHIaims/tight/95_Am_default +79 -0
  530. gims/static/data/species_defaults/FHIaims/tight/96_Cm_default +75 -0
  531. gims/static/data/species_defaults/FHIaims/tight/97_Bk_default +79 -0
  532. gims/static/data/species_defaults/FHIaims/tight/98_Cf_default +79 -0
  533. gims/static/data/species_defaults/FHIaims/tight/99_Es_default +79 -0
  534. gims/static/download-icon.c5f977ab.png +0 -0
  535. gims/static/expand-icon.e96667b6.svg +1 -0
  536. gims/static/help-icon.49032d2d.png +0 -0
  537. gims/static/index.html +38 -0
  538. gims/static/k_grid_density-formula.d528f386.png +0 -0
  539. gims/static/next-arrow-white-icon.2494dc84.png +0 -0
  540. gims/static/pause-icon.b46d2246.png +0 -0
  541. gims/static/play-icon.f05ab42d.png +0 -0
  542. gims/static/prev-arrow-white-icon.0b4086d7.png +0 -0
  543. gims/static/redo-icon.ecb789f5.png +0 -0
  544. gims/static/refresh-icon.42a24637.png +0 -0
  545. gims/static/screenshot-icon.a88631d6.png +0 -0
  546. gims/static/settings-icon.6b0d01a5.png +0 -0
  547. gims/static/step-back-icon.7a109486.svg +1 -0
  548. gims/static/step-forward-icon.7b2bc68e.svg +1 -0
  549. gims/static/undo-icon.df3ed69f.png +0 -0
  550. gims/structure.py +172 -0
  551. gims/structure_info.py +98 -0
  552. gims/workflow.py +138 -0
  553. gims-1.4.0.dist-info/METADATA +143 -0
  554. gims-1.4.0.dist-info/RECORD +558 -0
  555. gims-1.4.0.dist-info/WHEEL +5 -0
  556. gims-1.4.0.dist-info/entry_points.txt +2 -0
  557. gims-1.4.0.dist-info/licenses/LICENSE +504 -0
  558. 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
@@ -0,0 +1,3 @@
1
+ from gims import main
2
+
3
+ main()
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