UCS2014 commited on
Commit
ec0cb4f
·
verified ·
1 Parent(s): c2a0bc3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -20
app.py CHANGED
@@ -23,7 +23,7 @@ from sklearn.metrics import mean_squared_error # MAE removed
23
  APP_NAME = "ST_TOC"
24
  TAGLINE = "Total Organic Carbon Estimation Using AI"
25
 
26
- FEATURES = ["AHT90 (Average Hydrocarbon Tool 90° Phase)", "DT (Delta-T Sonic Travel Time)", "GR (Gamma Ray)", "K (Potassium)", "RHOB (Bulk Density)", "TNPH (Thermal Neutron Porosity)", "Th (Thorium)", "Ur (Uranium)"]
27
  TARGET = "TOC"
28
  PRED_COL = "TOC_Pred"
29
 
@@ -157,35 +157,50 @@ def read_book_bytes(b: bytes):
157
 
158
  # ---- Canonical feature aliasing (accept legacy headers) ----
159
  def _build_alias_map(canonical_features: list[str], target_name: str) -> dict:
 
160
  def pick(expected, variants):
161
  for v in variants:
162
- if v in expected: return v
163
- return variants[0]
164
-
165
- # TOC logs/features
166
- can_GR = pick(canonical_features, ["GR", "Gamma Ray", "GR (API)"])
167
- can_RHOB = pick(canonical_features, ["RHOB", "Bulk Density", "RHOB (g/cc)"])
168
- can_DT = pick(canonical_features, ["DT", "AC", "DT (us/ft)"])
169
- can_TNPH = pick(canonical_features, ["TNPH", "NPHI", "TNPH (%)"])
170
- can_K = pick(canonical_features, ["K", "Potassium", "K (%)"])
171
- can_Th = pick(canonical_features, ["Th", "Thorium", "Th (ppm)"])
172
- can_Ur = pick(canonical_features, ["Ur", "U", "U (ppm)"])
173
- can_AHT = pick(canonical_features, ["AHT90", "AHT_90", "AHT-90"])
 
174
 
175
  alias = {
 
 
 
 
 
 
 
176
  "GR": can_GR, "Gamma Ray": can_GR, "GR (API)": can_GR,
 
 
 
 
177
  "RHOB": can_RHOB, "Bulk Density": can_RHOB, "RHOB (g/cc)": can_RHOB,
178
- "DT": can_DT, "AC": can_DT, "DT (us/ft)": can_DT,
 
179
  "TNPH": can_TNPH, "NPHI": can_TNPH, "TNPH (%)": can_TNPH,
180
- "K": can_K, "Potassium": can_K, "K (%)": can_K,
 
181
  "Th": can_Th, "Thorium": can_Th, "Th (ppm)": can_Th,
 
182
  "Ur": can_Ur, "U": can_Ur, "U (ppm)": can_Ur,
183
- "AHT90": can_AHT, "AHT_90": can_AHT, "AHT-90": can_AHT,
184
 
185
- # Optional depth for tracks
186
- "Depth (ft)": "Depth (ft)", "DEPTH": "Depth (ft)", "MD (ft)": "Depth (ft)",
187
 
188
- # Targets
189
  "TOC": target_name, "TOC (%)": target_name, "Total Organic Carbon": target_name,
190
  }
191
  return alias
@@ -576,7 +591,7 @@ except Exception as e:
576
  st.error(f"Failed to load model: {e}")
577
  st.stop()
578
 
579
- # Prefer UCS-specific meta
580
  meta = {}
581
  meta_candidates = [MODELS_DIR / "toc_meta.json", MODELS_DIR / "meta.json"]
582
  meta_path = next((p for p in meta_candidates if p.exists()), None)
 
23
  APP_NAME = "ST_TOC"
24
  TAGLINE = "Total Organic Carbon Estimation Using AI"
25
 
26
+ FEATURES = ["AHT90", "DT", "GR", "K", "RHOB", "TNPH", "Th", "Ur"]
27
  TARGET = "TOC"
28
  PRED_COL = "TOC_Pred"
29
 
 
157
 
158
  # ---- Canonical feature aliasing (accept legacy headers) ----
159
  def _build_alias_map(canonical_features: list[str], target_name: str) -> dict:
160
+ # Helper: prefer a canonical name from FEATURES if present
161
  def pick(expected, variants):
162
  for v in variants:
163
+ if v in expected:
164
+ return v
165
+ return variants[0] # fall back
166
+
167
+ # Canonical abbreviations (what we WANT in the DataFrame)
168
+ can_AHT = pick(canonical_features, ["AHT90"])
169
+ can_DT = pick(canonical_features, ["DT"])
170
+ can_GR = pick(canonical_features, ["GR"])
171
+ can_K = pick(canonical_features, ["K"])
172
+ can_RHOB = pick(canonical_features, ["RHOB"])
173
+ can_TNPH = pick(canonical_features, ["TNPH"])
174
+ can_Th = pick(canonical_features, ["Th"])
175
+ can_Ur = pick(canonical_features, ["Ur"])
176
 
177
  alias = {
178
+ # Abbrev ↔ variants (map everything to the abbrev)
179
+ "AHT90": can_AHT, "AHT_90": can_AHT, "AHT-90": can_AHT,
180
+ "AHT90 (Average Hydrocarbon Tool 90° Phase)": can_AHT,
181
+
182
+ "DT": can_DT, "AC": can_DT, "DT (us/ft)": can_DT,
183
+ "DT (Delta-T Sonic Travel Time)": can_DT,
184
+
185
  "GR": can_GR, "Gamma Ray": can_GR, "GR (API)": can_GR,
186
+ "GR (Gamma Ray)": can_GR,
187
+
188
+ "K": can_K, "Potassium": can_K, "K (%)": can_K,
189
+
190
  "RHOB": can_RHOB, "Bulk Density": can_RHOB, "RHOB (g/cc)": can_RHOB,
191
+ "RHOB (Bulk Density)": can_RHOB,
192
+
193
  "TNPH": can_TNPH, "NPHI": can_TNPH, "TNPH (%)": can_TNPH,
194
+ "TNPH (Thermal Neutron Porosity)": can_TNPH,
195
+
196
  "Th": can_Th, "Thorium": can_Th, "Th (ppm)": can_Th,
197
+
198
  "Ur": can_Ur, "U": can_Ur, "U (ppm)": can_Ur,
 
199
 
200
+ # Optional depth aliases (if you add later)
201
+ "Depth": "Depth", "Depth (ft)": "Depth", "DEPTH": "Depth", "MD (ft)": "Depth",
202
 
203
+ # Target aliases → canonical TARGET
204
  "TOC": target_name, "TOC (%)": target_name, "Total Organic Carbon": target_name,
205
  }
206
  return alias
 
591
  st.error(f"Failed to load model: {e}")
592
  st.stop()
593
 
594
+ # Prefer toc-specific meta
595
  meta = {}
596
  meta_candidates = [MODELS_DIR / "toc_meta.json", MODELS_DIR / "meta.json"]
597
  meta_path = next((p for p in meta_candidates if p.exists()), None)