Skip to content

Commit fe90ac4

Browse files
WIP - exclude dips/ramp-ups above 175C
1 parent 77ba179 commit fe90ac4

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

src/geophires_docs/generate_fervo_project_red_2026_docs.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
_MODEL_ROLLING_WINDOW = 15
2828

2929
_CONTINUOUS_OPERATION_MIN_TEMP_C = 175.0
30+
_MAX_TRANSIENT_TEMP_CHANGE_C = 10.0
3031

3132

3233
def extract_plot_data(
@@ -67,8 +68,14 @@ def _calculate_variance_analysis(
6768

6869
# TODO: Replace hardcoded minimum temperature threshold with a robust statistical baseline envelope
6970
n_before = len(df_steady_state)
70-
df_steady_state = df_steady_state[df_steady_state['Temperature_C'] >= _CONTINUOUS_OPERATION_MIN_TEMP_C].copy()
71-
_log.info(f'Continuous operation filter: dropped {n_before - len(df_steady_state)} dip points.')
71+
72+
temp_diffs = df_steady_state['Temperature_C'].diff().abs().fillna(0.0)
73+
is_steady = (df_steady_state['Temperature_C'] >= _CONTINUOUS_OPERATION_MIN_TEMP_C) & (
74+
temp_diffs <= _MAX_TRANSIENT_TEMP_CHANGE_C
75+
)
76+
77+
df_steady_state = df_steady_state[is_steady].copy()
78+
_log.info(f'Continuous operation filter: dropped {n_before - len(df_steady_state)} transient/dip points.')
7279

7380
model_interpolator = interp1d(
7481
df_model['Time_Years'],
@@ -200,7 +207,14 @@ def _regenerate_graph_from_csv(
200207

201208
# Apply the exclusion logic directly via boolean mask to avoid float-merge bugs across CSVs
202209
is_ramp_up = df_prod['Time_Years'] <= steady_state_start_years
203-
is_steady = df_prod['Temperature_C'] >= _CONTINUOUS_OPERATION_MIN_TEMP_C
210+
211+
post_ramp_up_mask = ~is_ramp_up
212+
temp_diffs = df_prod.loc[post_ramp_up_mask, 'Temperature_C'].diff().abs().fillna(0.0)
213+
214+
is_steady = pd.Series(False, index=df_prod.index)
215+
is_steady.loc[post_ramp_up_mask] = (
216+
df_prod.loc[post_ramp_up_mask, 'Temperature_C'] >= _CONTINUOUS_OPERATION_MIN_TEMP_C
217+
) & (temp_diffs <= _MAX_TRANSIENT_TEMP_CHANGE_C)
204218

205219
df_included = df_prod[is_ramp_up | is_steady]
206220
df_excluded = df_prod[~(is_ramp_up | is_steady)]

0 commit comments

Comments
 (0)