diff --git a/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.md b/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.md
index 5db7458c..bdef2cdf 100644
--- a/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.md
+++ b/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.md
@@ -14,7 +14,7 @@ In this notebook, I'll use the example of predicting the number of beds needed f
- a weighted Poisson model using an empirical survival curve; arrival rates of patients who were admitted (at some point), are weighted by their probability of being admitted within a prediction window, calculated from a survival curve learned from past data
- a weighted Poisson model using an aspirational approach; instead of using a survival curve learned from past data, it is assumed that the ED is meeting 4-hour targets for time to admission.
-I also demonstrate making predictions by specialty for demand from incoming patients.
+I also demonstrate making predictions by specialty for demand from incoming patients, and how to stratify the predictions to take day of week into account.
```python
# Reload functions every time
@@ -513,7 +513,7 @@ yta_model_empirical.fit(train_visits_copy,
```
Calculating time-varying arrival rates for data provided, which spans 45 unique dates
- time interval of 0:15:00 within the prediction window.
+ Time interval of 0:15:00 used to bucket arrival rates.
The error value for prediction will be 1e-07
To see the weights saved by this model, use the get_weights() method
EmpiricalIncomingAdmissionPredictor has been fitted with survival curve containing 881 time points
@@ -1070,27 +1070,29 @@ print(
)
```
- The calculated arrival rates for the first 10 discrete time intervals for the 23:00 prediction time are: [0.089, 0.044, 0.044, 0.089, 0.044, 0.022, 0.0, 0.0, 0.022, 0.0]
+ The calculated arrival rates for the first 10 discrete time intervals for the 12:00 prediction time are: [1.289, 1.067, 1.356, 1.2, 1.289, 1.356, 1.2, 1.178, 0.933, 0.889]
#### Generate a prediction
-Having inspected the inputs the model holds, we can now call `predict()` to produce a probability distribution for the number of patients yet to arrive who will need a bed within the prediction window.
+We can now call `predict()` to get a distribution for how many yet-to-arrive patients are expected to need a bed within the prediction window.
+
+Pass **`prediction_time`** as the time of day to start from, as an `(hour, minute)` tuple. Pass **`prediction_window`** at predict time (not fit time), so the same fitted model can be used for different horizons.
-The `predict()` method takes two things:
+If the model was fitted **without** filters, there is only one key in **`weights`** (e.g. `unfiltered`), so **`filter_keys`** can be left out. If you fitted **with** filters, pass **`filter_keys`** as a single hospital **service** name or a list of names — the same names you used as keys in **`filters`**. Every service you ask for in one call shares the **same** **`prediction_time`**.
-- A `prediction_context` dictionary keyed by filter. Because we fitted an unfiltered model, there is only one entry, `'unfiltered'`, whose value tells the model the time of day to predict from, given as an `(hour, minute)` tuple.
-- A `prediction_window` keyword argument. This is now supplied at predict time rather than fit time, so a single trained model can be reused across different windows without retraining.
+The result is still a dict whose keys match **`weights`** (e.g. service name); each value is the weighted Poisson distribution for that service.
-The return value is a dictionary (keyed by filter) of weighted Poisson distributions representing the number of patients yet to arrive who are expected to need admission within the requested window.
+**Note:** the old nested **`prediction_context`** dict (`{service: {"prediction_time": ...}}`, as the first argument or as `prediction_context=...`) still works but triggers a **`DeprecationWarning`** and will be removed in a later version. Prefer **`prediction_time=`** and **`filter_keys=`** when you can.
```python
-prediction_context = {
- 'unfiltered': {
- 'prediction_time': tuple([12,0])
- }
-}
+# # deprecated code retained for reference
+# prediction_context = {
+# 'unfiltered': {
+# 'prediction_time': tuple([12,0])
+# }
+# }
weighted_poisson_empirical = yta_model_empirical.predict(
- prediction_context,
+ prediction_time=(12,0),
prediction_window=timedelta(hours=8) # now passed at predict() method
)
@@ -1148,7 +1150,7 @@ yta_model_by_spec_empirical.fit(train_visits_copy,
To see the weights saved by this model, use the get_weights() method
EmpiricalIncomingAdmissionPredictor has been fitted with survival curve containing 881 time points
-
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
EmpiricalIncomingAdmissionPredictor(filters={'haem/onc': {'specialty': 'haem/onc'},
'medical': {'specialty': 'medical'},
'paediatric': {'specialty': 'paediatric'},
'surgical': {'specialty': 'surgical'}},
@@ -1586,13 +1588,9 @@ plot_order = ["medical", "surgical", "haem/onc", "paediatric"]
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
for ax, specialty in zip(axes.flat, plot_order):
- prediction_context = {
- specialty: {
- 'prediction_time': tuple([12,0])
- }
- }
weighted_poisson_empirical = yta_model_by_spec_empirical.predict(
- prediction_context,
+ prediction_time=(12,0),
+ filter_keys=specialty,
prediction_window=timedelta(hours=8) # now passed at predict() method
)
@@ -1710,7 +1708,7 @@ yta_model_parametric.fit(train_visits_copy,
```
Calculating time-varying arrival rates for data provided, which spans 45 unique dates
- time interval of 0:15:00 within the prediction window.
+ Time interval of 0:15:00 used to bucket arrival rates.
The error value for prediction will be 1e-07
To see the weights saved by this model, use the get_weights() method
@@ -2165,26 +2163,22 @@ print(
Using the aspirational approach, the calculated arrival rates for the first 10 discrete time intervals for the 12:00 prediction time are: [1.289, 1.067, 1.356, 1.2, 1.289, 1.356, 1.2, 1.178, 0.933, 0.889]
-To use the weighted Poisson for prediction, a `prediction_context` argument specifies the required prediction time and filtering. The aspirations for time to admission can be changed at any point. Here, I'm going to set the target at 95% within 4 hours.
+To use the weighted Poisson for prediction, the required prediction time and prediction window are passed. The aspirations for time to admission can be changed at any point. Here, I'm going to set the target at 80% within 4 hours.
```python
from patientflow.viz.probability_distribution import plot_prob_dist
from patientflow.viz.utils import format_prediction_time
-prediction_context = {
- 'unfiltered': {
- 'prediction_time': tuple([12,0])
- }
-}
aspirational_prediction = yta_model_parametric.predict(
- prediction_context,
+ prediction_time=(12,0),
prediction_window=timedelta(hours=8), # now passed at predict() method
- x1=x1, y1=y1, x2=x2, y2=y2, max_value=50)
+ x1=x1, y1=y1, x2=x2, y2=y2,
+ max_value=50)
```
-The charts below compare the results of using this weighted predictor to generate a prediction for bed needed for patients yet to arrive, if the ED meets the 4-hour target for 95% of patients. The numbers are higher than the equivalent chart above.
+The charts below compare the results of using this weighted predictor to generate a prediction for bed needed for patients yet to arrive, if the ED meets the 4-hour target for 80% of patients. The numbers are higher than the equivalent chart above.
```python
colour_dict = create_colour_dict()
@@ -2212,6 +2206,113 @@ plot_prob_dist(aspirational_prediction['unfiltered'], title,

+## Stratify by day of week
+
+It is also possible to incorporate day of week into the models. The arrival rates for each day of the week are saved in a nested dictionary keyed by 'arrival_rates_by_weekday' with subkeys for each day of the week, where 0 is Monday.
+
+```python
+from patientflow.predictors.incoming_admission_predictors import ParametricIncomingAdmissionPredictor
+
+train_visits_copy = train_visits.copy(deep=True)
+
+yta_model_parametric = ParametricIncomingAdmissionPredictor(verbose=False)
+num_days = (start_validation_set - start_training_set).days
+if 'arrival_datetime' in train_visits_copy.columns:
+ train_visits_copy.set_index('arrival_datetime', inplace=True)
+
+yta_model_parametric.fit(train_visits_copy,
+ yta_time_interval=timedelta(minutes=15),
+ stratify_by_weekday=True,
+ )
+
+print(f'Weekday keys: {yta_model_parametric.weights["unfiltered"]["arrival_rates_by_weekday"].keys()}')
+
+```
+
+ Weekday keys: dict_keys([0, 1, 2, 3, 4, 5, 6])
+
+```python
+from datetime import date, timedelta
+import numpy as np
+import pandas as pd
+import matplotlib.pyplot as plt
+
+colour_dict = create_colour_dict()
+
+# Two weekday anchors
+snapshot_date_1 = date(2023, 1, 2) # Monday
+snapshot_date_2 = date(2023, 1, 7) # Saturday
+
+pred_1 = yta_model_parametric.predict(
+ prediction_time=(12, 0),
+ prediction_window=timedelta(hours=8),
+ prediction_date=snapshot_date_1,
+ strict_prediction_date=True,
+ x1=x1, y1=y1, x2=x2, y2=y2,
+ max_value=50
+)["unfiltered"]
+
+pred_2 = yta_model_parametric.predict(
+ prediction_time=(12, 0),
+ prediction_window=timedelta(hours=8),
+ prediction_date=snapshot_date_2,
+ strict_prediction_date=True,
+ x1=x1, y1=y1, x2=x2, y2=y2,
+ max_value=50
+)["unfiltered"]
+
+truncate_at_beds = 40
+x = np.arange(truncate_at_beds + 1)
+
+# Align PMFs to same support
+pmf_1 = pred_1.reindex(x, fill_value=0)["agg_proba"].values
+pmf_2 = pred_2.reindex(x, fill_value=0)["agg_proba"].values
+
+title = (
+ f'Probability distribution for number of beds needed for patients '
+ f'who will arrive after {format_prediction_time((12,0))} on two different snapshot dates '
+ f'\nand need a bed before 20:00 '
+ f'if the ED is meeting the target of {int(x1)} hours for {y1*100}% of patients'
+)
+
+fig, ax = plt.subplots(figsize=(10, 4.5))
+base_colour = colour_dict["single"]["all"]
+bar_width = 0.42
+
+ax.bar(
+ x - bar_width / 2,
+ pmf_1,
+ width=bar_width,
+ color=base_colour,
+ alpha=0.45,
+ label=f"{snapshot_date_1} (Mon)",
+)
+ax.bar(
+ x + bar_width / 2,
+ pmf_2,
+ width=bar_width,
+ color=base_colour,
+ linewidth=0.4,
+ label=f"{snapshot_date_2} (Sat)",
+)
+
+# Overlay lines to make shape differences obvious
+ax.plot(x, pmf_1, color=base_colour, linewidth=1.6, alpha=0.8)
+ax.plot(x, pmf_2, color="black", linewidth=1.4, alpha=0.7)
+
+ax.set_title(title)
+ax.set_xlabel("Number of beds")
+ax.set_ylabel("Probability")
+ax.set_xlim(-0.5, truncate_at_beds + 0.5)
+ax.grid(axis="y", alpha=0.25)
+ax.legend(title="Snapshot date")
+
+plt.tight_layout()
+plt.show()
+```
+
+
+
## Summary
Here I have demonstrated the use of `patientflow` to generate bed counts for groups of patients for which patient-level data is not yet available.
diff --git a/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive_files/3e_Predict_demand_from_patients_yet_to_arrive_56_0.png b/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive_files/3e_Predict_demand_from_patients_yet_to_arrive_56_0.png
new file mode 100644
index 00000000..8e69fe04
Binary files /dev/null and b/docs/notebooks/3e_Predict_demand_from_patients_yet_to_arrive_files/3e_Predict_demand_from_patients_yet_to_arrive_56_0.png differ
diff --git a/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.md b/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.md
index 32272a9d..1147b703 100644
--- a/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.md
+++ b/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.md
@@ -40,20 +40,12 @@ params = prediction_inputs['config']
Processing: (6, 0)
-
-
Processing: (9, 30)
-
-
Processing: (12, 0)
-
-
Processing: (15, 30)
-
-
Processing: (22, 0)
Below I use the training, validation and test set dates set in `config.yaml` to retrieve the portions of the data needed for evaluation.
@@ -177,6 +169,7 @@ train_visits, valid_visits, test_visits = create_temporal_splits(
start_test_set_fake,
end_test_set_fake,
col_name="arrival_datetime",
+ verbose=False
)
# Train the EmpiricalIncomingAdmissionPredictor
@@ -187,40 +180,21 @@ train_visits_copy = train_visits.copy(deep=True)
if 'arrival_datetime' in train_visits_copy.columns:
train_visits_copy.set_index('arrival_datetime', inplace=True)
-yta_model_empirical = EmpiricalIncomingAdmissionPredictor(verbose=True)
+yta_model_empirical = EmpiricalIncomingAdmissionPredictor(verbose=False)
yta_model_empirical.fit(
train_visits_copy,
yta_time_interval=timedelta(minutes=15),
num_days=num_days,
start_time_col='arrival_datetime',
- end_time_col='admitted_to_ward_datetime'
+ end_time_col='admitted_to_ward_datetime',
+ stratify_by_weekday=True
)
```
- Split sizes: [2214, 710, 1584]
- Calculating time-varying arrival rates for data provided, which spans 45 unique dates
-
-
- EmpiricalIncomingAdmissionPredictor trained for these times: [(6, 0), (9, 30), (12, 0), (15, 30), (22, 0)]
-
-
- using prediction window of 8:00:00 after the time of prediction
-
-
- and time interval of 0:15:00 within the prediction window.
-
-
- The error value for prediction will be 1e-07
-
-
- To see the weights saved by this model, used the get_weights() method
-
-
- EmpiricalIncomingAdmissionPredictor has been fitted with survival curve containing 881 time points
-
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
EmpiricalIncomingAdmissionPredictor(filters={})
### Compare survival curves across train, validation and test sets
@@ -677,7 +661,7 @@ for prediction_time in prediction_times:
)
```
-The result can be plotted using EPUDD plots. The model appears as a series of vertical lines because the `EmpiricalIncomingAdmissionPredictor` is trained only on time of day, so there is minimal variation in the predicted distributions. This is included as a placeholder, to show how modelling of yet-to-arrive patients using past data on time to admission could be evaluated. You could modify the function to include a weekday/weekend variable, or replace it with a different approach based on moving averages (such as ARIMA).
+The result can be plotted using EPUDD plots to allow for the evaluation of the model. (But note that this is showing the results of using fake data.)
```python
from patientflow.viz.epudd import plot_epudd
diff --git a/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_files/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_17_0.png b/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_files/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_17_0.png
index 5d9572d9..cb2a3c26 100644
Binary files a/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_files/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_17_0.png and b/docs/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_files/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive_17_0.png differ
diff --git a/docs/notebooks/4a_Organise_predictions_for_a_production_pipeline.md b/docs/notebooks/4a_Organise_predictions_for_a_production_pipeline.md
index eade588d..bbbe1d07 100644
--- a/docs/notebooks/4a_Organise_predictions_for_a_production_pipeline.md
+++ b/docs/notebooks/4a_Organise_predictions_for_a_production_pipeline.md
@@ -111,8 +111,7 @@ yta_model.fit(
ParametricIncomingAdmissionPredictor(filters={})
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ParametricIncomingAdmissionPredictor(filters={})
+
ParametricIncomingAdmissionPredictor(filters={})
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ParametricIncomingAdmissionPredictor(filters={})
We also need the aspirational curve parameters for the parametric model. These are loaded from the config file in the repository:
@@ -646,10 +635,10 @@ In notebook 3e, we used Poisson distributions to model yet-to-arrive patients. T
Let's call `predict()` on the model we just trained to see the result.
```python
-prediction_context = {'unfiltered': {'prediction_time': prediction_time}}
# predict() returns a full probability distribution
-yta_prediction = yta_model.predict(prediction_context,
+yta_prediction = yta_model.predict(
+ prediction_time=prediction_time,
prediction_window=timedelta(hours=8),
x1=x1, y1=y1, x2=x2, y2=y2, max_value=50)
yta_distribution = yta_prediction['unfiltered']
@@ -746,7 +735,8 @@ Because this distribution is based on a Poisson model, the `DemandPredictor` can
```python
# predict_mean() returns just the Poisson rate (a single float)
-yta_lambda = yta_model.predict_mean(prediction_context,
+yta_lambda = yta_model.predict_mean(
+ prediction_time=prediction_time,
prediction_window=timedelta(hours=8),
x1=x1, y1=y1, x2=x2, y2=y2)
diff --git a/docs/notebooks/4c_Predict_demand.md b/docs/notebooks/4c_Predict_demand.md
index c474d4cc..56b48f27 100644
--- a/docs/notebooks/4c_Predict_demand.md
+++ b/docs/notebooks/4c_Predict_demand.md
@@ -94,13 +94,9 @@ train_inpatient_arrivals_df, _, _ = create_temporal_splits(
Inferred project root: /Users/zellaking/Repos/patientflow
-
-
Training set starts 2031-03-01 and ends on 2031-08-31 inclusive
Validation set starts on 2031-09-01 and ends on 2031-09-30 inclusive
Test set starts on 2031-10-01 and ends on 2031-12-31 inclusive
-
-
Split sizes: [62071, 10415, 29134]
Split sizes: [7716, 1285, 3898]
@@ -189,17 +185,9 @@ for prediction_time in ed_visits.prediction_time.unique():
```
Training model for (22, 0)
-
-
Training model for (15, 30)
-
-
Training model for (6, 0)
-
-
Training model for (12, 0)
-
-
Training model for (9, 30)
The `SequenceToOutcomePredictor` is used to train the probability of each patient being admitted to a specialty, if admitted. As shown in the previous notebook, ordered sequences of consult requests (also known as referrals to service) are used to train this model.
@@ -273,6 +261,11 @@ yta_model_by_spec =yta_model_by_spec.fit(train_inpatient_arrivals_df,
num_days=num_days )
```
+ /var/folders/lr/pm79dxzs0v70y4gz98dl13440000gn/T/ipykernel_85397/1213350650.py:24: DeprecationWarning: Passing prediction_window to fit() is deprecated; pass it to predict() / predict_mean() instead.
+ yta_model_by_spec =yta_model_by_spec.fit(train_inpatient_arrivals_df,
+ /var/folders/lr/pm79dxzs0v70y4gz98dl13440000gn/T/ipykernel_85397/1213350650.py:24: DeprecationWarning: Passing prediction_times to fit() is deprecated; any prediction time can be served at predict time. This argument is retained for backward compatibility only and will be removed in a future release.
+ yta_model_by_spec =yta_model_by_spec.fit(train_inpatient_arrivals_df,
+
## 1. Make predictions for the group of patients currently in the ED
We now have models trained that we can use to create predicted probability distributions. Here is a detailed step-through of how to use those models to generate predictions at a particular moment.
@@ -469,13 +462,10 @@ fig, axes = plt.subplots(2, 2, figsize=(12, 8))
for ax, specialty in zip(axes.flat, plot_order):
- prediction_context = {
- specialty: {
- 'prediction_time': random_prediction_time
- }
- }
-
- weighted_poisson_prediction = yta_model_by_spec.predict(prediction_context, x1=x1, y1=y1, x2=x2, y2=y2)
+ weighted_poisson_prediction = yta_model_by_spec.predict(
+ prediction_time=random_prediction_time,
+ filter_keys=specialty,
+ x1=x1, y1=y1, x2=x2, y2=y2)
title = specialty.title()
plot_prob_dist(weighted_poisson_prediction[specialty], title,
include_titles=True,
@@ -496,7 +486,10 @@ fig.tight_layout()
plt.show()
```
-
+ /var/folders/lr/pm79dxzs0v70y4gz98dl13440000gn/T/ipykernel_85397/1915240381.py:5: DeprecationWarning: Relying on prediction_window stored at fit() time is deprecated. Pass prediction_window explicitly to predict() / predict_mean().
+ weighted_poisson_prediction = yta_model_by_spec.predict(
+
+
## 3. Production prediction pipeline
@@ -539,24 +532,41 @@ prediction_inputs = build_service_data(
```
+ ---------------------------------------------------------------------------
+
+ TypeError Traceback (most recent call last)
+
+ Cell In[13], line 12
+ 9 prediction_snapshots_processed['elapsed_los'] = pd.to_timedelta(prediction_snapshots_processed['elapsed_los'], unit='s')
+ 11 # generate the prediction inputs
+ ---> 12 prediction_inputs = build_service_data(
+ 13 models=(admission_model, None, spec_model, yta_model_by_spec, None, None, None),
+ 14 prediction_time=random_prediction_time,
+ 15 flow_selection=FlowSelection.custom(
+ 16 include_ed_current=True,
+ 17 include_ed_yta=True,
+ 18 include_non_ed_yta=False,
+ 19 include_elective_yta=False,
+ 20 include_transfers_in=False,
+ 21 include_departures=False,
+ 22 cohort="emergency",
+ 23 ),
+ 24 specialties=specialty_filters.keys(),
+ 25 prediction_window=timedelta(hours=8),
+ 26 ed_snapshots=prediction_snapshots_processed,
+ 27 inpatient_snapshots=None,
+ 28 x1=x1, y1=y1, x2=x2, y2=y2
+ 29 )
+
+
+ TypeError: build_service_data() got an unexpected keyword argument 'flow_selection'
+
The returned object is a dictionary mapping each specialty to a `ServicePredictionInputs` instance (as introduced in [notebook 4a](4a_Organise_predictions_for_a_production_pipeline.md)). Below I show the result for one specialty. The structure handles different types of flow, including elective inflows and discharges. It contains both inflows via the ED (used here), and (not used here) elective admissions, transfers and outflows. The latter show predictions of zero patients when no models are trained.
```python
prediction_inputs['medical']
```
- ServicePredictionInputs(service='medical')
- INFLOWS:
- Admissions from current ED PMF[3:13]: [0.016, 0.037, 0.074, 0.120, 0.160, 0.176, 0.159, 0.119, 0.073, 0.037] (E=8.0 of 79 patients in ED)
- ED yet-to-arrive admissions λ = 2.131
- Non-ED emergency admissions λ = 0.000
- Elective admissions λ = 0.000
- Elective transfers from other services PMF[0:1]: [1.000] (E=0.0)
- Emergency transfers from other services PMF[0:1]: [1.000] (E=0.0)
- OUTFLOWS:
- Emergency inpatient departures PMF[0:1]: [1.000] (E=0.0 of 0 emergency patients in service)
- Elective inpatient departures PMF[0:1]: [1.000] (E=0.0 of 0 elective patients in service)
-
We now use `DemandPredictor` and `FlowSelection` (both introduced in [notebook 4a](4a_Organise_predictions_for_a_production_pipeline.md)) to generate predictions from these inputs. Here I use `FlowSelection.custom()` to include only patients currently in the ED and exclude all other flows.
The `k_sigma` parameter controls truncation of probability mass — it specifies the maximum level of support (maximum number of beds in our case) to return. This is useful when convolving multiple distributions; for example, if some flows are modelled as Poisson distributions, which are by definition unbounded, this parameter controls where they are capped.
@@ -586,12 +596,6 @@ To view the constituent elements of the bundle, we can print it to get pretty ou
print(current_ed_bundle)
```
- PredictionBundle(service: medical)
- Arrivals: PMF[3:13]: [0.016, 0.037, 0.074, 0.120, 0.160, 0.176, 0.159, 0.119, 0.073, 0.037] (E=8.0)
- Departures: PMF[0:1]: [1.000] (E=0.0)
- Net flow: PMF[3:13]: [0.016, 0.037, 0.074, 0.120, 0.160, 0.176, 0.159, 0.119, 0.073, 0.037] (E=8.0)
- Flows: selection cohort=emergency inflows(ed_current=True, ed_yta=False, non_ed_yta=False, elective_yta=False, transfers_in=False) outflows(departures=False)
-
From the bundle, we can extract a probability distribution for the number of beds needed for patients currently in the ED. We can view the expectation, or view the percentiles of the distribution as shown below.
```python
@@ -601,12 +605,6 @@ print(f"Need at least {current_ed_bundle.arrivals.min_beds_with_probability(0.9)
print(f"Need at least {current_ed_bundle.arrivals.min_beds_with_probability(0.7)} beds with 70% probability")
```
- For patients currently in the ED:
-
- Most likely number of beds needed for the medical specialty: 8
- Need at least 5 beds with 90% probability
- Need at least 7 beds with 70% probability
-
To derive the yet-to-arrive predictions, we can set the FlowSelection accordingly.
```python
@@ -630,12 +628,6 @@ print(f"Need at least {yet_to_arrive_to_ed_bundle.arrivals.min_beds_with_probabi
print(f"Need at least {yet_to_arrive_to_ed_bundle.arrivals.min_beds_with_probability(0.7)} beds with 70% probability")
```
- For patients yet-to-arrive to the ED:
-
- Most likely number of beds needed for the medical specialty: 2
- Need at least 0 beds with 90% probability
- Need at least 1 beds with 70% probability
-
```python
title = (
f'Probability distribution for number of medical beds needed within {int(prediction_window.total_seconds()/3600)} hours\n'
@@ -661,8 +653,6 @@ plot_prob_dist(bundle.arrivals.probabilities, title,
show_probability_thresholds=True, bar_colour=spec_colour_dict["single"]["medical"])
```
-
-
## Summary
Here I have shown how `patientflow` is used at UCLH to generate predictions of emergency demand for beds in the next 8 hours. There are two elements to the predictions:
@@ -704,11 +694,6 @@ create_predictions(
y2 = y2)
```
- {'medical': {'in_ed': [7, 5], 'yet_to_arrive': [1, 0]},
- 'surgical': {'in_ed': [3, 1], 'yet_to_arrive': [0, 0]},
- 'haem/onc': {'in_ed': [1, 0], 'yet_to_arrive': [0, 0]},
- 'paediatric': {'in_ed': [1, 0], 'yet_to_arrive': [0, 0]}}
-
### Alternative: using an empirical survival curve
Not all hospitals set ED performance targets, or you may prefer predictions that reflect actual past performance rather than aspirational targets. In this case, the probability of admission within the prediction window can be calculated from an empirical survival curve fitted to historical data.
@@ -752,8 +737,6 @@ survival_df = plot_admission_time_survival_curve(train_inpatient_arrivals_df.res
)
```
-
-
`patientflow` includes a function to look up the probability of admission within a prediction window, using the survival curve. This is demonstrated below. It is used in the `create_predictions` function if the optional parameter `use_admission_in_window_prob` is set.
```python
@@ -768,8 +751,6 @@ prob_admission_in_window_from_survival_curve = calculate_admission_probability_f
print(f'Probability of admission in prediction window of {prediction_window.total_seconds() / 3600:.0f} hours, assuming patient has been in ED for 1 hour: {prob_admission_in_window_from_survival_curve:.2}')
```
- Probability of admission in prediction window of 8 hours, assuming patient has been in ED for 1 hour: 0.48
-
For an array of patients, the probability of admission within the window would be created as shown below.
```python
@@ -836,8 +817,3 @@ create_predictions(
y2 = y2,
use_admission_in_window_prob = True)
```
-
- {'medical': {'in_ed': [3, 2], 'yet_to_arrive': [0, 0]},
- 'surgical': {'in_ed': [1, 0], 'yet_to_arrive': [0, 0]},
- 'haem/onc': {'in_ed': [0, 0], 'yet_to_arrive': [0, 0]},
- 'paediatric': {'in_ed': [0, 0], 'yet_to_arrive': [0, 0]}}
diff --git a/docs/notebooks/4c_Predict_demand_files/4c_Predict_demand_22_1.png b/docs/notebooks/4c_Predict_demand_files/4c_Predict_demand_22_1.png
new file mode 100644
index 00000000..9cbb047b
Binary files /dev/null and b/docs/notebooks/4c_Predict_demand_files/4c_Predict_demand_22_1.png differ
diff --git a/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.ipynb b/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.ipynb
index e518d176..7bd6157e 100644
--- a/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.ipynb
+++ b/notebooks/3e_Predict_demand_from_patients_yet_to_arrive.ipynb
@@ -20,7 +20,7 @@
"* a weighted Poisson model using an empirical survival curve; arrival rates of patients who were admitted (at some point), are weighted by their probability of being admitted within a prediction window, calculated from a survival curve learned from past data\n",
"* a weighted Poisson model using an aspirational approach; instead of using a survival curve learned from past data, it is assumed that the ED is meeting 4-hour targets for time to admission. \n",
"\n",
- "I also demonstrate making predictions by specialty for demand from incoming patients. "
+ "I also demonstrate making predictions by specialty for demand from incoming patients, and how to stratify the predictions to take day of week into account."
]
},
{
@@ -28,10 +28,10 @@
"execution_count": 1,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:19.627519Z",
- "iopub.status.busy": "2026-04-18T09:38:19.627427Z",
- "iopub.status.idle": "2026-04-18T09:38:19.713632Z",
- "shell.execute_reply": "2026-04-18T09:38:19.713143Z"
+ "iopub.execute_input": "2026-04-20T10:39:41.655936Z",
+ "iopub.status.busy": "2026-04-20T10:39:41.655765Z",
+ "iopub.status.idle": "2026-04-20T10:39:41.750361Z",
+ "shell.execute_reply": "2026-04-20T10:39:41.749913Z"
}
},
"outputs": [],
@@ -55,10 +55,10 @@
"execution_count": 2,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:19.715117Z",
- "iopub.status.busy": "2026-04-18T09:38:19.715026Z",
- "iopub.status.idle": "2026-04-18T09:38:30.169240Z",
- "shell.execute_reply": "2026-04-18T09:38:30.168692Z"
+ "iopub.execute_input": "2026-04-20T10:39:41.751932Z",
+ "iopub.status.busy": "2026-04-20T10:39:41.751848Z",
+ "iopub.status.idle": "2026-04-20T10:39:52.543344Z",
+ "shell.execute_reply": "2026-04-20T10:39:52.542933Z"
}
},
"outputs": [
@@ -188,10 +188,10 @@
"execution_count": 3,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:30.187855Z",
- "iopub.status.busy": "2026-04-18T09:38:30.187692Z",
- "iopub.status.idle": "2026-04-18T09:38:30.202936Z",
- "shell.execute_reply": "2026-04-18T09:38:30.202432Z"
+ "iopub.execute_input": "2026-04-20T10:39:52.567227Z",
+ "iopub.status.busy": "2026-04-20T10:39:52.567052Z",
+ "iopub.status.idle": "2026-04-20T10:39:52.581917Z",
+ "shell.execute_reply": "2026-04-20T10:39:52.581465Z"
}
},
"outputs": [],
@@ -214,10 +214,10 @@
"execution_count": 4,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:30.204380Z",
- "iopub.status.busy": "2026-04-18T09:38:30.204299Z",
- "iopub.status.idle": "2026-04-18T09:38:30.213294Z",
- "shell.execute_reply": "2026-04-18T09:38:30.212926Z"
+ "iopub.execute_input": "2026-04-20T10:39:52.583491Z",
+ "iopub.status.busy": "2026-04-20T10:39:52.583379Z",
+ "iopub.status.idle": "2026-04-20T10:39:52.593722Z",
+ "shell.execute_reply": "2026-04-20T10:39:52.593358Z"
}
},
"outputs": [
@@ -286,10 +286,10 @@
"execution_count": 5,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:30.214654Z",
- "iopub.status.busy": "2026-04-18T09:38:30.214558Z",
- "iopub.status.idle": "2026-04-18T09:38:30.255520Z",
- "shell.execute_reply": "2026-04-18T09:38:30.255116Z"
+ "iopub.execute_input": "2026-04-20T10:39:52.595224Z",
+ "iopub.status.busy": "2026-04-20T10:39:52.595119Z",
+ "iopub.status.idle": "2026-04-20T10:39:52.641409Z",
+ "shell.execute_reply": "2026-04-20T10:39:52.640993Z"
}
},
"outputs": [
@@ -340,10 +340,10 @@
"execution_count": 6,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:30.256932Z",
- "iopub.status.busy": "2026-04-18T09:38:30.256832Z",
- "iopub.status.idle": "2026-04-18T09:38:30.344513Z",
- "shell.execute_reply": "2026-04-18T09:38:30.344137Z"
+ "iopub.execute_input": "2026-04-20T10:39:52.642813Z",
+ "iopub.status.busy": "2026-04-20T10:39:52.642718Z",
+ "iopub.status.idle": "2026-04-20T10:39:52.738016Z",
+ "shell.execute_reply": "2026-04-20T10:39:52.737237Z"
}
},
"outputs": [
@@ -446,10 +446,10 @@
"execution_count": 7,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:30.345905Z",
- "iopub.status.busy": "2026-04-18T09:38:30.345800Z",
- "iopub.status.idle": "2026-04-18T09:38:31.755097Z",
- "shell.execute_reply": "2026-04-18T09:38:31.754619Z"
+ "iopub.execute_input": "2026-04-20T10:39:52.739457Z",
+ "iopub.status.busy": "2026-04-20T10:39:52.739345Z",
+ "iopub.status.idle": "2026-04-20T10:39:53.631703Z",
+ "shell.execute_reply": "2026-04-20T10:39:53.631125Z"
}
},
"outputs": [],
@@ -471,10 +471,10 @@
"execution_count": 8,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:31.756781Z",
- "iopub.status.busy": "2026-04-18T09:38:31.756656Z",
- "iopub.status.idle": "2026-04-18T09:38:32.478017Z",
- "shell.execute_reply": "2026-04-18T09:38:32.477630Z"
+ "iopub.execute_input": "2026-04-20T10:39:53.633291Z",
+ "iopub.status.busy": "2026-04-20T10:39:53.633165Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.220052Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.219568Z"
}
},
"outputs": [
@@ -523,10 +523,10 @@
"execution_count": 9,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.479709Z",
- "iopub.status.busy": "2026-04-18T09:38:32.479569Z",
- "iopub.status.idle": "2026-04-18T09:38:32.700286Z",
- "shell.execute_reply": "2026-04-18T09:38:32.699266Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.221666Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.221512Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.468681Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.468257Z"
}
},
"outputs": [
@@ -568,10 +568,10 @@
"execution_count": 10,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.701899Z",
- "iopub.status.busy": "2026-04-18T09:38:32.701790Z",
- "iopub.status.idle": "2026-04-18T09:38:32.716116Z",
- "shell.execute_reply": "2026-04-18T09:38:32.715402Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.470610Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.470499Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.488382Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.487879Z"
}
},
"outputs": [
@@ -666,10 +666,10 @@
"execution_count": 11,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.717892Z",
- "iopub.status.busy": "2026-04-18T09:38:32.717758Z",
- "iopub.status.idle": "2026-04-18T09:38:32.729797Z",
- "shell.execute_reply": "2026-04-18T09:38:32.729429Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.491001Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.490866Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.504689Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.504232Z"
}
},
"outputs": [
@@ -702,10 +702,10 @@
"execution_count": 12,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.731126Z",
- "iopub.status.busy": "2026-04-18T09:38:32.731048Z",
- "iopub.status.idle": "2026-04-18T09:38:32.745065Z",
- "shell.execute_reply": "2026-04-18T09:38:32.744652Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.507285Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.507162Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.521701Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.521266Z"
}
},
"outputs": [
@@ -741,10 +741,10 @@
"execution_count": 13,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.746414Z",
- "iopub.status.busy": "2026-04-18T09:38:32.746339Z",
- "iopub.status.idle": "2026-04-18T09:38:32.765052Z",
- "shell.execute_reply": "2026-04-18T09:38:32.764570Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.524217Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.524103Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.545172Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.544444Z"
}
},
"outputs": [],
@@ -795,10 +795,10 @@
"execution_count": 14,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.767333Z",
- "iopub.status.busy": "2026-04-18T09:38:32.767185Z",
- "iopub.status.idle": "2026-04-18T09:38:32.827406Z",
- "shell.execute_reply": "2026-04-18T09:38:32.827010Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.547078Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.546939Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.610749Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.610210Z"
}
},
"outputs": [
@@ -850,10 +850,10 @@
"execution_count": 15,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.828735Z",
- "iopub.status.busy": "2026-04-18T09:38:32.828629Z",
- "iopub.status.idle": "2026-04-18T09:38:32.942106Z",
- "shell.execute_reply": "2026-04-18T09:38:32.941692Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.612245Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.612131Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.734417Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.734016Z"
}
},
"outputs": [
@@ -1343,10 +1343,10 @@
"execution_count": 16,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.943380Z",
- "iopub.status.busy": "2026-04-18T09:38:32.943296Z",
- "iopub.status.idle": "2026-04-18T09:38:32.957321Z",
- "shell.execute_reply": "2026-04-18T09:38:32.956941Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.735945Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.735841Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.751742Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.751236Z"
}
},
"outputs": [
@@ -1486,10 +1486,10 @@
"execution_count": 17,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.958625Z",
- "iopub.status.busy": "2026-04-18T09:38:32.958551Z",
- "iopub.status.idle": "2026-04-18T09:38:32.971576Z",
- "shell.execute_reply": "2026-04-18T09:38:32.971147Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.753463Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.753359Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.768730Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.768226Z"
}
},
"outputs": [
@@ -1551,13 +1551,13 @@
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": 18,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.972895Z",
- "iopub.status.busy": "2026-04-18T09:38:32.972816Z",
- "iopub.status.idle": "2026-04-18T09:38:32.988083Z",
- "shell.execute_reply": "2026-04-18T09:38:32.987631Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.770216Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.770095Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.786127Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.785741Z"
}
},
"outputs": [],
@@ -1576,13 +1576,13 @@
},
{
"cell_type": "code",
- "execution_count": 54,
+ "execution_count": 19,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:32.989488Z",
- "iopub.status.busy": "2026-04-18T09:38:32.989408Z",
- "iopub.status.idle": "2026-04-18T09:38:33.045973Z",
- "shell.execute_reply": "2026-04-18T09:38:33.045555Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.787627Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.787539Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.848210Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.847820Z"
}
},
"outputs": [
@@ -1623,10 +1623,10 @@
"execution_count": 20,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.047417Z",
- "iopub.status.busy": "2026-04-18T09:38:33.047320Z",
- "iopub.status.idle": "2026-04-18T09:38:33.175760Z",
- "shell.execute_reply": "2026-04-18T09:38:33.175365Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.849763Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.849652Z",
+ "iopub.status.idle": "2026-04-20T10:39:54.987501Z",
+ "shell.execute_reply": "2026-04-20T10:39:54.987007Z"
}
},
"outputs": [
@@ -2143,13 +2143,13 @@
},
{
"cell_type": "code",
- "execution_count": 55,
+ "execution_count": 21,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.176951Z",
- "iopub.status.busy": "2026-04-18T09:38:33.176874Z",
- "iopub.status.idle": "2026-04-18T09:38:33.355232Z",
- "shell.execute_reply": "2026-04-18T09:38:33.354808Z"
+ "iopub.execute_input": "2026-04-20T10:39:54.988813Z",
+ "iopub.status.busy": "2026-04-20T10:39:54.988725Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.177507Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.177121Z"
}
},
"outputs": [
@@ -2221,10 +2221,10 @@
"execution_count": 22,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.356617Z",
- "iopub.status.busy": "2026-04-18T09:38:33.356536Z",
- "iopub.status.idle": "2026-04-18T09:38:33.370847Z",
- "shell.execute_reply": "2026-04-18T09:38:33.370498Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.179126Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.179032Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.193214Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.192856Z"
}
},
"outputs": [
@@ -2257,10 +2257,10 @@
"execution_count": 23,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.372790Z",
- "iopub.status.busy": "2026-04-18T09:38:33.372690Z",
- "iopub.status.idle": "2026-04-18T09:38:33.387995Z",
- "shell.execute_reply": "2026-04-18T09:38:33.387552Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.195578Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.195463Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.211275Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.210834Z"
}
},
"outputs": [
@@ -2299,10 +2299,10 @@
"execution_count": 24,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.389422Z",
- "iopub.status.busy": "2026-04-18T09:38:33.389341Z",
- "iopub.status.idle": "2026-04-18T09:38:33.476914Z",
- "shell.execute_reply": "2026-04-18T09:38:33.476407Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.212604Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.212510Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.299906Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.299565Z"
}
},
"outputs": [
@@ -2360,10 +2360,10 @@
"execution_count": 25,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.478315Z",
- "iopub.status.busy": "2026-04-18T09:38:33.478224Z",
- "iopub.status.idle": "2026-04-18T09:38:33.501881Z",
- "shell.execute_reply": "2026-04-18T09:38:33.500534Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.301433Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.301337Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.323196Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.322725Z"
}
},
"outputs": [
@@ -2842,10 +2842,10 @@
"execution_count": 26,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.503981Z",
- "iopub.status.busy": "2026-04-18T09:38:33.503876Z",
- "iopub.status.idle": "2026-04-18T09:38:33.518055Z",
- "shell.execute_reply": "2026-04-18T09:38:33.516549Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.325159Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.325035Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.337383Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.336985Z"
}
},
"outputs": [
@@ -2895,13 +2895,13 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 27,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.520212Z",
- "iopub.status.busy": "2026-04-18T09:38:33.520100Z",
- "iopub.status.idle": "2026-04-18T09:38:33.535205Z",
- "shell.execute_reply": "2026-04-18T09:38:33.533692Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.338777Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.338697Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.350993Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.350627Z"
}
},
"outputs": [],
@@ -2913,7 +2913,8 @@
"aspirational_prediction = yta_model_parametric.predict(\n",
" prediction_time=(12,0),\n",
" prediction_window=timedelta(hours=8), # now passed at predict() method\n",
- " x1=x1, y1=y1, x2=x2, y2=y2, max_value=50)\n"
+ " x1=x1, y1=y1, x2=x2, y2=y2,\n",
+ " max_value=50)\n"
]
},
{
@@ -2925,13 +2926,13 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": 28,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:38:33.536981Z",
- "iopub.status.busy": "2026-04-18T09:38:33.536856Z",
- "iopub.status.idle": "2026-04-18T09:38:33.677186Z",
- "shell.execute_reply": "2026-04-18T09:38:33.676724Z"
+ "iopub.execute_input": "2026-04-20T10:39:55.352536Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.352458Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.480494Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.480106Z"
}
},
"outputs": [
@@ -2978,6 +2979,163 @@
" truncate_at_beds=40, bar_colour=colour_dict[\"single\"][\"all\"])"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Stratify by day of week \n",
+ "\n",
+ "It is also possible to incorporate day of week into the models. The arrival rates for each day of the week are saved in a nested dictionary keyed by 'arrival_rates_by_weekday' with subkeys for each day of the week, where 0 is Monday. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-04-20T10:39:55.481844Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.481750Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.537030Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.536560Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Weekday keys: dict_keys([0, 1, 2, 3, 4, 5, 6])"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "from patientflow.predictors.incoming_admission_predictors import ParametricIncomingAdmissionPredictor\n",
+ "\n",
+ "train_visits_copy = train_visits.copy(deep=True)\n",
+ "\n",
+ "yta_model_parametric = ParametricIncomingAdmissionPredictor(verbose=False)\n",
+ "num_days = (start_validation_set - start_training_set).days\n",
+ "if 'arrival_datetime' in train_visits_copy.columns:\n",
+ " train_visits_copy.set_index('arrival_datetime', inplace=True)\n",
+ "\n",
+ "yta_model_parametric.fit(train_visits_copy, \n",
+ " yta_time_interval=timedelta(minutes=15), \n",
+ " stratify_by_weekday=True,\n",
+ " )\n",
+ "\n",
+ "print(f'Weekday keys: {yta_model_parametric.weights[\"unfiltered\"][\"arrival_rates_by_weekday\"].keys()}')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-04-20T10:39:55.538232Z",
+ "iopub.status.busy": "2026-04-20T10:39:55.538156Z",
+ "iopub.status.idle": "2026-04-20T10:39:55.646515Z",
+ "shell.execute_reply": "2026-04-20T10:39:55.646071Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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ic22vQYU6hTjAsYB1APuA5p2sAbmEtSZ9ntnFMfaKL9xC/0fQhK0B2yesN7BmKH1f5RD3++wXihMue0p7DyC9oj6RxtF+wXwl4Hv0e7gVBRjC9DGKoyb6MMY21FWCMm++uor9W7wrBhbNbDvQJ/A36BfYHNcnOO4swMa9Hu8L6zT0H/QVv/999/L7i0ob6NznSv7BvwdhDEYo9944w01tmHt50i4aaT9au8Ka3jkibaGORvpaeOHq3UIMGZDqIDDdHwwX6FeMZbpQd1gzYN9AOY25A/hEtoA9q3o22hbeFakifEc/QigLbsyNt93332qv2DugjYYxkPMbZgb7YV9LmOWHf+8efOUneORI0dsf/75p61KlSo2f39/29GjR9V9sB3Bfc8991yev588ebL6/q233srz/bXXXqvsxfbt25f7He7DZ926dbnfHT582Obn56ds1zRSUlIuK+fKlSvV344bN+6ysrdp0yaPHSTs4fD9f//959Qe2JFPBc3e04hPheeff97m6+trO3/+fO538fHxNi8vrwJthB977DGVz+rVq/P8bXBw8GX2a/blvuqqq2xNmjQptB0cvodd2fbt2x3+Tl92rT6GDh2a574HHnhAfb9582andekszfzKZm+jpNXT0qVLc79LSkpSvj5iY2OV/aLe7qpRo0Z57OU+//xz9T1sJQtjt9WyZUtbeHi47cyZM7nf4ZlRf3obS62ebrjhBpsRtHYL2029zd/jjz9u8/T0zNOmnNmc29eVluaAAQPypAkbUvRDvZ0m7A2joqIc9gd9nwdoo/geZdPo06ePrVmzZsr+WAN5wpYUdqv2Zeratash29/PPvtM3T9+/Pjc79Cv8QwVK1a0XbhwIc/zDxkyxGYEo+POnXfeaatevbrt9OnTef7++uuvV31TG5e0cv7999+598D3TN26dfPY627cuLHQ9oB4N/bjHdp2RESEbfjw4bnfwQ8O2qO+jwDYA+Pvly9frv5/6NAh1bbefvvtPPehb2DM0r5HfaPNo+3r+xJsfpGevs0YzXvTpk3q/xg39Nx4442GfSo48ovh6vhQu3Zth3OLPa70BUfp/fHHH+q+JUuWFGrce/PNN9W8Y2+DjbkX7zAuLi5POTFXnz17Nvc+zHv4furUqQXakT766KO2SpUquWybjzaN9Hbs2KH+P2XKFDUfYq6AjbJG8+bN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foSKJFBQMV+AKC4uvqqOK7vmy4/uqtZJboPaysnJUcMhJOhxJX9///L7kregsZA2SwBFhizIbUUSXKgtyelw55134ueff8aGDRvUcBIZTiH5F4iIiKjuGFQgIiIyIbkaLskLw8PDK6339vZGYmKiCiyUXZ2XPADGsmfPHhXUKEuAKD/GJdeA6NatG7777juVFFJ6MRhKEh0GBASonAuDBg0qXy/LvXr1qnN9khPhytcQFhamggiS/0F6KkiPjBtuuKHK57dr167KOq4kvR2k/Oc//8HkyZNVoksGFYiIiAzD4Q9EREQmJEMVJDngvHnzKq2X2RVSUlLw7rvvqi74CxYsUFfOjUXqW7NmjZoF4rHHHlPTW06bNk09Jsvp6enqB7UkLJT9//LLL5g6dar64V4XkhBSejysWrUK0dHRKvGhBEemT59e5zZfuHBBDU+QelasWKESXZbVI0EA+Tvee++9+P777xETE6MSOsoMG9LrQDz55JMq6aQkjZRhEx9//HGlmSjy8/NVYEVmjDh//rwKfsjrl2AEERERGYZBBSIiIhOT6RSvHJ4gP2Q/+eQT9eO/c+fO6gfytWZGMKSHhBSpe8eOHfjxxx/VNI2irHeBBBCGDRumAh8ydaRMWVkxf0NtyA95CQTI7A5Sj/yIl31JD4O6koCB/PCXXg4S+JCAwkMPPVT+uPQokG1kX9LzQ6bblKCATCFZlpNh8eLFauYIed2//vorXnzxxfLnS48HmQFD6pAghcx2IdNqvvLKK3VuKxEREZWykmyNl+8TEREREREREdUaeyoQERERERERkUEYVCAiIiIiIiIigzCoQEREREREREQGYVCBiIiIiIiIiAzCoAIRERERERERGYRBBSIiIiIiIiIyCIMKRERERERERGQQBhWIiIiIiIiIyCAMKhARERERERGRQRhUICIiIiIiIiKDMKhARERERERERAZhUIGIiIiIiIiIYIj/B4osE41Zy8zvAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from datetime import date, timedelta\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "colour_dict = create_colour_dict()\n",
+ "\n",
+ "# Two weekday anchors\n",
+ "snapshot_date_1 = date(2023, 1, 2) # Monday\n",
+ "snapshot_date_2 = date(2023, 1, 7) # Saturday\n",
+ "\n",
+ "pred_1 = yta_model_parametric.predict(\n",
+ " prediction_time=(12, 0),\n",
+ " prediction_window=timedelta(hours=8),\n",
+ " prediction_date=snapshot_date_1,\n",
+ " strict_prediction_date=True,\n",
+ " x1=x1, y1=y1, x2=x2, y2=y2,\n",
+ " max_value=50\n",
+ ")[\"unfiltered\"]\n",
+ "\n",
+ "pred_2 = yta_model_parametric.predict(\n",
+ " prediction_time=(12, 0),\n",
+ " prediction_window=timedelta(hours=8),\n",
+ " prediction_date=snapshot_date_2,\n",
+ " strict_prediction_date=True,\n",
+ " x1=x1, y1=y1, x2=x2, y2=y2,\n",
+ " max_value=50\n",
+ ")[\"unfiltered\"]\n",
+ "\n",
+ "truncate_at_beds = 40\n",
+ "x = np.arange(truncate_at_beds + 1)\n",
+ "\n",
+ "# Align PMFs to same support\n",
+ "pmf_1 = pred_1.reindex(x, fill_value=0)[\"agg_proba\"].values\n",
+ "pmf_2 = pred_2.reindex(x, fill_value=0)[\"agg_proba\"].values\n",
+ "\n",
+ "title = (\n",
+ " f'Probability distribution for number of beds needed for patients '\n",
+ " f'who will arrive after {format_prediction_time((12,0))} on two different snapshot dates '\n",
+ " f'\\nand need a bed before 20:00 '\n",
+ " f'if the ED is meeting the target of {int(x1)} hours for {y1*100}% of patients'\n",
+ ")\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(10, 4.5))\n",
+ "base_colour = colour_dict[\"single\"][\"all\"]\n",
+ "bar_width = 0.42\n",
+ "\n",
+ "ax.bar(\n",
+ " x - bar_width / 2,\n",
+ " pmf_1,\n",
+ " width=bar_width,\n",
+ " color=base_colour,\n",
+ " alpha=0.45,\n",
+ " label=f\"{snapshot_date_1} (Mon)\",\n",
+ ")\n",
+ "ax.bar(\n",
+ " x + bar_width / 2,\n",
+ " pmf_2,\n",
+ " width=bar_width,\n",
+ " color=base_colour,\n",
+ " linewidth=0.4,\n",
+ " label=f\"{snapshot_date_2} (Sat)\",\n",
+ ")\n",
+ "\n",
+ "# Overlay lines to make shape differences obvious\n",
+ "ax.plot(x, pmf_1, color=base_colour, linewidth=1.6, alpha=0.8)\n",
+ "ax.plot(x, pmf_2, color=\"black\", linewidth=1.4, alpha=0.7)\n",
+ "\n",
+ "ax.set_title(title)\n",
+ "ax.set_xlabel(\"Number of beds\")\n",
+ "ax.set_ylabel(\"Probability\")\n",
+ "ax.set_xlim(-0.5, truncate_at_beds + 0.5)\n",
+ "ax.grid(axis=\"y\", alpha=0.25)\n",
+ "ax.legend(title=\"Snapshot date\")\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
diff --git a/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.ipynb b/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.ipynb
index 2e5fdc8c..6fc7b1c9 100644
--- a/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.ipynb
+++ b/notebooks/3f_Evaluate_demand_predictions_for_patients_yet_to_arrive.ipynb
@@ -25,10 +25,10 @@
"execution_count": 1,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:23.567699Z",
- "iopub.status.busy": "2026-04-18T09:40:23.567595Z",
- "iopub.status.idle": "2026-04-18T09:40:23.658493Z",
- "shell.execute_reply": "2026-04-18T09:40:23.658063Z"
+ "iopub.execute_input": "2026-04-20T10:40:01.525585Z",
+ "iopub.status.busy": "2026-04-20T10:40:01.525507Z",
+ "iopub.status.idle": "2026-04-20T10:40:01.617275Z",
+ "shell.execute_reply": "2026-04-20T10:40:01.616811Z"
}
},
"outputs": [],
@@ -52,10 +52,10 @@
"execution_count": 2,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:23.660026Z",
- "iopub.status.busy": "2026-04-18T09:40:23.659939Z",
- "iopub.status.idle": "2026-04-18T09:40:31.069844Z",
- "shell.execute_reply": "2026-04-18T09:40:31.069363Z"
+ "iopub.execute_input": "2026-04-20T10:40:01.618699Z",
+ "iopub.status.busy": "2026-04-20T10:40:01.618618Z",
+ "iopub.status.idle": "2026-04-20T10:40:08.969633Z",
+ "shell.execute_reply": "2026-04-20T10:40:08.968979Z"
}
},
"outputs": [
@@ -126,10 +126,10 @@
"execution_count": 3,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:31.071680Z",
- "iopub.status.busy": "2026-04-18T09:40:31.071573Z",
- "iopub.status.idle": "2026-04-18T09:40:31.143749Z",
- "shell.execute_reply": "2026-04-18T09:40:31.142674Z"
+ "iopub.execute_input": "2026-04-20T10:40:08.971499Z",
+ "iopub.status.busy": "2026-04-20T10:40:08.971382Z",
+ "iopub.status.idle": "2026-04-20T10:40:09.041135Z",
+ "shell.execute_reply": "2026-04-20T10:40:09.040608Z"
}
},
"outputs": [
@@ -180,10 +180,10 @@
"execution_count": 4,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:31.145451Z",
- "iopub.status.busy": "2026-04-18T09:40:31.145334Z",
- "iopub.status.idle": "2026-04-18T09:40:31.689136Z",
- "shell.execute_reply": "2026-04-18T09:40:31.688689Z"
+ "iopub.execute_input": "2026-04-20T10:40:09.042670Z",
+ "iopub.status.busy": "2026-04-20T10:40:09.042512Z",
+ "iopub.status.idle": "2026-04-20T10:40:09.588419Z",
+ "shell.execute_reply": "2026-04-20T10:40:09.587922Z"
}
},
"outputs": [
@@ -224,10 +224,10 @@
"execution_count": 5,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:31.690790Z",
- "iopub.status.busy": "2026-04-18T09:40:31.690646Z",
- "iopub.status.idle": "2026-04-18T09:40:49.417683Z",
- "shell.execute_reply": "2026-04-18T09:40:49.417305Z"
+ "iopub.execute_input": "2026-04-20T10:40:09.589844Z",
+ "iopub.status.busy": "2026-04-20T10:40:09.589707Z",
+ "iopub.status.idle": "2026-04-20T10:40:29.619227Z",
+ "shell.execute_reply": "2026-04-20T10:40:29.618759Z"
}
},
"outputs": [
@@ -327,49 +327,13 @@
"execution_count": 6,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:49.419399Z",
- "iopub.status.busy": "2026-04-18T09:40:49.419297Z",
- "iopub.status.idle": "2026-04-18T09:40:58.951109Z",
- "shell.execute_reply": "2026-04-18T09:40:58.950695Z"
+ "iopub.execute_input": "2026-04-20T10:40:29.624178Z",
+ "iopub.status.busy": "2026-04-20T10:40:29.624073Z",
+ "iopub.status.idle": "2026-04-20T10:40:39.733044Z",
+ "shell.execute_reply": "2026-04-20T10:40:39.732674Z"
}
},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Split sizes: [2214, 710, 1584]\n",
- "Calculating time-varying arrival rates for data provided, which spans 45 unique dates\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Time interval of 0:15:00 used to bucket arrival rates.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The error value for prediction will be 1e-07\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "To see the weights saved by this model, use the get_weights() method\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "EmpiricalIncomingAdmissionPredictor has been fitted with survival curve containing 881 time points\n"
- ]
- },
{
"data": {
"text/html": [
@@ -777,10 +741,10 @@
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
- "
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
EmpiricalIncomingAdmissionPredictor(filters={})
"
],
"text/plain": [
- "EmpiricalIncomingAdmissionPredictor(filters={}, verbose=True)"
+ "EmpiricalIncomingAdmissionPredictor(filters={})"
]
},
"execution_count": 6,
@@ -813,6 +777,7 @@
" start_test_set_fake,\n",
" end_test_set_fake,\n",
" col_name=\"arrival_datetime\",\n",
+ " verbose=False\n",
")\n",
"\n",
"# Train the EmpiricalIncomingAdmissionPredictor\n",
@@ -823,13 +788,14 @@
"if 'arrival_datetime' in train_visits_copy.columns:\n",
" train_visits_copy.set_index('arrival_datetime', inplace=True)\n",
"\n",
- "yta_model_empirical = EmpiricalIncomingAdmissionPredictor(verbose=True)\n",
+ "yta_model_empirical = EmpiricalIncomingAdmissionPredictor(verbose=False)\n",
"yta_model_empirical.fit(\n",
" train_visits_copy,\n",
" yta_time_interval=timedelta(minutes=15),\n",
" num_days=num_days,\n",
" start_time_col='arrival_datetime',\n",
- " end_time_col='admitted_to_ward_datetime'\n",
+ " end_time_col='admitted_to_ward_datetime',\n",
+ " stratify_by_weekday=True\n",
")"
]
},
@@ -847,10 +813,10 @@
"execution_count": 7,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:58.952445Z",
- "iopub.status.busy": "2026-04-18T09:40:58.952363Z",
- "iopub.status.idle": "2026-04-18T09:40:59.191737Z",
- "shell.execute_reply": "2026-04-18T09:40:59.191226Z"
+ "iopub.execute_input": "2026-04-20T10:40:39.734568Z",
+ "iopub.status.busy": "2026-04-20T10:40:39.734468Z",
+ "iopub.status.idle": "2026-04-20T10:40:39.979093Z",
+ "shell.execute_reply": "2026-04-20T10:40:39.978666Z"
}
},
"outputs": [
@@ -895,10 +861,10 @@
"execution_count": 8,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:59.193076Z",
- "iopub.status.busy": "2026-04-18T09:40:59.192978Z",
- "iopub.status.idle": "2026-04-18T09:40:59.499340Z",
- "shell.execute_reply": "2026-04-18T09:40:59.498892Z"
+ "iopub.execute_input": "2026-04-20T10:40:39.980432Z",
+ "iopub.status.busy": "2026-04-20T10:40:39.980331Z",
+ "iopub.status.idle": "2026-04-20T10:40:40.331651Z",
+ "shell.execute_reply": "2026-04-20T10:40:40.331148Z"
}
},
"outputs": [],
@@ -933,7 +899,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "The result can be plotted using EPUDD plots. The model appears as a series of vertical lines because the `EmpiricalIncomingAdmissionPredictor` is trained only on time of day, so there is minimal variation in the predicted distributions. This is included as a placeholder, to show how modelling of yet-to-arrive patients using past data on time to admission could be evaluated. You could modify the function to include a weekday/weekend variable, or replace it with a different approach based on moving averages (such as ARIMA)."
+ "The result can be plotted using EPUDD plots to allow for the evaluation of the model. (But note that this is showing the results of using fake data.)"
]
},
{
@@ -941,16 +907,16 @@
"execution_count": 9,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-04-18T09:40:59.500941Z",
- "iopub.status.busy": "2026-04-18T09:40:59.500858Z",
- "iopub.status.idle": "2026-04-18T09:40:59.734038Z",
- "shell.execute_reply": "2026-04-18T09:40:59.733663Z"
+ "iopub.execute_input": "2026-04-20T10:40:40.333233Z",
+ "iopub.status.busy": "2026-04-20T10:40:40.333143Z",
+ "iopub.status.idle": "2026-04-20T10:40:40.599390Z",
+ "shell.execute_reply": "2026-04-20T10:40:40.599039Z"
}
},
"outputs": [
{
"data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAACboAAAGpCAYAAABBdhL1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA12xJREFUeJzs3Qd4VGX2+PGTUBLQJBTpJQRhRZGmrAoYg4piAUXFhiIg6qqoAVwVK3bFguBacC3Aoq5YwAJWkEAAOwIW1paQAIqgEIJIAiTzf877+99xZjK5ySQzmblzv5/nCcN7p71zp5w7c889J8Hj8XgEAAAAAAAAAAAAAAAAAIAYlRjtCQAAAAAAAAAAAAAAAAAAYIdENwAAAAAAAAAAAAAAAABATCPRDQAAAAAAAAAAAAAAAAAQ00h0AwAAAAAAAAAAAAAAAADENBLdAAAAAAAAAAAAAAAAAAAxjUQ3AAAAAAAAAAAAAAAAAEBMI9ENAAAAAAAAAAAAAAAAABDTSHQDAAAAAAAAAAAAAAAAAMQ0Et0AAAAAAAAAAAAAAAAAADGNRDcAAAAAcKFOnTpJQkJClX+zZs2q8npJSUnSsWNHOffccyU3N7fCfQ0cONBc7vbbb7edk56vl9PL+8rJyalwnw0aNJBmzZrJ3/72Nxk+fLhMmzZNtmzZUultr1+/vsJt1KtXT5o0aSKdO3eWoUOHyr333isFBQVS16z1o4/TiYqKimTcuHGSnp4uDRs2DPocAsFY721eL9U3evTooJ/N8c7j8ciDDz4ohx56qDRq1Mj7OY7KWfFa45+bVfZaqcv1Ey/vW6dvrwAAAAAA4gOJbgAAAADgYgMGDJBRo0ZV+telS5cqr3fyySdLeXm5vPzyy5KVlSVTp06N2Hyt+xwxYoS5r9TUVHnzzTdlwoQJ0r59e7n11ltl7969trdx1llnmdsYOXKkHH/88dK6dWtZtGiR3HzzzZKRkSGXX365/PHHH+JUdZ3ccNlll8kTTzwhiYmJcuaZZ5p1e9JJJ4lbhGPHPwkpUJoEo68DTYqJdXWduPPkk0/K9ddfLxs3bjQxx4oFQLQ56X1bnYMNqjooAQAAAACAaKsf7QkAAAAAAKLnkksuqdHO2cDrlZSUyD/+8Q/5z3/+Y5IRhgwZYqqthVuwpAqtKPbYY4/JnXfeKXfffbf88MMP8t///rfSaj8PPfSQSSzytXv3bpk5c6ZMmjRJnnrqKfn222/lgw8+MNXqUDlNKpw/f74kJyfLmjVrTOIhUF1HHHGErFu3Tho3bhztqTjGfffdZz6n2rRpI26iidTqlVdekRNOOCHa00EcWLx4sYlh7dq1i/h9xcv7Vrfx/vzzT1PFFwAAAACAaKGiGwAAAACg1jTR6fHHH5f99ttPysrKZN68eXV239p+9JZbbjH3qcltc+fOleeffz6k29BWeFdeeaWpyqWPRVuwPvDAAxGbc7z45ZdfZN++fdKqVSuS3BAyTXDr1q0bSRMh0EQZXWdpaWniJoWFhea0a9eu0Z4K4sSBBx5o3kvaCj3S4uV9q5/V+jhITgYAAAAARBOJbgAAAACAsNh///3loIMOMv+PRgtGrSI3fPhw8/+aJqkddthhcvXVV5v/P/LIIyaJq7o0yc6qIvf000/L4YcfbhL/NBHvlFNOkY8//jjk+ej9z5gxQ/r37292kGsSniZ6XHPNNbJp06ag7dMKCgrMWNuwWnMKbK2prVqHDh1qEtR0J3/Tpk3N7V544YWybNmyaj/e9PR083+9z8ruK5THEGxdaqW9fv36metWp72ntrTVy2lVv8ro60Mvc84551Q474svvpALLrjA7NDXin7NmjWTwYMHy9tvv+13OX2MehtLly4142OPPdZvHVSnpWMoz5n69NNPzZzbtm0rDRs2lJYtW5rnUasP1pS+FvQ137t3bznggAPMY9Y2wOeee6589tlnVba40wSksWPHSocOHcxryar06Nva8uuvvza3p8ke9erV87bGs9ahtn+1vPfee2bZwQcfXOmc9TWlLYf1clpJMLA648MPPyxHHXWUee/p600/l7TS5O+//x7SuvGdn1Yxuummm0w7Z71NfQ70cVf2Gg51vWqVyTFjxpj/z5492+914Lt+qmoZWt3Xr+/9Wu+rJUuWyIknnmg+DzT5Vz8PtYKTL72cXl7nqHTOvnP1bXuo1TUvvvhi87rWuWiM0M+MU0891byvQ2kNnJ+fX+E9EthiUV87Ggf0faHvD32OdH1//vnntretz7MmN+t7qUWLFqYNcygtWb///ntT0VQTp/S1oZ9VxxxzTKUJ1/p+nzJlihx33HHe50lfq0cffbSpKKqtwCuzfft2U720b9++5n70eercubP5XHjnnXcqvV51ntvq8H396XtP21XrOtPb7Nmzp0yfPt0ku9fkM8Py6quvmvbXerv6PGrFNY1NWmm1Mh999JFpaavrUV9nun6ee+65GreM9ng8JnleX0/6WaPz0FN9jvS508+ZcL5vX3rpJdNKXd+v+nrQ94m+d/S1VdXcw/Hc6m3dcccd5v966vs4fJ+fylp1+z6+7777zrzv9H2o20B///vf5Y033vBe9pNPPpHTTjvN+7rR+K7V9SoTzs90AAAAAEB8oHUpAAAAACBsiouLzWm0Wn7qznBtbaeJNZs3bzY7pmtyGw8++KBJKNAECd25GoqJEyfKtGnTZMCAAXL66afLV199ZRIQNBlJ2++dccYZ1bqd0tJSs5NdE2Z0x64mUmnVtJUrV8q//vUvk8iliR26U1tpAs6oUaNMksCuXbvkrLPOMjv8Lda60J3x1o55bR2pt6s7kjdu3Gh2tmtSjiZpVEXv648//pDXXnvN7My2kgx97yvUxxBIE4WeeOIJkySnyTF5eXmVtqS1ZGdnm2Q9bWd7/vnnVzhfk0iefPJJ8/+rrrrK7zxN0tDnTy+jCUpHHnmkeR3pTv3333/fJADcdttt3seo6+Ddd9+VX3/91SQT+b7e9PmoSnWfMyt58vLLLzdz69Onj0k40ISZBQsWmD9NIJk8ebKESm9zw4YN0r17d/OarV+/vvzvf/8zr1VN9NDXhM4rGE1k0rloEoheV5ND9PXjS59rvQ9NctPXlb7WUlJSKp2PtqXUhDCdgyaHBnv/6ftJ17m+bnr16uVd/vPPP5sEGX3PacKIJljofa1atcq8p/WzQZ9LK0Gzuvbs2WOSUNauXWvWu97v8uXLTSKNJpDp6y2w0lio61XfP/p4V6xYYRKmNKHGohWUqiOU128gfSza+lkfm65DTaDR+ejrc9u2bTJ+/HhzOX196jJ9/D/99JN5bL6vdb1fpZ/Bep7GBE1K0c8BTXLUzxldX5ogaH0O2dG5aFJPsPeIdV/q1ltvNfPXzwf9vNAEMm2Lq+tbP6P+/e9/m8ShYPR1ocm4up4HDRpkHm91Y5he96KLLjLtu/X6mtS8Y8cOk8wzcuRI+fDDDyskXM2ZM8fMV5P2tMW3rietjqnJWvr863Oljzfws04Ty/RzUNedJrnpa0Rf35o4pp8BW7ZsMcleNX1uQ6FJt1dccYX5jNL3hsZLfZ3pbelrQ9d7sM9qu88MTWDVJE29rq5/TRbXJDdN9nrhhRfM+0b/9DEEPgf6Wa8Jdoceeqj06NHDvPe0xfo333wT8mPTdqbnnXeeuS9NetQ4qUmJv/32m0m20xakmsilr8vavm/18WuSmCam6WeEfkZqgph+ZmkyqFao1ddv4GMO93Orl1+9erV5jelnqu97y/cxVUXnrXFVP8P1daExSl/Xut2jz6s+Rk3K1OdJz7c+53XumrAXeF+R+kwHAAAAADicBwAAAADgOunp6R79Sjhz5sywXW/NmjWexMREc/5zzz3nXZ6VlWWWTZ482fa29Xy9nF7e15IlS8zy6nyF3bhxo/eyixYt8i7Pz8/3Ltf/2ykrK/M0bNjQXPaZZ57xVJd1+40aNfIsXrzY77wHHnjAnJeWlub59ddf/c6z1o8+Tl833HCDWX7ggQf6zXnPnj2esWPHmvMyMjI8paWlQZ+jyh6nXkfPz83NrXCezm3VqlXVfszWetX7DKamj8Fal6mpqZ6PPvrIE4p9+/Z510Gwx/LWW2+Z83r27Om3/N133/UkJCR4DjjgAM/SpUv9zlu7dq2nffv25no5OTnVev5CUdVzpvdfv359M7///Oc/fue9/fbb3tfr+++/H/J9z58/37Nt27agy/U+mzdv7vnzzz+Dvlf178ILL/SUlJRUuP6oUaO8l5k0aZJ5XwWy3tuB7/mbb77ZLP/HP/4RdM5nnHGGOf9f//qXd1l5eblnwIABZrm+toqLi73n7d2713Pttdea84499thqrhn/z54uXbp4CgoKvOft3r3bc9ZZZ5nzjjrqqLCsV/1c1dvTdVcZa70GfgbX9PVrvfYaNGhg3hvB5qOfW4FzrWweljFjxpjz77777grn6W0FzrE275F33nnHnJecnFzhPaCf4dbj+/rrr4O+d/Xv8ccf94RK12tSUpK539dee83vvPXr13t69Ohhbnv27Nl+53366aeer776qsLtbdq0ydOrVy9znZdfftnvvD/++MPToUMHc95FF13k2blzp9/5RUVFng8++CAsz60d3/f1lVdead5bFl2/LVq0MOfNmDEj5M+Mm266yZx/5JFHevLy8vzOe+WVVzz16tXzNG3a1LN9+3bv8l9++cWTkpJirjd16lS/6+g2gD43lW0/VPaamjhxolneqVMnz+rVq/3O088ZvV1d3+F43z755JNmub5vv/zyS7/7sdZZkyZNPFu2bIn4c2vdn922WmXxzvd1oe95nb/l0UcfNcv1M0ifv8AYNn78eHP+oEGD/JZH4jMdAAAAABAfSHQDAAAAABeydpJW9ee7Q9n3er47a3WH78KFC00yk57Xtm1bs1M+GoluuvPcuuzcuXNrlOimWrdubS47ZcoUT3VZt687bYPp27evOf+ee+6pcsexJtHsv//+Zvmbb75Z4bZ27drladWqlTn/hRdeCClpqnHjxmYHeDjYJbrV5jFY6/LOO++s0bysxELdOR5o8ODB5rynnnrKb7kmV+jyV199NehtauKJnq/JTXWd6GYlBZ555plBz7/qqqvM+SeccIInnM4//3xzu/r+DvZebdasmV/CR7DEh7/97W8m+TCYyhLdfvzxR2+ihr6OfGnChyZ3aILR77//XiHZqXfv3n7JNxZNtDv00EPNZYIlGdnNT/9ef/31oImh+n7S81esWOGp7XqtTcJMTV+/1mtPk3uC6datmzl/2bJl1ZqH5ZRTTqk02TTc75Hjjz/e9jEMGTLEnH/ppZcGfe8ed9xxNZrTueeea67/0EMPBT1fE9r0/MMPP7zat/nee++Z65x99tl+y6dNm+Z9fVf2fgpU0+fWjvW8t2nTpsJ7U2nyqZ7ftWvXkD4z9L2sSeKamKYJ68FoYl1ggqsmVVWWbKqys7NDSnTT97SVOPz55597qqM271tru0mTwQJpopcmZAfbbojEcxuORLcjjjjCL8lN6eexPu/BXtfqt99+M+fpetck+Eh+pgMAAAAA4kNitCvKAQAAAACiR1uHacuqyv60vVgw2nJO25LpX5MmTUw7NW1jp627tJWftrKMBm3ZZ6mqxWV1bqcmt6HrLRhtb6e0zVZVtGWqtgXVVl1Dhw6tcH7jxo1NazWl7b5CoW3YtLWezueLL77wW2fhFI7H4NsONRTask5v/8UXXzQt9Sw//vijaQuor1ltUWvRlnTaiq9Ro0ZB56q0ZaXVirOuWa8ZbXEXzNixY81pbm6uad8XKm0Pp61Rr732WrPu9H70z2r799133wW9nrZ51BaKdoYNG2ZaVoZCP0e0hZ++TufPn+93nrYw1NaC2hZYX1uWhQsXmlNtbant8QJpC0KrJW+oz6G+Xk477bQKy7XFoNVSMNj7uqbrNVTheP1Wdr2DDz7YnGq7zFA/Z5S2t9T2xNraMxK03aW2jazO+yOcnzP6uaktdJW2sQymb9++ps3ql19+WeHxa1vnt956y7SS1Ta3GlN1/k899VTQ14a2SLYeS6jvp3A/t0rbT2o76srin7Yo1dd/dT8z9LnRtsa6TaLtSqv7Grbed9ryNJR4XBmdh7Yq1rap+hdJ2sZXt5sqm6duf1jtfSt77Ubiua0NbZ0buN2kn8fapldpa99AzZs3N5/lut5///33OvlMBwAAAAA4W8VviQAAAAAA17CSL0KlO6O7dOli/q/JcJrwcdRRR5mkj8AdktZOz/8r1FU56/zaJKhpwofFNwkmFJooVFRUVOPbsHboVrZcd25Xxdo5XdltWclAvpetrieeeEKGDBkic+bMMX8pKSny97//XY477jgZOXKkdOzYUcIhHI+hU6dONbrvpk2bmseiSSPPPvus/POf//Q+dn2dafKAJsJZ8vPzzXJNtEhKSrK97a1bt4Y0l2DvrwMOOEAeeuihsK1Laz1qMo0mCuj7Ud8L1uP21a1bN5k0aZJ3fMcdd8g999xjkscqU1xcXOPnp6bP4cUXXyzLli2TmTNnyvnnn+9drmNlJYBY8vLyzOmtt95q/sL5HOpjqOxzqbL3dW3Wa6jC8fqt7H2fmppqTkNNVLvuuutk+fLlsmjRIhMXGjRoIL169TKJKZrgqp854aCvd2tuVb0/wvk5o/drPX8dOnSo1uWtBK6PP/7YJMcVFhZW+7VRUFDgff+GKtzPrd261niiiUv6ePU90bZt22qta+v9u3jx4iq3AXxfw9b7rqq4W121Wc+hsl6Pur6s5yLU124kntvaqGw+mvBpd76+brZt2+Y330h+pgMAAAAAnI1ENwAAAABARBPkrOpuu3btsr2cVv/y3SFaE6tWrfL+v0ePHjW6ja+//tpUFqnNbdipKuEv0rTSi1YL0spmH374oamEopXA9P933nmnSQzzrXYWTVqhqqauueYak+j25JNPysSJE80OdE2S0iSKcePG+V3Wqmqnrz2tHhNOs2fPrrAsPT09pES3mtD3U7D7zsrK8ia6zZs3T26//XbzuB977DGT7KiJKbredT3ddNNNct9991X6mq3O81PT5/Dss8+Wq6++2iS+aDJL+/btzft77dq1JmHoxBNPDPocHn300d7kkMp0795dws13HdV2vYYqHK9frY4UTppI+sEHH8hnn31mqpHp54z+aaXHqVOnypVX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S4NYZX8ff/yx97K+yxMTE6Vt27Zy4oknSk5Ojt9t6vlXXXVV0Pt79dVXzfm+1xk9erTfbe+///7SuXNnGT58uLz22mtSXl5e4XYGDhzoN5fU1FQ56KCDZOTIkfLBBx9ILFm5cqXcfvvtUlRUVK3L/+9//zPr5MADD5Snn35a/v3vf0tdWLRokRx33HGSlpYmKSkpcvjhh8vcuXOrdV19jh544AHJyMiQ5ORk6dmzp/z3v/8Netl169bJSSedZJ7nZs2ameds69atYX40ABD/iOGR54QYruvs6KOPlsaNG0vTpk3NutcfKarj559/lgsvvNCsf439+gPDEUccIbNnzxaPx1Ph8ps2bZJzzjnHXE6ft9NPP13y8vIi8KgAIH4QryMv1uP1L7/8IpMmTZJjjz3WxNvA58fy559/yuOPP26e8zZt2pjL9unTR5588kkpKyur9v3perjsssukRYsWst9++5n7XbVqVdDLvvnmm3LYYYeZ7/EdO3aUyZMny759+2r1eAEgXhDDIy9eYnjgevf909/Bq2P+/PkyePBg89pJSkqS9u3bm+f566+/Dnp5YjgAVI4YHnmxHsMXL14sF198sfztb38zv5vrur/kkktMbPfF93DEi/rRngAQLXfeeadJUgrUpUsXv/EJJ5wgF110kdn5mZ+fL0888YRJjlq4cKGcfPLJNb5//fL2zDPPmP/v3r1bCgoK5K233jIBXwP7G2+8YQK6L/2yd99995n/79q1S3788UeZN2+ePP/882YnrJ5qVngsBPs77rjDBPDqZKjrhpBu4EyfPr3C+o+UmTNnytixY83ze++990q9evXku+++kw0bNlTr+jfffLPcf//9cumll8rf//5383yNGDHCbIydd9553stt3LhRjjnmGJNMp/fzxx9/yEMPPSRfffWVfPrpp9KwYcMIPkoAiE/EcPfG8AULFphkM/1irHG4uLjY3Lcmvn355Zfmi7Wd3377zcRmfa70S/XevXvNjyb6eHU7QGO1RWO2fkHfsWOH3HTTTeb5eeSRRyQrK0tWr14tzZs3j/jjBQAnI167N15rTJ0yZYp07dpVevToIR999FHQy2ny+NVXXy3HH3+8TJw40Twf7733nlx55ZVmR4wmoldFH9epp54qa9askeuuu04OOOAA8xrS5/iLL74wc7C88847MmzYMHPev/71L/O9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enua0Hb11Vf7lcG/8sorTTtT/YHhn//8p1kXU6dONdXkApPqAAAVEa/dG6+VtaP7m2++8R69r9+5ldUSRZ8TvV/rB259jn317NnT/Fn0e7zS9WrR6x111FHm+/W3335rjrjXx6A/outjC1y/en96hLuuN9158dhjj5ntiIMPPrhWjxcA4gkxnBheVQzXKi7nn3+++dPv0fp458+fb75vX3bZZX4HkSmNs1lZWaYau0V/H9fYrgkG2rL0hx9+MDv69fd2TYjwRQwHgOohhrs3hl9wwQWmm9jFF19sEgR9u5Lp7+jDhg0z/+d7OOKGB3CZmTNnaop0pX96vkXH48aNq9btbty40XPJJZd42rVr56lfv76nWbNmniFDhng+/vjjCpcdNWqU3302btzY06lTJ89ZZ53lefXVVz1lZWUVrpOVleV3nf3339/TtWtXz4UXXuh5//33q/349Xa6d+/u+fzzzz39+vXzJCcne9LT0z2PPfaY3+Xy8/MrrA+1aNEiz4ABAzyNGjXypKameoYOHer59ttvK9zPXXfdZdZFYmKiuR29vcpMnjzZXGbr1q0VztN5devWzdOgQQNPq1atPFdccYVn+/btQR9TKHbu3OnJzs72tG7d2tOwYUNPjx49PM8//3ylz1Xg/PU5uvfee8260+vr/Qe7vvr66689J554onmemzRp4rngggs8mzdvDmm+AABiODHc4/nkk088xxxzjKdp06bm8ffq1cszY8YMT3l5ebViuK5vfW7btm1r5pWSkmLWia6rYLexYcMGz/Dhw8360udNr/vDDz9Ue74A4EbEa+K1snsNWJYsWWJ7OZ23L12P+hdo27ZtnrFjx3qaN29unmud72effRZ0XvPnz/f07t3bk5SU5Gnfvr3nlltu8ezZsyekxwYA8YoYTgyvbgzPy8vznH322ea50fWkz9Phhx9e6fdzva7OJfCx9e3b13y/19eFfk8/77zzPGvXrg06L2I4AFSOGE4M18db2fPv+z2a7+GIFwn6T7ST7QDUnYEDB5oqZpoxDQAAnIMYDgBA7CNeAwDgTMRwAACciRgOuE/lDXcBAAAAAAAAAAAAAAAAAIgBJLoBAAAAAAAAAAAAAAAAAGIaiW4AAAAAAAAAAAAAAAAAgJgW1US3ZcuWydChQ6Vt27aSkJAgr7/+epXXycnJkcMOO0ySkpKkS5cu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54JWcgpsXfrpp59Knz59zA6wvn37ypdffhm0ferChQulZ8+e5nJHHXWUfP31136Xe+2110wFOV0fWmXu4Ycftm1dqrf5zDPPyBlnnCGNGzeWrl27ep9Lu/UIoO6OFg+sZFndypYAAAAAAKBm9Dcw/R1Nfx/UU34TAwDAWRITEyUrK0tGjhxpTnUMAEAs0hwWzTOZM2eOOdUxYgNbD3FMf/DRym2WxYsXy3fffScffPCBLFiwQPbu3SuDBw+WlJQUyc3NlRUrVsj+++9vKsNZ19OErFmzZpnEsOXLl8u2bdtk/vz5tverLVO1Veijjz4q69atk6eeesrcria+acKX0nlom1BtE6Q0ye0///mPzJgxQ7755huZMGGCXHjhheYDQ2mS2plnnilDhw6V1atXyyWXXCKTJk2q1nrQ9oT6OK3Wrn/++afMnTtXLr74Ytvr/fHHHzJkyBA55JBD5IsvvpDbb7/dtDYK5rrrrjPrSluQanU2naeuX6XX1WRCrSj31Vdfmdu59dZbzXq1c8cdd5jrrV27Vk455RSTmKfr3249Aqg7mgSsya1KT3UMAAAAAAAiRw9aHTVqlDkYV08DD2IFAAAAACAcNIdGCx/l5eWZUx0jNvBLQIRoNqe+0H1L79bVUQlacU2T2t577z25+uqrvcu1TadWCbNalmrLPp2nLtOqYEpbfGr1Nn2jnnjiiabKmLY+1SQzpYloeruV+f777+Xll182yXRaUU517ty5QpvTli1bmvuxKsDde++9smjRIunXr5/3OppYp0lyekTHk08+KQceeKC3EppWpNOksSlTplRrnWhS27XXXis333yzqRSnt9W7d2/b67z44otm/Wg1Ok1i0YpsGzduNNXyAk2ePFlOOOEE839NqGvfvr1JCNREtalTp5pSzJrcprQq3bfffisPPvig7VGnet75559v/q/rRxMHtcKcJiIGW48AItMWpTK0OgMAAAAAAAAAAACA+BPOTmFO1rBhQ78CW1a+UTRR0S2Osju1SptWTtPki5NPPlnOPfdcUz3M0qNHD78X3Zo1a+THH380Fd30evqnCVQlJSXy008/yY4dO0y1sCOPPNJ7HT1KUlt4VkarrdWrV88kp1WXzkGrrGmimDUP/dMKbzoPpZXhfOehrKS46jj11FNNhbZly5aZ6nRVVXOz7tNqR1rVffou13WoiXh6fet2BgwY4Hd5Hf/www+mNWxl9L59kxRTU1Nly5YtVc4bAAAAAAAAAAAAAAAANaOd9uzGbnFkQJ5O4DhmK7o1bdrUW/GrKtpaEdHJ7jz22GNN5TNNZmvbtm2F0v2aLOVLE78OP/xweeGFFyrclrbfrGm71FDpPNTChQulXbt2fuclJSVJOOi6GDlypKm89sknn1TZfjUWNGjQwG+s70H6PgMIFTEcAABnIoYDAOBMxHAAAJyJGA4AiFSnMCcbOHCgKXbl283SEYlu2r7S8vvvv8vdd98tgwcP9lax+uijj0w7S6s1I8Q8wVrNzXccaZrI1qVLl2pf/rDDDpO5c+ea9pdaLSyYNm3amMSwY445xoz37dsnX3zxhbluMFo1TpOxli5d6m1d6suqKOdbyeyQQw4xCW36xqisEtzBBx8sb775pt+yjz/+WEKhVdweeughU+lON1arovc5Z84cU+HOqupW2X3qcus53r59u2nhqte3bmfFihV+l9extjDVD4SaCLYeASAYYjgAINbpdww9+ObXX3+VVq1ayQUXXFDhoB03IoYDAOBMxHAAAJyJGA4A8LVx40bbsVskJiaG1NGxLlRr78GoUaO8/z/rrLPkzjvvlKuuusq77JprrpHHHntMFi1aJBMmTIjMTB3GymKMpazGQLoD6cEHH5TTTz/dPKft27eXgoICmTdvnlx//fVmnJ2dLffff7907dpVunXrJlOnTpWioqJKb7NTp07m9aJJZY8++qj06tXL3Ka23DznnHMkPT3dHA2hbVZPOeUUUwFOW6f+85//NK8dTZI7+uijTdtUTQbTBDy9vcsvv1wefvhhue666+SSSy4xyXazZs0K6fFqwtlvv/0mjRs3rtblR4wYITfffLNceumlcuONN8r69etNolwwuv6aN29udszpdQ444AAZNmyYOe/aa6+Vv//973LXXXeZJDvdENb3yxNPPCE1FWw9artXAAhEDAcAxLrnn3/efGdQus2t49GjR4vbEcMBAHAmYjgAAM5EDAcABLYq9S1u5dbWpbEoMdQraKb6SSedVGG5LtPADv+sRm2Xqac6jjWa8LVs2TKTiHfmmWeaRLCxY8eaCmZWhTdN0tLHoBt3esSCJqWdccYZtrer7VOHDx8uV155pUmO00SxXbt2mfO0Nekdd9whkyZNMklh1gaiJoHpERD33XefmYe+nrSVaUZGhjlf5/jaa6/J66+/bpLnZsyYIffee2/Ij1mT0arbXlUTx9566y356quvpE+fPiaBbcqUKUEvq8mAmhSorWA3b95srmdVXdPqdy+//LK89NJLcuihh8ptt91mNo5rs/OusvUIAHaI4QCAWLRp0ybbcSgCW4xUt+VIrCOGAwDgTMRwAACciRgOAKB1aeyqX5NEoTfeeMMkQPnSZXoeoqOq6maVnd+6dWuZPXt2pdfTlkFaqte3XG+gnJwcv7G2+dTKb/oXjCa0BZb11R1Qmiimf5UZMmSI+fM1ZswYsaMVIewEVqcL/HA66qijZPXq1baXUVqF7uuvv670fvTID/2r7jyD3UfgXIOtRwCwQwwHAMQirepsNw7FgAEDZPny5X7jeEAMBwBEG63Ga4YYDgCAMxHDAQAbNmywHSN6Qv41QqtIaetITW468sgjzbJPPvlE3n33XXn66acjMUcAABAGxHAAQLwnuh177LFmp3thYaGpCp2ZmSnxgBgOAIg2Wo3XDDEcAFAX9Ht0bm6u33fhWOw05STEcAAAFd3iKNFNf8DQ1pKPPvqozJs3zyzTsR41bwV6AAAQe4jhAIB4pz/kZ2VlSbwhhgMA4qnVuCU1NVWKi4v9xvGGGA4AqAvLli2TpUuXmv/n5eWZHfEDBw6M9rQcjRgOANCuhHZjRE+N6strANdS9YDb6RcFMncBOAkxHAAAZyKGAwDipQKrZdy4cfLkk0+aZDdNcrviiiskHhHDAQCRtmbNmgrjSCa6NWjQQPbu3es3jkfEcABwN62Smp+f7zeGgxLdfI+sq0o8HnkHAIBTEcMBAHAmYjgAIN4T3Ro2bCjZ2dkSb4jhAIC6VlJSYjsOt6OOOsq0SvUdxwNiOADAF61LHZ7o1qRJkyrL8OmTqpcpKysL19wAAEAtEcMBAHAmYjgAAM5EDAcAxPuOeK0WV69ePSksLDTVbTIzMyUeEMMBAL42bNhgO0aMJ7otWbIk8jMBAABhRwwHAMCZiOEAADgTMRwAUNf27dtnOw63xMREycrKknhDDAcA+KKim8MT3eJxYwUAADcghgMA4EzEcAAAnIkYDgCIhxbjbkQMBwD4CqzyWVXVT8RYolugoqIiefbZZ2XdunVm3L17d7n44oslLS0t3PMDAMQB/WKdm5vrV8pcj/pC3SOGAwDgTMRwAACciRgOAIg0/a3dt5Umv72HBzEcANxN92nn5+f7jREbQt7S+fzzz+XAAw+URx55RLZt22b+pk6dapatWrUqMrMEADjasmXLJCcnR/Ly8sypjqMh8Au+277wE8MBAHAmYjgAAM5EDAcA1IV69erZjhE6YjgAgNalsSvkPfwTJkyQ0047TdavXy/z5s0zf5rFOGTIEBk/fnxkZomw6tSpk0ybNk3iRbgfz+jRo2XYsGG2lxk4cGDYX++333679O7dO6y3CcSKNWvW2I7rSocOHWzH8Y4YDgCAMxHDAQBwJmI4AKAu0Fot/IjhAICNGzfajuGwim433HCD1K//V9dT/f/1119vzkP0bNiwwZTMbdu2rTRs2FDS09MlOztbfv/9d3EzTSDTjfqTTjqpwnkPPvigOU8T1yzTp0+XWbNm1fEsRf75z3/K4sWLXZ20iPhVUlJiO64rF154oXnfNGrUyJzq2E2I4QAAOBMxHAAAZyKGAwDqwr59+2zHCB0xHADg9gIqcZXolpqaKoWFhUGTrFJSUsI1L4RI2wH27dtXfvjhB/nvf/8rP/74o8yYMcMkTvXr18+U1I2WsrIyKS8vl2hq06aNLFmypEKW7XPPPVehl3JaWpo0adKkjmcosv/++0vz5s3r/H4Re/K35UtOXo7kb/+r57fTxUppV/0iOmrUKPNlVE99v6S6ATEcAODWbRGnI4YDACzEaWchhgMA6kLgPri62CcX79skxHAAQKzs30YYEt3OPfdcGTt2rMydO9cEc/176aWX5JJLLpHzzz8/1JuLa3W5kTdu3DhTxe3999+XrKwsk7x18skny6JFi2TTpk1y8803+11+586d5vnab7/9pF27dvL444/7vUG1CpreRlJSkqkQd80113jPLy0tNdXH9Hp6/SOPPFJycnK852s1NE0Ue/PNN+WQQw4xt/HMM89IcnKyFBUV+c1DK84dd9xx3vHy5cslMzPTVFvSjFi93127dnnP37JliwwdOtScn5GRIS+88EK11k/Lli3lxBNPlNmzZ3uXrVy5Un777Tc59dRTbVuX6v1fdNFFJhFNE+YefvjhCrevlaHuuuuuStep0g3i008/3dyObiCfc8458uuvv1bautSax0MPPWTuV5Pg9Hneu3evOV+r0BUUFJjyyVqVjlLUzle0u0hGvzpaBj03SMbOGyuDnh1kxjtKdkR7aogTxHAA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wouKiqq8za5du8x0qVXRkeWVy5VHsHfp0iX4c0lJiWzcuFFOOeWUsH20XPl2ocdOT083xwndR9d713XldRpWfRw6hW7lvtGpb3X0fegxtQ/Xr18vtujo7v/+97/BKX61f3X0eFXfjjgQnaI1dI10Hfn9v//9L2wffcyVf6c68jz0d9qxY0ezTUelax+cfvrpZqrWCy64QKZNm2amXg2l0xSnpaVVeb/a59r/oVML63SuOj1u5d9ZgNZXnoq48nNF6dSxaufOnTXoHQAgw8lwMpwMB+BWZDgZToaT4QDciQwnw8lwMhyAO5HhZDgZToYjttJjfHwgjAalBrKueV1bOmWortUdWKc6QNf4PuKII2p0DJ0+85ZbbjHrjGt4atgMGDAguF2nadX70alNc3JyzPrd+uIYuqZ2qNTU1P1OXCpPpamhdvXVV5t1yCvTNderomtfVw6CaNQm4A5E17G+8cYbzZSv2icahn/961/lgw8+kHg79NBDzTSyOvWqPh/+9a9/melQa0PXNw+lz1M96YrUn/o71fufOHHifsfTgNbAfuutt2TZsmWycOFCefTRR+X22283fRV4/tbkfmM1bbLSkzMAqAkynAy3iQyvPTIcQLTIcDLcJjK89shwANEiw8lwm8jw2iPDAUSLDCfDbSLDa48M9y5mdENcNWvWzIza1hHQO3bs2G+7rvF8IBq2GqT9+/evdTt0Te28vDyzfrVeevfubUIiQNec1gDWtZ91hLEG+5YtW6o9XuDFUdegDtBR9KF+85vfmDW89eSj8kXXua6KrnW9adOmKsM9MGo7tFzV2uUBOgq/ZcuW5rGF0nLl0f6hx967d6+sWLEieGzdv0ePHnLttdea9mn7Q9d3Dx3drSdNocfUEd56AhatQP+Ul5fvt+2KK64w317QUfSHH374fiP0K9Mgreo4taG/U13PXke/V/6dBk4CNKi1Tboeu67xro9l7ty5NTq+9rn2f+hJk55wrl69utpvaOhtKp9kVX6uqM8++8z0hT6/AaAmyHAynAwnwwG4ExlOhpPhZDgAdyLDyXAynAwH4E5kOBlOhpPhiC0GuiHuNNT1hbVr167y8ssvyzfffGOml/z73/++35SS27dvN8GmI8yXLFkiV111ldx3330yfvz4Go9Wr45OzaqjsV988cWwaVoDI+1nzpxp2qUvkro9MLVlVbQtGljjxo0zj2f+/PlmhHcoHTGvI5lHjBhhQl/3e/XVV025OhqcOoq9chgrbffTTz8tX3/9tYwdO1aWL18e8VjqpptuMqOtNQg1HMaMGWPaMnLkyP1+Rxo++k2D4cOHmxOLyy+/PNg3H330kbz55pvmvu+880758MMP97svHe0/dOhQczLzxhtvmDZq+wKj/aOhJ13a/wsWLDDT6G7bti24TU8U9aRFnxdDhgw54LE0hBctWlTtCVM0tG90JLh+I0L7QE9wtF+0Hfoc1+fO/fffb/pLp7KdM2eO+fZFpBOwUNrX5557rpk2eOnSpeZk6ZJLLpFWrVqZ+qro71KfFzqqP/Dc0JOPygoKCiQ3Nzfi8xoAKiPDyfBokeFkOIDkQIaT4dEiw8lwAMmBDCfDo0WGk+EAkgMZToZHiwwnwxEFB0iAjRs3OsOHD3dycnKcjIwMp1WrVk6/fv2cd999N7iPbtOnqF50n7Zt2zoXXnih884774Qdq6ioyOyzatWqqNqwdetWJzMz02nQoIGzffv2sG0rV650unTp4mRlZTlHHnmk8+KLL5r2PPLII8F99D7nzp0bLC9dutTp1KmTuU1ubq65je6j7QtYvny507t3b6dhw4bOQQcd5Bx//PHO+PHjI7bz5ptvdv785z+H1elxp0yZYo6lj6Fdu3bO888/f8A+KS8vd8aNG2f6u169ek7nzp2df/3rX/vdbtasWU7Xrl1Nv//6178O6/PS0lLnsssuc7Kzs50mTZo411xzjTNmzBhzrIDBgwc75557rnPXXXc5v/rVr8zjvfLKK81tA/Ly8pyRI0cGywfq32nTpjlt2rRxUlNTzW1D3XnnnU5aWpp5Xh3Ia6+95hxxxBFOenq6uU81duzYsPYrbUtge1XtDfj666+dP/7xj6Yv6tev73Ts2NEZNWqUU1FR4XzxxRdOnz59nEMOOcT8no466ijn0Ucf3a+fQul9hD6+n376yRk0aJDpbz2+Hk/vM2D69OlmWyh9Th188MGm3/U+9DlU+fEdffTRznPPPXfA/gKAyshwMpwMJ8MBuBMZToaT4WQ4AHciw8lwMpwMB+BOZDgZToaT4YiNFP1fNAPjAMSXjrTW6TR1/XRdHz0w/aeOMK/LdLVeoiPldWT4a6+9luimuIKu3X7DDTfIf/7zH0lPT090cwDAs8jwAyPDo0OGA0B8kOEHRoZHhwwHgPggww+MDI8OGQ4A8UGGHxgZHh0y3Nv4jQJJ7rDDDpOnnnrKTPUZCHb8Qqds/fTTT2XWrFmEehR27NhhpnIl1AEgtsjw6pHhtUOGA0B8kOHVI8NrhwwHgPggw6tHhtcOGQ4A8UGGV48Mrx0y3Nv4rQIuwEj1qum63LoW+7Bhw6R3796Jbo5rnH/++YluAgD4BhleNTK8dshwAIgfMrxqZHjtkOEAED9keNXI8NohwwEgfsjwqpHhtUOGextLlwIAAAAAAAAAAAAAAAAAklpqohsAAAAAAAAAAAAAAAAAAEAkDHQDAAAAAAAAAAAAAAAAACQ1BroBAAAAAAAAAAAAAAAAAJIaA90AAAAAAAAAAAAAAAAAAEmNgW4AAAAAAAAAAAAAAAAAgKTGQDcAAAAAAAAAAAAAAAAAQFJjoBsAAAAAAAAAAAAAAAAAIKkx0A0AAAAAAAAAAAAAAAAAkNQY6AYAAAAAAAAAAAAAAAAAkGT2/xiMRxTgpEtEAAAAAElFTkSuQmCC",
+ "image/png": "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ZHFNctNkr9dee818b/RPn0Pge6C/9Zpgt++++0r37t3Nd09brH///fdRPzdtZ3raaaeZx9KkR42TmpT422+/mWQ7bUGqiVz6uazv91afvyaJaWKa/kbob6QmiOlvliaDaoVa/fwGPudYv7d6/fnz55vPmP6m+n63fJ9TbXS5Na7qb7h+LjRG6eda13v0fdXnqEmZ+j7pfOt3XpddE/YCHytev+kAAAAAAIfzAAAAAADSTn5+vkc3CcePHx+z2y1YsMDToEEDM/+ll17yTh8wYICZNmbMmLD3rfP1enp9X59//rmZHskm7PLly73XnTZtmne6y+XyTtf/h1NdXe1p3Lixue4LL7zgiZR1/02aNPFMnz7db979999v5uXm5nrWrFnjN896ffR5+rrhhhvM9N13391vmbdt2+YZOXKkmVdYWOipqqoK+h6Fep56G51fVlZWY54u27x58yJ+ztbrqo8ZTF2fg/Va5uTkeL788ktPNP7880/vaxDsuXzwwQdmXo8ePfymf/zxx56MjAzPbrvt5pkxY4bfvIULF3o6duxobldaWhrR+xeN2t4zffyGDRua5XvllVf85n344Yfez+unn34a9WO/++67ng0bNgSdro+56667ev7444+g31X9O+usszxbt26tcfsRI0Z4rzN69GjzvQpkfbcDv/M333yzmX7RRRcFXeYTTzzRzH/88ce903bs2OHp16+fma6frcrKSu+87du3e6655hoz77DDDovwlfH/7dljjz08brfbO2/Lli2eoUOHmnkHH3xwTF5X/V3V+9PXLhTrdQ38Da7r59f67DVq1Mh8N4Itj/5uBS5rqOWwnHvuuWb+XXfdVWOe3lfgMtbnO/LRRx+ZednZ2TW+A/obbj2/7777Luh3V/+efPJJT7T0dc3KyjKP+8477/jNW7Jkiad79+7mvl9++WW/eXPnzvV8++23Ne5vxYoVnp49e5rbvPnmm37zfv/9d0+nTp3MvLPPPtuzadMmv/kVFRWezz77LCbvbTi+3+tLL73UfLcs+vq2atXKzHvmmWei/s246aabzPyDDjrIs3jxYr95b731liczM9PTokULT3l5uXf6qlWrPM2bNze3e/jhh/1uo+sA+t6EWn8I9Zm6+uqrzfSCggLP/Pnz/ebp74zer77esfjePv3002a6fm//+9//+j2O9Zrl5eV51q5dG/f31nq8cOtqoeKd7+dCv/O6/JbHHnvMTNffIH3/AmPYqFGjzPxBgwb5TY/HbzoAAAAAIDWQ6AYAAAAAacg6SFrbn+8BZd/b+R6s1QO+U6dONclMOq99+/bmoHwyEt304Ll13UmTJtUp0U21bdvWXHfcuHGeSFn3rwdtg+nTp4+Zf/fdd9d64FiTaHbZZRcz/f33369xX5s3b/a0adPGzH/ttdeiSppq2rSpOQAeC+ES3erzHKzX8o477qjTclmJhXpwPNDgwYPNvGeffdZvuiZX6PS333476H1q4onO1+SmRCe6WUmBJ510UtD5l19+uZl/5JFHemLp9NNPN/er3+9g39WWLVv6JXwES3z429/+ZpIPgwmV6PbLL794EzX0c+RLEz40uUMTjNavX18j2alXr15+yTcWTbTbd999zXWCJRmFWz79e++994Imhur3SefPmjXLU9/XtT4JM3X9/FqfPU3uCaZr165m/syZMyNaDssxxxwTMtk01t+RI444IuxzGDJkiJl/wQUXBP3uHn744XVaplNPPdXc/sEHHww6XxPadP7+++8f8X1+8skn5jYnn3yy3/RHH33U+/kO9X0KVNf3NhzrfW/Xrl2N76bS5FOdv+eee0b1m6HfZU0S18Q0TVgPRhPrAhNcNakqVLKpKi4ujirRTb/TVuLwf/7zH08k6vO9tdabNBkskCZ6aUJ2sPWGeLy3sUh0O/DAA/2S3JT+Huv7HuxzrX777TczT193TYKP5286AAAAACA1NEh2RTkAAAAAQPJo6zBtWRXqT9uLBaMt57Qtmf7l5eWZdmraxk5bd2krP21lmQzass9SW4vLSO6nLvehr1sw2t5OaZut2mjLVG0Lqq26jjvuuBrzmzZtalqrKW33FQ1tw6at9XR5vvnmG7/XLJZi8Rx826FGQ1vW6f2//vrrpqWe5ZdffjFtAfUzqy1qLdqSTlvxNWnSJOiyKm1ZabXiTDTrM6Mt7oIZOXKkuSwrKzPt+6Kl7eG0Neo111xjXjt9HP2z2v79+OOPQW+nbR61hWI4J5xwgmlZGQ39HdEWfvo5fffdd/3maQtDbS2obYH1s2WZOnWqudTWltoeL5C2ILRa8kb7Hurn5fjjj68xXVsMWi0Fg32v6/q6RisWn99Qt9t7773NpbbLjPZ3Rml7S21PrK0940HbXWrbyEi+H7H8ndHfTW2hq7SNZTB9+vQxbVb/+9//1nj+2tb5gw8+MK1ktc2txlRd/meffTboZ0NbJFvPJdrvU6zfW6XtJ7Uddaj4py1K9fMf6W+Gvjfa1ljXSbRdaaSfYet7py1Po4nHoehyaKtibZuqf/GkbXx1vSnUcur6h9XeN9RnNx7vbX1o69zA9Sb9PdY2vUpb+wbaddddzW+5vu7r169PyG86AAAAAMDZam4lAgAAAADShpV8ES09GL3HHnuY/2synCZ8HHzwwSbpI/CApHXQ869CXaFZ8+uToKYJHxbfJJhoaKJQRUVFne/DOqAbaroe3K6NdXA61H1ZyUC+143UU089JUOGDJGJEyeav+bNm8sBBxwghx9+uAwfPlw6d+4ssRCL51BQUFCnx27RooV5Lpo08uKLL8q1117rfe76OdPkAU2Es7hcLjNdEy2ysrLC3ve6deuiWpZg36/ddttNHnzwwZi9ltbrqMk0miig30f9LljP21fXrl1l9OjR3vHYsWPl7rvvNsljoVRWVtb5/anre3jeeefJzJkzZfz48XL66ad7p+tYWQkglsWLF5vLW2+91fzF8j3U5xDqdynU97o+r2u0YvH5DfW9z8nJMZfRJqpdd9118sUXX8i0adNMXGjUqJH07NnTJKZogqv+5sSCft6tZavt+xHL3xl9XOv969SpU0TXtxK45syZY5Ljli5dGvFnw+12e7+/0Yr1exvutdZ4oolL+nz1O9G+ffuIXmvr+zt9+vRa1wF8P8PW9662uBup+rzO0bI+j/p6We9FtJ/deLy39RFqeTThM9x8/dxs2LDBb3nj+ZsOAAAAAHA2Et0AAAAAAHFNkLOqu23evDns9bT6l+8B0bqYN2+e9//du3ev03189913prJIfe4jnNoS/uJNK71otSCtbPbvf//bVELRSmD6/zvuuMMkhvlWO0smrVBVV1deeaVJdHv66afl6quvNgfQNUlKkyguu+wyv+taVe30s6fVY2Lp5ZdfrjEtPz8/qkS3utDvU7DHHjBggDfRbfLkyXL77beb5/3EE0+YZEdNTNHXXV+nm266Se69996Qn9lI3p+6vocnn3yyXHHFFSbxRZNZOnbsaL7fCxcuNAlDRx11VND3sH///t7kkFC6desmseb7GtX3dY1WLD6/Wh0pljSR9LPPPpOvv/7aVCPT3xn900qPDz/8sFx66aXy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8NhjjzVJR2+//bZpYay/K5pspi0A9XuoiTn6OxJN5btDDjnEJDHpe6HfbX1tvvjiC/Pboe93YNWour6uej2tzqbJTNraUt93/X7q4+pnIZy6fn7rk8Cs329NLtLfOP1d1/dAH1v/NGlLEwE1kVXb7WrVSF0OTajVxGJ9HfV6saDJq/q7r4lBWmVNkw71fdeEKP1t199eTYbp1q2bxJK+R5p4qp8n/dNl0JbJ+vupldv086bJkaeeeqpJxFa9e/c2CTz/+te/zP81qVrbDWtCkyYG3nTTTSZxO5DGLE3y0uRd/b3RmKrPU6cvW7bMfGY04TJRbU01Tur6g1ZSPeigg0zCkf6G6XdNW19byWLRuO+++2TVqlWmcqO2/9bvr35/9Luqr6O+RhqztRW1/v4p/b48//zz5rdTExl1mfTztmLFCvNZ0++i/l5G4/777zetWfX11mXQ56efY11f0SQwvW+dr9+t+n5vdX1Bf8O1Ep5WQdUKdfqbop9b/Txoe1x9PWIVk8PRSovaslx/R62EYv3u6OdMf4cTLZ6/6QAAAAAAh/MAAAAAANJOfn6+9oGq9a+4uDjo7caPHx/1Y5aXl3vuuecez8EHH+zJy8vzZGZmelq0aOE55JBDzHSdH8znn39eY7n0tnofe+yxh+ekk07yPPLII561a9eGfGyXy1XjPho0aODJycnxFBQUeIYMGeK5++67PW6321NX1v2qp59+2tOrVy9PkyZNzGMcffTRnlmzZgW93YABA8zt9HkG2r59u+epp54yr1nz5s09jRs39uy+++6eK664wrN8+fKg91ddXe259957Pd26dfNkZ2d7l0vvX+/vmWee8Zx++umerl27enJzc80y6n0OHTrUM3369Kies/W66ucilLo8B9/Xsr4WLVpk7qtp06YhP2O+vv32W8+FF17o2XPPPc3rp7fr0qWLZ/DgwZ7HHnvMs2LFihq3ef755z377befua617NF8R8K9Z77mzJnjGTZsmKdt27aehg0benbddVfPscce6/n00089daXv4Zlnnunp3LmzJysry7yXF198sWf16tWeMWPGmOXQS1+hpvsaMWJEra+D9d3W70AoK1euNN93vV6zZs08mzZtCvt8tm7daj7jhx12mHl99HVq3bq1+T5edtllnk8++STs7UMt3++//+657rrrPIWFheYz3KZNG88555zjWbp0acxeV+vzd/zxx3tatWplfqMCX5/aXtdoP7/Wb7oubzDhHu/dd9/19OvXz3yvMzIy/J7TlClTPJdccomnd+/e5rnoa9axY0fPwIEDPS+//LJn27ZtnmjUtpzqo48+8hxzzDHe912/JyeffLLnq6++ivq3Nxq6TFdddZVn3333NZ9Rfd11efW53nfffZ5ffvnF7/r63B944AFP9+7dzfvTsmVLz1FHHWW+x7X9pq5bt85zyy23mNvqY+nvt76/p556qufjjz+O2Xsbiu9t5s2b5znuuOPM662fcf39evjhh81vfqBIfjMsH374oYnrHTp08DRq1MjE+r333ttz2mmneV5//XXP5s2ba9ymrKzMfMY13uprqp+7Z599Nmw8Cff67NixwzyWvi/6/HQ59PNUVFRk3rstW7bE9Hurj6WfF32u+lidOnUyvy//+9//gl4/Hu+tmjlzpmfQoEFm3cx6HnpftX1nanu82r5r4Z5PLH/TAQAAAACpIUP/SXayHQAAAAAATmdVCmMz2160ypJWSLrwwgu9LT6BSGi1S61CqFWWwlW+BNKFVs7S6lpaVc6qsAoAAAAAAJBIDRL6aAAAAAAAAAmibfC05ae2QLPalwIAAAAAAAAAnKlhshcAAAAAAAAglkaPHi0rVqyQadOmSUVFhVx88cWy9957J3uxAAAAAAAAAAD1QKIbAAAAAABIKW+88YYsXbpU2rZtayq53XfffcleJAAAAAAAAABAPWV4PB5Pfe8EAAAAAAAAAAAAAAAAAIB4aRC3ewYAAAAAAAAAAAAAAAAAIAZIdAMAAAAAAAAAAAAAAAAA2BqJbgAAAAAAAAAAAAAAAAAAWyPRDQAAAAAAAAAAAAAAAABgayS6AQAAAAAAAAAAAAAAAABsjUQ3AAAAAAAAAAAAAAAAAICtkegGAAAAAAAAAAAAAAAAALA1Et0AAAAAAAAAAAAAAAAAALZGohsAAAAAAAAAAAAAAAAAwNZIdAMAAAAAAAAAAAAAAAAA2BqJbgAAAAAAAAAAAAAAAAAAWyPRDQAAAAAAAAAAAAAAAABgayS6AQAAAAAAAAAAAAAAAABsjUQ3AAAAAAAAAAAAAAAAAICtkegGIKglS5ZIRkaGTJgwISGPN3HiROnatas0atRI8vLyEvKYAACkImI4AAD2R7wGAMCZiOEAADgTMRxIHSS6Ie1o8NIgFupvzpw53uv6Tm/QoIG0b99ejjrqKCktLfW7T51/+eWXB328t99+28z3vc0555zjd9+77LKLdOnSRYYNGybvvPOO7Nixo8b9DBw40G9ZcnJyZK+99pLhw4fLZ599JnYye/Zsuf3226WioiKi6//vf/8zr8nuu+8uzz//vDz33HOSCNOmTZPDDz9ccnNzpXnz5rL//vvLpEmTIrqtvkf333+/FBYWSnZ2tvTo0UP++c9/Br3uokWL5Oijjzbvc8uWLc17tm7duhg/GwBIfcTw+HNCDNfXrH///tK0aVNp0aKFee11J0UkVq5cKWeddZZ5/TX26w6GAw88UF5++WXxeDw1rr9ixQo55ZRTzPX0ffvHP/4hixcvjsOzAoDUQbyOP7vH61WrVsno0aPlsMMOM/E28P2x/PHHH/Lkk0+a97xdu3bmur1795ann35aqqurI348fR0uvPBCadWqlTRr1sw87rx584Je9/3335f99tvPbMd37txZxowZI3/++We9ni8ApApiePylSgwPfN19/3Q/eCTeffddGTx4sPnsZGVlSceOHc37/N133wW9PjEcAEIjhsef3WP49OnT5bzzzpO//e1vZr+5vvbnn3++ie2+2A5HqmiY7AUAkuWOO+4wSUqB9thjD7/xkUceKWeffbY5+OlyueSpp54yyVFTp06Vv//973V+fN14e+GFF8z/t2zZIm63Wz744AMT8DWw/+tf/zIB3Zdu7N17773m/5s3b5ZffvlFJk+eLK+++qo5CKuXmhVuh2A/duxYE8AjyVDXFSFdwSkpKanx+sfL+PHjZeTIkeb9veeeeyQzM1N+/PFHWbZsWUS3v/nmm+W+++6TCy64QA444ADzfp1xxhlmZey0007zXm/58uVy6KGHmmQ6fZzff/9dHnzwQfn2229l7ty50rhx4zg+SwBITcTw9I3hU6ZMMclmumGscbiystI8tia+/fe//zUb1uH89ttvJjbre6Ub1du3bzc7TfT56nqAxmqLxmzdQN+4caPcdNNN5v155JFHZMCAATJ//nzZdddd4/58AcDJiNfpG681po4bN0723HNP6d69u3z55ZdBr6fJ41dccYUcccQRcvXVV5v345NPPpFLL73UHIjRRPTa6PM69thjZcGCBXLdddfJbrvtZj5D+h5/8803ZhksH330kZxwwglm3uOPP262y++66y5Zu3at2akPAPgLMTx+UiWGB3vdLZowEQmNw3ryWnFxsYnfq1evlpdeesmcjKaP27NnT+91ieEAEBliePrG8BtuuEE2bNggJ598sonjur39xBNPmP3pui+7bdu25npshyNleIA0M378eC3X4fn6669rva5e77LLLvObtnDhQjP9qKOOCns9y1tvvWXmf/75595pI0aM8DRr1izo9e+9915z/VNOOcVv+oABAzzdunWrcf0///zTc+mll5rbXH/99Z5Ycblc5j719YrWAw88YG6r9xGJsWPHmuuvW7fOEyubN28OOU+Xq0mTJp4rr7yyTve9fPlyT6NGjfze8x07dniKioo8HTt2NO+J5ZJLLjGP5Xa7vdM+++wz83yfffbZOj0+AKQrYnhkUjmG77PPPp499tjDU1VV5Z02f/58T4MGDTxXX311nR9zyJAh5n31jeHjxo0zz23u3LneaYsWLfJkZmZ6brzxxjo/FgCkOuJ1ZFI5XldWVnrWr18f8v2x6PJ89913Naafe+655jY///xzrcsxadIkc119HMvatWs9eXl5ntNPP73GekTPnj0927dv9067+eabPRkZGSbGA0C6I4ZHhhge/nWvj9WrV3saNmzoueiii/ymE8MBIDxieGRSOYbPmDHDU11dXWOaLoPGTAvb4UgVtC4FoqRnMmlmsma4x4OWBtdyoW+99Zb89NNPtV5fK5E99thjss8++5jMbK06Eo5mTO+7774mo7pv377SpEkTk93/zDPPRLR8//73v6WoqMiUIdWMda2qoq05LVq2VbO3ld6vVXI2VEuxgoICU6JUaRUWva7eh0UzwLt162bOAtCzwS677LIaZWF9n5NWT9OSrFp5JRR9rlp+Vc9ssCq2BGtXprSkq5aX1YovFj3jQMea3W7R5b7kkktMlRjfM920HO+QIUNM1RjLoEGDTOnYN998M+QyAgBijxju7BiuZ6T98MMPcuKJJ/pVRNWzvPfee2954403ao3hoehz0bLt27Zt8yvBr1Vb9c/StWtXc7YbMRwA4od47ex4rbT1ScuWLWt9rvo+62MH0livfJ+3+vXXX82fL43Xbdq0kZNOOsk7TZ+nnvmv2+5VVVVmmq5D6J+2VmnYcGeDC92u1/0Bej8AgPohhqdPDPelrcd0/3o4um2+dOnSWu+rdevWZhl9nwcxHADi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KioySW76GpaWlspBBx0UcUW3QNZOm40bN5pLTZrr3r170Biu8V7PsIvm7EMAQP0Qr50ZryP1r3/9S84//3w56aSTTKudaOh29bx582THjh014rW+X9YZ/Nb2d2Bs1/dq+fLlbJ8DQJwQw1M7hgfS9qOR7F+vbfvc2jZXxHAASA5iuPNi+Pr1602Sm1ZQ02p0VqJZMGyHw+lIdANiQEt5zpkzx/T49lVRUWHOPtIf6rZt20Z0X9qG69NPP5VTTz1V9txzz4gC/ZVXXmmSrvQyJyen1tv8+eef8uyzz/oFUB3rBqiVBBZIg6E+j5dfftk8L99sel1e33KmVtD3vV609EwCrdry2GOPmcppFu0Zrxu6xx57bJ3vW19b674sGozHjx9vKrj4vgaaUa4rM9u3b/cr6duoUSN56qmnvNN0GbVlmia39e3b1zt96NChMmXKFJNBb5k+fbpZuTr55JPr/BwAALFBDHdWDA9Gz/LWeK0tUnwFi+Hr1q0Leh+6bLqzYr/99vOr8vb111/7bYjrToh///vfxHAASDDitfPjdShaTVXblB166KHmvdRk81B+/fVX8+dL4/WaNWtk8uTJ3mna5vytt96S4447zltFXVvxdO3aVZ577jnznlqefvppsw6g9wMAiD1ieGrG8MrKyhptyHRZ7rrrLvN/rZTuS7fNly5d6jdt7dq1Ne5XW8vpvnPftnvEcABIDmK4s2K4Jvnp8mqRF63kFu51ZjscqYDWpUhbH330kdnACqRJSlqlIxqjR482P94aEC666CLzo63ZyFryUw+yagJVsID76quvevtQa9/t999/XxYuXCiHHXaY+dEPpEHOuo1WFPvll19MENEAowFJ+2dHQkuGjhs3zmw4alb1pEmTZP78+eYxNYErXJ/uv//973LIIYfIyJEjzdlVjz/+uCl/evvtt3uvZ60w3HzzzWa59D41sEXTw1xXPG688UYZO3asHH300XL88cebg8uaXHbAAQfIWWedJXWliWpHHHGE3HvvvSbw9uzZU9577z354osvzEqPbztRXQZdwdFMeivjX0v6jho1yrweevBcl0dvX1ZWZlYIMjMzvbe/6aabzGdD39Pi4mLTT15vp1Vizj333Do/BwBIZ8Tw9I3h+hq+88475v3S6m3Tpk2TN99805x9psnlvoLFcG15OmvWLLNcnTt3Nu1U9P40oe2KK67wK4N/6aWXmnamuoPh2muvNa/Fww8/bKrJBSbVAQBqIl6nb7xW1oHu77//3nv2vm5zK6slir4n+rjWDm59j3316NHD/Fl0O17p62rR2x188MFm+/qHH34wZ9zrc9Cd6PrcAl9ffTw9w11fNz148cQTT5j1iL333rtezxcAUgkxnBheWwzXKi6nn366+dPtaH2+7777rtnevvDCC/1OIlMaZwcMGGCqsVt0/7jGdk0w0JalP//8sznQr/vbNSHCFzEcACJDDE/fGH7mmWeabmLnnXeeSRD07Uqm+9FPOOEE83+2w5EyPECaGT9+vKZIh/zT+RYdX3bZZRHd7/Llyz3nn3++p0OHDp6GDRt6WrZs6RkyZIhnzpw5Na47YsQIv8ds2rSpp6CgwDN06FDP22+/7amurq5xmwEDBvjdZpdddvHsueeenrPOOsvz6aefRvz89X66devm+c9//uM55JBDPNnZ2Z78/HzPE0884Xc9l8tV4/VQ06ZN8/Tr18/TpEkTT05Ojue4447z/PDDDzUe58477zSvRYMGDcz96P2FMmbMGHOddevW1Ziny9W1a1dPo0aNPG3atPFccsklnvLy8qDPKRqbNm3yFBcXe9q2betp3Lixp3v37p5XX3015HsVuPz6Ht1zzz3mtdPb6+MHu7367rvvPEcddZR5n/Py8jxnnnmmZ/Xq1VEtLwCAGE4M93i++uorz6GHHupp0aKFef49e/b0PPPMM54dO3ZEFMP19db3tn379ma5mjdvbl4Tfa2C3ceyZcs8w4YNM6+Xvm96259//jni5QWAdES8Jl6rcJ8By+effx72errcvvR11L9AGzZs8IwcOdKz6667mvdal/frr78Oulzvvvuup1evXp6srCxPx44dPbfccotn27ZtUT03AEhVxHBieKQxfPHixZ6TTz7ZvDf6Oun7tP/++4fcPtfb6rIEPrc+ffqY7Xv9XOh2+mmnneZZuHBh0OUihgNAaMRwYrg+31Dvv+92NNvhSBUZ+k+yk+0AJM7AgQNNFTPNmAYAAM5BDAcAwP6I1wAAOBMxHAAAZyKGA+kndMNdAAAAAAAAAAAAAAAAAABsgEQ3AAAAAAAAAAAAAAAAAICtkegGAAAAAAAAAAAAAAAAALC1pCa6zZw5U4477jhp3769ZGRkyHvvvVfrbUpLS2W//faTrKws2WOPPWTChAkJWVYgVeh3iB7lAOqLGA4kHjEcQCwQw4H4Il4DiBdiOBBfxHAA8UIMB+KLGA6kn6Qmum3evFl69uwpTz75ZETXd7lccuyxx8phhx0m8+fPl1GjRsn5558vn3zySdyXFQAA7EQMBwDAmYjhAAA4EzEcAABnIoYDABBbGR6PxyM2oBns7777rpxwwgkhr3PDDTfI1KlT/TJyTzvtNKmoqJCPP/44QUsKAAB8EcMBAHAmYjgAAM5EDAcAwJmI4QAA1F9DcZAvv/xSBg0a5Ddt8ODBJpM9lKqqKvNn2bFjh2zYsEF23XVXszIBAEAyaJ75pk2bTLnyBg2SWmA1IYjhAIBUQQwnhgMAnIkYTgwHADgTMZwYDgBwJk+cYrijEt1Wr14tbdq08Zum48rKStmyZYs0adKkxm3uvfdeGTt2bAKXEgCAyC1btkw6duwoqY4YDgBINcRwYjgAwJmI4cRwAIAzEcOJ4QAAZ4p1DHdUoltd3HjjjXL11Vd7xxs3bpTOnTubFzInJyepywYAqL8lG5bIP179R8j5/xr+LyloUSDJtHXrVnnkkUf8punZVTqtefPmSVsuuyOGAwCSvR5x7B/HSnOPf6wmhteOGA4ASPY2/Pr16+W5557zm0YMrx0xHACQTD+t/klOfvPkGtN3bN0hS+9eSgwPgxgOAM7nhGPeoY6DP/300+YyULy2wx2V6Na2bVtZs2aN3zQda4AOlr2usrKyzF8gvQ2BHQCcr0dODxnQdYDMds+Wak+1d3pmRqb0ze8rPfJ7JGW5NJiXlJR4g3p2dnbQ66VL2XBiOADAaesRbba3kVZZrULelhhODAcA2G8bXrfBH3roIfnzzz/ZDieGAwAcZNu2bTL1n1OlY1ZHWZW5SjwZHu+8DM9fsZsYTgwHgFRm12PekRZ7CbUNHo8Y7qhG5occcohMnz7db9pnn31mpgMA0lfJkBIT4H3pWKcnw44dO+TBBx8MmrmerojhAAAnrUe029FOiqqKkrZMdkIMBwA4ZRtet8HHjRtnktxADAcAOCvJ7b777jP/123xdtXt/Oa3qfZv45nqiOEAkL7sdszbotvZL7/8stx///3m0tru1qIvyZDUim6///67/PLLL96xy+WS+fPnS8uWLU05VS2zumLFCnnllVfM/IsvvlieeOIJuf766+W8886Tf//73/Lmm2/K1KlTk/gsAADJlpudKxOGTRBXuUvc5W7Jb5EvhS0Kk7IsGtgff/xxqa7emWmfiojhAIBUWo947KjHZOyjY2VTg03SfEdzyfGk7tnOxHAAQKptw+vBcd0O1xiXyojhAIBUZCWqW7IkSwZVDZLKbZXebfTGVY1ljswRpyKGAwCceMzbKu5SVlYmc+bM8RZ4WbJkibz66qtyzjnn1Fr0JV7VWDM8Hs/O2q8JVlpaKocddliN6SNGjJAJEyaYF0ZfJL2e722uuuoq+eGHH6Rjx45y6623mutFqrKyUnJzc01vckq1AgBi7aWXXpJly5bVej2NdYWFhY6NR8RwAEAqGTt2bETX053PuvHu5HhEDAcApAprh7v+RXKy2UUXXSTt2rVzbDwihgMAUil+L168WFauXFlrJVZtx6nJXm3atHFsPCKGAwCcqrS0VGbMmBE0ge22224zyeqByW4FBQXmr6ioyCR7xyMeJTXRLRkiDey6c2T79u0JXTYg1ho1aiSZmZnJXgxAXBtc4q5IftZ5PGkQ1/Ks4TLXtTd5cXGxuWRDM3q8ZgCAeCa6VWZU1lrRbcyYMcSjOuA1A4D0Fa/9AVY1dY0xtdEYdOmllzo+WT0ZiOEAgFibNm2azJo1q8b0YNvk11xzjeyyyy7EozrgNQMAxIIe+66oqKgxvUGDBiYJ2/f4uO9x8HjHo6S2LrUjzftbvXp10DcLcKK8vDxp27Zt3MpCAuFUbKmQUVNHSdmSMu+0ooIi00dcS6+mS4Kb70Y5AACwl99+/02mZU2TlQ1Xeqe1/7O9TBwxUV576TVzIL1hw4bmTGoAAJD8/QHaqvT++++vtYqb7gu79tprpWnTpmZc23Y7AACIv8AktyqpkrKsshrb5G9e+Cb70wEASLLff/896HStNqo0qe2GG25I8FKR6FaDleTWunVrsxOE5CA4OWnzjz/+kLVr15qxtmYAEk13as92z/abpuPiKcWmv7hT6U71p59+2mSh63ettuKoGuB9s9cBAEDyY7ieQXbJJZfIGS+eIasyV/ldT8e3z7pdJtzs3PUVAABSdX/Ak08+WWuSW//+/U2LMD3LHAAA2OeE8UCa5Ba4Tb6m0Rq58d83OvoYAgAAqeDPIC3GtS3pmWeeKclEopsP3UFiJbntuuuuyV4coN6aNGliLjXZTT/XtDFFotuT+J65ban2VJvprnKXI9uY7tixQx5++GGpqqqK6Pp9+/YlyQ0AABsmqOu2391P3i2/Vv8qEnB+kyfD4+j1FQAAUnF/gG9MD0UT27QKKxVgAACwV5LbuHHjgrYr9a3klirHEAAAcNJx77KyMlm6dKl07txZioqKaj1hbMSIEZJsJLr52L59u7m0ytkDqcD6POvnm0Q3JJK7wh1+frnbkRuppaWltSa5aXszLdmqGe26QgAAAJLnqaeeko0bNwadt2rzKpHs1FtfAQAglfYHWAlumqQeiu7zuv7666Vx48ZRLSsAAEjMSWfBbGqwKex9sE0OAEB8zZw5U2bMmGH+v3jxYhOzBw4cKHZHolsQtCtFKuHzjGTJz8sPP79F+Pl2LM362muvyZIlS0JeRyu3FRcXU8ENAAAbCZXkpvIa5KXU+goAAKm0PyCSBDfL6NGjzUlnAADAOV1Rdm0UvrsW2+QAAMTXggULaox9E930ZDLdNvcd2wFb/wCAuChsWShFBUUy2z3blBq3ZGZkSt/8vo47E2vixImmbGswnTp1kvPOOy/hywQAAOpn8EGDZc2GNTLLPUs84nH8+goAAE7fH+DbNmXFihW1HiBXHTp0IMkNAACHdUW54YYbzAnjq95elTLHEAAAcGJ78XDjgw46yGyj+47tIHxzVSCIc845R0444QTvWDM6R40alZQVZa1WFslZnZHS+3vvvfdCztdKTnqd+fPnSyxpe8NHH300pvcJ2EHJkBKzQepLxzrdKTRLvaSkJGSSmzr77LMTukwAAKB+unTpYrZjDjvsMHnsuMekf0F/R6+vAACQKvsDdH+f/mnLlNoOkGtym+5T032VAAAgeZ1QXn75Zbn//vvNpY6//PLLkNfX5DYryS1VjiEAAGB3O3bsMC1KtbCLXupYbd++3e96gWPdh65/1v50u7Q15VS3FKE7dHQFUjVq1Eg6d+5sEi9uuummuJ/ROHnyZPOYkdAdVXowqby8XPLywrcJigXd2eV2u+Wf//ynnHbaaX7zunXrJj/88IOMHz/eu0Ns1apV0qJFC0m0r7/+Wpo1axbx9RP9OgJ1lZudKxOGTRBXuUvc5W5TatxJZ2FFUmK9f//+nDkOAIANWRVhghk+fHjKrK8AAGBH0cbXaNqU6r6wXr16SVFRkTRowHncAAAkc5t7zpw53uovWizi1VdflerqndXZauuKwjY5AADxN3PmTJPgpvTEMo/HE1HSmm5zDxgwQOyGI/Mp5OijjzZJW5qQ8eGHH8pll11mEtBuvPHGoDuPYtU/t2XLlmJnuvKsr4tvopuueK9evbpGclnbtm2TsIQirVq1SsrjAomiG6ZO3DgNV2I9MzPT7FTXPwAAYL8d7noiULiKrKmyvgIAgJ1FGl+feuop2bhxY9jrZGVlySGHHEKCGwAANqAHy/WgeSDdDs/JyfGL67ovvbauKGyTAwAQPwsXLqwx1kS3jh07msJRFh07AXsEUoju7NFErfz8fLnkkktk0KBB8v777/u1G7377rulffv2stdee5npy5Ytk1NOOcWcCakJa//4xz/MGRcWPevi6quvNvN33XVXuf766012p6/A1qWaFKJlhzXBTJdpjz32kBdffNHcr1YhU1o1TVuAWpXU9EDUvffeK4WFhdKkSRPp2bOnvP32236Po8l7f/vb38x8vR/f5QznzDPPNCvc+lwtL730kpkeWIUpsHXp3LlzpXfv3qaEcp8+feS///1v0PapU6dOlR49epjrHXzwwfLdd9/5Xe+dd94xFeT09dAqcw899FDY1qV6ny+88IKceOKJ0rRpU9lzzz2972W41xFINtcGl5QuLjVnX6VCqfVQVWD0N1F/DzWDnZ3rAADYbx1D1/+jSXIDAADJ3e4PleSmB8Z1X6DuO7v22mvZDgcAwCb0+Fkweszq0ksvNfvQNWZb+9LpigIAcJJUOObtKzDHxxqfddZZZnvb2u7WsROwVpHC9MO4fv1673j69OnmLIrPPvvM21938ODB5kxITebQlcy77rrLVIbTDE6t+KYJWRMmTDCJYXvvvbcZv/vuu3L44YeHfFw9K+PLL7+Uxx57zCSsuVwu+e2330zimyZ8DR06VH788UezLLqMSpPctJzxM888Y5K69CwQ/RJppTPdgaVJaieddJKpUnfhhRfKf/7zH7nmmmsieh3atGljnqcmrtxyyy3yxx9/yKRJk8zBr1deeSXk7X7//XcZMmSIHHnkkWbZ9HkUFxcHve51110nJSUlJtFQ28Ued9xx8tNPP5mKet98841JJrz99tvl1FNPldmzZ5uVfE0cDJegNnbsWJNo88ADD8jjjz9uEvM0mzbc6wgkS8WWChk1dZSULdmZGFZUUCQlQ0pM6XEn0e+7b+Z6sFalRxxxREKXCQCAdBVuHaNZw2by2muvyZo1a8w6v++JLKF2uDvprDQAANJhu99qWRqMHhjXk3lj1ZUCAADEjtWuNNg2t8buUMfTAACws1Q65u1Lc0oqKir8xkr3p48YMUKchkS3OPem1yoCnTt3TmhJfc2+1KS2Tz75RK644grvdG3TqVXCrJ1Dmsyhy6nT9AwLpS0+dSeSVio76qijTJUxbX2qSWZKE9H0fkPR5K4333zTJNNpRTnVpUuXGm1OW7dubR7HqgB3zz33yLRp00zSnXWbL774Qp599lmT6KY7vHbffXdvJTStSPftt9/KuHHjInpNzjvvPJMYd/PNN5tKcXpfvXr1Cnub119/3bw+Wo1OK7VpRbbly5ebHWyBxowZYxLilCbU6Yq8JgRqgtvDDz9skmJuvfVWM1+r0v3www8mgS1copvOO/30083/9fXRxEE9YKeJiMFeRyCZNODPds/2m6bj4inFMmHYBLFj1bZQB8bDVX/RqoxWRUUAAJDcdYyBvw/0Jqdr1WPdvrHWr/WgeTB6VprGfQAAkNztfmvfqe7/0230YDhADgCAs7DNDQBwOqcd865rFfVQVdWdgkS3ONEdNZosphYvXmwuNWErnqZMmSK77LKLqdSmO4vOOOMMU0XM0r17d78zIBcsWCC//PKLNG/evMZZGL/++qv5cK9atUoOOugg7zxNBNEWnoGlDS3z5883LQWiea66DFplzUoUs+jBKW0bqhYtWuS3HMpKiovEscceKxdddJGpFKfV6TTxrTb6mFY70toe03e6JqFpIp7e3rofbQnrq1+/fiaJUFvD6usVjD62b5KiZtWuXbs2gmcLJL50q29Wu6XaU22ma0nXwhaFYteqbYEHxjXxN/A3ThOV9Tuoia60SAEAwB7rGLtt2U2ay85tGd9kda2srCfU+NITeKgIAwCAPbb7tdOC7qcLJXB/JQAAsNfJ48E4sSIMAABOPuYdaUGuwH3lgeOUTHRr0aKFt+JXbTZs2FDfZUoJgRWBwlUIihWtMqSVz/TgTfv27Wv0u9dkqcDWnPvvv79ZMQ2kLUProi4tNHU51NSpU6VDhw41qifFgr4Ww4cPN5XXvvrqK1Ntze704Jwv/Q7qDxNgN+4Kd/j55W5bBH3fwB7YmtT3N1orMvqOdSXg3HPPFacihgMAUnUdY1ODTdJ8x86D4L7x7sADDzRx36Ib9E5LciOGAwBSbbvf9wB5qHZnvi1LnYoYDgBIRYEnj6ciYjgApDenHPMOR08o0xPLrIJcWtxl4MCBpriT73a4b7GnlE1008pTlvXr18tdd90lgwcP9lax+vLLL007S6s1I/5KjLAquVnjeNNEtj322CPi6++3334yadIk0/7S6sEbqF27diYx7NBDD/XukPrmm2/MbYPRqnGaTKJfHqt1qS/r4JJWMrPss88+JqFNE0tCVYLbe++95f333/ebNmfOHImGVnF78MEH5dRTTzUrq7XRx5w4caL5wltf9FCPqdOt97i8vNy0cNXbW/cza9Ysv+vrWFuYhqrmVptgryOQLPl5+eHntwg/P1HCnS3uu/GqSbGBbU2djBgOAEjVdYy/tfmb/L7ir5NmrGR1i26867q275lrTkMMBwCk2na/7wHyUDp16hRRJwY7I4YDAFKNHhusLYYn4jhovBHDASC9OeWYdzja1TFwrPvKtZug73Fy3+6CKZvo5ltqdujQoXLHHXfI5Zdf7p125ZVXyhNPPCHTpk2Tq666Kj5L6jDWgRQ7H1jR5I0HHnjAtNXU91QPDOmK6uTJk+X666834+LiYrnvvvtkzz33lK5du8rDDz8sFRUVIe+zoKDAfF50h9Rjjz0mPXv2NPepLTdPOeUUyc/PNwkl2mb1mGOOMRXgtBXBtddeaz47miTXv39/0zZVk8E0AU/v7+KLL5aHHnpIrrvuOjn//PNNst2ECdH1QNaEs99++02aNm0a0fW19evNN98sF1xwgWlzpGeoaKJcMPr67brrriYpRm+z2267yQknnGDmXXPNNXLAAQfInXfeaZLsdEVYvy9PPfWU1FWw11Hb1gLJUNiyUIoKikx/ci3dasnMyJS++X1tk9k+d+7ckPN8D4xrBchUKrFODAcAOH0d4wvXF+LJ2NlWPMOTIf0L+0vxCcUhk9O1HHuok2icghgOAHD6dn9gi7PaOl7ofkWnn2ymiOEAgFSjyeqhYneqnDCuiOEAkN6ccsw7nMDq6dZY95XrPnM75y9Fo0G0N9BM9aOPPrrGdJ2mgR3+B1a0MpD1obEbTfjSrE39IJ900kkmEWzkyJHmw25VeNMkLX0OunKnZyxoUtqJJ54Y9n61feqwYcPk0ksvNclxmii2efNmM09bk44dO1ZGjx5tVnytFURNAtMzIO69916zHPp50lamhYV//VjoMr7zzjvy3nvvmeS5Z555Ru65556on7Mmo0XaXlUTxz744AP59ttvpXfv3iaBbdy4cUGvq8mAmhSorWBXr15tbmdVXdPqd2+++aa88cYbsu+++8ptt91mVo7POeccqatQryOQLCVDSkyA96VjnZ5MVoVJqzpjIP090I1x/Z1LB8RwAIDT6LpEu+p2ftN0rNOt5HQ9SUcvdZyqiOEAACdu9+tBcT1xdMuWLeZSW6aEojvZUzGeE8MBAE6hCeovv/yy3H///eZSx5Zgyep63C6Vt8mJ4QCQnuxwzNv3+LZe6jhSnoDtbmvshPylaGR4wu1hCFFJSjPWNQHKl1bb0gpetZWuTbbKykrJzc01FcMC23VqEoTL5TLJVU7vSYvEKC0tlcMOO8y0K83LyxM74nONRHKVu0x/ci3daoes9s8//zxsu1JNPLVjPIqXVI7hAIDUpSd4VGZUyqYGm6T5juaS48mRMWPGJG15iOHRI4YDQGpv9+tO97KyMr8zw3WnuZ7oGW7Xs8YGPSnV9zbxRAyPHjEcANKHdlHyjUsaw6yCDVqsIvAguxaHSFRyGzE8esRwAHDuMW9NbtM8FIu2Ho20e0lJSYlfh0bNYdGCTakWjxrW5SCDto7UF/aggw4y07766iv5+OOP5fnnn4/ZggEAnEcDvR0S3CJpV9qpUydJN8RwAIDTWDvSNbktpzp9d8wSwwEAdt7u153w1klmixcvNvFbTwyNpMVZqlV/CUQMBwA4xYoVK0KOO3bs6FfVTZPUieEAgFSWzGPegcnU0SRX9+jRw68IjI5TUdRrIZq9r60lNVt98uTJZpqOv/jiC2+gBwCkB9cGl7gr7FPBLfBM8lDtSq0d6umGGA4AcNo6xuofVyd7UWyBGA4AsOu2vm6Dz5o1q8ZJZ5ro1qhRI9m2bZt3euPGjU1rs3RCDAcA2JnvvvTq6uoa8yza5uy1117zS1ZPteMKgYjhAIBkCdV+NBID/r8tqW/F9VRUp3R7DeC6QgOkOy0TGWX3XyAlVGypkFFTR0nZkjLvtKKCItOfPDc7N6nL5nsmebB2pddff72kM2I4AMD26xhTRkmZe+c6Rvus9lJUVSRZkuU9SJ6OiOEAADtu6+s2eOCBcSu5TWOXHjy3pOtBYWI4AMCuwu1L96XV22KRrG7n4wrBEMMBAE7ToEGDiNucpnyim/ZNjRR9vgEg9enG6Gz3bL9pOi6eUiwThk2QZKJdqT9iOADASXQdY5bbvyrMqsxVUpZVJoOqBqXVQXJiOADACdv6wbbBtZKbdYJoZmZmyp9JHogYDgBwikTvS7fzcQVFDAcAIIUS3fLy8kwVnHC0qpVeJ/AMPgBAatGy4r5nXFmqPdVmuqvclZRy41aZddqV+iOGAwCcQOP4W5+9FXQdw5PhkZUNV0rltkpp0aCFOWieDojhAAC7b+v/+eefQbfBDzzwwLQ6kzwQMRwAYBcaqwNbjmp1Notvi/F470u363EFX8RwAABSKNHt888/j/+SAAAcwV3hDj+/3J2UDVItsa6l1gPp2ePp3K6UGA4AcAKN49O/ni6SHfo6mxpskmP7HmsOmqcDYjgAwO7b+q+++mrQ66ZLUnooxHAAgF1orHa7/4rxS5YsMeNzzjnHrwprVVWVd5yVlRW3fel2Pa7gixgOAEAKJbql45l3AIDg8vPyw89vEX5+vCxYsCDo9F122UXSGTEcAOAEGseb72ge9jqDDhiUVgfOieEAALtt61uV1K1WpHoZSKenS1J6KMRwAIBdrFixIuxYq7BqbPcdp9txBV/EcABAOIHbxEVFRXHZ/g2sLlpbtdF0FFGiW6CKigp58cUXZdGiRWbcrVs3Oe+88yQ3NzfWywcAsJnCloVSVFAks92zTVlxS2ZGpvTN7xv3s65CrUQEa5eievbsGdflcRpiOADAjm1Tfv/9d8nx5Ej7P9vLqsxVpl2ppYE0kH4F/eSUwadIOiOGAwCSva2vVU60CqtavHhx0J3tw4cPT+hyOwExHACQrO3v2tpr6slk2hHFd197qh5XqAtiOADAlx6fLi0t9W4TxytJOj8/X1wul98Y/qJOL/zPf/4ju+++uzzyyCOyYcMG8/fwww+bafPmzYv27gAADlQypMRsfPrSsU6PN92prisRugKhl9ZOdo9n5wFxpTvcdUOds7B2IoYDAJJN26Rou5QtW7Z426b4xvGiqiJpV93O7zb98vslZB3DzojhAAA7bOvPnTvXb17gdrgeINcEduxEDAcAJItubwfG6mbNmvmN9QRy3X+uiep6Ge+qrMk8rhAtYjgAIJDVDjzUOFY08VyPcXfp0sVcxjMR3ami3vNw1VVXyfHHHy/PP/+8d8eFnhVw/vnny6hRo7wJB7CvgoIC817pXyqI9fM555xzzFka7733Xsjr6A9Kr1695NFHH5VYuf32281jzp8/P2b3CcRLbnauTBg2QVzlLnGXu01Z8USdcRXYolTH+p1s0qSJVFVV7VzG3FyS3AIQwwEAyS7XHtjizBp37NjR7BjIkiwZVDVIdmm1i+x/2P4JXcewM2I4ACDZ2/oa84NVUtf9cr6VWuGPGA4ASJbANqV26H6SzOMK0SKGAwACBSaQB45jxUpER4wrut1www1+Z+fp/6+//nozD8mzbNkyUzK3ffv20rhxY1PCsLi4WNavXy/pTBPItLLT0UcfXWPeAw884K36ZCkpKZEJEyYkeClFrr32Wpk+fXpUt9GdibFMtgOipRuhA7sMTOjGaOCOdWvco0cPv+mBYxDDAQCxN2PGDL9KqzoOJ7DFmTU+66yzzLqtJq7rZfGI4oSvY9gZMRwAkOxt/WAxXuP4iBEjTDzSS6q51UQMBwAkkiama8yeOHGi+b9dD5on47hCtIjhAIBI920j8aLe+5CTk2POuu/atWuNJKvmzZvHctkQBT2wdMghh8jf/vY3+ec//ymFhYXy/fffy3XXXScfffSRzJkzR1q2bJmUZauurjZf8niXPA6nXbt28vnnn8vy5ctNtQjLSy+9ZCpP+NIqUMmwyy67mD8gGVwbXOKusPcZVHq21GuvvVYj0c3KlrdKq/tWlIE/YjgAINY+nfuprM9cL813NJccT45paXbYYYeFvL6ui/tWdbPWzXVnsR4gR3DEcABAovYDhKrWGti2VHXq1CnBS+08xHAAQCJplbFQJ6Dpdne8jtM54fhCtIjhAJCewsU03UZ2uVx+YyRH1Gs0p556qowcOVImTZpkgrn+vfHGG6ZU6+mnnx6fpXTwl6B0cakpwRtvl112mani9umnn5pkD/1S/f3vf5dp06aZ8sQ333yz3/U3bdpk3q9mzZpJhw4d5Mknn/RLGtEqaHofWVlZpkLclVde6Z2vrQG1+pjeTm9/0EEHmeoNFq2GlpeXJ++//77ss88+5j5eeOEFyc7ONi1BfWnFucMPP9w7/uKLL8wONK3koDvL9HE3b97snb927Vo57rjjzHxN5tOkl0i0bt1ajjrqKHn55Ze902bPni2//fabHHvssTVal55wwgnesT7+2WefbZLQNGHuoYceqnH/WnXizjvvDPmaKl0h/sc//mHuR1eQTznlFNPawaKvubZDDVyOBx980Dzurrvuat7n7du3m/lahU7bO2n5ZE0kJGMYdVGxpULOefscGfTSIBk5eaQMenGQGW/culHs5tVXX5UlS5bUmK6/B75npA0fPtyb9AZ/xHAAQEzXId46R97MfFOmZ0+X95q+J9OypsmmbZvC3k7jtG/lNh2jdsRwAECi9gPoAXLfaq1WW65t27bVuC/ieO2I4QCARFqwYEHIeU2bNk3r4wvRIoYDQHqJJKYlqnUp4lDRTZNuNKFGE3+0uo5q1KiRXHLJJXLfffdFe3cp+yUYNXWUlC0p804rKiiSkiElpv98rG3YsEE++eQTufvuu70JH5a2bdvKmWeeaVbEnnrqKW8ylLbsvOmmm2Ts2LHmtppwptXgjjzySHnnnXfkkUceMSts3bp1k9WrV/utHF9++eXyww8/mPmaBPfuu++atqDffvut7LnnnuY6f/zxh4wbN84kuGmCllZquO2228x964qhVelNl0uXW/3666/mfu666y5TaW3dunXmsfRv/Pjx3uSvlStXmups+rnTRDhNfouEtnXVksJW0p8+hr42tdGqeHoGzL/+9S+TMKev27x58/yS0mp7TfVsWCvJTe9LvzuatKYryr5JgoH0eVrV6H755RdzfX3cCy64QCZPniw9e/aUCy+80IyButDfqtnu2X7TdFw8pVgmDEt8C99wNGk3GFqURo4YDgCI5TrELPcsv2mrMlfJzIy/DoaHQuW2uiGGAwAStR8g8AC5jvVkS407evKrRU9spVVp7YjhAIBECuyGEu/96E46vhAtYjgApJdIYpomPfsKHCNxot4boVXDSkpK5N577zWJSWr33XePy5kATpXoFbuff/7ZZIvuvffeQefr9PLycpM4polaql+/fjJ69Gjzf03GmjVrlklu06QsrTymCXKDBg0yK21a2e3AAw8019V5mnSml5rkprS628cff2ym33PPPWaaVh3TxDpNxLKcdtpp8vrrr3sT3aZPn24qvA0dOtSM9TOliWejRo0yY02ae+yxx0xlpqeffto8prZh1VYJBxxwgLnOiy++GPJ5BxoyZIhcfPHF5kzU/fffX958801TQU4T3kL5/fffzWNoJakjjjjCTNOqcL7tTy3hXlN9rpoIqKUsrbYOr7zyikkk/Prrr73PJ1CLFi3kiSeekMzMTFMeWavP6X1pYpu2otXpWiJZ3y+gLlUnfRNyLdWeajNd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",
"text/plain": [
""
]
diff --git a/src/patientflow/aggregate.py b/src/patientflow/aggregate.py
index d27966dc..105dcf7f 100644
--- a/src/patientflow/aggregate.py
+++ b/src/patientflow/aggregate.py
@@ -527,7 +527,14 @@ def get_prob_dist_using_survival_curve(
model : EmpiricalIncomingAdmissionPredictor
A fitted instance of EmpiricalIncomingAdmissionPredictor
verbose : bool, optional (default=False)
- If True, print progress information
+ If True, print progress information.
+
+ Notes
+ -----
+ The current snapshot date ``dt`` is forwarded to the YTA model as
+ ``prediction_date=dt`` on each predict call. This enables weekday-stratified
+ arrival-rate slicing for models fitted with ``stratify_by_weekday=True``.
+ Models without weekday stratification remain on pooled behaviour.
Returns
-------
@@ -580,6 +587,7 @@ def get_prob_dist_using_survival_curve(
predictions = model.predict(
prediction_time=prediction_time,
prediction_window=prediction_window,
+ prediction_date=dt,
filter_keys=category,
)
prob_dist_dict[dt] = {"agg_predicted": predictions[category]}
diff --git a/src/patientflow/calculate/arrival_rates.py b/src/patientflow/calculate/arrival_rates.py
index d0adfe32..54983a07 100644
--- a/src/patientflow/calculate/arrival_rates.py
+++ b/src/patientflow/calculate/arrival_rates.py
@@ -8,6 +8,11 @@
---------
time_varying_arrival_rates : function
Calculate arrival rates for each time interval across the dataset's date range.
+time_varying_arrival_rates_by_weekday : function
+ Same interval grid as ``time_varying_arrival_rates``, but one profile per weekday
+ (``datetime.weekday``: Monday = 0, …, Sunday = 6), normalised by weekday occurrence counts.
+weekday_occurrences_in_span : function
+ Count calendar occurrences of each weekday between two dates (inclusive).
time_varying_arrival_rates_lagged : function
Create lagged arrival rates based on time intervals.
admission_probabilities : function
@@ -49,7 +54,7 @@
import numpy as np
import pandas as pd
-from datetime import datetime, time, timedelta
+from datetime import date, datetime, time, timedelta
from pandas import DataFrame
from collections import OrderedDict
from typing import Dict, List, Tuple, Optional, Union
@@ -200,6 +205,148 @@ def time_varying_arrival_rates(
return arrival_rates_dict
+def weekday_occurrences_in_span(start_date: date, end_date: date) -> List[int]:
+ """Count how often each weekday occurs in ``[start_date, end_date]`` (inclusive).
+
+ Indices follow :meth:`datetime.date.weekday`: Monday = 0, ..., Sunday = 6.
+
+ Parameters
+ ----------
+ start_date : datetime.date
+ First calendar date in the span (inclusive).
+ end_date : datetime.date
+ Last calendar date in the span (inclusive).
+
+ Returns
+ -------
+ list of int
+ Length-7 list; ``counts[d]`` is the number of dates in the span whose
+ weekday is ``d``.
+ """
+ counts = [0] * 7
+ current = start_date
+ while current <= end_date:
+ counts[current.weekday()] += 1
+ current = current + timedelta(days=1)
+ return counts
+
+
+def time_varying_arrival_rates_by_weekday(
+ df: DataFrame,
+ yta_time_interval: Union[int, timedelta],
+ num_days: Optional[int] = None,
+ verbose: bool = False,
+) -> Dict[int, OrderedDict[time, float]]:
+ """Time-varying arrival rates with a separate profile per weekday.
+
+ For each weekday ``d`` (``datetime.weekday()`` convention: Monday = 0,
+ ..., Sunday = 6), computes the same ``datetime.time`` grid as
+ :func:`time_varying_arrival_rates`, but counts only rows whose index falls
+ on weekday ``d``, and divides by the number of calendar occurrences of
+ weekday ``d`` in the training date span (from min index date to max index
+ date, inclusive)—not by ``num_days``.
+
+ Parameters
+ ----------
+ df : pandas.DataFrame
+ Indexed by datetime (same requirements as ``time_varying_arrival_rates``).
+ yta_time_interval : int or timedelta
+ Bucket length in minutes (if int) or as timedelta.
+ num_days : int, optional
+ Unused; retained for API symmetry with ``time_varying_arrival_rates``.
+ The weekday divisor is always derived from the index date span.
+ verbose : bool, optional
+ If True, mirror logging behaviour of ``time_varying_arrival_rates``.
+
+ Returns
+ -------
+ dict[int, collections.OrderedDict[datetime.time, float]]
+ Keys ``0..6`` (weekday). Values are ordered time → rate for that weekday.
+ """
+ import logging
+ import sys
+
+ logger = None
+ if verbose:
+ logger = logging.getLogger(f"{__name__}.time_varying_arrival_rates_by_weekday")
+ if not logger.handlers:
+ logger.setLevel(logging.INFO if verbose else logging.WARNING)
+ handler = logging.StreamHandler(sys.stdout)
+ handler.setLevel(logging.INFO if verbose else logging.WARNING)
+ handler.setFormatter(logging.Formatter("%(message)s"))
+ logger.addHandler(handler)
+ logger.propagate = False
+
+ if not isinstance(df, DataFrame):
+ raise TypeError("The input 'df' must be a pandas DataFrame.")
+ if not isinstance(yta_time_interval, (int, timedelta)):
+ raise TypeError(
+ "The parameter 'yta_time_interval' must be an integer or timedelta."
+ )
+ if not isinstance(df.index, pd.DatetimeIndex):
+ raise TypeError("The DataFrame index must be a pandas DatetimeIndex.")
+
+ if isinstance(yta_time_interval, timedelta):
+ yta_time_interval_minutes = int(yta_time_interval.total_seconds() / 60)
+ elif isinstance(yta_time_interval, int):
+ yta_time_interval_minutes = yta_time_interval
+ else:
+ raise TypeError("yta_time_interval must be a timedelta object or integer")
+
+ minutes_in_day = 24 * 60
+ if yta_time_interval_minutes <= 0:
+ raise ValueError("The parameter 'yta_time_interval' must be positive.")
+ if minutes_in_day % yta_time_interval_minutes != 0:
+ raise ValueError(
+ f"Time interval ({yta_time_interval_minutes} minutes) must divide evenly into 24 hours."
+ )
+
+ start_date = df.index.date.min()
+ end_date = df.index.date.max()
+ weekday_counts = weekday_occurrences_in_span(start_date, end_date)
+
+ if sum(weekday_counts) == 0:
+ raise ValueError("DataFrame contains no data.")
+
+ if verbose and logger is not None:
+ logger.info(
+ "Calculating weekday-stratified arrival rates for index span "
+ f"{start_date}–{end_date}"
+ )
+
+ arrival_rates_by_weekday: Dict[int, OrderedDict[time, float]] = {}
+ idx_weekday = df.index.weekday
+
+ for d in range(7):
+ arrival_rates_dict = OrderedDict()
+ df_d = df[idx_weekday == d]
+ occ = weekday_counts[d]
+
+ _start_datetime = datetime(1970, 1, 1, 0, 0, 0, 0)
+ _stop_datetime = _start_datetime + timedelta(days=1)
+
+ while _start_datetime != _stop_datetime:
+ _start_time = _start_datetime.time()
+ _end_time = (
+ _start_datetime + timedelta(minutes=yta_time_interval_minutes)
+ ).time()
+
+ _df = df_d.between_time(_start_time, _end_time, inclusive="left")
+
+ if occ == 0:
+ arrival_rates_dict[_start_time] = 0.0
+ else:
+ arrival_rates_dict[_start_time] = _df.shape[0] / occ
+
+ _start_datetime = _start_datetime + timedelta(
+ minutes=yta_time_interval_minutes
+ )
+
+ arrival_rates_by_weekday[d] = arrival_rates_dict
+
+ return arrival_rates_by_weekday
+
+
def time_varying_arrival_rates_lagged(
df: DataFrame,
lagged_by: int,
diff --git a/src/patientflow/predictors/incoming_admission_predictors.py b/src/patientflow/predictors/incoming_admission_predictors.py
index 1fcdd5e2..51e34041 100644
--- a/src/patientflow/predictors/incoming_admission_predictors.py
+++ b/src/patientflow/predictors/incoming_admission_predictors.py
@@ -58,8 +58,16 @@
when the model was fitted with filters. If ``weights`` has only one key,
``filter_keys`` / ``filter_key`` may be omitted.
+Optional ``prediction_date`` (a :class:`~datetime.date`) anchors the calendar day
+when the model was fit with ``stratify_by_weekday=True``. Each prediction slice
+then uses the arrival rate for that slice's **actual** weekday and time-of-day
+(``datetime.weekday()``: Monday = 0, …, Sunday = 6). If ``prediction_date`` is
+omitted, behaviour matches the legacy pooled 24-hour profile
+(``arrival_rates_dict``) only.
+
The deprecated nested ``prediction_context`` dict (keyword or first positional
-argument) is still accepted and emits ``DeprecationWarning``.
+argument) is still accepted and emits ``DeprecationWarning``. It may include
+``prediction_date`` per filter key (same date required for all keys).
Assumptions
-----------
@@ -68,8 +76,9 @@
parametric route to be exact:
- Symbols and units:
- - λ_t: expected arrivals within time-slice t (the value produced by
- `time_varying_arrival_rates` for that slice; units match the slice length).
+ - λ_t: expected arrivals within time-slice t (from the pooled profile or, when
+ ``prediction_date`` is set and the model was fit with weekday stratification,
+ from the slice's weekday-specific profile; units match the slice length).
- θ_t: probability an arrival in slice t is admitted within the prediction
window (computed via `get_y_from_aspirational_curve`).
@@ -88,7 +97,7 @@
"""
import warnings
-from datetime import datetime, timedelta
+from datetime import date, datetime, timedelta, time as dt_time
from abc import ABC, abstractmethod
import numpy as np
@@ -104,6 +113,7 @@
# from dissemination.patientflow.predict.emergency_demand.admission_in_prediction_window import (
from patientflow.calculate.arrival_rates import (
time_varying_arrival_rates,
+ time_varying_arrival_rates_by_weekday,
)
from patientflow.calculate.survival_curve import (
@@ -378,11 +388,12 @@ def _normalize_prediction_time(self, prediction_time):
def _parse_legacy_prediction_context(
self, prediction_context: Dict, *, for_predict_mean: bool
- ) -> Tuple[Tuple[int, int], List[str]]:
+ ) -> Tuple[Tuple[int, int], List[str], Optional[date]]:
"""Parse deprecated ``prediction_context`` into one snapped time and filter keys.
Raises ``ValueError`` if times differ after snapping, if keys are unknown,
or if ``for_predict_mean`` and more than one filter key is present.
+ Optional ``prediction_date`` must match across keys when provided.
"""
if not isinstance(prediction_context, dict) or not prediction_context:
raise ValueError("prediction_context must be a non-empty dict")
@@ -395,6 +406,7 @@ def _parse_legacy_prediction_context(
snapped_times: List[Tuple[int, int]] = []
filter_keys_order: List[str] = []
+ prediction_dates_raw: List[Optional[date]] = []
for filter_key, filter_values in prediction_context.items():
if filter_key not in self.weights:
raise ValueError(
@@ -422,13 +434,39 @@ def _parse_legacy_prediction_context(
snapped_times.append(snapped)
filter_keys_order.append(filter_key)
+ pd_raw = filter_values.get("prediction_date")
+ if pd_raw is not None:
+ if isinstance(pd_raw, datetime):
+ pd_raw = pd_raw.date()
+ if not isinstance(pd_raw, date):
+ raise TypeError(
+ f"'prediction_date' for filter '{filter_key}' must be datetime.date "
+ f"(or datetime.datetime), got {type(pd_raw)!r}."
+ )
+ prediction_dates_raw.append(pd_raw)
+
if len(set(snapped_times)) > 1:
raise ValueError(
"prediction_context must use the same prediction_time (after snapping to "
"yta_time_interval) for all filter keys."
)
- return snapped_times[0], filter_keys_order
+ dates_defined = [d for d in prediction_dates_raw if d is not None]
+ if not dates_defined:
+ resolved_prediction_date = None
+ elif len(dates_defined) != len(prediction_dates_raw):
+ raise ValueError(
+ "prediction_context must provide 'prediction_date' for every filter key "
+ "when it is provided for any key."
+ )
+ elif len(set(dates_defined)) > 1:
+ raise ValueError(
+ "prediction_context must use the same prediction_date for all filter keys."
+ )
+ else:
+ resolved_prediction_date = dates_defined[0]
+
+ return snapped_times[0], filter_keys_order, resolved_prediction_date
def _resolve_filter_keys(
self, filter_keys: Optional[Union[str, Sequence[str]]]
@@ -478,13 +516,18 @@ def _prepare_prediction_targets_for_predict(
prediction_time: Optional[Union[Tuple[int, int], List[int], int]] = None,
filter_keys: Optional[Union[str, Sequence[str]]] = None,
prediction_context: Optional[Dict] = None,
- ) -> Tuple[Tuple[int, int], List[str]]:
- """Resolve snapped prediction time and filter keys for ``predict()``."""
+ prediction_date: Optional[date] = None,
+ ) -> Tuple[Tuple[int, int], List[str], Optional[date]]:
+ """Resolve snapped prediction time, filter keys, and optional calendar anchor."""
if prediction_context is not None:
- if prediction_time is not None or filter_keys is not None:
+ if (
+ prediction_time is not None
+ or filter_keys is not None
+ or prediction_date is not None
+ ):
raise ValueError(
"Pass either prediction_context (deprecated) or prediction_time with "
- "filter_keys, not both."
+ "filter_keys / prediction_date, not both."
)
if args:
raise ValueError(
@@ -496,9 +539,10 @@ def _prepare_prediction_targets_for_predict(
DeprecationWarning,
stacklevel=3,
)
- return self._parse_legacy_prediction_context(
+ snapped, keys, ctx_date = self._parse_legacy_prediction_context(
prediction_context, for_predict_mean=False
)
+ return snapped, keys, ctx_date
if args:
if len(args) != 1 or not isinstance(args[0], dict):
@@ -506,10 +550,14 @@ def _prepare_prediction_targets_for_predict(
"predict() positional arguments are only accepted for the deprecated "
"prediction_context dict; pass prediction_time as a keyword argument."
)
- if prediction_time is not None or filter_keys is not None:
+ if (
+ prediction_time is not None
+ or filter_keys is not None
+ or prediction_date is not None
+ ):
raise ValueError(
"Do not combine a positional prediction_context dict with "
- "prediction_time= or filter_keys=."
+ "prediction_time=, filter_keys=, or prediction_date=."
)
warnings.warn(
"Passing prediction_context as the first positional argument is deprecated; "
@@ -517,15 +565,22 @@ def _prepare_prediction_targets_for_predict(
DeprecationWarning,
stacklevel=3,
)
- return self._parse_legacy_prediction_context(
+ snapped, keys, ctx_date = self._parse_legacy_prediction_context(
cast(Dict, args[0]), for_predict_mean=False
)
+ return snapped, keys, ctx_date
if prediction_time is None:
raise TypeError(
"predict() requires prediction_time= when not using prediction_context."
)
+ if prediction_date is not None and not isinstance(prediction_date, date):
+ raise TypeError(
+ "prediction_date must be a datetime.date (values inside prediction_context "
+ "may use datetime.datetime, which is coerced to date)."
+ )
+
normalized = self._normalize_prediction_time(prediction_time)
snapped = self._snap_to_interval_boundary(normalized)
if snapped != normalized:
@@ -536,7 +591,7 @@ def _prepare_prediction_targets_for_predict(
stacklevel=3,
)
resolved_keys = self._resolve_filter_keys(filter_keys)
- return snapped, resolved_keys
+ return snapped, resolved_keys, prediction_date
def _prepare_prediction_targets_for_predict_mean(
self,
@@ -544,13 +599,18 @@ def _prepare_prediction_targets_for_predict_mean(
prediction_time: Optional[Union[Tuple[int, int], List[int], int]] = None,
filter_key: Optional[str] = None,
prediction_context: Optional[Dict] = None,
- ) -> Tuple[Tuple[int, int], List[str]]:
+ prediction_date: Optional[date] = None,
+ ) -> Tuple[Tuple[int, int], List[str], Optional[date]]:
"""Resolve snapped prediction time and a single-element key list for ``predict_mean()``."""
if prediction_context is not None:
- if prediction_time is not None or filter_key is not None:
+ if (
+ prediction_time is not None
+ or filter_key is not None
+ or prediction_date is not None
+ ):
raise ValueError(
"Pass either prediction_context (deprecated) or prediction_time with "
- "filter_key, not both."
+ "filter_key / prediction_date, not both."
)
if args:
raise ValueError(
@@ -561,10 +621,10 @@ def _prepare_prediction_targets_for_predict_mean(
DeprecationWarning,
stacklevel=3,
)
- snapped, fk_list = self._parse_legacy_prediction_context(
+ snapped, fk_list, ctx_date = self._parse_legacy_prediction_context(
prediction_context, for_predict_mean=True
)
- return snapped, fk_list
+ return snapped, fk_list, ctx_date
if args:
if len(args) != 1 or not isinstance(args[0], dict):
@@ -572,10 +632,14 @@ def _prepare_prediction_targets_for_predict_mean(
"predict_mean() positional arguments are only accepted for the deprecated "
"prediction_context dict; pass prediction_time as a keyword argument."
)
- if prediction_time is not None or filter_key is not None:
+ if (
+ prediction_time is not None
+ or filter_key is not None
+ or prediction_date is not None
+ ):
raise ValueError(
"Do not combine a positional prediction_context dict with "
- "prediction_time= or filter_key=."
+ "prediction_time=, filter_key=, or prediction_date=."
)
warnings.warn(
"Passing prediction_context as the first positional argument is deprecated; "
@@ -583,16 +647,22 @@ def _prepare_prediction_targets_for_predict_mean(
DeprecationWarning,
stacklevel=3,
)
- snapped, fk_list = self._parse_legacy_prediction_context(
+ snapped, fk_list, ctx_date = self._parse_legacy_prediction_context(
cast(Dict, args[0]), for_predict_mean=True
)
- return snapped, fk_list
+ return snapped, fk_list, ctx_date
if prediction_time is None:
raise TypeError(
"predict_mean() requires prediction_time= when not using prediction_context."
)
+ if prediction_date is not None and not isinstance(prediction_date, date):
+ raise TypeError(
+ "prediction_date must be a datetime.date (values inside prediction_context "
+ "may use datetime.datetime, which is coerced to date)."
+ )
+
normalized = self._normalize_prediction_time(prediction_time)
snapped = self._snap_to_interval_boundary(normalized)
if snapped != normalized:
@@ -603,38 +673,77 @@ def _prepare_prediction_targets_for_predict_mean(
stacklevel=3,
)
fk = self._resolve_filter_key_for_mean(filter_key)
- return snapped, [fk]
+ return snapped, [fk], prediction_date
def _iter_prediction_inputs(
self,
snapped_prediction_time: Tuple[int, int],
prediction_window: timedelta,
filter_keys: List[str],
+ prediction_date: Optional[date] = None,
+ strict_prediction_date: bool = False,
):
"""Yield ``(filter_key, resolved_prediction_time, arrival_rates_np)``.
- Slices ``Ntimes`` intervals from the stored full 24-hour arrival-rate
- dictionary, starting at ``snapped_prediction_time`` (already on an
- interval boundary).
+ Slices ``Ntimes`` intervals starting at ``snapped_prediction_time`` (on an
+ interval boundary). When ``prediction_date`` is set and weights contain
+ ``arrival_rates_by_weekday`` (from ``fit(..., stratify_by_weekday=True)``),
+ each slice uses the rate for that slice's calendar weekday and time-of-day.
+ If ``prediction_date`` is set but weekday profiles are missing, behaviour
+ depends on ``strict_prediction_date``:
+ - ``False`` (default): fall back to pooled ``arrival_rates_dict`` and warn.
+ - ``True``: raise ``ValueError``.
"""
Ntimes = int(prediction_window / self.yta_time_interval)
hr, mn = snapped_prediction_time
for filter_key in filter_keys:
- arrival_rates_dict = self.weights[filter_key].get("arrival_rates_dict")
+ w = self.weights[filter_key]
+ arrival_rates_dict = w.get("arrival_rates_dict")
if arrival_rates_dict is None:
raise ValueError(
f"No arrival_rates_dict found under filter '{filter_key}'. "
"Has the model been fit?"
)
+ by_weekday = w.get("arrival_rates_by_weekday")
+ use_weekday = prediction_date is not None and by_weekday is not None
+ if prediction_date is not None and by_weekday is None:
+ message = (
+ "prediction_date was provided but no arrival_rates_by_weekday "
+ f"were found for filter '{filter_key}'. Fit with "
+ "stratify_by_weekday=True to enable weekday-stratified "
+ "arrival rates."
+ )
+ if strict_prediction_date:
+ raise ValueError(message)
+ warnings.warn(
+ message + " Falling back to pooled arrival_rates_dict.",
+ UserWarning,
+ stacklevel=4,
+ )
+
try:
- arrival_rates = [
- arrival_rates_dict[
- (
- datetime(1970, 1, 1, hr, mn) + i * self.yta_time_interval
- ).time()
+ if use_weekday:
+ assert prediction_date is not None
+ assert by_weekday is not None
+ anchor = datetime.combine(
+ prediction_date, dt_time(hour=hr, minute=mn)
+ )
+ arrival_rates = []
+ for i in range(Ntimes):
+ dt_i = anchor + i * self.yta_time_interval
+ d_i = dt_i.weekday()
+ t_i = dt_i.time()
+ arrival_rates.append(by_weekday[d_i][t_i])
+ else:
+ arrival_rates = [
+ arrival_rates_dict[
+ (
+ datetime(1970, 1, 1, hr, mn)
+ + i * self.yta_time_interval
+ ).time()
+ ]
+ for i in range(Ntimes)
]
- for i in range(Ntimes)
- ]
except KeyError as e:
raise ValueError(
f"No arrival_rates found for filter '{filter_key}' at "
@@ -697,11 +806,36 @@ def filter_dataframe(self, df: pd.DataFrame, filters: Dict) -> pd.DataFrame:
filtered_df = filtered_df[filtered_df[column] == criteria]
return filtered_df
+ def _resolve_num_days(self, df: pd.DataFrame, num_days: Optional[int]) -> int:
+ """Return ``num_days`` when given, otherwise infer from the dataframe index."""
+ if num_days is not None:
+ if not isinstance(num_days, int):
+ raise TypeError("num_days must be an integer or None")
+ if num_days <= 0:
+ raise ValueError("num_days must be positive")
+ return num_days
+ if not isinstance(df.index, pd.DatetimeIndex):
+ raise TypeError(
+ "When num_days is omitted, the DataFrame index must be a DatetimeIndex "
+ "so the training span can be inferred."
+ )
+ if len(df.index) == 0:
+ raise ValueError(
+ "Cannot infer num_days from an empty DataFrame when num_days is omitted."
+ )
+ start_date = df.index.min().date()
+ end_date = df.index.max().date()
+ inferred = (end_date - start_date).days + 1
+ if inferred <= 0:
+ raise ValueError("Could not infer a positive num_days from the index.")
+ return inferred
+
def _calculate_parameters(
self,
df,
yta_time_interval: timedelta,
- num_days,
+ num_days: Optional[int],
+ stratify_by_weekday: bool = False,
):
"""Calculate the full 24-hour arrival-rate dictionary for the given data.
@@ -711,20 +845,28 @@ def _calculate_parameters(
The data frame to process.
yta_time_interval : timedelta
The granularity of arrival-rate buckets.
- num_days : int
- Number of days over which to calculate time-varying arrival rates.
+ num_days : int or None
+ Divisor for pooled rates; if ``None``, inferred from ``df``'s index span.
+ stratify_by_weekday : bool, default=False
+ If True, also compute ``arrival_rates_by_weekday`` (keys ``0..6``,
+ Monday=0) for use when ``prediction_date`` is passed at predict time.
Returns
-------
dict
- A dictionary with a single key ``"arrival_rates_dict"`` whose value
- is a dictionary mapping ``datetime.time`` to arrival rate,
- covering the full 24-hour cycle at ``yta_time_interval`` granularity.
+ Always contains ``arrival_rates_dict``. When ``stratify_by_weekday``,
+ also ``arrival_rates_by_weekday``: ``dict[int, OrderedDict[time, float]]``.
"""
+ effective_days = self._resolve_num_days(df, num_days)
arrival_rates_dict = time_varying_arrival_rates(
- df, yta_time_interval, num_days, verbose=self.verbose
+ df, yta_time_interval, effective_days, verbose=self.verbose
)
- return {"arrival_rates_dict": arrival_rates_dict}
+ out: Dict = {"arrival_rates_dict": arrival_rates_dict}
+ if stratify_by_weekday:
+ out["arrival_rates_by_weekday"] = time_varying_arrival_rates_by_weekday(
+ df, yta_time_interval, num_days, verbose=self.verbose
+ )
+ return out
def fit(
self,
@@ -735,6 +877,7 @@ def fit(
num_days: Optional[int] = None,
epsilon: float = 10**-7,
y: Optional[None] = None,
+ stratify_by_weekday: bool = False,
) -> "IncomingAdmissionPredictor":
"""Fit the model to the training data.
@@ -751,7 +894,7 @@ def fit(
The training dataset with historical admission data.
prediction_window : timedelta, optional
Deprecated. Prefer passing ``prediction_window`` to
- `predict()` / `predict_mean()` instead. If provided, will
+ ``predict()`` / ``predict_mean()`` instead. If provided, will
be stored as a fall-back default for predict-time use.
yta_time_interval : timedelta
The granularity of arrival-rate buckets. Required.
@@ -760,13 +903,24 @@ def fit(
prediction time can be served at predict time (snapped to the
nearest ``yta_time_interval`` boundary). Retained for backward
compatibility only.
- num_days : int
- The number of days that the train_df spans. Required.
+ num_days : int, optional
+ Divisor for **pooled** arrival rates (``arrival_rates_dict``). If omitted,
+ inferred from ``train_df``'s index as
+ ``(last_date - first_date).days + 1``. Use an explicit value when
+ the divisor should differ from that calendar span.
+ Weekday-stratified profiles always normalise using the index date
+ span for occurrence counts when fit uses
+ ``time_varying_arrival_rates_by_weekday``.
epsilon : float, default=1e-7
A small value representing acceptable error rate to enable calculation
of the maximum value of the random variable representing number of beds.
y : None, optional
Ignored, present for compatibility with scikit-learn's fit method.
+ stratify_by_weekday : bool, default=False
+ If True, fit an additional per-weekday arrival profile (``Monday=0`` …
+ ``Sunday=6``). Pass ``prediction_date`` at predict time to slice the
+ window using that profile; omit ``prediction_date`` to keep using the
+ pooled 24-hour profile only.
Returns
-------
@@ -778,7 +932,8 @@ def fit(
TypeError
If ``yta_time_interval`` is missing or not a timedelta, or if
``prediction_window`` (when supplied) is not a timedelta, or if
- ``num_days`` is missing.
+ ``num_days`` is omitted but cannot be inferred (e.g. index is not a
+ ``DatetimeIndex``).
ValueError
If ``yta_time_interval`` is not positive, or if
``prediction_window`` (when supplied) is not positive or is not
@@ -794,8 +949,6 @@ def fit(
raise ValueError("yta_time_interval must be positive")
if yta_time_interval.total_seconds() > 4 * 3600: # 4 hours in seconds
warnings.warn("yta_time_interval appears to be longer than 4 hours")
- if num_days is None:
- raise TypeError("num_days is required")
# Deprecation handling for prediction_window / prediction_times
if prediction_window is not None:
@@ -828,6 +981,7 @@ def fit(
self.yta_time_interval = yta_time_interval
self.yta_time_interval_hours = yta_time_interval.total_seconds() / 3600
self.epsilon = epsilon
+ self.stratify_by_weekday = stratify_by_weekday
# Store deprecated fit-time values as predict-time fall-backs
self._deprecated_fit_prediction_window = prediction_window
@@ -868,14 +1022,18 @@ def fit(
self.filter_dataframe(train_df, filters),
yta_time_interval,
num_days,
+ stratify_by_weekday=stratify_by_weekday,
)
else:
self.weights["unfiltered"] = self._calculate_parameters(
train_df,
yta_time_interval,
num_days,
+ stratify_by_weekday=stratify_by_weekday,
)
+ effective_metadata_days = self._resolve_num_days(train_df, num_days)
+
if self.verbose:
if normalized_times is not None:
self.logger.info(
@@ -900,7 +1058,7 @@ def fit(
self.metrics["train_set_no"] = len(train_df)
self.metrics["start_date"] = train_df.index.min().date()
self.metrics["end_date"] = train_df.index.max().date()
- self.metrics["num_days"] = num_days
+ self.metrics["num_days"] = effective_metadata_days
return self
@@ -952,6 +1110,8 @@ def predict_mean(
prediction_window: Optional[timedelta] = None,
filter_key: Optional[str] = None,
prediction_context: Optional[Dict] = None,
+ prediction_date: Optional[date] = None,
+ strict_prediction_date: bool = False,
**kwargs,
) -> float:
"""Return the Poisson mean (expected value) for a single ``weights`` key.
@@ -971,6 +1131,14 @@ def predict_mean(
prediction_context : dict, optional
Deprecated. Former nested dict mapping filter key to
``{"prediction_time": ...}``. Must contain exactly one filter key.
+ prediction_date : datetime.date, optional
+ Calendar date at the snapped ``prediction_time``. When the model was fit
+ with ``stratify_by_weekday=True``, selects per-slice weekday arrival rates;
+ otherwise ignored for λ (pooled profile is used).
+ strict_prediction_date : bool, default=False
+ If ``True``, raise an error when ``prediction_date`` is provided but
+ weekday-stratified arrival rates are unavailable for the selected key.
+ If ``False``, warn and fall back to pooled arrival rates.
**kwargs
Passed to ``_get_admission_probabilities`` (e.g. ``x1``, ``y1``, …).
@@ -989,12 +1157,13 @@ def predict_mean(
"""
prediction_window = self._resolve_prediction_window(prediction_window)
- snapped_time, filter_keys_list = (
+ snapped_time, filter_keys_list, resolved_date = (
self._prepare_prediction_targets_for_predict_mean(
*args,
prediction_time=prediction_time,
filter_key=filter_key,
prediction_context=prediction_context,
+ prediction_date=prediction_date,
)
)
@@ -1003,7 +1172,11 @@ def predict_mean(
)
for filter_key_i, _pt, arrival_rates in self._iter_prediction_inputs(
- snapped_time, prediction_window, filter_keys_list
+ snapped_time,
+ prediction_window,
+ filter_keys_list,
+ prediction_date=resolved_date,
+ strict_prediction_date=strict_prediction_date,
):
return float(np.sum(np.array(arrival_rates) * np.array(admission_probs)))
@@ -1032,6 +1205,15 @@ class DirectAdmissionPredictor(IncomingAdmissionPredictor):
time intervals and creates a single Poisson distribution, making it useful
for scenarios where immediate admission is expected or as a baseline
for comparison with more complex models.
+
+ Day-of-week stratification is supported through the inherited ``fit()``
+ interface:
+
+ - Use ``fit(..., stratify_by_weekday=True)`` to store weekday-specific
+ arrival profiles.
+ - Use ``predict(..., prediction_date=...)`` (or ``predict_mean``) to
+ activate weekday-aware slicing at predict time.
+ - If ``prediction_date`` is omitted, pooled 24-hour arrival rates are used.
"""
def predict(
@@ -1041,6 +1223,8 @@ def predict(
prediction_window: Optional[timedelta] = None,
filter_keys: Optional[Union[str, Sequence[str]]] = None,
prediction_context: Optional[Dict] = None,
+ prediction_date: Optional[date] = None,
+ strict_prediction_date: bool = False,
**kwargs,
) -> Dict:
"""Predict the number of admissions assuming 100% admission rate.
@@ -1058,6 +1242,13 @@ def predict(
has more than one key (unless using ``prediction_context``).
prediction_context : dict, optional
Deprecated nested dict API.
+ prediction_date : datetime.date, optional
+ Calendar anchor for weekday-stratified arrival rates when fitted with
+ ``stratify_by_weekday=True``. Otherwise λ uses the pooled profile only.
+ strict_prediction_date : bool, default=False
+ If ``True``, raise an error when ``prediction_date`` is provided but
+ weekday-stratified arrival rates are unavailable for a selected key.
+ If ``False``, warn and fall back to pooled arrival rates.
**kwargs
``max_value`` : int, optional — maximum PMF support.
@@ -1078,12 +1269,13 @@ def predict(
# Be lenient: ignore unrelated kwargs (e.g., parametric args passed by a higher-level API)
prediction_window = self._resolve_prediction_window(prediction_window)
- snapped_time, resolved_filter_keys = (
+ snapped_time, resolved_filter_keys, resolved_date = (
self._prepare_prediction_targets_for_predict(
*args,
prediction_time=prediction_time,
filter_keys=filter_keys,
prediction_context=prediction_context,
+ prediction_date=prediction_date,
)
)
@@ -1092,7 +1284,11 @@ def predict(
predictions = {}
for filter_key, prediction_time, arrival_rates in self._iter_prediction_inputs(
- snapped_time, prediction_window, resolved_filter_keys
+ snapped_time,
+ prediction_window,
+ resolved_filter_keys,
+ prediction_date=resolved_date,
+ strict_prediction_date=strict_prediction_date,
):
# For direct case, admission probabilities are all 1.0 (100% admission rate)
admission_probs = np.ones(len(arrival_rates))
@@ -1193,6 +1389,8 @@ def predict(
prediction_window: Optional[timedelta] = None,
filter_keys: Optional[Union[str, Sequence[str]]] = None,
prediction_context: Optional[Dict] = None,
+ prediction_date: Optional[date] = None,
+ strict_prediction_date: bool = False,
**kwargs,
) -> Dict:
"""Predict admissions using parametric curves (Poisson thinning route).
@@ -1208,6 +1406,13 @@ def predict(
``prediction_context``.
prediction_context : dict, optional
Deprecated nested dict API.
+ prediction_date : datetime.date, optional
+ Calendar anchor for weekday-stratified λ when fitted with
+ ``stratify_by_weekday=True``.
+ strict_prediction_date : bool, default=False
+ If ``True``, raise an error when ``prediction_date`` is provided but
+ weekday-stratified arrival rates are unavailable for a selected key.
+ If ``False``, warn and fall back to pooled arrival rates.
**kwargs
``x1``, ``y1``, ``x2``, ``y2`` (required); optional ``max_value``.
@@ -1235,12 +1440,13 @@ def predict(
prediction_window = self._resolve_prediction_window(prediction_window)
- snapped_time, resolved_filter_keys = (
+ snapped_time, resolved_filter_keys, resolved_date = (
self._prepare_prediction_targets_for_predict(
*args,
prediction_time=prediction_time,
filter_keys=filter_keys,
prediction_context=prediction_context,
+ prediction_date=prediction_date,
)
)
@@ -1267,7 +1473,11 @@ def predict(
max_value = kwargs.get("max_value")
for filter_key, prediction_time, arrival_rates in self._iter_prediction_inputs(
- snapped_time, prediction_window, resolved_filter_keys
+ snapped_time,
+ prediction_window,
+ resolved_filter_keys,
+ prediction_date=resolved_date,
+ strict_prediction_date=strict_prediction_date,
):
# Simplified exact route under Poisson thinning: sum_t Poisson(lambda_t * theta_t) ~ Poisson(sum_t lambda_t * theta_t)
mu = float(np.sum(np.array(arrival_rates) * np.array(theta)))
@@ -1370,6 +1580,8 @@ def fit(
num_days: Optional[int] = None,
epsilon: float = 10**-7,
y: Optional[None] = None,
+ stratify_by_weekday: bool = False,
+ *,
start_time_col: str = "arrival_datetime",
end_time_col: str = "departure_datetime",
) -> "EmpiricalIncomingAdmissionPredictor":
@@ -1388,18 +1600,20 @@ def fit(
Alternatively, both can be regular columns.
prediction_window : timedelta, optional
Deprecated. Prefer passing ``prediction_window`` to
- `predict()` / `predict_mean()` instead.
+ ``predict()`` / ``predict_mean()`` instead.
yta_time_interval : timedelta
The granularity of arrival-rate buckets. Required.
prediction_times : list, optional
Deprecated. Retained for backward compatibility only.
- num_days : int
- The number of days that the train_df spans. Required.
+ num_days : int, optional
+ Same as :meth:`IncomingAdmissionPredictor.fit`.
epsilon : float, default=1e-7
A small value representing acceptable error rate to enable calculation
of the maximum value of the random variable representing number of beds.
y : None, optional
Ignored, present for compatibility with scikit-learn's fit method.
+ stratify_by_weekday : bool, default=False
+ Same as ``IncomingAdmissionPredictor.fit``.
start_time_col : str, default='arrival_datetime'
Name of the column containing the start time (e.g., arrival time).
Expected to be the DataFrame index, but can also be a regular column.
@@ -1439,6 +1653,7 @@ def fit(
num_days=num_days,
epsilon=epsilon,
y=y,
+ stratify_by_weekday=stratify_by_weekday,
)
if self.verbose:
@@ -1555,6 +1770,8 @@ def predict(
prediction_window: Optional[timedelta] = None,
filter_keys: Optional[Union[str, Sequence[str]]] = None,
prediction_context: Optional[Dict] = None,
+ prediction_date: Optional[date] = None,
+ strict_prediction_date: bool = False,
**kwargs,
) -> Dict:
"""Predict admissions using empirical survival curves.
@@ -1570,6 +1787,13 @@ def predict(
``prediction_context``.
prediction_context : dict, optional
Deprecated nested dict API.
+ prediction_date : datetime.date, optional
+ Calendar anchor for weekday-stratified λ when fitted with
+ ``stratify_by_weekday=True``.
+ strict_prediction_date : bool, default=False
+ If ``True``, raise an error when ``prediction_date`` is provided but
+ weekday-stratified arrival rates are unavailable for a selected key.
+ If ``False``, warn and fall back to pooled arrival rates.
**kwargs
Optional ``max_value``.
@@ -1592,12 +1816,13 @@ def predict(
prediction_window = self._resolve_prediction_window(prediction_window)
- snapped_time, resolved_filter_keys = (
+ snapped_time, resolved_filter_keys, resolved_date = (
self._prepare_prediction_targets_for_predict(
*args,
prediction_time=prediction_time,
filter_keys=filter_keys,
prediction_context=prediction_context,
+ prediction_date=prediction_date,
)
)
@@ -1610,7 +1835,11 @@ def predict(
)
for filter_key, prediction_time, arrival_rates in self._iter_prediction_inputs(
- snapped_time, prediction_window, resolved_filter_keys
+ snapped_time,
+ prediction_window,
+ resolved_filter_keys,
+ prediction_date=resolved_date,
+ strict_prediction_date=strict_prediction_date,
):
mv = (
max_value
diff --git a/src/patientflow/train/incoming_admission_predictor.py b/src/patientflow/train/incoming_admission_predictor.py
index 9e7c1330..b33fa1b8 100644
--- a/src/patientflow/train/incoming_admission_predictor.py
+++ b/src/patientflow/train/incoming_admission_predictor.py
@@ -8,7 +8,7 @@
The logic in this module is specific to the implementation at UCLH.
"""
-from typing import List
+from typing import List, Optional
import pandas as pd
from pandas import DataFrame
from datetime import timedelta
@@ -68,7 +68,7 @@ def train_parametric_admission_predictor(
prediction_window: timedelta,
yta_time_interval: timedelta,
prediction_times: List[float],
- num_days: int,
+ num_days: Optional[int] = None,
epsilon: float = 10e-7,
) -> ParametricIncomingAdmissionPredictor:
"""
@@ -89,8 +89,9 @@ def train_parametric_admission_predictor(
prediction_times : List[float]
Kept in the signature for backward compatibility. No longer forwarded
to the underlying model.
- num_days : int
- Number of days to consider.
+ num_days : int, optional
+ Divisor for pooled arrival rates; if omitted, inferred from ``train_yta``'s index
+ (same as :meth:`~patientflow.predictors.incoming_admission_predictors.IncomingAdmissionPredictor.fit`).
epsilon : float, optional
Epsilon parameter for model, by default 10e-7.
diff --git a/tests/test_aggregate.py b/tests/test_aggregate.py
index 1b5b3c6b..23c46811 100644
--- a/tests/test_aggregate.py
+++ b/tests/test_aggregate.py
@@ -15,6 +15,7 @@
import pandas as pd
import numpy as np
from datetime import date, datetime, timezone, timedelta
+from unittest.mock import MagicMock
from patientflow.aggregate import (
BernoulliGeneratingFunction,
@@ -478,3 +479,45 @@ def test_get_prob_dist_using_survival_curve(self):
self.assertIsInstance(result[dt]["agg_predicted"], pd.DataFrame)
self.assertIn("agg_proba", result[dt]["agg_predicted"].columns)
self.assertIsInstance(result[dt]["agg_observed"], int)
+
+ def test_get_prob_dist_using_survival_curve_passes_prediction_date(self):
+ """Snapshot date should be forwarded as prediction_date on model.predict."""
+ test_df = pd.DataFrame(
+ {
+ "arrival_datetime": [
+ datetime(2023, 1, 1, 10, 15, tzinfo=timezone.utc),
+ datetime(2023, 1, 2, 10, 30, tzinfo=timezone.utc),
+ ],
+ "departure_datetime": [
+ datetime(2023, 1, 1, 12, 15, tzinfo=timezone.utc),
+ datetime(2023, 1, 2, 14, 30, tzinfo=timezone.utc),
+ ],
+ }
+ )
+
+ # Mock just enough predictor interface for this helper.
+ model = MagicMock()
+ model.survival_df = pd.DataFrame(
+ {"time_hours": [0.0, 1.0], "survival_probability": [1.0, 0.9]}
+ )
+ model.predict.return_value = {
+ "unfiltered": pd.DataFrame({"agg_proba": [0.5, 0.5]}, index=[0, 1])
+ }
+
+ snapshot_dates = [date(2023, 1, 1), date(2023, 1, 2)]
+ _ = get_prob_dist_using_survival_curve(
+ snapshot_dates=snapshot_dates,
+ test_visits=test_df,
+ category="unfiltered",
+ prediction_time=(10, 0),
+ prediction_window=timedelta(hours=8),
+ start_time_col="arrival_datetime",
+ end_time_col="departure_datetime",
+ model=model,
+ )
+
+ self.assertEqual(model.predict.call_count, 2)
+ called_prediction_dates = [
+ call.kwargs["prediction_date"] for call in model.predict.call_args_list
+ ]
+ self.assertEqual(called_prediction_dates, snapshot_dates)
diff --git a/tests/test_arrival_rates.py b/tests/test_arrival_rates.py
index 1c2d6dee..0c4118d4 100644
--- a/tests/test_arrival_rates.py
+++ b/tests/test_arrival_rates.py
@@ -6,11 +6,14 @@
# Import the functions to test
from patientflow.calculate.arrival_rates import (
time_varying_arrival_rates,
+ time_varying_arrival_rates_by_weekday,
time_varying_arrival_rates_lagged,
+ weekday_occurrences_in_span,
admission_probabilities,
weighted_arrival_rates,
unfettered_demand_by_hour,
)
+from datetime import date
class TestArrivalRates(unittest.TestCase):
@@ -163,6 +166,20 @@ def test_unfettered_demand_by_hour_input_validation(self):
self.test_df, self.x1, self.y1, self.x2, self.y2, yta_time_interval=43
)
+ def test_weekday_occurrences_in_span(self):
+ counts = weekday_occurrences_in_span(date(2024, 1, 1), date(2024, 1, 7))
+ self.assertEqual(sum(counts), 7)
+ self.assertEqual(counts[0], 1)
+
+ def test_time_varying_arrival_rates_by_weekday(self):
+ rates_by_d = time_varying_arrival_rates_by_weekday(
+ self.test_df, self.yta_time_interval
+ )
+ self.assertEqual(len(rates_by_d), 7)
+ for d in range(7):
+ self.assertIsInstance(rates_by_d[d], OrderedDict)
+ self.assertEqual(len(rates_by_d[d]), 24)
+
def test_edge_cases(self):
"""Test edge cases and boundary conditions."""
# Test with empty DataFrame
diff --git a/tests/test_incoming_admission_predictors.py b/tests/test_incoming_admission_predictors.py
index bd9da2df..ee2a3c35 100644
--- a/tests/test_incoming_admission_predictors.py
+++ b/tests/test_incoming_admission_predictors.py
@@ -1,8 +1,10 @@
import unittest
import warnings
+from copy import deepcopy
+
import numpy as np
import pandas as pd
-from datetime import datetime, timedelta
+from datetime import date, datetime, timedelta
from patientflow.predictors.incoming_admission_predictors import (
ParametricIncomingAdmissionPredictor,
@@ -154,7 +156,7 @@ def test_parametric_predictor_fit(self):
self.assertEqual(len(predictor.weights[key]["arrival_rates_dict"]), 48)
def test_parametric_predictor_fit_validation(self):
- """yta_time_interval and num_days are required; types are validated."""
+ """yta_time_interval is required; num_days optional; types are validated."""
predictor = ParametricIncomingAdmissionPredictor(filters=self.filters)
with self.assertRaises(TypeError):
@@ -167,19 +169,35 @@ def test_parametric_predictor_fit_validation(self):
num_days=self.num_days,
)
- with self.assertRaises(TypeError):
+ with self.assertRaises(ValueError):
predictor.fit(
self.test_df,
- yta_time_interval=self.yta_time_interval,
- ) # missing num_days
+ yta_time_interval=timedelta(seconds=0),
+ num_days=self.num_days,
+ )
with self.assertRaises(ValueError):
predictor.fit(
self.test_df,
- yta_time_interval=timedelta(seconds=0),
- num_days=self.num_days,
+ yta_time_interval=self.yta_time_interval,
+ num_days=0,
)
+ with self.assertRaises(TypeError):
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days="31",
+ )
+
+ def test_fit_infers_num_days_when_omitted(self):
+ predictor = ParametricIncomingAdmissionPredictor(filters=self.filters)
+ predictor.fit(self.test_df, yta_time_interval=self.yta_time_interval)
+ expected = (
+ self.test_df.index.max().date() - self.test_df.index.min().date()
+ ).days + 1
+ self.assertEqual(predictor.metrics["num_days"], expected)
+
def test_parametric_predictor_predict(self):
predictor = ParametricIncomingAdmissionPredictor(filters=self.filters)
self._fit_new_api(predictor)
@@ -772,6 +790,189 @@ def test_predict_mean_requires_filter_key_when_multiple_services(self):
)
self.assertIn("filter_key", str(cm.exception).lower())
+ # ------------------------------------------------------------------
+ # Weekday-stratified arrival rates (λ) and prediction_date
+ # ------------------------------------------------------------------
+ def test_stratify_by_weekday_stores_profiles(self):
+ predictor = ParametricIncomingAdmissionPredictor(filters=self.filters)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=True,
+ )
+ for key in self.filters:
+ self.assertIn("arrival_rates_by_weekday", predictor.weights[key])
+ self.assertEqual(len(predictor.weights[key]["arrival_rates_by_weekday"]), 7)
+
+ def test_identical_weekday_profiles_match_pooled_predict_mean(self):
+ predictor = DirectAdmissionPredictor(filters=None)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=True,
+ )
+ pooled = predictor.weights["unfiltered"]["arrival_rates_dict"]
+ for d in range(7):
+ predictor.weights["unfiltered"]["arrival_rates_by_weekday"][d] = deepcopy(
+ pooled
+ )
+
+ mean_no_date = predictor.predict_mean(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ )
+ mean_with_date = predictor.predict_mean(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ prediction_date=date(2024, 1, 15),
+ )
+ self.assertAlmostEqual(mean_no_date, mean_with_date, places=6)
+
+ def test_prediction_date_changes_mean_when_weekdays_differ(self):
+ """Synthetic Mondays-only arrivals at 10:00 → Tuesday anchor gives zero λ."""
+ times = [
+ pd.Timestamp(datetime(2024, 1, 1) + timedelta(weeks=w)).replace(
+ hour=10, minute=0, second=0, microsecond=0
+ )
+ for w in range(10)
+ ]
+ df = pd.DataFrame({"k": [1] * len(times)}, index=pd.DatetimeIndex(times))
+
+ predictor = DirectAdmissionPredictor(filters=None)
+ predictor.fit(
+ df,
+ yta_time_interval=timedelta(hours=1),
+ num_days=80,
+ stratify_by_weekday=True,
+ )
+
+ m_mon = predictor.predict_mean(
+ prediction_time=(10, 0),
+ prediction_window=timedelta(hours=1),
+ prediction_date=date(2024, 1, 1),
+ )
+ m_tue = predictor.predict_mean(
+ prediction_time=(10, 0),
+ prediction_window=timedelta(hours=1),
+ prediction_date=date(2024, 1, 2),
+ )
+ self.assertGreater(m_mon, 0.0)
+ self.assertEqual(m_tue, 0.0)
+
+ def test_cross_midnight_uses_distinct_weekday_rates(self):
+ rows = []
+ for w in range(8):
+ fri = datetime(2024, 1, 5) + timedelta(weeks=w)
+ sat = fri + timedelta(days=1)
+ rows.append(pd.Timestamp(fri.year, fri.month, fri.day, 23, 30))
+ rows.extend([pd.Timestamp(sat.year, sat.month, sat.day, 0, 30)] * 10)
+ df = pd.DataFrame(index=pd.DatetimeIndex(sorted(rows)))
+
+ predictor = DirectAdmissionPredictor(filters=None)
+ predictor.fit(
+ df,
+ yta_time_interval=timedelta(minutes=30),
+ num_days=60,
+ stratify_by_weekday=True,
+ )
+ _, _, rates = next(
+ predictor._iter_prediction_inputs(
+ (23, 30),
+ timedelta(hours=2),
+ ["unfiltered"],
+ prediction_date=date(2024, 1, 5),
+ )
+ )
+ self.assertEqual(len(rates), 4)
+ # First slice: Friday night; third slice: Saturday 00:30 → higher λ
+ self.assertGreater(float(rates[2]), float(rates[0]))
+
+ def test_multi_filter_keys_with_prediction_date(self):
+ predictor = ParametricIncomingAdmissionPredictor(filters=self.filters)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=True,
+ )
+ predictions = predictor.predict(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ filter_keys=["medical", "surgical"],
+ prediction_date=date(2024, 1, 8),
+ x1=2,
+ y1=0.5,
+ x2=4,
+ y2=0.9,
+ )
+ self.assertIn("medical", predictions)
+ self.assertIn("surgical", predictions)
+
+ def test_prediction_date_missing_weekday_profiles_warns_and_falls_back(self):
+ predictor = DirectAdmissionPredictor(filters=None)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=False,
+ )
+ with self.assertWarns(UserWarning):
+ mean = predictor.predict_mean(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ prediction_date=date(2024, 1, 8),
+ )
+ self.assertIsInstance(mean, float)
+
+ def test_prediction_date_missing_weekday_profiles_strict_raises(self):
+ predictor = DirectAdmissionPredictor(filters=None)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=False,
+ )
+ with self.assertRaises(ValueError) as cm:
+ predictor.predict_mean(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ prediction_date=date(2024, 1, 8),
+ strict_prediction_date=True,
+ )
+ self.assertIn("arrival_rates_by_weekday", str(cm.exception))
+
+ def test_legacy_prediction_context_with_prediction_date(self):
+ predictor = DirectAdmissionPredictor(filters=self.filters)
+ predictor.fit(
+ self.test_df,
+ yta_time_interval=self.yta_time_interval,
+ num_days=self.num_days,
+ stratify_by_weekday=True,
+ )
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore", DeprecationWarning)
+ p1 = predictor.predict(
+ prediction_context={
+ "medical": {
+ "prediction_time": (8, 0),
+ "prediction_date": date(2024, 1, 1),
+ }
+ },
+ prediction_window=self.prediction_window,
+ )
+ p2 = predictor.predict(
+ prediction_time=(8, 0),
+ prediction_window=self.prediction_window,
+ filter_keys="medical",
+ prediction_date=date(2024, 1, 1),
+ )
+ np.testing.assert_array_almost_equal(
+ p1["medical"]["agg_proba"].values,
+ p2["medical"]["agg_proba"].values,
+ )
+
if __name__ == "__main__":
unittest.main()