gebpy 1.1.3__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 (254) hide show
  1. gebpy/__init__.py +55 -0
  2. gebpy/__pycache__/__init__.cpython-310.pyc +0 -0
  3. gebpy/adapters/__init__.py +0 -0
  4. gebpy/cli/__init__.py +0 -0
  5. gebpy/core/__init__.py +0 -0
  6. gebpy/core/chemistry/__init__.py +0 -0
  7. gebpy/core/chemistry/common.py +1369 -0
  8. gebpy/core/chemistry/elements.py +317 -0
  9. gebpy/core/chemistry/geochemistry.py +1728 -0
  10. gebpy/core/fluids/__init__.py +0 -0
  11. gebpy/core/io/__init__.py +0 -0
  12. gebpy/core/mathematics/__init__.py +0 -0
  13. gebpy/core/minerals/__init__.py +0 -0
  14. gebpy/core/minerals/carbonates.py +412 -0
  15. gebpy/core/minerals/common.py +555 -0
  16. gebpy/core/minerals/config.py +77 -0
  17. gebpy/core/minerals/cyclosilicates.py +0 -0
  18. gebpy/core/minerals/halides.py +0 -0
  19. gebpy/core/minerals/inosilicates.py +0 -0
  20. gebpy/core/minerals/nesosilicates.py +0 -0
  21. gebpy/core/minerals/organics.py +0 -0
  22. gebpy/core/minerals/oxides.py +589 -0
  23. gebpy/core/minerals/phosphates.py +0 -0
  24. gebpy/core/minerals/phospides.py +0 -0
  25. gebpy/core/minerals/phyllosilicates.py +436 -0
  26. gebpy/core/minerals/sorosilicates.py +0 -0
  27. gebpy/core/minerals/sulfates.py +0 -0
  28. gebpy/core/minerals/sulfides.py +459 -0
  29. gebpy/core/minerals/synthesis.py +201 -0
  30. gebpy/core/minerals/tectosilicates.py +433 -0
  31. gebpy/core/physics/__init__.py +0 -0
  32. gebpy/core/physics/common.py +53 -0
  33. gebpy/core/physics/geophysics.py +351 -0
  34. gebpy/core/rocks/__init__.py +0 -0
  35. gebpy/core/rocks/anisotropic_rocks.py +395 -0
  36. gebpy/core/rocks/common.py +95 -0
  37. gebpy/core/rocks/config.py +77 -0
  38. gebpy/core/rocks/isotropic_rocks.py +395 -0
  39. gebpy/core/rocks/sedimentary.py +385 -0
  40. gebpy/core/subsurface/__init__.py +0 -0
  41. gebpy/data_minerals/__init__.py +0 -0
  42. gebpy/data_minerals/albite.yaml +59 -0
  43. gebpy/data_minerals/anatase.yaml +43 -0
  44. gebpy/data_minerals/ankerite.yaml +47 -0
  45. gebpy/data_minerals/annite.yaml +57 -0
  46. gebpy/data_minerals/anorthite.yaml +59 -0
  47. gebpy/data_minerals/antigorite.yaml +53 -0
  48. gebpy/data_minerals/aragonite.yaml +48 -0
  49. gebpy/data_minerals/argutite.yaml +43 -0
  50. gebpy/data_minerals/arsenolite.yaml +40 -0
  51. gebpy/data_minerals/au3oxide.yaml +46 -0
  52. gebpy/data_minerals/avicennite.yaml +40 -0
  53. gebpy/data_minerals/azurite.yaml +53 -0
  54. gebpy/data_minerals/baddeleyite.yaml +49 -0
  55. gebpy/data_minerals/bismite.yaml +49 -0
  56. gebpy/data_minerals/boehmite.yaml +48 -0
  57. gebpy/data_minerals/brookite.yaml +46 -0
  58. gebpy/data_minerals/brucite.yaml +45 -0
  59. gebpy/data_minerals/bunsenite.yaml +40 -0
  60. gebpy/data_minerals/calcite.yaml +45 -0
  61. gebpy/data_minerals/cassiterite.yaml +43 -0
  62. gebpy/data_minerals/cerussite.yaml +48 -0
  63. gebpy/data_minerals/chamosite.yaml +56 -0
  64. gebpy/data_minerals/chlorite.yaml +75 -0
  65. gebpy/data_minerals/chromite.yaml +42 -0
  66. gebpy/data_minerals/chrysotile.yaml +53 -0
  67. gebpy/data_minerals/claudetite.yaml +49 -0
  68. gebpy/data_minerals/clinochlore.yaml +55 -0
  69. gebpy/data_minerals/cochromite.yaml +42 -0
  70. gebpy/data_minerals/corundum.yaml +43 -0
  71. gebpy/data_minerals/crocoite.yaml +51 -0
  72. gebpy/data_minerals/cuprite.yaml +40 -0
  73. gebpy/data_minerals/cuprospinel.yaml +42 -0
  74. gebpy/data_minerals/diaspore.yaml +48 -0
  75. gebpy/data_minerals/dolomite.yaml +47 -0
  76. gebpy/data_minerals/eastonite.yaml +57 -0
  77. gebpy/data_minerals/eskolaite.yaml +43 -0
  78. gebpy/data_minerals/fechlorite.yaml +61 -0
  79. gebpy/data_minerals/fecolumbite.yaml +48 -0
  80. gebpy/data_minerals/ferberite.yaml +51 -0
  81. gebpy/data_minerals/fetantalite.yaml +48 -0
  82. gebpy/data_minerals/franklinite.yaml +42 -0
  83. gebpy/data_minerals/gahnite.yaml +42 -0
  84. gebpy/data_minerals/galaxite.yaml +42 -0
  85. gebpy/data_minerals/geikielite.yaml +45 -0
  86. gebpy/data_minerals/gibbsite.yaml +51 -0
  87. gebpy/data_minerals/glauconite.yaml +69 -0
  88. gebpy/data_minerals/goethite.yaml +48 -0
  89. gebpy/data_minerals/groutite.yaml +48 -0
  90. gebpy/data_minerals/hematite.yaml +43 -0
  91. gebpy/data_minerals/hercynite.yaml +42 -0
  92. gebpy/data_minerals/huebnerite.yaml +51 -0
  93. gebpy/data_minerals/ikaite.yaml +53 -0
  94. gebpy/data_minerals/illite.yaml +55 -0
  95. gebpy/data_minerals/ilmenite.yaml +45 -0
  96. gebpy/data_minerals/jacobsite.yaml +42 -0
  97. gebpy/data_minerals/kalsilite.yaml +47 -0
  98. gebpy/data_minerals/kaolinite.yaml +59 -0
  99. gebpy/data_minerals/karelianite.yaml +43 -0
  100. gebpy/data_minerals/lime.yaml +40 -0
  101. gebpy/data_minerals/litharge.yaml +43 -0
  102. gebpy/data_minerals/magnesiochromite.yaml +42 -0
  103. gebpy/data_minerals/magnesioferrite.yaml +42 -0
  104. gebpy/data_minerals/magnesite.yaml +45 -0
  105. gebpy/data_minerals/magnetite.yaml +41 -0
  106. gebpy/data_minerals/malachite.yaml +53 -0
  107. gebpy/data_minerals/manganite.yaml +51 -0
  108. gebpy/data_minerals/manganochromite.yaml +42 -0
  109. gebpy/data_minerals/manganosite.yaml +40 -0
  110. gebpy/data_minerals/marialite.yaml +49 -0
  111. gebpy/data_minerals/massicot.yaml +46 -0
  112. gebpy/data_minerals/meionite.yaml +49 -0
  113. gebpy/data_minerals/mgchlorite.yaml +61 -0
  114. gebpy/data_minerals/mgcolumbite.yaml +48 -0
  115. gebpy/data_minerals/mgtantalite.yaml +48 -0
  116. gebpy/data_minerals/microcline.yaml +59 -0
  117. gebpy/data_minerals/minium.yaml +44 -0
  118. gebpy/data_minerals/mnchlorite.yaml +61 -0
  119. gebpy/data_minerals/mncolumbite.yaml +48 -0
  120. gebpy/data_minerals/mntantalite.yaml +48 -0
  121. gebpy/data_minerals/monteponite.yaml +40 -0
  122. gebpy/data_minerals/montmorillonite.yaml +77 -0
  123. gebpy/data_minerals/muscovite.yaml +55 -0
  124. gebpy/data_minerals/nanepheline.yaml +47 -0
  125. gebpy/data_minerals/nichlorite.yaml +61 -0
  126. gebpy/data_minerals/nichromite.yaml +42 -0
  127. gebpy/data_minerals/nimite.yaml +55 -0
  128. gebpy/data_minerals/nontronite.yaml +73 -0
  129. gebpy/data_minerals/orthoclase.yaml +53 -0
  130. gebpy/data_minerals/paratellurite.yaml +43 -0
  131. gebpy/data_minerals/pennantite.yaml +61 -0
  132. gebpy/data_minerals/periclase.yaml +40 -0
  133. gebpy/data_minerals/phlogopite.yaml +57 -0
  134. gebpy/data_minerals/plattnerite.yaml +43 -0
  135. gebpy/data_minerals/powellite.yaml +45 -0
  136. gebpy/data_minerals/pyrite.yaml +40 -0
  137. gebpy/data_minerals/pyrolusite.yaml +43 -0
  138. gebpy/data_minerals/pyrophanite.yaml +45 -0
  139. gebpy/data_minerals/pyrophyllite.yaml +59 -0
  140. gebpy/data_minerals/quartz.yaml +43 -0
  141. gebpy/data_minerals/rhodochrosite.yaml +45 -0
  142. gebpy/data_minerals/rutile.yaml +43 -0
  143. gebpy/data_minerals/saponite.yaml +77 -0
  144. gebpy/data_minerals/scheelite.yaml +45 -0
  145. gebpy/data_minerals/scrutinyite.yaml +46 -0
  146. gebpy/data_minerals/senarmontite.yaml +40 -0
  147. gebpy/data_minerals/siderite.yaml +45 -0
  148. gebpy/data_minerals/siderophyllite.yaml +57 -0
  149. gebpy/data_minerals/smithsonite.yaml +45 -0
  150. gebpy/data_minerals/spinel.yaml +42 -0
  151. gebpy/data_minerals/stishovite.yaml +43 -0
  152. gebpy/data_minerals/stolzite.yaml +45 -0
  153. gebpy/data_minerals/talc.yaml +53 -0
  154. gebpy/data_minerals/tistarite.yaml +43 -0
  155. gebpy/data_minerals/trevorite.yaml +42 -0
  156. gebpy/data_minerals/ulvoespinel.yaml +42 -0
  157. gebpy/data_minerals/uraninite.yaml +40 -0
  158. gebpy/data_minerals/valentinite.yaml +46 -0
  159. gebpy/data_minerals/vermiculite.yaml +69 -0
  160. gebpy/data_minerals/wulfenite.yaml +45 -0
  161. gebpy/data_minerals/wustite.yaml +40 -0
  162. gebpy/data_minerals/zincite.yaml +43 -0
  163. gebpy/data_minerals/zincochromite.yaml +42 -0
  164. gebpy/data_rocks/__init__.py +0 -0
  165. gebpy/data_rocks/dolostone.yaml +40 -0
  166. gebpy/data_rocks/limestone.yaml +40 -0
  167. gebpy/data_rocks/marl.yaml +50 -0
  168. gebpy/data_rocks/sandstone.yaml +39 -0
  169. gebpy/data_rocks/shale.yaml +50 -0
  170. gebpy/gebpy_app.py +8732 -0
  171. gebpy/gui/__init__.py +0 -0
  172. gebpy/lib/images/GebPy_Header.png +0 -0
  173. gebpy/lib/images/GebPy_Icon.png +0 -0
  174. gebpy/lib/images/GebPy_Logo.png +0 -0
  175. gebpy/main.py +29 -0
  176. gebpy/modules/__init__.py +0 -0
  177. gebpy/modules/__pycache__/__init__.cpython-310.pyc +0 -0
  178. gebpy/modules/__pycache__/metamorphics.cpython-310.pyc +0 -0
  179. gebpy/modules/__pycache__/silicates.cpython-310.pyc +0 -0
  180. gebpy/modules/carbonates.py +2658 -0
  181. gebpy/modules/chemistry.py +1369 -0
  182. gebpy/modules/core.py +1805 -0
  183. gebpy/modules/elements.py +317 -0
  184. gebpy/modules/evaporites.py +1299 -0
  185. gebpy/modules/exploration.py +1145 -0
  186. gebpy/modules/fluids.py +339 -0
  187. gebpy/modules/geochemistry.py +1727 -0
  188. gebpy/modules/geophysics.py +351 -0
  189. gebpy/modules/gui.py +9093 -0
  190. gebpy/modules/gui_elements.py +145 -0
  191. gebpy/modules/halides.py +485 -0
  192. gebpy/modules/igneous.py +2241 -0
  193. gebpy/modules/metamorphics.py +3222 -0
  194. gebpy/modules/mineralogy.py +442 -0
  195. gebpy/modules/minerals.py +7954 -0
  196. gebpy/modules/ore.py +1648 -0
  197. gebpy/modules/organics.py +530 -0
  198. gebpy/modules/oxides.py +9057 -0
  199. gebpy/modules/petrophysics.py +98 -0
  200. gebpy/modules/phosphates.py +589 -0
  201. gebpy/modules/phospides.py +194 -0
  202. gebpy/modules/plotting.py +619 -0
  203. gebpy/modules/pyllosilicates.py +380 -0
  204. gebpy/modules/sedimentary_rocks.py +908 -0
  205. gebpy/modules/sequences.py +2166 -0
  206. gebpy/modules/series.py +1625 -0
  207. gebpy/modules/silicates.py +11102 -0
  208. gebpy/modules/siliciclastics.py +1846 -0
  209. gebpy/modules/subsurface_2d.py +179 -0
  210. gebpy/modules/sulfates.py +1629 -0
  211. gebpy/modules/sulfides.py +4786 -0
  212. gebpy/plotting/__init__.py +0 -0
  213. gebpy/ui_nb/__init__.py +0 -0
  214. gebpy/user_data/.gitkeep +0 -0
  215. gebpy-1.1.3.dist-info/LICENSE +165 -0
  216. gebpy-1.1.3.dist-info/METADATA +207 -0
  217. gebpy-1.1.3.dist-info/RECORD +254 -0
  218. gebpy-1.1.3.dist-info/WHEEL +5 -0
  219. gebpy-1.1.3.dist-info/entry_points.txt +2 -0
  220. gebpy-1.1.3.dist-info/top_level.txt +1 -0
  221. modules/__init__.py +0 -0
  222. modules/carbonates.py +2658 -0
  223. modules/chemistry.py +1369 -0
  224. modules/core.py +1805 -0
  225. modules/elements.py +317 -0
  226. modules/evaporites.py +1299 -0
  227. modules/exploration.py +765 -0
  228. modules/fluids.py +339 -0
  229. modules/geochemistry.py +1727 -0
  230. modules/geophysics.py +337 -0
  231. modules/gui.py +9093 -0
  232. modules/gui_elements.py +145 -0
  233. modules/halides.py +485 -0
  234. modules/igneous.py +2196 -0
  235. modules/metamorphics.py +2699 -0
  236. modules/mineralogy.py +442 -0
  237. modules/minerals.py +7954 -0
  238. modules/ore.py +1628 -0
  239. modules/organics.py +530 -0
  240. modules/oxides.py +9057 -0
  241. modules/petrophysics.py +98 -0
  242. modules/phosphates.py +589 -0
  243. modules/phospides.py +194 -0
  244. modules/plotting.py +619 -0
  245. modules/pyllosilicates.py +380 -0
  246. modules/sedimentary_rocks.py +908 -0
  247. modules/sequences.py +2166 -0
  248. modules/series.py +1625 -0
  249. modules/silicates.py +11102 -0
  250. modules/siliciclastics.py +1830 -0
  251. modules/subsurface_2d.py +179 -0
  252. modules/sulfates.py +1629 -0
  253. modules/sulfides.py +4786 -0
  254. notebooks/__init__.py +0 -0
