Spaces:
Runtime error
Runtime error
Use sparse matrix and don't store df
Browse files
app.py
CHANGED
|
@@ -38,7 +38,7 @@ subsets = [
|
|
| 38 |
subsets_ds = {}
|
| 39 |
for subset in subsets:
|
| 40 |
dataset = load_dataset(
|
| 41 |
-
"LeMaterial/
|
| 42 |
subset,
|
| 43 |
token=HF_TOKEN,
|
| 44 |
columns=[
|
|
@@ -52,10 +52,13 @@ for subset in subsets:
|
|
| 52 |
"functional",
|
| 53 |
],
|
| 54 |
)
|
| 55 |
-
subsets_ds[subset] = dataset["train"]
|
| 56 |
|
| 57 |
-
elements_df = {
|
|
|
|
|
|
|
| 58 |
|
|
|
|
| 59 |
|
| 60 |
all_elements = {str(el): i for i, el in enumerate(periodictable.elements)}
|
| 61 |
elements_indices = {}
|
|
@@ -70,6 +73,12 @@ for subset, df in elements_df.items():
|
|
| 70 |
|
| 71 |
df = df.reset_index().apply(map_elements, axis=1)
|
| 72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
map_functional = {
|
| 74 |
"PBE": "compatible_pbe",
|
| 75 |
"PBESol (No correction scheme)": "compatible_pbesol",
|
|
@@ -108,7 +117,7 @@ def create_phase_diagram(
|
|
| 108 |
|
| 109 |
print(indices_with_only_elements)
|
| 110 |
|
| 111 |
-
entries_df = subsets_ds[subset_name].
|
| 112 |
|
| 113 |
entries_df = entries_df[~entries_df["immutable_id"].isna()]
|
| 114 |
|
|
@@ -116,18 +125,18 @@ def create_phase_diagram(
|
|
| 116 |
|
| 117 |
# Fetch all entries from the Materials Project database
|
| 118 |
def get_energy_correction(energy_correction, row):
|
| 119 |
-
if energy_correction == "Database specific, or MP2020" and functional ==
|
| 120 |
-
print(
|
| 121 |
return (
|
| 122 |
row["energy_corrected"] - row["energy"]
|
| 123 |
if not np.isnan(row["energy_corrected"])
|
| 124 |
else 0
|
| 125 |
)
|
| 126 |
-
elif energy_correction == "The 110 PBE Method" and functional ==
|
| 127 |
-
print(
|
| 128 |
-
return row["energy"] * 1.1-row[
|
| 129 |
-
elif map_functional[functional] !=
|
| 130 |
-
print(
|
| 131 |
return 0
|
| 132 |
|
| 133 |
entries = [
|
|
@@ -199,7 +208,10 @@ energy_correction_dropdown = gr.Dropdown(
|
|
| 199 |
label="Energy correction",
|
| 200 |
)
|
| 201 |
plot_style_dropdown = gr.Dropdown(choices=["2D", "3D"], label="Plot Style")
|
| 202 |
-
functional_dropdown = gr.Dropdown(
|
|
|
|
|
|
|
|
|
|
| 203 |
finite_temp_toggle = gr.Checkbox(label="Enable Finite Temperature Estimation")
|
| 204 |
|
| 205 |
warning_message = "⚠️ This application uses energy correction schemes directly"
|
|
|
|
| 38 |
subsets_ds = {}
|
| 39 |
for subset in subsets:
|
| 40 |
dataset = load_dataset(
|
| 41 |
+
"LeMaterial/LeMat-Bulk",
|
| 42 |
subset,
|
| 43 |
token=HF_TOKEN,
|
| 44 |
columns=[
|
|
|
|
| 52 |
"functional",
|
| 53 |
],
|
| 54 |
)
|
| 55 |
+
subsets_ds[subset] = dataset["train"]
|
| 56 |
|
| 57 |
+
elements_df = {
|
| 58 |
+
k: subset.select_columns("elements").to_pandas() for k, subset in subsets_ds.items()
|
| 59 |
+
}
|
| 60 |
|
| 61 |
+
from scipy.sparse import csr_matrix
|
| 62 |
|
| 63 |
all_elements = {str(el): i for i, el in enumerate(periodictable.elements)}
|
| 64 |
elements_indices = {}
|
|
|
|
| 73 |
|
| 74 |
df = df.reset_index().apply(map_elements, axis=1)
|
| 75 |
|
| 76 |
+
import ipdb
|
| 77 |
+
|
| 78 |
+
ipdb.set_trace()
|
| 79 |
+
|
| 80 |
+
elements_indices[subset] = csr_matrix(elements_indices[subset])
|
| 81 |
+
|
| 82 |
map_functional = {
|
| 83 |
"PBE": "compatible_pbe",
|
| 84 |
"PBESol (No correction scheme)": "compatible_pbesol",
|
|
|
|
| 117 |
|
| 118 |
print(indices_with_only_elements)
|
| 119 |
|
| 120 |
+
entries_df = subsets_ds[subset_name].select(indices_with_only_elements).to_pandas()
|
| 121 |
|
| 122 |
entries_df = entries_df[~entries_df["immutable_id"].isna()]
|
| 123 |
|
|
|
|
| 125 |
|
| 126 |
# Fetch all entries from the Materials Project database
|
| 127 |
def get_energy_correction(energy_correction, row):
|
| 128 |
+
if energy_correction == "Database specific, or MP2020" and functional == "PBE":
|
| 129 |
+
print("applying MP corrections")
|
| 130 |
return (
|
| 131 |
row["energy_corrected"] - row["energy"]
|
| 132 |
if not np.isnan(row["energy_corrected"])
|
| 133 |
else 0
|
| 134 |
)
|
| 135 |
+
elif energy_correction == "The 110 PBE Method" and functional == "PBE":
|
| 136 |
+
print("applying PBE110 corrections")
|
| 137 |
+
return row["energy"] * 1.1 - row["energy"]
|
| 138 |
+
elif map_functional[functional] != "pbe":
|
| 139 |
+
print("not applying any corrections")
|
| 140 |
return 0
|
| 141 |
|
| 142 |
entries = [
|
|
|
|
| 208 |
label="Energy correction",
|
| 209 |
)
|
| 210 |
plot_style_dropdown = gr.Dropdown(choices=["2D", "3D"], label="Plot Style")
|
| 211 |
+
functional_dropdown = gr.Dropdown(
|
| 212 |
+
choices=["PBE", "PBESol (No correction scheme)", "SCAN (No correction scheme)"],
|
| 213 |
+
label="Functional",
|
| 214 |
+
)
|
| 215 |
finite_temp_toggle = gr.Checkbox(label="Enable Finite Temperature Estimation")
|
| 216 |
|
| 217 |
warning_message = "⚠️ This application uses energy correction schemes directly"
|