modules/mineralogy.py ADDED
@@ -0,0 +1,442 @@
1
+ #!/usr/bin/env python
2
+ # -*-coding: utf-8 -*-
3
+
4
+ #-----------------------------------------------
5
+
6
+ # Name: mineralogy.py
7
+ # Author: Maximilian A. Beeskow
8
+ # Version: 1.0
9
+ # Date: 08.09.2022
10
+
11
+ #-----------------------------------------------
12
+
13
+ ## MODULES
14
+ from modules.oxides import Oxides, RutileGroup, PericlaseGroup, WulfeniteGroup
15
+
16
+ class Mineralogy:
17
+ #
18
+ def __init__(self, keyword):
19
+ self.keyword = keyword
20
+ #
21
+ def compare_minerals(self, number=10):
22
+ if self.keyword == "Spinel Group":
23
+ data_minerals = {"Al-Spi": {}, "Fe-Spi": {}, "Cr-Spi": {}}
24
+ categories = ["M", "rho", "V", "vP", "vS", "vP/vS", "K", "G", "E", "nu", "GR", "PE", "U", "chemistry"]
25
+ for key, value in data_minerals.items():
26
+ for category in categories:
27
+ if category != "chemistry":
28
+ value[category] = []
29
+ else:
30
+ value[category] = {}
31
+ #
32
+ n = 0
33
+ list_elements = []
34
+ while n < number:
35
+ data_al_sp = Oxides(impurity="pure", data_type=True).create_aluminium_spinel()
36
+ data_fe_sp = Oxides(impurity="pure", data_type=True).create_iron_spinel()
37
+ data_cr_sp = Oxides(impurity="pure", data_type=True).create_chromium_spinel()
38
+ #
39
+ if n == 0:
40
+ list_elements_al = list(data_al_sp["chemistry"].keys())
41
+ list_elements_fe = list(data_fe_sp["chemistry"].keys())
42
+ list_elements_cr = list(data_cr_sp["chemistry"].keys())
43
+ list_elements.extend(list_elements_al)
44
+ list_elements.extend(list_elements_fe)
45
+ list_elements.extend(list_elements_cr)
46
+ list_elements = list(dict.fromkeys(list_elements))
47
+ for element in list_elements:
48
+ data_minerals["Al-Spi"]["chemistry"][element] = []
49
+ data_minerals["Fe-Spi"]["chemistry"][element] = []
50
+ data_minerals["Cr-Spi"]["chemistry"][element] = []
51
+ #
52
+ for category in categories:
53
+ if category != "chemistry":
54
+ data_minerals["Al-Spi"][category].append(round(data_al_sp[category], 4))
55
+ data_minerals["Fe-Spi"][category].append(round(data_fe_sp[category], 4))
56
+ data_minerals["Cr-Spi"][category].append(round(data_cr_sp[category], 4))
57
+ else:
58
+ for element in list_elements:
59
+ if element in data_al_sp[category]:
60
+ data_minerals["Al-Spi"][category][element].append(round(data_al_sp[category][element], 4))
61
+ else:
62
+ data_minerals["Al-Spi"][category][element].append(round(0.0, 4))
63
+ if element in data_fe_sp[category]:
64
+ data_minerals["Fe-Spi"][category][element].append(round(data_fe_sp[category][element], 4))
65
+ else:
66
+ data_minerals["Fe-Spi"][category][element].append(round(0.0, 4))
67
+ if element in data_cr_sp[category]:
68
+ data_minerals["Cr-Spi"][category][element].append(round(data_cr_sp[category][element], 4))
69
+ else:
70
+ data_minerals["Cr-Spi"][category][element].append(round(0.0, 4))
71
+ #
72
+ n += 1
73
+ #
74
+ data_minerals["Al-Spi"]["color"] = "tab:blue"
75
+ data_minerals["Fe-Spi"]["color"] = "tab:red"
76
+ data_minerals["Cr-Spi"]["color"] = "tab:green"
77
+ #
78
+ elif self.keyword == "Hematite Group":
79
+ data_minerals = {"Hem": {}, "Crn": {}, "Esk": {}, "Tta": {}, "Kar": {}, "Hem-Group": {}}
80
+ categories = ["M", "rho", "V", "vP", "vS", "vP/vS", "K", "G", "E", "nu", "GR", "PE", "U", "chemistry"]
81
+ for key, value in data_minerals.items():
82
+ for category in categories:
83
+ if category != "chemistry":
84
+ value[category] = []
85
+ else:
86
+ value[category] = {}
87
+ #
88
+ n = 0
89
+ list_elements = []
90
+ #
91
+ data_hem = Oxides(impurity="pure", data_type=True).create_hematite()
92
+ data_crn = Oxides(impurity="pure", data_type=True).create_corundum()
93
+ data_esk = Oxides(impurity="pure", data_type=True).create_eskolaite()
94
+ data_tta = Oxides(impurity="pure", data_type=True).create_tistarite()
95
+ data_kar = Oxides(impurity="pure", data_type=True).create_karelianite()
96
+ #
97
+ while n < number:
98
+ data_group = Oxides(impurity="pure", data_type=True).create_hematite_group()
99
+ #
100
+ if n == 0:
101
+ list_elements_hem = list(data_hem["chemistry"].keys())
102
+ list_elements_crn = list(data_crn["chemistry"].keys())
103
+ list_elements_esk = list(data_esk["chemistry"].keys())
104
+ list_elements_tta = list(data_tta["chemistry"].keys())
105
+ list_elements_kar = list(data_kar["chemistry"].keys())
106
+ list_elements_group = list(data_group["chemistry"].keys())
107
+ list_elements.extend(list_elements_hem)
108
+ list_elements.extend(list_elements_crn)
109
+ list_elements.extend(list_elements_esk)
110
+ list_elements.extend(list_elements_tta)
111
+ list_elements.extend(list_elements_kar)
112
+ list_elements.extend(list_elements_group)
113
+ list_elements = list(dict.fromkeys(list_elements))
114
+ for element in list_elements:
115
+ data_minerals["Hem"]["chemistry"][element] = []
116
+ data_minerals["Crn"]["chemistry"][element] = []
117
+ data_minerals["Esk"]["chemistry"][element] = []
118
+ data_minerals["Tta"]["chemistry"][element] = []
119
+ data_minerals["Kar"]["chemistry"][element] = []
120
+ data_minerals["Hem-Group"]["chemistry"][element] = []
121
+ #
122
+ for category in categories:
123
+ if category != "chemistry":
124
+ data_minerals["Hem"][category].append(round(data_hem[category], 4))
125
+ data_minerals["Crn"][category].append(round(data_crn[category], 4))
126
+ data_minerals["Esk"][category].append(round(data_esk[category], 4))
127
+ data_minerals["Tta"][category].append(round(data_tta[category], 4))
128
+ data_minerals["Kar"][category].append(round(data_kar[category], 4))
129
+ data_minerals["Hem-Group"][category].append(round(data_group[category], 4))
130
+ else:
131
+ for element in list_elements:
132
+ if element in data_hem[category]:
133
+ data_minerals["Hem"][category][element].append(round(data_hem[category][element], 4))
134
+ else:
135
+ data_minerals["Hem"][category][element].append(round(0.0, 4))
136
+ if element in data_crn[category]:
137
+ data_minerals["Crn"][category][element].append(round(data_crn[category][element], 4))
138
+ else:
139
+ data_minerals["Crn"][category][element].append(round(0.0, 4))
140
+ if element in data_esk[category]:
141
+ data_minerals["Esk"][category][element].append(round(data_esk[category][element], 4))
142
+ else:
143
+ data_minerals["Esk"][category][element].append(round(0.0, 4))
144
+ if element in data_tta[category]:
145
+ data_minerals["Tta"][category][element].append(round(data_tta[category][element], 4))
146
+ else:
147
+ data_minerals["Tta"][category][element].append(round(0.0, 4))
148
+ if element in data_kar[category]:
149
+ data_minerals["Kar"][category][element].append(round(data_kar[category][element], 4))
150
+ else:
151
+ data_minerals["Kar"][category][element].append(round(0.0, 4))
152
+ if element in data_group[category]:
153
+ data_minerals["Hem-Group"][category][element].append(round(data_group[category][element], 4))
154
+ else:
155
+ data_minerals["Hem-Group"][category][element].append(round(0.0, 4))
156
+ #
157
+ n += 1
158
+ #
159
+ data_minerals["Hem"]["color"] = "tab:blue"
160
+ data_minerals["Crn"]["color"] = "tab:red"
161
+ data_minerals["Esk"]["color"] = "tab:green"
162
+ data_minerals["Tta"]["color"] = "tab:orange"
163
+ data_minerals["Kar"]["color"] = "tab:purple"
164
+ data_minerals["Hem-Group"]["color"] = "tab:gray"
165
+ #
166
+ elif self.keyword == "Rutile Group":
167
+ data_minerals = {"Argt": {}, "Cst": {}, "Prtl": {}, "Pltn": {}, "Prl": {}, "Rt": {}, "Stv": {},
168
+ "Rt-Group": {}}
169
+ categories = ["M", "rho", "V", "vP", "vS", "vP/vS", "K", "G", "E", "nu", "GR", "PE", "U", "chemistry"]
170
+ for key, value in data_minerals.items():
171
+ for category in categories:
172
+ if category != "chemistry":
173
+ value[category] = []
174
+ else:
175
+ value[category] = {}
176
+ #
177
+ n = 0
178
+ list_elements = []
179
+ #
180
+ data_argt = Oxides(impurity="pure", data_type=True).create_argutite()
181
+ data_cst = Oxides(impurity="pure", data_type=True).create_cassiterite()
182
+ data_prtl = Oxides(impurity="pure", data_type=True).create_paratellurite()
183
+ data_pltn = Oxides(impurity="pure", data_type=True).create_plattnerite()
184
+ data_prl = Oxides(impurity="pure", data_type=True).create_pyrolusite()
185
+ data_rt = Oxides(impurity="pure", data_type=True).create_rutile()
186
+ data_stv = Oxides(impurity="pure", data_type=True).create_stishovite()
187
+ #
188
+ while n < number:
189
+ data_group = RutileGroup().create_rutile_group()
190
+ #
191
+ if n == 0:
192
+ list_elements_argt = list(data_argt["chemistry"].keys())
193
+ list_elements_cst = list(data_cst["chemistry"].keys())
194
+ list_elements_prtl = list(data_prtl["chemistry"].keys())
195
+ list_elements_pltn = list(data_pltn["chemistry"].keys())
196
+ list_elements_prl = list(data_prl["chemistry"].keys())
197
+ list_elements_rt = list(data_rt["chemistry"].keys())
198
+ list_elements_stv = list(data_stv["chemistry"].keys())
199
+ list_elements_group = list(data_group["chemistry"].keys())
200
+ list_elements.extend(list_elements_argt)
201
+ list_elements.extend(list_elements_cst)
202
+ list_elements.extend(list_elements_prtl)
203
+ list_elements.extend(list_elements_pltn)
204
+ list_elements.extend(list_elements_prl)
205
+ list_elements.extend(list_elements_rt)
206
+ list_elements.extend(list_elements_stv)
207
+ list_elements.extend(list_elements_group)
208
+ list_elements = list(dict.fromkeys(list_elements))
209
+ for element in list_elements:
210
+ data_minerals["Argt"]["chemistry"][element] = []
211
+ data_minerals["Cst"]["chemistry"][element] = []
212
+ data_minerals["Prtl"]["chemistry"][element] = []
213
+ data_minerals["Pltn"]["chemistry"][element] = []
214
+ data_minerals["Prl"]["chemistry"][element] = []
215
+ data_minerals["Rt"]["chemistry"][element] = []
216
+ data_minerals["Stv"]["chemistry"][element] = []
217
+ data_minerals["Rt-Group"]["chemistry"][element] = []
218
+ #
219
+ for category in categories:
220
+ if category != "chemistry":
221
+ data_minerals["Argt"][category].append(round(data_argt[category], 4))
222
+ data_minerals["Cst"][category].append(round(data_cst[category], 4))
223
+ data_minerals["Prtl"][category].append(round(data_prtl[category], 4))
224
+ data_minerals["Pltn"][category].append(round(data_pltn[category], 4))
225
+ data_minerals["Prl"][category].append(round(data_prl[category], 4))
226
+ data_minerals["Rt"][category].append(round(data_rt[category], 4))
227
+ data_minerals["Stv"][category].append(round(data_stv[category], 4))
228
+ data_minerals["Rt-Group"][category].append(round(data_group[category], 4))
229
+ else:
230
+ for element in list_elements:
231
+ if element in data_argt[category]:
232
+ data_minerals["Argt"][category][element].append(round(data_argt[category][element], 4))
233
+ else:
234
+ data_minerals["Argt"][category][element].append(round(0.0, 4))
235
+ if element in data_cst[category]:
236
+ data_minerals["Cst"][category][element].append(round(data_cst[category][element], 4))
237
+ else:
238
+ data_minerals["Cst"][category][element].append(round(0.0, 4))
239
+ if element in data_prtl[category]:
240
+ data_minerals["Prtl"][category][element].append(round(data_prtl[category][element], 4))
241
+ else:
242
+ data_minerals["Prtl"][category][element].append(round(0.0, 4))
243
+ if element in data_pltn[category]:
244
+ data_minerals["Pltn"][category][element].append(round(data_pltn[category][element], 4))
245
+ else:
246
+ data_minerals["Pltn"][category][element].append(round(0.0, 4))
247
+ if element in data_prl[category]:
248
+ data_minerals["Prl"][category][element].append(round(data_prl[category][element], 4))
249
+ else:
250
+ data_minerals["Prl"][category][element].append(round(0.0, 4))
251
+ if element in data_rt[category]:
252
+ data_minerals["Rt"][category][element].append(round(data_rt[category][element], 4))
253
+ else:
254
+ data_minerals["Rt"][category][element].append(round(0.0, 4))
255
+ if element in data_stv[category]:
256
+ data_minerals["Stv"][category][element].append(round(data_stv[category][element], 4))
257
+ else:
258
+ data_minerals["Stv"][category][element].append(round(0.0, 4))
259
+ if element in data_group[category]:
260
+ data_minerals["Rt-Group"][category][element].append(round(data_group[category][element], 4))
261
+ else:
262
+ data_minerals["Rt-Group"][category][element].append(round(0.0, 4))
263
+ #
264
+ n += 1
265
+ #
266
+ data_minerals["Argt"]["color"] = "tab:blue"
267
+ data_minerals["Cst"]["color"] = "tab:red"
268
+ data_minerals["Prtl"]["color"] = "tab:green"
269
+ data_minerals["Pltn"]["color"] = "tab:orange"
270
+ data_minerals["Prl"]["color"] = "tab:purple"
271
+ data_minerals["Rt"]["color"] = "tab:brown"
272
+ data_minerals["Stv"]["color"] = "tab:olive"
273
+ data_minerals["Rt-Group"]["color"] = "tab:gray"
274
+ #
275
+ elif self.keyword == "Periclase Group":
276
+ data_minerals = {"Per": {}, "Wus": {}, "Mns": {}, "Bsn": {}, "Mntp": {}, "Lm": {},
277
+ "Per-Group": {}}
278
+ categories = ["M", "rho", "V", "vP", "vS", "vP/vS", "K", "G", "E", "nu", "GR", "PE", "U", "chemistry"]
279
+ for key, value in data_minerals.items():
280
+ for category in categories:
281
+ if category != "chemistry":
282
+ value[category] = []
283
+ else:
284
+ value[category] = {}
285
+ #
286
+ n = 0
287
+ list_elements = []
288
+ #
289
+ data_per = Oxides(impurity="pure", data_type=True).create_periclase()
290
+ data_wus = Oxides(impurity="pure", data_type=True).create_wustite()
291
+ data_mns = Oxides(impurity="pure", data_type=True).create_manganosite()
292
+ data_bsn = Oxides(impurity="pure", data_type=True).create_bunsenite()
293
+ data_mntp = Oxides(impurity="pure", data_type=True).create_monteponite()
294
+ data_lm = Oxides(impurity="pure", data_type=True).create_lime()
295
+ #
296
+ while n < number:
297
+ data_group = PericlaseGroup().create_periclase_group()
298
+ #
299
+ if n == 0:
300
+ list_elements_per = list(data_per["chemistry"].keys())
301
+ list_elements_wus = list(data_wus["chemistry"].keys())
302
+ list_elements_mns = list(data_mns["chemistry"].keys())
303
+ list_elements_bsn = list(data_bsn["chemistry"].keys())
304
+ list_elements_mntp = list(data_mntp["chemistry"].keys())
305
+ list_elements_lm = list(data_lm["chemistry"].keys())
306
+ list_elements_group = list(data_group["chemistry"].keys())
307
+ list_elements.extend(list_elements_per)
308
+ list_elements.extend(list_elements_wus)
309
+ list_elements.extend(list_elements_mns)
310
+ list_elements.extend(list_elements_bsn)
311
+ list_elements.extend(list_elements_mntp)
312
+ list_elements.extend(list_elements_lm)
313
+ list_elements.extend(list_elements_group)
314
+ list_elements = list(dict.fromkeys(list_elements))
315
+ for element in list_elements:
316
+ data_minerals["Per"]["chemistry"][element] = []
317
+ data_minerals["Wus"]["chemistry"][element] = []
318
+ data_minerals["Mns"]["chemistry"][element] = []
319
+ data_minerals["Bsn"]["chemistry"][element] = []
320
+ data_minerals["Mntp"]["chemistry"][element] = []
321
+ data_minerals["Lm"]["chemistry"][element] = []
322
+ data_minerals["Per-Group"]["chemistry"][element] = []
323
+ #
324
+ for category in categories:
325
+ if category != "chemistry":
326
+ data_minerals["Per"][category].append(round(data_per[category], 4))
327
+ data_minerals["Wus"][category].append(round(data_wus[category], 4))
328
+ data_minerals["Mns"][category].append(round(data_mns[category], 4))
329
+ data_minerals["Bsn"][category].append(round(data_bsn[category], 4))
330
+ data_minerals["Mntp"][category].append(round(data_mntp[category], 4))
331
+ data_minerals["Lm"][category].append(round(data_lm[category], 4))
332
+ data_minerals["Per-Group"][category].append(round(data_group[category], 4))
333
+ else:
334
+ for element in list_elements:
335
+ if element in data_per[category]:
336
+ data_minerals["Per"][category][element].append(round(data_per[category][element], 4))
337
+ else:
338
+ data_minerals["Per"][category][element].append(round(0.0, 4))
339
+ if element in data_wus[category]:
340
+ data_minerals["Wus"][category][element].append(round(data_wus[category][element], 4))
341
+ else:
342
+ data_minerals["Wus"][category][element].append(round(0.0, 4))
343
+ if element in data_mns[category]:
344
+ data_minerals["Mns"][category][element].append(round(data_mns[category][element], 4))
345
+ else:
346
+ data_minerals["Mns"][category][element].append(round(0.0, 4))
347
+ if element in data_bsn[category]:
348
+ data_minerals["Bsn"][category][element].append(round(data_bsn[category][element], 4))
349
+ else:
350
+ data_minerals["Bsn"][category][element].append(round(0.0, 4))
351
+ if element in data_mntp[category]:
352
+ data_minerals["Mntp"][category][element].append(round(data_mntp[category][element], 4))
353
+ else:
354
+ data_minerals["Mntp"][category][element].append(round(0.0, 4))
355
+ if element in data_lm[category]:
356
+ data_minerals["Lm"][category][element].append(round(data_lm[category][element], 4))
357
+ else:
358
+ data_minerals["Lm"][category][element].append(round(0.0, 4))
359
+ if element in data_group[category]:
360
+ data_minerals["Per-Group"][category][element].append(round(data_group[category][element], 4))
361
+ else:
362
+ data_minerals["Per-Group"][category][element].append(round(0.0, 4))
363
+ #
364
+ n += 1
365
+ #
366
+ data_minerals["Per"]["color"] = "tab:blue"
367
+ data_minerals["Wus"]["color"] = "tab:red"
368
+ data_minerals["Mns"]["color"] = "tab:green"
369
+ data_minerals["Bsn"]["color"] = "tab:orange"
370
+ data_minerals["Mntp"]["color"] = "tab:purple"
371
+ data_minerals["Lm"]["color"] = "tab:brown"
372
+ data_minerals["Per-Group"]["color"] = "tab:gray"
373
+ #
374
+ elif self.keyword == "Wulfenite Group":
375
+ data_minerals = {"Wul": {}, "Crc": {}, "Sz": {}, "Wul-Group": {}}
376
+ categories = ["M", "rho", "V", "vP", "vS", "vP/vS", "K", "G", "E", "nu", "GR", "PE", "U", "chemistry"]
377
+ for key, value in data_minerals.items():
378
+ for category in categories:
379
+ if category != "chemistry":
380
+ value[category] = []
381
+ else:
382
+ value[category] = {}
383
+ #
384
+ n = 0
385
+ list_elements = []
386
+ #
387
+ data_wul = Oxides(impurity="pure", data_type=True).create_wulfenite()
388
+ data_crc = Oxides(impurity="pure", data_type=True).create_crocoite()
389
+ data_sz = Oxides(impurity="pure", data_type=True).create_stolzite()
390
+ #
391
+ while n < number:
392
+ data_group = WulfeniteGroup().create_wulfenite_group()
393
+ #
394
+ if n == 0:
395
+ list_elements_wul = list(data_wul["chemistry"].keys())
396
+ list_elements_crc = list(data_crc["chemistry"].keys())
397
+ list_elements_sz = list(data_sz["chemistry"].keys())
398
+ list_elements_group = list(data_group["chemistry"].keys())
399
+ list_elements.extend(list_elements_wul)
400
+ list_elements.extend(list_elements_crc)
401
+ list_elements.extend(list_elements_sz)
402
+ list_elements.extend(list_elements_group)
403
+ list_elements = list(dict.fromkeys(list_elements))
404
+ for element in list_elements:
405
+ data_minerals["Wul"]["chemistry"][element] = []
406
+ data_minerals["Crc"]["chemistry"][element] = []
407
+ data_minerals["Sz"]["chemistry"][element] = []
408
+ data_minerals["Wul-Group"]["chemistry"][element] = []
409
+ #
410
+ for category in categories:
411
+ if category != "chemistry":
412
+ data_minerals["Wul"][category].append(round(data_wul[category], 4))
413
+ data_minerals["Crc"][category].append(round(data_crc[category], 4))
414
+ data_minerals["Sz"][category].append(round(data_sz[category], 4))
415
+ data_minerals["Wul-Group"][category].append(round(data_group[category], 4))
416
+ else:
417
+ for element in list_elements:
418
+ if element in data_wul[category]:
419
+ data_minerals["Wul"][category][element].append(round(data_wul[category][element], 4))
420
+ else:
421
+ data_minerals["Wul"][category][element].append(round(0.0, 4))
422
+ if element in data_crc[category]:
423
+ data_minerals["Crc"][category][element].append(round(data_crc[category][element], 4))
424
+ else:
425
+ data_minerals["Crc"][category][element].append(round(0.0, 4))
426
+ if element in data_sz[category]:
427
+ data_minerals["Sz"][category][element].append(round(data_sz[category][element], 4))
428
+ else:
429
+ data_minerals["Sz"][category][element].append(round(0.0, 4))
430
+ if element in data_group[category]:
431
+ data_minerals["Wul-Group"][category][element].append(round(data_group[category][element], 4))
432
+ else:
433
+ data_minerals["Wul-Group"][category][element].append(round(0.0, 4))
434
+ #
435
+ n += 1
436
+ #
437
+ data_minerals["Wul"]["color"] = "tab:blue"
438
+ data_minerals["Crc"]["color"] = "tab:red"
439
+ data_minerals["Sz"]["color"] = "tab:green"
440
+ data_minerals["Wul-Group"]["color"] = "tab:gray"
441
+ #
442
+ return data_minerals