From 4ff3e69dfb5621df876d35efd54a783dd645cb37 Mon Sep 17 00:00:00 2001 From: W Potosnak <willa464@hotmail.com> Date: Tue, 19 Apr 2022 23:40:04 -0400 Subject: [PATCH] updates v2 --- auton_survival/estimators.py | 135 +++-- auton_survival/metrics.py | 10 +- auton_survival/models/cmhe/__init__.py | 16 +- auton_survival/models/cph/__init__.py | 21 +- auton_survival/models/dcm/__init__.py | 12 +- auton_survival/models/dsm/__init__.py | 19 + auton_survival/phenotyping.py | 46 +- examples/Demo of CMHE on Synthetic Data.ipynb | 478 +++--------------- .../Phenotyping Censored Time-to-Events.ipynb | 174 ++++--- ...vival Regression with Auton-Survival.ipynb | 238 ++++----- 10 files changed, 486 insertions(+), 663 deletions(-) diff --git a/auton_survival/estimators.py b/auton_survival/estimators.py index 39b4758..5e88199 100644 --- a/auton_survival/estimators.py +++ b/auton_survival/estimators.py @@ -55,7 +55,7 @@ def _get_valid_idx(n, size, random_seed): return vidx -def _fit_dcm(features, outcomes, random_seed, **hyperparams): +def _fit_dcm(features, outcomes, vsize, val_data, random_seed, **hyperparams): r"""Fit the Deep Cox Mixtures (DCM) [1] model to a given dataset. @@ -113,12 +113,13 @@ def _fit_dcm(features, outcomes, random_seed, **hyperparams): gamma=gamma, smoothing_factor=smoothing_factor, random_seed=random_seed) - model.fit(features.values, outcomes.time.values, outcomes.event.values, - iters=epochs, batch_size=batch_size, learning_rate=learning_rate) + model.fit(x=features, t=outcomes.time, e=outcomes.event, vsize=vsize, + val_data=val_data, iters=epochs, batch_size=batch_size, + learning_rate=learning_rate) return model -def _fit_dcph(features, outcomes, random_seed, **hyperparams): +def _fit_dcph(features, outcomes, vsize, val_data, random_seed, **hyperparams): """Fit a Deep Cox Proportional Hazards Model/Farragi Simon Network [1,2] model to a given dataset. @@ -166,9 +167,9 @@ def _fit_dcph(features, outcomes, random_seed, **hyperparams): model = DeepCoxPH(layers=layers, random_seed=random_seed) - model.fit(features.values, outcomes.time.values, outcomes.event.values, - iters=epochs, learning_rate=learning_rate, batch_size=bs, - optimizer="Adam") + model.fit(x=features, t=outcomes.time, e=outcomes.event, vsize=vsize, + val_data=val_data, iters=epochs, batch_size=batch_size, + learning_rate=learning_rate) return model @@ -311,7 +312,7 @@ def _fit_rsf(features, outcomes, random_seed, **hyperparams): return rsf -def _fit_dsm(features, outcomes, random_seed, **hyperparams): +def _fit_dsm(features, outcomes, vsize, val_data, random_seed, **hyperparams): """Fit the Deep Survival Machines (DSM) [1] model to a given dataset. @@ -339,13 +340,18 @@ def _fit_dsm(features, outcomes, random_seed, **hyperparams): Options include: - 'layers' : list A list of integers describing the dimensionality of each hidden layer. - - 'iters' : int, default=10 - The maximum number of training iterations on the training dataset. - 'distribution' : str, default='Weibull' Choice of the underlying survival distributions. Options include: 'Weibull' and 'LogNormal'. - 'temperature' : float, default=1.0 The value with which to rescale the logits for the gate. + - `batch_size` : int, default=100 + Learning is performed on mini-batches of input data. This parameter + specifies the size of each mini-batch. + - `lr` : float, default=1e-3 + Learning rate for the 'Adam' optimizer. + - `epochs` : int, default=1 + Number of complete passes through the training data. Returns ----------- @@ -357,19 +363,19 @@ def _fit_dsm(features, outcomes, random_seed, **hyperparams): k = hyperparams.get("k", 3) layers = hyperparams.get("layers", [100]) - iters = hyperparams.get("iters", 10) + epochs = hyperparams.get("iters", 10) distribution = hyperparams.get("distribution", "Weibull") temperature = hyperparams.get("temperature", 1.0) + lr = hyperparams.get("lr", 1e-3) + bs = hyperparams.get("batch_size", 1.0) model = DeepSurvivalMachines(k=k, layers=layers, distribution=distribution, temp=temperature, random_seed=random_seed) - model.fit(features.values, - outcomes['time'].values, - outcomes['event'].values, - iters=iters) + model.fit(x=features, t=outcomes.time, e=outcomes.event, vsize=vsize, + val_data=val_data, iters=epochs, learning_rate=lr, batch_size=bs) return model @@ -532,25 +538,32 @@ def __init__(self, model, random_seed=0, **hyperparams): self.random_seed = random_seed self.fitted = False - def fit(self, features, outcomes, - weights=None, resample_size=1.0): + def fit(self, features, outcomes, vsize=None, val_data=None, + weights_train=None, weights_val=None, resample_size=1.0): """This method is used to train an instance of the survival model. Parameters ----------- - features: pd.DataFrame + features : pd.DataFrame a pandas dataframe with rows corresponding to individual samples and columns as covariates. outcomes : pd.DataFrame a pandas dataframe with columns 'time' and 'event'. - weights: list or np.array + vsize : float + Amount of data to set aside as the validation set. + Not applicable to 'rsf' and 'cph' models. + val_data : tuple + A tuple of the validation dataset. + If passed vsize is ignored. + Not applicable to 'rsf' and 'cph' models. + weights_train : list or np.array a list or numpy array of importance weights for each sample. - resample_size: float + weights_val : list or np.array + a list or numpy array of importance weights for each validation set sample. + Ignored if val_data is None. + resample_size : float a float between 0 and 1 that controls the size of the resampled dataset. - weights_clip: float - a float that controls the minimum and maximum importance weight. - (To reduce estimator variance.) Returns -------- @@ -558,40 +571,74 @@ def fit(self, features, outcomes, Trained instance of a survival model. """ - - if weights is not None: - assert len(weights) == features.shape[0], "Size of passed weights \ - must match size of training data." - assert (weights>0.).any(), "All weights must be positive." - # assert ((weights>0.0)&(weights<=1.0)).all(), "Weights must be in the range (0,1]." - # weights[weights>(1-weights_clip)] = 1-weights_clip - # weights[weights<(weights_clip)] = weights_clip + + if (self.model=='cph') | (self.model=='rsf'): + if (vsize is not None) | (val_data is not None): + raise Exception("'vsize' and 'val_data' should be None for 'cph' and 'rsf' models.") + + if weights_train is not None: + assert len(weights_train) == features.shape[0], "Size of passed weights \ +must match size of training data." + assert (weights_train>0.).any(), "All weights must be positive." + assert (vsize is not None) | (val_data is not None), "'vsize' or 'val_data' must \ +be specified if weights are used." + + weights = pd.Series(weights, index=data.index) data = features.join(outcomes) - data_resampled = data.sample(weights = weights, - frac = resample_size, - replace = True, - random_state = self.random_seed) - features = data_resampled[features.columns] - outcomes = data_resampled[outcomes.columns] - + + if val_data is not None: + data_train = data + data_val = val_data + else: + data_train = data.sample(frac=1-vsize, random_state=self.random_seed) + data_val = data[~data.index.isin(data_train.index)] + weights_train = weights[data_train.index] + weights_val = weights[data_val.index] + + data_train_resampled = data_train.sample(weights = weights_train, + frac = resample_size, + replace = True, + random_state = self.random_seed) + + data_val_resampled = data_val.sample(weights = weights_val, + frac = resample_size, + replace = True, + random_state = self.random_seed) + + features = data_train_resampled[features.columns] + outcomes = data_train_resampled[outcomes.columns] + + val_data = (data_val_resampled[features.columns], + data_val_resampled[outcomes.columns]) + if self.model == 'cph': - self._model = _fit_cph(features, outcomes, self.random_seed, + self._model = _fit_cph(features, outcomes, + self.random_seed, **self.hyperparams) elif self.model == 'rsf': - self._model = _fit_rsf(features, outcomes, self.random_seed, + self._model = _fit_rsf(features, outcomes, + self.random_seed, **self.hyperparams) elif self.model == 'dsm': - self._model = _fit_dsm(features, outcomes, self.random_seed, + self._model = _fit_dsm(features, outcomes, + vsize, val_data, + self.random_seed, **self.hyperparams) elif self.model == 'dcph': - self._model = _fit_dcph(features, outcomes, self.random_seed, + self._model = _fit_dcph(features, outcomes, + vsize, val_data, + self.random_seed, **self.hyperparams) elif self.model == 'dcm': - self._model = _fit_dcm(features, outcomes, self.random_seed, + self._model = _fit_dcm(features, outcomes, + vsize, val_data, + self.random_seed, **self.hyperparams) - else : raise NotImplementedError() + else: + raise NotImplementedError() + self.fitted = True return self diff --git a/auton_survival/metrics.py b/auton_survival/metrics.py index b22b341..25552f0 100644 --- a/auton_survival/metrics.py +++ b/auton_survival/metrics.py @@ -574,9 +574,13 @@ def func(x, y, x1, y1, x2, y2): tar_diff = [] for risk in risks: - treated_tar = interp_x(treated_risk, treated_horizons, risk) - control_tar = interp_x(control_risk, control_horizons, risk) - tar_diff.append(treated_tar - control_tar) + if risk == 1: + tar_diff.append((treated_horizons[treated_risk==1] - + control_horizons[control_risk==1])[0]) + else: + treated_tar = interp_x(treated_risk, treated_horizons, risk) + control_tar = interp_x(control_risk, control_horizons, risk) + tar_diff.append(treated_tar - control_tar) return np.array(tar_diff) diff --git a/auton_survival/models/cmhe/__init__.py b/auton_survival/models/cmhe/__init__.py index 544279b..4735c9e 100644 --- a/auton_survival/models/cmhe/__init__.py +++ b/auton_survival/models/cmhe/__init__.py @@ -76,6 +76,7 @@ """ import numpy as np +import pandas as pd import torch from .cmhe_torch import DeepCMHETorch @@ -139,14 +140,27 @@ def __call__(self): print("Hidden Layers:", self.layers) def _preprocess_test_data(self, x, a=None): + if isinstance(x, pd.DataFrame): + x = x.values if a is not None: + if isinstance(a, (pd.Series, pd.DataFrame)): + a = a.values return torch.from_numpy(x).float(), torch.from_numpy(a).float() else: return torch.from_numpy(x).float() def _preprocess_training_data(self, x, t, e, a, vsize, val_data, random_seed): - + + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + if isinstance(a, (pd.Series, pd.DataFrame)): + a = a.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) diff --git a/auton_survival/models/cph/__init__.py b/auton_survival/models/cph/__init__.py index db5c765..e9a1cf0 100644 --- a/auton_survival/models/cph/__init__.py +++ b/auton_survival/models/cph/__init__.py @@ -25,6 +25,7 @@ import torch import numpy as np +import pandas as pd from .dcph_torch import DeepCoxPHTorch, DeepRecurrentCoxPHTorch from .dcph_utilities import train_dcph, predict_survival @@ -84,10 +85,19 @@ def __call__(self): print("Hidden Layers:", self.layers) def _preprocess_test_data(self, x): + if isinstance(x, pd.DataFrame): + x = x.values return torch.from_numpy(x).float() def _preprocess_training_data(self, x, t, e, vsize, val_data, random_seed): - + + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) @@ -276,11 +286,20 @@ def _gen_torch_model(self, inputdim, optimizer): optimizer=optimizer, typ=self.typ) def _preprocess_test_data(self, x): + if isinstance(x, pd.DataFrame): + x = x.values return torch.from_numpy(_get_padded_features(x)).float() def _preprocess_training_data(self, x, t, e, vsize, val_data, random_seed): """RNNs require different preprocessing for variable length sequences""" + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) np.random.shuffle(idx) diff --git a/auton_survival/models/dcm/__init__.py b/auton_survival/models/dcm/__init__.py index 939d56e..84d9026 100644 --- a/auton_survival/models/dcm/__init__.py +++ b/auton_survival/models/dcm/__init__.py @@ -52,6 +52,7 @@ import torch import numpy as np +import pandas as pd from .dcm_torch import DeepCoxMixturesTorch from .dcm_utilities import train_dcm, predict_survival, predict_latent_z @@ -112,10 +113,19 @@ def __call__(self): print("Hidden Layers:", self.layers) def _preprocess_test_data(self, x): + if isinstance(x, pd.DataFrame): + x = x.values return torch.from_numpy(x).float() def _preprocess_training_data(self, x, t, e, vsize, val_data, random_seed): - + + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) np.random.shuffle(idx) diff --git a/auton_survival/models/dsm/__init__.py b/auton_survival/models/dsm/__init__.py index 3045525..383b859 100644 --- a/auton_survival/models/dsm/__init__.py +++ b/auton_survival/models/dsm/__init__.py @@ -169,6 +169,7 @@ import torch import numpy as np +import pandas as pd __pdoc__ = {} __pdoc__["DeepSurvivalMachines.fit"] = True @@ -304,10 +305,19 @@ def compute_nll(self, x, t, e): return loss def _preprocess_test_data(self, x): + if isinstance(x, pd.DataFrame): + x = x.values return torch.from_numpy(x) def _preprocess_training_data(self, x, t, e, vsize, val_data, random_seed): + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) np.random.shuffle(idx) @@ -535,11 +545,20 @@ def _gen_torch_model(self, inputdim, optimizer, risks): risks=risks) def _preprocess_test_data(self, x): + if isinstance(x, pd.DataFrame): + x = x.values return torch.from_numpy(_get_padded_features(x)) def _preprocess_training_data(self, x, t, e, vsize, val_data, random_seed): """RNNs require different preprocessing for variable length sequences""" + if isinstance(x, pd.DataFrame): + x = x.values + if isinstance(t, (pd.Series, pd.DataFrame)): + t = t.values + if isinstance(e, (pd.Series, pd.DataFrame)): + e = e.values + idx = list(range(x.shape[0])) np.random.seed(random_seed) np.random.shuffle(idx) diff --git a/auton_survival/phenotyping.py b/auton_survival/phenotyping.py index 08b9513..94b1ea2 100644 --- a/auton_survival/phenotyping.py +++ b/auton_survival/phenotyping.py @@ -120,7 +120,7 @@ def fit(self, features): self.fitted = True return self - def phenotype(self, features): + def predict(self, features): """Phenotype out of sample test data. @@ -185,7 +185,7 @@ def _rename(self, phenotypes): renamed.append(" & ".join(row)) return renamed - def fit_phenotype(self, features): + def fit_predict(self, features): """Fit and perform phenotyping on a given dataset. @@ -204,7 +204,7 @@ def fit_phenotype(self, features): """ - return self.fit(features).phenotype(features) + return self.fit(features).predict(features) class ClusteringPhenotyper(Phenotyper): @@ -370,11 +370,10 @@ def _predict_proba_kmeans(self, features): return probs - def phenotype(self, features): + def predict_proba(self, features): - """Peform dimensionality reduction, clustering, and create phenotypes - based on the probability estimates of sample association to learned - clusters, or subgroups. + """Peform dimensionality reduction, clustering, and estimate probability + estimates of sample association to learned clusters, or subgroups. Parameters ----------- @@ -400,7 +399,36 @@ def phenotype(self, features): elif self.clustering_method == 'kmeans': return self._predict_proba_kmeans(features) - def fit_phenotype(self, features): + def predict(self, features): + + """Peform dimensionality reduction, clustering, and extract phenogroups + that maximize the probability estimates of sample association to + specific learned clusters, or subgroups. + + Parameters + ----------- + features: pd.DataFrame + a pandas dataframe with rows corresponding to individual samples + and columns as covariates. + + Returns + ----------- + np.array: + a numpy array of phenogroup labels + + """ + + assert self.fitted, "Phenotyper must be `fitted` before calling \ + `phenotype`." + + if self.dim_red_method is not None: + features = self.dim_red_model.transform(features) + if self.clustering_method == 'gmm': + return np.argmax(self.clustering_model.predict_proba(features), axis=1) + elif self.clustering_method == 'kmeans': + return np.argmax(self._predict_proba_kmeans(features), axis=1) + + def fit_predict(self, features): """Fit and perform phenotyping on a given dataset. @@ -418,7 +446,7 @@ def fit_phenotype(self, features): """ - return self.fit(features).phenotype(features) + return self.fit(features).predict(features) class SurvivalVirtualTwinsPhenotyper(Phenotyper): diff --git a/examples/Demo of CMHE on Synthetic Data.ipynb b/examples/Demo of CMHE on Synthetic Data.ipynb index 0b284db..a9694cb 100644 --- a/examples/Demo of CMHE on Synthetic Data.ipynb +++ b/examples/Demo of CMHE on Synthetic Data.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "5ded7b8d", + "id": "19a98143", "metadata": {}, "source": [ "# Deep Cox Mixtures with Heterogenous Effects (CMHE) Demo\n", @@ -31,8 +31,7 @@ "### 3. [Counterfactual Phenotyping](#phenotyping)\n", "\n", "#### 3.1 [Phenotyping with CMHE](#phenocmhe)\n", - "#### 3.2 [Phenotyping with Virtual Twins Survival Regression](#vtsp)\n", - "#### 3.3 [Comparison with Clustering](#clustering)\n", + "#### 3.2 [Comparison with Clustering](#clustering)\n", "\n", "\n", "### 4. [Factual Regression](#regression)\n", @@ -44,7 +43,7 @@ }, { "cell_type": "markdown", - "id": "929af912", + "id": "c528f251", "metadata": {}, "source": [ "<a id='introduction'></a>\n", @@ -74,7 +73,7 @@ }, { "cell_type": "markdown", - "id": "ec3e5eed", + "id": "170c8c95", "metadata": {}, "source": [ "<a id=\"syndata\"></a>\n", @@ -84,8 +83,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "4522fb58", + "execution_count": 1, + "id": "080af3d4", "metadata": {}, "outputs": [], "source": [ @@ -101,7 +100,7 @@ }, { "cell_type": "markdown", - "id": "676d208e", + "id": "072478b4", "metadata": {}, "source": [ "<a id=\"gensyndata\"></a>\n", @@ -110,7 +109,7 @@ }, { "cell_type": "markdown", - "id": "6b126859", + "id": "a0ed2046", "metadata": {}, "source": [ "1. Features $x_1$, $x_2$ and the base survival phenotypes $Z$ are sampled from $\\texttt{scikit-learn's make_blobs(...)}$ function which generates isotropic Gaussian blobs:\n", @@ -129,8 +128,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "45d328ce", + "execution_count": 2, + "id": "2cd1faa3", "metadata": {}, "outputs": [ { @@ -240,7 +239,7 @@ "4 0.748930 " ] }, - "execution_count": 9, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -255,7 +254,7 @@ }, { "cell_type": "markdown", - "id": "72b3fb0d", + "id": "ebd61f36", "metadata": {}, "source": [ "<a id=\"vissyndata\"></a>\n", @@ -264,8 +263,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "2838615d", + "execution_count": 3, + "id": "c3140fcb", "metadata": {}, "outputs": [ { @@ -285,7 +284,7 @@ }, { "cell_type": "markdown", - "id": "b7bb0f4a", + "id": "98862424", "metadata": {}, "source": [ "<a id=\"splitdata\"></a>\n", @@ -294,8 +293,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "e58d6786", + "execution_count": 4, + "id": "9c6a373f", "metadata": {}, "outputs": [ { @@ -349,8 +348,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "id": "2e419169", + "execution_count": 5, + "id": "36c6724c", "metadata": {}, "outputs": [], "source": [ @@ -376,7 +375,7 @@ }, { "cell_type": "markdown", - "id": "b1d39c9c", + "id": "3ad5dff2", "metadata": {}, "source": [ "<a id=\"phenotyping\"></a>\n", @@ -385,7 +384,7 @@ }, { "cell_type": "markdown", - "id": "8f947f28", + "id": "10160511", "metadata": {}, "source": [ "<a id=\"phenocmhe\"></a>\n", @@ -394,8 +393,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "id": "755c82c0", + "execution_count": 6, + "id": "e79b1360", "metadata": {}, "outputs": [], "source": [ @@ -404,10 +403,10 @@ "g = 2 # number of underlying treatment effect phenotypes.\n", "layers = [50, 50] # number of neurons in each hidden layer.\n", "\n", - "random_seed =10\n", + "random_seed = 10\n", "iters = 100 # number of training epochs\n", "learning_rate = 0.01\n", - "batch_size = 128 \n", + "batch_size = 256 \n", "vsize = 0.15 # size of the validation split\n", "patience = 3\n", "optimizer = \"Adam\"" @@ -415,8 +414,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "id": "267164ba", + "execution_count": 7, + "id": "cc6cc7af", "metadata": { "scrolled": true }, @@ -427,11 +426,11 @@ "text": [ " 0%| | 0/100 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\cmhe\\cmhe_utilities.py:121: RuntimeWarning: invalid value encountered in log\n", " probs.append(np.log(event_probs))\n", - "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\cmhe\\cmhe_utilities.py:71: RuntimeWarning: invalid value encountered in power\n", + " 1%|▊ | 1/100 [00:00<00:26, 3.68it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\cmhe\\cmhe_utilities.py:71: RuntimeWarning: invalid value encountered in power\n", " return spl(ts)**risks\n", "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\cmhe\\cmhe_utilities.py:66: RuntimeWarning: invalid value encountered in power\n", " s0ts = (-risks)*(spl(ts)**(risks-1))\n", - " 58%|██████████████████████████████████████████████▉ | 58/100 [00:54<00:39, 1.06it/s]\n" + " 38%|██████████████████████████████▊ | 38/100 [00:11<00:18, 3.42it/s]\n" ] } ], @@ -451,16 +450,16 @@ }, { "cell_type": "code", - "execution_count": 21, - "id": "020df796", + "execution_count": 8, + "id": "f389197f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Treatment Effect for the 2 groups: tensor([-0.5310, 0.3396])\n", - "Distribution of individuals in each treatement phenotype in the training data: [1523 2376]\n", + "Treatment Effect for the 2 groups: tensor([-0.4990, 0.4221])\n", + "Distribution of individuals in each treatement phenotype in the training data: [1878 2021]\n", "\n", "Group 1 has the maximum restricted mean survival time on the training data!\n" ] @@ -493,7 +492,7 @@ }, { "cell_type": "markdown", - "id": "a5cba311", + "id": "1c0bea96", "metadata": {}, "source": [ "### Evaluate CMHE on Test Data" @@ -501,20 +500,20 @@ }, { "cell_type": "code", - "execution_count": 22, - "id": "eb1ade20", + "execution_count": 9, + "id": "29b4ae34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Distribution of individuals in each treatement phenotype in the test data: [444 657]\n" + "Distribution of individuals in each treatement phenotype in the test data: [553 548]\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 500x500 with 1 Axes>" ] @@ -536,352 +535,9 @@ "plot_phenotypes_roc(outcomes_te, zeta_probs_test_CMHE[:, max_treat_idx_CMHE])" ] }, - { - "cell_type": "code", - "execution_count": 24, - "id": "ed3809ec", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[2.1216183e-05, 9.9997878e-01],\n", - " [9.9602604e-01, 3.9739967e-03],\n", - " [9.9793184e-01, 2.0681797e-03],\n", - " ...,\n", - " [3.6357585e-04, 9.9963641e-01],\n", - " [1.0352042e-04, 9.9989653e-01],\n", - " [5.2588820e-01, 4.7411180e-01]], dtype=float32)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zeta_probs_test_CMHE" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "9100d5fb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.9999788 , 0.003974 , 0.00206818, ..., 0.9996364 , 0.9998965 ,\n", - " 0.4741118 ], dtype=float32)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zeta_probs_test_CMHE[:, max_treat_idx_CMHE]" - ] - }, - { - "cell_type": "markdown", - "id": "87c7bc1c", - "metadata": {}, - "source": [ - "<a id=\"vtsr\"></a>\n", - "### 3.2 Phenotyping with Virtual Twins Survival Regression" - ] - }, - { - "cell_type": "markdown", - "id": "b4a0e802", - "metadata": {}, - "source": [ - "A Virtual Twins model as first proposed in [1] predicts response probabilities for each sample using models trained separately on treatment and control groups. `auton-survival` fits a counterfactual model and regresses the difference of the estimated RMST using a Random Forest regressor.\n", - "\n", - "*For more information on Virtual Twins models [1], please refer to the following paper*:\n", - "\n", - "[1] [Subgroup identification from randomized clinical trial data](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3880775/)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "a37bbb0c", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/1 [00:00<?, ?it/s]\n", - " 0%| | 0/5 [00:00<?, ?it/s]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 25.51it/s]\u001b[A\u001b[A\n", - "\n", - " 12%|█████████▉ | 6/50 [00:00<00:01, 26.27it/s]\u001b[A\u001b[A\n", - "\n", - " 20%|████████████████▍ | 10/50 [00:00<00:01, 29.24it/s]\u001b[A\u001b[A\n", - "\n", - " 26%|█████████████████████▎ | 13/50 [00:00<00:01, 29.21it/s]\u001b[A\u001b[A\n", - "\n", - " 32%|██████████████████████████▏ | 16/50 [00:00<00:01, 28.85it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|████████████████████████████████▊ | 20/50 [00:00<00:01, 29.47it/s]\u001b[A\u001b[A\n", - "\n", - " 46%|█████████████████████████████████████▋ | 23/50 [00:00<00:00, 29.51it/s]\u001b[A\u001b[A\n", - "\n", - " 52%|██████████████████████████████████████████▋ | 26/50 [00:00<00:00, 28.34it/s]\u001b[A\u001b[A\n", - "\n", - " 60%|█████████████████████████████████████████████████▏ | 30/50 [00:01<00:00, 29.54it/s]\u001b[A\u001b[A\n", - "\n", - " 66%|██████████████████████████████████████████████████████ | 33/50 [00:01<00:00, 29.51it/s]\u001b[A\u001b[A\n", - "\n", - " 72%|███████████████████████████████████████████████████████████ | 36/50 [00:01<00:00, 27.71it/s]\u001b[A\u001b[A\n", - "\n", - " 20%|████████████████▊ | 1/5 [00:13<00:53, 13.39s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 8%|██████▋ | 4/50 [00:00<00:01, 38.19it/s]\u001b[A\u001b[A\n", - "\n", - " 16%|█████████████▎ | 8/50 [00:00<00:01, 32.24it/s]\u001b[A\u001b[A\n", - "\n", - " 24%|███████████████████▋ | 12/50 [00:00<00:01, 29.82it/s]\u001b[A\u001b[A\n", - "\n", - " 32%|██████████████████████████▏ | 16/50 [00:00<00:01, 30.50it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|████████████████████████████████▊ | 20/50 [00:00<00:01, 29.19it/s]\u001b[A\u001b[A\n", - "\n", - " 46%|█████████████████████████████████████▋ | 23/50 [00:00<00:00, 27.41it/s]\u001b[A\u001b[A\n", - "\n", - " 52%|██████████████████████████████████████████▋ | 26/50 [00:00<00:00, 27.73it/s]\u001b[A\u001b[A\n", - "\n", - " 60%|█████████████████████████████████████████████████▏ | 30/50 [00:01<00:00, 29.41it/s]\u001b[A\u001b[A\n", - "\n", - " 70%|█████████████████████████████████████████████████████████▍ | 35/50 [00:01<00:00, 27.83it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|█████████████████████████████████▌ | 2/5 [00:26<00:39, 13.13s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 27.90it/s]\u001b[A\u001b[A\n", - "\n", - " 14%|███████████▌ | 7/50 [00:00<00:01, 30.64it/s]\u001b[A\u001b[A\n", - "\n", - " 22%|██████████████████ | 11/50 [00:00<00:01, 29.41it/s]\u001b[A\u001b[A\n", - "\n", - " 30%|████████████████████████▌ | 15/50 [00:00<00:01, 30.52it/s]\u001b[A\u001b[A\n", - "\n", - " 38%|███████████████████████████████▏ | 19/50 [00:00<00:01, 30.49it/s]\u001b[A\u001b[A\n", - "\n", - " 46%|█████████████████████████████████████▋ | 23/50 [00:00<00:00, 30.66it/s]\u001b[A\u001b[A\n", - "\n", - " 54%|████████████████████████████████████████████▎ | 27/50 [00:00<00:00, 28.39it/s]\u001b[A\u001b[A\n", - "\n", - " 60%|██████████████████████████████████████████████████▍ | 3/5 [00:39<00:26, 13.31s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 29.93it/s]\u001b[A\u001b[A\n", - "\n", - " 12%|█████████▉ | 6/50 [00:00<00:01, 28.83it/s]\u001b[A\u001b[A\n", - "\n", - " 18%|██████████████▉ | 9/50 [00:00<00:01, 27.85it/s]\u001b[A\u001b[A\n", - "\n", - " 24%|███████████████████▋ | 12/50 [00:00<00:01, 26.82it/s]\u001b[A\u001b[A\n", - "\n", - " 30%|████████████████████████▌ | 15/50 [00:00<00:01, 27.14it/s]\u001b[A\u001b[A\n", - "\n", - " 36%|█████████████████████████████▌ | 18/50 [00:00<00:01, 27.62it/s]\u001b[A\u001b[A\n", - "\n", - " 44%|████████████████████████████████████ | 22/50 [00:00<00:00, 29.19it/s]\u001b[A\u001b[A\n", - "\n", - " 52%|██████████████████████████████████████████▋ | 26/50 [00:00<00:00, 29.59it/s]\u001b[A\u001b[A\n", - "\n", - " 58%|███████████████████████████████████████████████▌ | 29/50 [00:01<00:00, 28.87it/s]\u001b[A\u001b[A\n", - "\n", - " 64%|████████████████████████████████████████████████████▍ | 32/50 [00:01<00:00, 28.52it/s]\u001b[A\u001b[A\n", - "\n", - " 70%|█████████████████████████████████████████████████████████▍ | 35/50 [00:01<00:00, 27.70it/s]\u001b[A\u001b[A\n", - "\n", - " 78%|███████████████████████████████████████████████████████████████▉ | 39/50 [00:01<00:00, 28.49it/s]\u001b[A\u001b[A\n", - "\n", - " 84%|████████████████████████████████████████████████████████████████████▉ | 42/50 [00:01<00:00, 28.17it/s]\u001b[A\u001b[A\n", - "\n", - " 90%|█████████████████████████████████████████████████████████████████████████▊ | 45/50 [00:01<00:00, 28.17it/s]\u001b[A\u001b[A\n", - "\n", - "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:01<00:00, 28.29it/s]\u001b[A\u001b[A\n", - "\n", - " 80%|███████████████████████████████████████████████████████████████████▏ | 4/5 [00:54<00:13, 13.85s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 28.98it/s]\u001b[A\u001b[A\n", - "\n", - " 12%|█████████▉ | 6/50 [00:00<00:01, 27.96it/s]\u001b[A\u001b[A\n", - "\n", - " 18%|██████████████▉ | 9/50 [00:00<00:01, 26.68it/s]\u001b[A\u001b[A\n", - "\n", - " 24%|███████████████████▋ | 12/50 [00:00<00:01, 26.35it/s]\u001b[A\u001b[A\n", - "\n", - " 30%|████████████████████████▌ | 15/50 [00:00<00:01, 27.44it/s]\u001b[A\u001b[A\n", - "\n", - " 38%|███████████████████████████████▏ | 19/50 [00:00<00:01, 29.97it/s]\u001b[A\u001b[A\n", - "\n", - " 44%|████████████████████████████████████ | 22/50 [00:00<00:00, 28.47it/s]\u001b[A\u001b[A\n", - "\n", - " 50%|█████████████████████████████████████████ | 25/50 [00:00<00:00, 27.46it/s]\u001b[A\u001b[A\n", - "\n", - " 56%|█████████████████████████████████████████████▉ | 28/50 [00:01<00:00, 27.65it/s]\u001b[A\u001b[A\n", - "\n", - " 64%|████████████████████████████████████████████████████▍ | 32/50 [00:01<00:00, 28.64it/s]\u001b[A\u001b[A\n", - "\n", - " 70%|█████████████████████████████████████████████████████████▍ | 35/50 [00:01<00:00, 28.30it/s]\u001b[A\u001b[A\n", - "\n", - " 76%|██████████████████████████████████████████████████████████████▎ | 38/50 [00:01<00:00, 28.25it/s]\u001b[A\u001b[A\n", - "\n", - " 82%|███████████████████████████████████████████████████████████████████▏ | 41/50 [00:01<00:00, 27.05it/s]\u001b[A\u001b[A\n", - "\n", - "100%|████████████████████████████████████████████████████████████████████████████████████| 5/5 [01:08<00:00, 13.74s/it]\u001b[A\n", - "100%|████████████████████████████████████████████████████████████████████████████████████| 1/1 [01:09<00:00, 69.47s/it]\n", - " 48%|███████████████████████████████████████▎ | 24/50 [00:01<00:01, 22.25it/s]\n", - " 0%| | 0/1 [00:00<?, ?it/s]\n", - " 0%| | 0/5 [00:00<?, ?it/s]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 27.78it/s]\u001b[A\u001b[A\n", - "\n", - " 14%|███████████▌ | 7/50 [00:00<00:01, 31.51it/s]\u001b[A\u001b[A\n", - "\n", - " 22%|██████████████████ | 11/50 [00:00<00:01, 29.25it/s]\u001b[A\u001b[A\n", - "\n", - " 28%|██████████████████████▉ | 14/50 [00:00<00:01, 29.23it/s]\u001b[A\u001b[A\n", - "\n", - " 34%|███████████████████████████▉ | 17/50 [00:00<00:01, 26.30it/s]\u001b[A\u001b[A\n", - "\n", - " 20%|████████████████▊ | 1/5 [00:14<00:57, 14.31s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 8%|██████▋ | 4/50 [00:00<00:01, 31.91it/s]\u001b[A\u001b[A\n", - "\n", - " 16%|█████████████▎ | 8/50 [00:00<00:01, 27.80it/s]\u001b[A\u001b[A\n", - "\n", - " 22%|██████████████████ | 11/50 [00:00<00:01, 28.41it/s]\u001b[A\u001b[A\n", - "\n", - " 28%|██████████████████████▉ | 14/50 [00:00<00:01, 27.44it/s]\u001b[A\u001b[A\n", - "\n", - " 34%|███████████████████████████▉ | 17/50 [00:00<00:01, 27.53it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|████████████████████████████████▊ | 20/50 [00:00<00:01, 28.25it/s]\u001b[A\u001b[A\n", - "\n", - " 50%|█████████████████████████████████████████ | 25/50 [00:00<00:00, 26.53it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|█████████████████████████████████▌ | 2/5 [00:28<00:42, 14.08s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 8%|██████▋ | 4/50 [00:00<00:01, 31.20it/s]\u001b[A\u001b[A\n", - "\n", - " 16%|█████████████▎ | 8/50 [00:00<00:01, 30.33it/s]\u001b[A\u001b[A\n", - "\n", - " 24%|███████████████████▋ | 12/50 [00:00<00:01, 31.64it/s]\u001b[A\u001b[A\n", - "\n", - " 32%|██████████████████████████▏ | 16/50 [00:00<00:01, 29.82it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|████████████████████████████████▊ | 20/50 [00:00<00:01, 29.56it/s]\u001b[A\u001b[A\n", - "\n", - " 46%|█████████████████████████████████████▋ | 23/50 [00:00<00:00, 29.44it/s]\u001b[A\u001b[A\n", - "\n", - " 58%|███████████████████████████████████████████████▌ | 29/50 [00:01<00:00, 28.42it/s]\u001b[A\u001b[A\n", - "\n", - " 60%|██████████████████████████████████████████████████▍ | 3/5 [00:43<00:29, 14.57s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 8%|██████▋ | 4/50 [00:00<00:01, 30.72it/s]\u001b[A\u001b[A\n", - "\n", - " 16%|█████████████▎ | 8/50 [00:00<00:01, 27.33it/s]\u001b[A\u001b[A\n", - "\n", - " 22%|██████████████████ | 11/50 [00:00<00:01, 26.81it/s]\u001b[A\u001b[A\n", - "\n", - " 28%|██████████████████████▉ | 14/50 [00:00<00:01, 27.08it/s]\u001b[A\u001b[A\n", - "\n", - " 34%|███████████████████████████▉ | 17/50 [00:00<00:01, 24.71it/s]\u001b[A\u001b[A\n", - "\n", - " 40%|████████████████████████████████▊ | 20/50 [00:00<00:01, 23.94it/s]\u001b[A\u001b[A\n", - "\n", - " 46%|█████████████████████████████████████▋ | 23/50 [00:00<00:01, 23.88it/s]\u001b[A\u001b[A\n", - "\n", - " 52%|██████████████████████████████████████████▋ | 26/50 [00:01<00:00, 24.53it/s]\u001b[A\u001b[A\n", - "\n", - " 58%|███████████████████████████████████████████████▌ | 29/50 [00:01<00:00, 25.97it/s]\u001b[A\u001b[A\n", - "\n", - " 64%|████████████████████████████████████████████████████▍ | 32/50 [00:01<00:00, 27.08it/s]\u001b[A\u001b[A\n", - "\n", - " 72%|███████████████████████████████████████████████████████████ | 36/50 [00:01<00:00, 25.21it/s]\u001b[A\u001b[A\n", - "\n", - " 80%|███████████████████████████████████████████████████████████████████▏ | 4/5 [00:58<00:14, 14.73s/it]\u001b[A\n", - "\n", - " 0%| | 0/50 [00:00<?, ?it/s]\u001b[A\u001b[A\n", - "\n", - " 6%|████▉ | 3/50 [00:00<00:01, 29.76it/s]\u001b[A\u001b[A\n", - "\n", - " 12%|█████████▉ | 6/50 [00:00<00:01, 27.63it/s]\u001b[A\u001b[A\n", - "\n", - " 18%|██████████████▉ | 9/50 [00:00<00:01, 28.19it/s]\u001b[A\u001b[A\n", - "\n", - " 24%|███████████████████▋ | 12/50 [00:00<00:01, 24.32it/s]\u001b[A\u001b[A\n", - "\n", - "100%|████████████████████████████████████████████████████████████████████████████████████| 5/5 [01:12<00:00, 14.44s/it]\u001b[A\n", - "100%|████████████████████████████████████████████████████████████████████████████████████| 1/1 [01:12<00:00, 72.93s/it]\n", - " 38%|███████████████████████████████▏ | 19/50 [00:00<00:01, 23.32it/s]\n", - "C:\\Users\\Willa Potosnak\\miniconda3\\envs\\localenv\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but RandomForestRegressor was fitted without feature names\n", - " warnings.warn(\n" - ] - } - ], - "source": [ - "from auton_survival.phenotyping import SurvivalVirtualTwinsPhenotyper\n", - "\n", - "phenotyper = SurvivalVirtualTwinsPhenotyper()\n", - "phenogroups = phenotyper.fit_predict(features_tr, outcomes_tr, a_tr, horizon=5)\n", - "\n", - "# Let's take a look at the phenogroups\n", - "phenogroups" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "1f0d8cf4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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9QqaiIhIX4mJiXByckLjxo2lDqVUK3aiceLECSxZsqRAcqHutkneV568ZCM4OBgnT540zCcgIiLSgb29Pf7880+pwyj1ij0ZdO7cueJIBpCbYFhZWaFDhw5o3bo1PDw8UL58eaSkpODZs2c4f/48Tp8+DblcLl6jUCgwe/ZscaVRIiKikpSUlIR33nkH586d49MmRlasRCMqKgoRERHiyAQAjB8/HjNmzICnp6fG654+fYpvv/0WK1euFK89efIkoqKiOGRFREQlbuPGjXj33XeZZJSAYt06CQ8PB5A7imFhYYHNmzdj2bJlhSYZAODp6YkVK1Zg06ZNACD+jz1w4IAuMRMREenlyJEjnARaQoqVaJw+fRpAbqIwadIkDB06tFiNDRs2DF988YU4GpJXHxERUUnJycnB7t27UblyZalDKROKlWjcvn0bAGBnZ4egoCCdGpwxYwbs7OwAAHfu3NGpDiIiIl31798fT548kTqMMqNYiUZCQgJkMhnat28PV1dXnRqsUKECOnToAEEQ8OrVK53qICIi0kVUVBSys7NRrVo1qUMpM4qdaABA06ZN9Wq0SZMmAHJn/RIREZWUbdu24ZNPPpE6jDKlWE+d5OTkQCaToWLFino1mnd9Tk6OXvUQERFpSxAEfPPNN1KHUebotDKojY2NXo3qe/2tW7ewceNGbNy4Ua96iIio7Pjmm28QHh4OCwu9tvmiYjLL73ZYWBhGjRqF0aNHSx0KERGZgbS0NOzYsQNdunSROpQyxywTjTzKy5sTERFpEhoaivfeew8ODg5Sh1LmFHsJciIiInMiCAIGDRoEuVwudShlklmPaBARERXlr7/+QnBwMKytraUOpUxiokFERKWWIAj48ccf0adPH6lDKbN0unXy66+/IjQ0VOdGHz9+LB6/9dZbel1PRESkSVRUFDw9PVGvXj2pQymzdEo0YmJiEBMTo3fjgiDgxIkTetdDRESkTuPGjbkUgsR0unUiCILeX/rURUREVJSrV6/i008/1XvtJtKPTiMaedu8ExERmaoffvgBgYGBUodR5umUaHBUgYiITNnz588RGxuLbt26SR1KmadTojFu3Di8//77ho5FayEhIVi5cqVk7RMRkWlzc3PDoUOHOAJvAnRKNGrXro3OnTsbOhatXbx4UbK2iYjItD1+/BiTJk3C9u3bpQ6FwHU0iIio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\n", - "text/plain": [ - "<Figure size 500x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Now let us evaluate our performance\n", - "plot_phenotypes_roc(outcomes_tr, phenogroups)" - ] - }, { "cell_type": "markdown", - "id": "e5e36371", + "id": "a2f4bfcb", "metadata": {}, "source": [ "<a id=\"clustering\"></a>\n", @@ -890,7 +546,7 @@ }, { "cell_type": "markdown", - "id": "555a7366", + "id": "5feed8bb", "metadata": {}, "source": [ "We compare the ability of CMHE against dimensionality reduction followed by clustering for counterfactual phenotyping. Specifically, we first perform dimensionality reduction of the input confounders, $\\mathbf{x}$, followed by clustering. Due to a small number of confounders in the synthetic data, in the following experiment, we directly perform clustering using a Gaussian Mixture Model (GMM) with 2 components and diagonal covariance matrices." @@ -899,7 +555,7 @@ { "cell_type": "code", "execution_count": null, - "id": "de6e8dd9", + "id": "b6972071", "metadata": {}, "outputs": [], "source": [ @@ -922,7 +578,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eaa74cbe", + "id": "59aab9e6", "metadata": {}, "outputs": [], "source": [ @@ -938,7 +594,7 @@ }, { "cell_type": "markdown", - "id": "782f9ed5", + "id": "680c3df5", "metadata": {}, "source": [ "### Evaluate Clustering Phenotyper on Test Data" @@ -947,7 +603,7 @@ { "cell_type": "code", "execution_count": null, - "id": "be4e1558", + "id": "9b695a1d", "metadata": {}, "outputs": [], "source": [ @@ -966,7 +622,7 @@ }, { "cell_type": "markdown", - "id": "8d8062d9", + "id": "d0310fcb", "metadata": {}, "source": [ "<a id=\"regression\"></a>\n", @@ -975,7 +631,7 @@ }, { "cell_type": "markdown", - "id": "25baff78", + "id": "72160579", "metadata": {}, "source": [ "For completeness, we further evaluate the performance of CMHE in estimating factual risk over multiple time horizons using the standard survival analysis metrics, including: \n", @@ -996,7 +652,7 @@ }, { "cell_type": "markdown", - "id": "81aaa75b", + "id": "5c716d77", "metadata": {}, "source": [ "<a id=\"regcmhe\"></a>\n", @@ -1007,7 +663,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70503c63", + "id": "55527210", "metadata": {}, "outputs": [], "source": [ @@ -1024,7 +680,7 @@ }, { "cell_type": "markdown", - "id": "0f284076", + "id": "05177a71", "metadata": {}, "source": [ "<a id=\"deepcph\"></a>\n", @@ -1034,7 +690,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3aaf3504", + "id": "ca6f0c45", "metadata": { "scrolled": true }, @@ -1056,7 +712,7 @@ }, { "cell_type": "markdown", - "id": "b4b93e25", + "id": "c0e9754a", "metadata": {}, "source": [ "### Evaluate DCPH on Test Data" @@ -1065,7 +721,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "487dcfc1", + "id": "c0247f41", "metadata": {}, "outputs": [ { @@ -1093,7 +749,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8eb2a718", + "id": "47438fe1", "metadata": {}, "outputs": [], "source": [] @@ -1101,7 +757,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "49d0f1f7", + "id": "8afd1e9d", "metadata": {}, "outputs": [], "source": [ @@ -1117,16 +773,16 @@ "outcomes, features, interventions = load_dataset(dataset='SYNTHETIC')\n", "\n", "x = features.iloc[:100]\n", - "y = pd.DataFrame(outcomes, columns=['event', 'time']).iloc[:100]\n", - "#y = outcomes.iloc[:100]\n", - "i = interventions.astype('float64').iloc[:100]\n", - "#i = interventions.iloc[:100]" + "#y = pd.DataFrame(outcomes, columns=['event', 'time']).iloc[:100]\n", + "y = outcomes.iloc[:100]\n", + "#i = interventions.astype('float64').iloc[:100]\n", + "i = interventions.iloc[:100]" ] }, { "cell_type": "code", "execution_count": null, - "id": "2fda4247", + "id": "3e97a215", "metadata": {}, "outputs": [], "source": [] @@ -1134,7 +790,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "fa511f30", + "id": "23f0f565", "metadata": {}, "outputs": [ { @@ -1198,12 +854,20 @@ ] } ], - "source": [] + "source": [ + "from auton_survival.phenotyping import SurvivalVirtualTwinsPhenotyper\n", + "\n", + "phenotyper = SurvivalVirtualTwinsPhenotyper()\n", + "phenogroups = phenotyper.fit_predict(features_tr, outcomes_tr, a_tr, horizon=5)\n", + "\n", + "# Let's take a look at the phenogroups\n", + "phenogroups" + ] }, { "cell_type": "code", "execution_count": null, - "id": "1497454b", + "id": "262aaec2", "metadata": {}, "outputs": [], "source": [] @@ -1211,7 +875,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7f555d75", + "id": "4d9eef06", "metadata": {}, "outputs": [], "source": [] diff --git a/examples/Phenotyping Censored Time-to-Events.ipynb b/examples/Phenotyping Censored Time-to-Events.ipynb index 23eceb1..d2f5ebd 100644 --- a/examples/Phenotyping Censored Time-to-Events.ipynb +++ b/examples/Phenotyping Censored Time-to-Events.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ea173ce5", + "id": "04ba4aba", "metadata": {}, "source": [ "# Phenotyping Censored Survival Data\n", @@ -43,7 +43,7 @@ }, { "cell_type": "markdown", - "id": "e984fe01", + "id": "db53c29e", "metadata": {}, "source": [ "<a id=\"intro\"></a>\n", @@ -53,7 +53,7 @@ }, { "cell_type": "markdown", - "id": "636416cc", + "id": "066aa0da", "metadata": {}, "source": [ "`auton-survival` offers utilities to phenotype, or group, samples for use in assessing differential survival probabilities across groups. Phenotyping can aid clinical decision makers by offering insight into groups of patients for which differential survival probabilities exist. This insight can influence clinical practices applied to these groups.\n", @@ -62,14 +62,14 @@ " * <b>Unsupervised Phenotyping</b>\n", " - Identify phenotypes that group samples based on similarity in the feature space.\n", " * <b>Supervised Phenotyping</b>\n", - " - Identify latent phenotypes $\\mathbf{P}(Z|X=\\mathbf{x})$ of samples from deep non-linear representations obtained from an encoder.\n", + " - Identify latent groups of individuals with similar survival outcomes. \n", " * <b>Counterfactual Phenotyping</b>\n", - " - Identify latent phenotypes $\\mathbf{P}(Z|X=\\mathbf{x})$ of samples that demonstrate heterogneous effects to an intervention from deep non-linear representations obtained from an encoder.\n" + " - Identify latent phenotypes that demonstrate heterogneous effects to an intervention. " ] }, { "cell_type": "markdown", - "id": "24d8e2be", + "id": "6bdd143c", "metadata": {}, "source": [ "<a id=\"support\"></a>\n", @@ -79,7 +79,7 @@ }, { "cell_type": "markdown", - "id": "fc152936", + "id": "f752b5a9", "metadata": {}, "source": [ "*For the original datasource, please refer to the following [website](https://biostat.app.vumc.org/wiki/Main/SupportDesc).*\n", @@ -90,7 +90,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "4a479b1e", + "id": "c7b828d5", "metadata": {}, "outputs": [], "source": [ @@ -103,7 +103,7 @@ }, { "cell_type": "markdown", - "id": "6ea602d5", + "id": "c5ec9620", "metadata": {}, "source": [ "<a id=\"preprocess\"></a>\n", @@ -113,7 +113,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "edbd1c2c", + "id": "43b3bdb4", "metadata": {}, "outputs": [ { @@ -401,7 +401,7 @@ }, { "cell_type": "markdown", - "id": "0ff79b8f", + "id": "9a62d751", "metadata": {}, "source": [ "Here we perform imputation and scaling on the entire dataset but in practice we recommend that preprocessing tools be fitted solely to training data." @@ -410,7 +410,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "ae30d5f4", + "id": "27d6cd4e", "metadata": {}, "outputs": [], "source": [ @@ -424,7 +424,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "823bab64", + "id": "90487c95", "metadata": {}, "outputs": [ { @@ -449,7 +449,7 @@ }, { "cell_type": "markdown", - "id": "3d407452", + "id": "308fbf4f", "metadata": {}, "source": [ "<a id=\"interpheno\"></a>\n", @@ -458,7 +458,7 @@ }, { "cell_type": "markdown", - "id": "03430868", + "id": "ada593a6", "metadata": {}, "source": [ "The intersectional Phenotyper performs an exhaustive cartesian product on the user-specified set of categorical and numerical variables to obtain the phenotypes. Numeric variables are binned based on user-specified quantiles." @@ -466,7 +466,7 @@ }, { "cell_type": "markdown", - "id": "449b1e4f", + "id": "97fcf072", "metadata": {}, "source": [ "<a id=\"fitinter\"></a>\n", @@ -475,7 +475,7 @@ }, { "cell_type": "markdown", - "id": "a9c7397a", + "id": "df272e17", "metadata": {}, "source": [ "Here we fit the phenotyper on the entire dataset but in practice we recommend that the phenotyper be fitted solely to training data." @@ -483,8 +483,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "2db693a2", + "execution_count": 21, + "id": "0d6fe760", "metadata": {}, "outputs": [ { @@ -497,7 +497,7 @@ " dtype='<U37')" ] }, - "execution_count": 6, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -511,7 +511,7 @@ "# 'ca' is cancer status\n", "phenotyper = IntersectionalPhenotyper(cat_vars=['ca'], num_vars=['age'],\n", " num_vars_quantiles=quantiles, random_seed=0)\n", - "phenotypes = phenotyper.fit_phenotype(features)\n", + "phenotypes = phenotyper.fit_predict(features)\n", "\n", "# Let's look at the phenotypes for each sample\n", "phenotypes " @@ -519,7 +519,7 @@ }, { "cell_type": "markdown", - "id": "64a019c5", + "id": "561d52cf", "metadata": {}, "source": [ "<a id=\"plotpheno\"></a>\n", @@ -528,8 +528,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "b6685ba0", + "execution_count": 22, + "id": "f5b4c460", "metadata": {}, "outputs": [ { @@ -558,7 +558,7 @@ }, { "cell_type": "markdown", - "id": "a9a5b347", + "id": "636e656d", "metadata": {}, "source": [ "As you can see, patients ages 18 to 64 without cancer have the highest survival rates. Alternatively, patients ages 64 to 101 with metastatic cancer have the lowest survival rates." @@ -566,7 +566,7 @@ }, { "cell_type": "markdown", - "id": "0639e04a", + "id": "dacd8e7b", "metadata": {}, "source": [ "<a id=\"clusterpheno\"></a>\n", @@ -575,7 +575,7 @@ }, { "cell_type": "markdown", - "id": "645e23c4", + "id": "ea60d946", "metadata": {}, "source": [ "Dimensionality reduction of the input covariates, $\\mathbf{x}$, is performed followed by clustering. Learned clusters are considered phenotypes and used to group samples based on similarity in the covariate space. The estimated probability of sample cluster association is computed as the sample distance to a cluster center normalized by the sum of distances to other clusters.\n", @@ -589,7 +589,7 @@ }, { "cell_type": "markdown", - "id": "73e8d1f8", + "id": "07ed37fa", "metadata": {}, "source": [ "<a id=\"fitcluster\"></a>\n", @@ -598,7 +598,7 @@ }, { "cell_type": "markdown", - "id": "d7bace22", + "id": "2c232f42", "metadata": {}, "source": [ " " @@ -606,8 +606,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "003e3213", + "execution_count": 32, + "id": "23dbd46a", "metadata": {}, "outputs": [ { @@ -617,16 +617,16 @@ "Fitting the following Dimensionality Reduction Model:\n", " PCA(n_components=8, random_state=0)\n", "Fitting the following Clustering Model:\n", - " GaussianMixture(covariance_type='diag', n_components=3, random_state=0)\n" + " KMeans(n_clusters=2, random_state=0)\n" ] }, { "data": { "text/plain": [ - "array([1, 2, 1, ..., 1, 1, 2], dtype=int64)" + "array([1, 1, 1, ..., 0, 1, 1], dtype=int64)" ] }, - "execution_count": 7, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -646,16 +646,15 @@ " dim_red_method=dim_red_method, \n", " n_components=n_components, \n", " n_clusters=n_clusters)\n", - "phenotype_probs = phenotyper.fit_phenotype(x_tr)\n", + "phenotypes = phenotyper.fit_predict(x_tr)\n", "\n", "# Let's look at the phenotypes\n", - "phenotypes = np.argmax(phenotype_probs, axis=1)\n", "phenotypes" ] }, { "cell_type": "markdown", - "id": "9f706f8e", + "id": "ddc2dc1a", "metadata": {}, "source": [ "<a id=\"clusterplot\"></a>\n", @@ -664,10 +663,18 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "f6557355", + "execution_count": 11, + "id": "512b8254", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\reporting.py:37: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " ax = plt.subplot(111)\n" + ] + }, { "data": { "image/png": "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kUmTJlFUVLTXdjfccANVVVWxvuaopSl6PGqAsubyQx2KEEIIIYQQog0xJVNjxozhn//8Z6vrfr8fnU6HTqeLXPt//+//cfXVV8ce4VFLY4THQn1Lw6EORAghhBBCCNGGmPZMde3atc3rc+fOxW63M3v27Mi1YcOGccwxx8QW3VGs3NSDnJZqglqIWm/toQ5HCCGEEEIIsYeYkqmvv/66zetjx45l2bJlPProowcUlIBacy5BxUhLMEAgFDjU4QghhBBCiDhatGgRxcXF6PV6CgsLKS4uZtiwYQwePJhnn30WgA0bNkTafPXVV4c2YOD999/n/fffP9Rh0NzczN///ndGjx7NySefzHHHHcfkyZNpbGyM+7tj3jPVnh49etDSItXnDpReVVGAEs92OWtKCCGEEOIIN3ToUL744gv0ej1TpkxhwoQJACxYsIDi4mKcTicXX3xxpE1nsDORGjt27CGNY+nSpTz66KMsWrSInJwcXC4Xo0aNoqamhlmzZsX13R2emfrHP/5Bjx496NGjB6tWrYr8e/ev7t27k5ycTG5ubjxjPmoM8+ppkD1TQgghhBBHreHDh9O/f3/efffdQx1Kp2W327nxxhvJyckBwOl0cvnll/P2228TDAbj+u4Op7V5eXmMGjUKgA8++CDy790ZDAa6d+8uBScOAk01oldUDIpelvkJIYQQQhzFWlpaMBqNUdc2bNjA//3f/7FhwwYyMjJ49dVXSU5OjtyfPXs2TzzxBDabjWAwyB//+EfOO+88AM4991wWLFjA1VdfTWNjIz/99BONjY288MILHHvssZE+Fi9ezO23347X68Xj8TBu3DjuvfdeVFXljjvuYN68eQCRmbPhw4fz8MMPY7Vaufzyy/nrX//KnDlzuO+++zAajTz55JNMnTqVRYsW8cwzz/DWW2+xfft2kpOTefHFF+nRo0fk3dOnT+eNN97A4XAA8OCDDzJy5Mg2x2fQoEGtjmIym80Eg0FCoVBUcbyDrcPJ1NixYyNTeCeddBIvvfRS3IISoNepaCGNkAaNLfFf7ymEEEIIITqft956i9WrVzNjxoyo6x999BFvv/02qqoyfPhwZs6cyf333w+Ei8JNmTKFH374gZycHNavX09RURHz5s3jxBNP5IMPPqC4uJh33nmHBQsWkJGRweTJk5k8eTJffvklAFVVVZx++uk88cQT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\n", @@ -695,7 +702,7 @@ }, { "cell_type": "markdown", - "id": "161418c6", + "id": "ff48f273", "metadata": {}, "source": [ "Intersecting survival rates indicate that the SUPPORT dataset follows non-proportional hazards which violates assumptions of the Cox Model." @@ -703,7 +710,7 @@ }, { "cell_type": "markdown", - "id": "b36d1092", + "id": "87344244", "metadata": {}, "source": [ "<a id=\"clusterphenopur\"></a>\n", @@ -712,7 +719,7 @@ }, { "cell_type": "markdown", - "id": "740ca8ad", + "id": "f3aa3b09", "metadata": {}, "source": [ "To measure a phenotyper's ability to extract subgroups with differential survival rates, we estimate the (Integrated) Brier Score by fitting a Kaplan-Meier estimator within each phenogroup and employing it to estimate the survival rate within each phenogroup. We refer to this as the *phenotyping purity.*" @@ -721,7 +728,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "6a6fbe40", + "id": "1f88c213", "metadata": {}, "outputs": [ { @@ -735,7 +742,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\metrics.py:261: UserWarning: You are are estimating survival probabilities for the same dataset used to estimate the censoring distribution.\n", + "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\metrics.py:288: UserWarning: You are are estimating survival probabilities for the same dataset used to estimate the censoring distribution.\n", " warnings.warn(\"You are are estimating survival probabilities for \\\n", "C:\\Users\\Willa Potosnak\\miniconda3\\envs\\localenv\\lib\\site-packages\\lifelines\\fitters\\__init__.py:204: ApproximationWarning: Approximating using linear interpolation`.\n", "\n", @@ -757,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "1c2e576c", + "id": "b6b0a9e5", "metadata": {}, "source": [ "<a id=\"DCM\"></a>\n", @@ -771,12 +778,12 @@ } }, "cell_type": "markdown", - "id": "5cd0b913", + "id": "6d3bb9ac", "metadata": {}, "source": [ "<a id=\"dcm\"></a>\n", "\n", - "Deep Cox Mixtures (DCM) [2] generalizes the proportional hazards assumption via a mixture model, by assuming that there are latent groups and within each, the proportional hazards assumption holds. DCM allows the hazard ratio in each latent group, as well as the latent group membership, to be flexibly modeled by a deep neural network.\n", + "Unlike unsupervised clustering, inferring supervised phenotypes requires time-to-events and the corresponding censoring indicators along with the covariates. `auton-survival` provides utilities to perform supervised phenotyping as following training the Deep Survival Machines (DSM) and Deep Cox Mixtures (DCM) latent variable survival regression estimators. Note that DSM recovers phenotypes with similar parametric characteristics while DCM recovers phenotypes that adhere to proportional hazards.\n", "\n", "\n", "\n", @@ -791,7 +798,7 @@ }, { "cell_type": "markdown", - "id": "5d0ce8ae", + "id": "aaf33311", "metadata": {}, "source": [ "<a id=\"fitDCM\"></a>\n", @@ -800,7 +807,7 @@ }, { "cell_type": "markdown", - "id": "506ebbed", + "id": "424c1033", "metadata": {}, "source": [ "Fit DCM model to training data. Perform hyperparameter tuning by selecting model parameters that minimize the brier score computed for the validation set.\n", @@ -813,26 +820,37 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "51bb7267", + "execution_count": 19, + "id": "b176b54f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 51%|████████████████████████████████████████████████████████ | 51/100 [00:40<00:38, 1.27it/s]\n" + " 4%|███▎ | 4/100 [00:02<01:02, 1.54it/s]\n" ] }, { - "data": { - "text/plain": [ - "<auton_survival.models.dcm.DeepCoxMixtures at 0x16a5aef3d90>" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m<ipython-input-19-67c3c0f6330c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[1;31m# The fit method is called to train the model\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 18\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_tr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_tr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_tr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mevent\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0miters\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m100\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlearning_rate\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mparam\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'learning_rate'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\__init__.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, t, e, vsize, val_data, iters, learning_rate, batch_size, optimizer)\u001b[0m\n\u001b[0;32m 211\u001b[0m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_gen_torch_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minputdim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 212\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 213\u001b[1;33m model, _ = train_dcm(model,\n\u001b[0m\u001b[0;32m 214\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mx_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0me_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 215\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mx_val\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt_val\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0me_val\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py\u001b[0m in \u001b[0;36mtrain_dcm\u001b[1;34m(model, train_data, val_data, epochs, patience, vloss, bs, typ, lr, use_posteriors, debug, random_seed, return_losses, update_splines_after, smoothing_factor)\u001b[0m\n\u001b[0;32m 269\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 270\u001b[0m \u001b[1;31m# train_step_start = time.time()\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 271\u001b[1;33m breslow_splines = train_step(model, xt, tt, et, breslow_splines,\n\u001b[0m\u001b[0;32m 272\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mepoch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtyp\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtyp\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[0muse_posteriors\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0muse_posteriors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py\u001b[0m in \u001b[0;36mtrain_step\u001b[1;34m(model, x, t, e, breslow_splines, optimizer, bs, seed, typ, use_posteriors, update_splines_after, smoothing_factor)\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[1;31m# e_step_start = time.time()\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 203\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mno_grad\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 204\u001b[1;33m \u001b[0mposteriors\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbreslow_splines\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0meb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 205\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 206\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menable_grad\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py\u001b[0m in \u001b[0;36me_step\u001b[1;34m(model, breslow_splines, x, t, e)\u001b[0m\n\u001b[0;32m 140\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 141\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 142\u001b[1;33m \u001b[0mprobs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_likelihood\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbreslow_splines\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 143\u001b[0m \u001b[0mposteriors\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_posteriors\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrepair_probs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprobs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py\u001b[0m in \u001b[0;36mget_likelihood\u001b[1;34m(model, breslow_splines, x, t, e)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[1;31m# Function requires numpy/torch\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 94\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 95\u001b[1;33m \u001b[0mgates\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlrisks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 96\u001b[0m \u001b[0mlrisks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlrisks\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 97\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\localenv\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m 1100\u001b[0m if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m 1101\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1102\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1103\u001b[0m \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1104\u001b[0m \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_torch.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, x)\u001b[0m\n\u001b[0;32m 51\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 52\u001b[0m \u001b[0mlog_hazard_ratios\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclamp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexpert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmin\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mgamma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmax\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mgamma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 53\u001b[1;33m \u001b[0mlog_gate_prob\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogSoftmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 54\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mlog_gate_prob\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlog_hazard_ratios\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\localenv\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m 1100\u001b[0m if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m 1101\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1102\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1103\u001b[0m \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1104\u001b[0m \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\localenv\\lib\\site-packages\\torch\\nn\\modules\\linear.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, input)\u001b[0m\n\u001b[0;32m 101\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 102\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mTensor\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mTensor\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 103\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlinear\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 104\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 105\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mextra_repr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\localenv\\lib\\site-packages\\torch\\nn\\functional.py\u001b[0m in \u001b[0;36mlinear\u001b[1;34m(input, weight, bias)\u001b[0m\n\u001b[0;32m 1846\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mhas_torch_function_variadic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1847\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mhandle_torch_function\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlinear\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbias\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1848\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_C\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_nn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlinear\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1849\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1850\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] } ], "source": [ @@ -853,12 +871,12 @@ " random_seed=0)\n", " \n", "# The fit method is called to train the model\n", - "model.fit(x_tr.values, y_tr.time.values, y_tr.event.values, iters = 100, learning_rate = param['learning_rate'])" + "model.fit(x_tr, y_tr.time, y_tr.event, iters = 100, learning_rate = param['learning_rate'])" ] }, { "cell_type": "markdown", - "id": "5253ad49", + "id": "f523d0f1", "metadata": {}, "source": [ "<a id=\"latentz\"></a>\n", @@ -870,8 +888,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "id": "b3783f2d", + "execution_count": 7, + "id": "917dcaa7", "metadata": {}, "outputs": [ { @@ -880,7 +898,7 @@ "array([1, 1, 1, ..., 1, 2, 1], dtype=int64)" ] }, - "execution_count": 15, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -900,7 +918,7 @@ }, { "cell_type": "markdown", - "id": "f8a1067f", + "id": "1528e672", "metadata": {}, "source": [ "<a id=\"plotlatent\"></a>\n", @@ -909,8 +927,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "id": "d91f5ab9", + "execution_count": 8, + "id": "2c92a0d0", "metadata": {}, "outputs": [ { @@ -939,7 +957,7 @@ }, { "cell_type": "markdown", - "id": "ef7be826", + "id": "428494d9", "metadata": {}, "source": [ "Intersecting survival rates indicate that the SUPPORT dataset follows non-proportional hazards which violates assumptions of the Cox Model." @@ -947,7 +965,7 @@ }, { "cell_type": "markdown", - "id": "aa407976", + "id": "f78a82e7", "metadata": {}, "source": [ "<a id=\"superphenopur\"></a>\n", @@ -956,7 +974,7 @@ }, { "cell_type": "markdown", - "id": "b933a72b", + "id": "3d801e78", "metadata": {}, "source": [ "To measure a phenotyper's ability to extract subgroups with differential survival rates, we estimate the (Integrated) Brier Score by fitting a Kaplan-Meier estimator within each phenogroup and employing it to estimate the survival rate within each phenogroup. We refer to this as the *phenotyping purity.*" @@ -964,8 +982,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "id": "0a4ed63e", + "execution_count": 16, + "id": "2e94d4c8", "metadata": {}, "outputs": [ { @@ -979,7 +997,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\metrics.py:260: UserWarning: You are are estimating survival probabilities for the same dataset used to estimate the censoring distribution.\n", + "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\metrics.py:288: UserWarning: You are are estimating survival probabilities for the same dataset used to estimate the censoring distribution.\n", " warnings.warn(\"You are are estimating survival probabilities for \\\n", "C:\\Users\\Willa Potosnak\\miniconda3\\envs\\localenv\\lib\\site-packages\\lifelines\\fitters\\__init__.py:204: ApproximationWarning: Approximating using linear interpolation`.\n", "\n", @@ -1001,7 +1019,7 @@ }, { "cell_type": "markdown", - "id": "ead8730c", + "id": "da7368f7", "metadata": {}, "source": [ "It can be observed the phenotyping purity is lower for supervised phenotyping compared to unsupervised phenotyping. This indicates that the supervised phenotyper is able extract phenogroups with higher discriminative power in terms of the observed survival rates.\n", @@ -1011,7 +1029,7 @@ }, { "cell_type": "markdown", - "id": "ea3046ef", + "id": "6368411c", "metadata": {}, "source": [ "<a id=\"counterpheno\"></a>\n", @@ -1020,7 +1038,7 @@ }, { "cell_type": "markdown", - "id": "ee6bdffd", + "id": "08223c51", "metadata": {}, "source": [ "*For examples of counterfactual phenotyping with Deep Cox Mixtures with Heterogeneous Effects (CMHE) [1], please refer to the following paper and example jupyter notebook*:\n", @@ -1033,7 +1051,7 @@ { "cell_type": "code", "execution_count": null, - "id": "81df3294", + "id": "a8a64fef", "metadata": {}, "outputs": [], "source": [] diff --git a/examples/Survival Regression with Auton-Survival.ipynb b/examples/Survival Regression with Auton-Survival.ipynb index cdd2897..70c8b96 100644 --- a/examples/Survival Regression with Auton-Survival.ipynb +++ b/examples/Survival Regression with Auton-Survival.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d7efe2f9", + "id": "a6455320", "metadata": {}, "source": [ "# Survival Regression with `estimators.SurvivalModel`\n", @@ -47,7 +47,7 @@ }, { "cell_type": "markdown", - "id": "85369414", + "id": "0e639d0a", "metadata": {}, "source": [ "<a id=\"introduction\"></a>\n", @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "cd41f8b9", + "id": "4e77f703", "metadata": {}, "source": [ "The `SurvivalModels` class offers a steamlined approach to train two `auton-survival` models and three baseline survival models for right-censored time-to-event data. The fit method requires the same inputs across all five models, however, model parameter types vary and must be defined and tuned for the specified model.\n", @@ -103,7 +103,7 @@ }, { "cell_type": "markdown", - "id": "c2099ee9", + "id": "307ce6d1", "metadata": {}, "source": [ "<a id=\"support\"></a>\n", @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "87369d9d", + "id": "73646593", "metadata": {}, "source": [ "*For the original datasource, please refer to the following [website](https://biostat.app.vumc.org/wiki/Main/SupportDesc).*\n", @@ -123,8 +123,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "26e6b532", + "execution_count": 1, + "id": "98d292dc", "metadata": {}, "outputs": [], "source": [ @@ -137,8 +137,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "532b3549", + "execution_count": 2, + "id": "39eb24c5", "metadata": {}, "outputs": [ { @@ -426,7 +426,7 @@ }, { "cell_type": "markdown", - "id": "f2e9776e", + "id": "87682b2c", "metadata": {}, "source": [ "<a id=\"preprocess\"></a>\n", @@ -435,8 +435,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "de6456e1", + "execution_count": 3, + "id": "7442ff70", "metadata": {}, "outputs": [ { @@ -464,8 +464,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "38684f59", + "execution_count": 4, + "id": "7e99b2fb", "metadata": {}, "outputs": [], "source": [ @@ -482,7 +482,7 @@ }, { "cell_type": "markdown", - "id": "00683f5e", + "id": "60b3fb98", "metadata": {}, "source": [ "<a id=\"cph\"></a>\n", @@ -491,7 +491,7 @@ }, { "cell_type": "markdown", - "id": "34a6c3f7", + "id": "9192693f", "metadata": {}, "source": [ "<b>CPH</b> [2] model assumes that individuals across the population have constant proportional hazards overtime. In this model, the estimator of the survival function conditional on $X, S(·|X) , P(T > t|X)$, is assumed to have constant proportional hazard. Thus, the relative proportional hazard between individuals is constant across time.\n", @@ -503,7 +503,7 @@ }, { "cell_type": "markdown", - "id": "be77b767", + "id": "1aba6c60", "metadata": {}, "source": [ "<a id=\"fitcph\"></a>\n", @@ -512,8 +512,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "41c56557", + "execution_count": 6, + "id": "3a7a4fd3", "metadata": {}, "outputs": [], "source": [ @@ -549,7 +549,7 @@ }, { "cell_type": "markdown", - "id": "630de5a1", + "id": "3cf2ba36", "metadata": {}, "source": [ "<a id=\"evalcph\"></a>\n", @@ -558,15 +558,15 @@ }, { "cell_type": "code", - "execution_count": 21, - "id": "62c21074", + "execution_count": 7, + "id": "d0732ff9", "metadata": {}, "outputs": [ { "data": { - "image/png": "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V65ccY8vW7asli9frn79+il//vxKSEjQp59+ygV7AQAAAOQIvwlTkhQZGanIyMh0182fPz/NsvDwcH311VfXuywAAAAASMNvDvOD7wQHB2vo0KFMzpEB+uMd/fGO/nhHf7yjP97RH+/oT8bojXf0J/NcxtVqAQAAACDL2DMFAAAAAA4QpgAAAADAAcIUAAAAADhAmAIAAAAABwhTAOAnmA8IgC/xHpQxepM1ealfhCmksWvXLv3yyy++LuOGcfDgQfebRl5688gMeuPdvHnzNGrUKH388ceSJJfL5eOK/AuvH+fol3f0x9Mvv/yiMWPGaO7cuXz+pyM+Pl6//vqr+zavH+8uX77s8XmW2/vlVxfthW998803euONN3TixAnFxsaqY8eOioqKUpkyZZSSkqKAALL3tTZs2KC33npLFy5cUEJCgl555RU1bdpUBQoUkJnl6S/G9Ma706dPq1OnTipatKjuuecePfnkk1q0aJFefPFF3Xfffb4uz+d4/WTd7NmzlZiYqKpVq6pu3br06HfoT8ZmzZqlWbNmKTQ0VLGxsapWrZruvfdeX5flNyZPnqwFCxaoRIkSCg4O1uTJk3XLLbf4uiy/NW7cOH322We64447VK5cOQ0fPjz3/70ZYGbx8fHWsmVLmzVrlpmZRUdHW/Xq1a1t27YWHx9vZmYpKSm+LNGvHD9+3B544AFbvny5Xbp0yV5//XUrXbq0DRo0yNel+Ry9+WNLly61Hj16uG9v2rTJqlWrZi1atLBz5875sDLf4/WTNfv377fw8HCLioqy5557zooUKWJDhgyxU6dOmRnv2/THu5iYGHv88cdt//79Zma2bds2+/nnn31clf+YOnWqRUZG2oEDB+zLL7+0KlWq2AMPPGBr1671dWl+58qVK/bqq69aly5d7ODBgzZ9+nQrXry4de/e3Y4cOeLr8q4rwhTM7OqXuXLlynksmzFjhpUrV8769OljZmbJyck+qMw/vf/++3bvvfd6LHvxxRftrrvusqlTp5pZ3u0XvfljI0aMsDp16piZWVJSkpld/XurWLGi++8tr+L1kzX/+te/bPDgwe7b8+bNs+LFi9srr7xiiYmJPqzMP9Af73r27Gljx471dRl+q0mTJjZz5kz37f3791vVqlWtVatW9uOPP/qwMv8TFxdnf//7323jxo3uZatWrbKbb77Z+vbta7/88osPq7u+OG4LkqSCBQsqICBAX375pXvZY489pvbt22vChAnas2ePAgICcv1xr5kVFBSk4OBgHTlyxL2sT58+qlq1qsaPH6+zZ8/m2X7Rmz+WkpKiAgUK6MCBAwoMDJQkdezYUY0bN9ZHH32kb7/91rcF+hCvn8xJ3f7t27fr1KlTkqTk5GRFRUXp8ccf1yeffKL33nvPY2xeQn+8S93mkJAQ93tQcnKyxo4dqzFjxmj8+PE6d+6cL0v0uUuXLsnlcunixYvuft11113q3bu39uzZo8mTJ/u4Qv9y7NgxXbx4Ub/88ovs6s4aNW7cWF27dtXSpUu1dOlSX5d43RCm8pjk5OR0l8fHxyskJETr1693LytcuLDat2+vatWqacCAAZI4Qf5aR48e1Xfffee+Xa5cOXXo0EHJycl6++23JeXdftGb9KV+INerV0/r16/Xtm3b3MtuvvlmtWvXTsWLF9d//vMfX5bpc7x+/ljq9sfGxsrM9PPPP7u/FL/88ssqXbq05s6dqxMnTuTJXtEf71K3+fjx49q2bZt27dqlJk2a6OTJkypSpIgGDhyoDh066KuvvvJxpb5TqFAhxcXFad26dfr555/dy3v06KEaNWrof//7n3bu3OnDCv1L5cqVdfHiRa1Zs0Yul8v9fXPIkCHKnz+/PvnkE/30008+rvL6IEzlEXFxcRo+fLjGjx+vo0ePpllfs2ZNlSpVSsuWLdPu3bvdy//2t7/pscce0549e/Lsr+Xp/Wr56KOPKigoSB988IEuXLjgXt6sWTOFhYVp8+bN7l9DczN6k7H0epP6BebBBx9UjRo1NH36dJ04ccK9vmHDhvrrX/+qQ4cO6ezZszlWq6/w+nEuJSVFkvTQQw9p4cKF7vd1M1OZMmX02GOP6eTJk1q+fLkvy7zuMtqrRH+8S/2i2717d3300UdasGCBevTooX//+9/q2bOnli9frvPnz+vNN9/0caW+kdqf559/Xp9++qm2b98u6errJzg4WE888YTOnz+vzZs3+7JMn0j920pvWdeuXTV9+nRduHBBQUFBSkpKUvHixdW1a1etWbMm3e+fuQFhKg+YM2eOmjVrpm+++UarV69O80tK6pvG8OHD9dVXX2nZsmWKj4+XdPWQm/DwcAUHB3v8MpObzZw5U++9956+/vprSWl/AU/t1+DBg7Vw4UJt2LDB/YFeqFAhPfjggzp8+HCu/LVz0qRJGj58uObOnSuJ3vzeuHHjNHLkSEnpf+BIv335Gz16tNasWaPFixe7p9x1uVxq3bq1tm7dqmLFiuVM0TmI10/WnDhxQmPHjtWmTZvSrEudXbVDhw4qXLiwpk6dqpSUFHdvunTpopCQEO3evVspKSm58lC2n376SUlJSZLS/r3l9f6cPHlSQ4cO1ezZs92f+df2KHUvXf369VW/fn2NGjXK4wecRo0a6aGHHtKxY8d0/PjxnC0+B5w6dUoLFizQzp073YczXnvkTmp/Un/4GjNmjH755Rf366dt27YqUKCAew96Ru/3ucWRI0c0Z84cHTx4UHFxcZI8tzn1761t27YKCAjQiBEjPJb369dPly9f1q5duyTlwkNrc+C8LPjQ4cOH7fHHH7fdu3ebmdn3339vly5dSjODUertqKgoq1ixoi1evNhjebFixezTTz/Nwcpz3s6dO61OnTrWqVMne/bZZ61QoUI2duxYO336tJmlPek9JSXFateubXXr1rXt27e7l589e9YKFSpke/fuzdH6r6e1a9dagwYNrHv37jZhwgRzuVz22muvZXhCaV7qTaozZ87YPffcYy6Xyz1TWOrkEhnp2rWr3XHHHbZkyRL3su3bt1ujRo0sNjY218w0xusn6958802rWbOm1a5d28LDwy02NjbdcSkpKfavf/3LgoOD7YsvvvBYN3ToUKtevXoOVJvzvv32W3O5XNa9e3czy3hSkrzYn/Hjx1tERIQ9/fTTVq9ePStUqJD9+uuvGY5funSpBQYG2quvvmqXLl1yL//444+tcOHCdv78+ZwoO8f861//stq1a1u7du2sTJky9tBDD7nXpfeeu2TJEgsICLApU6ZYfHy8e8xrr71mzZo1y7G6fSElJcVGjx5tNWrUsKioKKtVq5a1bds2w7+3y5cv2/Dhwy0wMNA2bNhgZldn+TMza9u2rfXv3z/Has9JhKlcbvDgwfbiiy96LEsvFKR+6Ttz5ozVrVvX6tev7/5DOHDggLVu3drOnDmTM0X7yIgRIzxmNZo+fbqVKFHCXnvtNfey1DfR1P/97rvvrFixYta9e3c7ePCgmV2dvaZ9+/a55otwSkqKtWvXzqZPn+5e9uabb9rNN99sx48fT3e8Wd7oTaorV67Yc889Z507d7a//vWv1rp1azPz/gXP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3XHHHdauXTsz+60fJ06csFtvvdX69+/v8aZ6/vx5q1y5sse5U9HR0VagQAF77733cnYDriNvvUn1+OOP2zvvvOO+ff78eWvRooXVqVPHvWfmvffey3W92b9/v7Vq1crj17Vp06bZ7bff7jEutV8XLlywnj172i233OLxwZT6359//rk1b94810yksGjRIgsLC7NFixZ5LP99iMyrr5/fy2iym9SQ9Oqrr1qpUqVs7NixHkHrrbfesvLly3uc29mhQwdr1aqV+/yF3GDTpk32wAMPWMeOHW3w4MEWFBRkvXv39vh7+eyzz6x3795mZrZlyxa75ZZbrHPnzta8eXP797//7R6X2/qzb98+a926tfXp08cOHTpkO3bssGLFitnrr79uZhmf82NmNnHiRAsODrbly5e7l9WoUcPq1KmT7vmLN6K9e/das2bNrHfv3rZ792577bXXrECBAh6f32aen22vvPKKjRkzxsyuTnJzbTjIbf1Jz9atW6106dJWqVIl94+Dqa+jM2fO2KOPPmplypRxj0/tz0svvWTly5d3L4+Li7PQ0FDr1KmTxxE+eQFhKg/47rvvLDg42CIjI+3HH390L0/9ADp06JCZWa49MfBa7733ng0fPtyWLl1qAQEB9t///te9LikpyYYPH24FChSwTZs2edyvT58+dv/993ss++STT3Kk5pzirTdmZj/88IOVK1fOfThN6ofRtGnTrGDBgrZz50732NzWm9RJWK6d6WrKlCk2fPjwDO/z9ddfW6lSpeyFF14wM8sVh/Bl5PDhwzZq1CiPPSbJycl29uxZ9yFEx44dszvuuCNPvn5+748mu9m2bZuVLVvWXC6XrV+/3j3uypUrVr9+fXviiSfcr6dp06ZZ48aNPfY23Oi6d+9u//nPf9y3FyxYYEWLFrUuXbq4lw0ZMsQmTZpkZlcP36tevboFBga6Z6JNNWXKlFzVn7Fjx6aZVKpjx442aNCgNGN/f7ijmVnx4sVt9OjR7ts7duzIFXvIU7dx5MiRHjPG/frrrzZixAgrXLhwmi/4qT/2REVFuXvw/vvv29KlS91jtm/fniv6k5Gff/7ZOnToYB07dvT40fja18yHH35ot9xyizuwp/Zt586dVrRoUfv222/dY//73/9aTExMDm6BfyBM5REjR460IkWKuA+LMLv6AdWtW7c89QvCwYMHLT4+3i5fvmxt2rSx6tWru7/smZmdPn3a7r33Xqtfv77Hr6CTJ0+2Z555xszS/tqeW6TXm99v69/+9jdr06aNxzH6GzdutGrVqqU59Ci3+frrr93/PX/+fLvlllvs4Ycftrp169qiRYvs4sWLZvbb6+Py5cs2ceJECwwMtLfeess6deqU5vC33GTGjBk2f/58i4+Pt/nz51vjxo2tXbt2dtddd9lHH31kiYmJVqdOHWvZsmWefP2Y/XbOT2RkpL300ktm9tsvwM8884xVqlTJFixYYGZXz3cNDAy0JUuWWEpKivt96tVXX7WaNWv6ZgNywN69e+3uu+92zz6X2p/IyEhzuVzuWSHff/99GzRokA0ZMsQefPBBGzJkiN19993uvVW55VIevz864D//+Y97L4rZ1fOmGjVqZJ999pnHDxLpSUpKsv/3//6fTZ069brU6guXL1+2YcOG2bhx4+z06dM2bNgwa9q0qZn99trZuHGj3XvvvR6XWTD7LTA88sgj7j3j06dPt1tvvTVX74m61k8//WSzZ8+2uLg4e/XVV+322293n3OX+p5z7tw5e/nlly1fvnweh/Bt27bN6tatm2v2+v4ZhKk8JPUPpUuXLta6dWtr1aqVbdmyxddl5ahrP5i++uorCw0NtQkTJniM2bVrl5UpU8aaN29uW7ZssQMHDtgDDzyQqw87MvPem9R1H374oblcLhswYICdPn3a9u7daw0bNrRXX30114bM30tISLCRI0fa5s2bbd++fdalSxe7/fbb091LNX/+fAsICLCGDRt6/HqXG128eNFee+0169Onj3Xo0MF2795te/bssaioKLvtttvsrbfeshUrVuS514+TyW5iY2Pt+PHjFhYWZrVq1XJP/W1m9uKLL3rstbnR/X7Cm9jYWAsNDbWJEyea2W9f6GbMmGEul8vCwsLs4sWL9vbbb1uVKlVsxIgR7kOT3n33XXO5XFa9enWbMmWKx2QUN6JrJ7tJ/bHGzNw/Rnz33Xd21113WcuWLa1Vq1aWL18+Gzx4sJ08edLMrn7ZTT1v0+xqEPv73//uvtTAjW727NlWv359a9OmjT300EO2fPlyu3jxov3vf/+zlJQUd5g6ePCglSxZMt3Lu3z77bf22GOP2d69e+3xxx+3/PnzW7t27XLlkQQZnYOYGp7WrFljYWFh1rFjxzT3PXLkiDVt2tTuvvtu9w8+b7/9tnXo0CHd84bzGsJUHpKcnGy7du2yDz/8MM/MRONNYmKivfzyy1asWDH3NTlSf6navHmzvfDCC9ayZUurXbu2xyxaeUF6vUn1j3/8w+655x6rV6+e/f3vf89TvcnofITIyEirXbu2HThwwMyufjH85ptvLDw8PNfPYnStVatW2dNPP21bt271WN6oUSNr0KCBXbhwwX0ByNz8+vkzk91UrFjRPdvYwYMHrXLlynbffffZ6NGjrUWLFvb444/bDz/8kINbk/0y6k/q39dTTz1lpUuX9tiT8Oabb1r37t2tTp06tnDhQouNjfUIBbt377b77rvP2rRp4xE+b0RZmewm9TB9M7Nx48ZZiRIl3OeMrVmzxsqUKWN9+vSxpk2b2uOPP55mFtEb1eHDhz2258CBA3bp0qU04TkpKckOHz5skZGR7hB67SFsM2fOtNKlS9vNN99s1atXT/PelRtkdA5i6pESqT27cuWKvfHGG1ayZElbuXKlmZnHkTvx8fHWu3dva9SokdWvX98eeeSRNJO75FWEKeRpBw8etDJlylivXr3SXZ8bp4XPLG+9uXz5cp6cscfsty98ycnJ7g/lBQsW2M033+wOU2YZX0A0N0tKSnLv7b526u733nvPChYs6D7nLC4uLte/fv7sZDepe+q+//57W7p0qQ0aNMjjXI4bXXr9SXX69GmrVKmS3Xnnnfb6669bjx49rHPnzrZ9+3arU6eOx2FuqX+PJ06cyBWH9mVlsptrvwSnqlWrlj3yyCNmdnUv+scff2zDhg3LdechDh48OM25Y7//sSv1/WfVqlXWtWtXM7v6ubZx40Y7f/68mV09f7Fo0aK5+kevzJyDmPoa2r17tzVr1izNOeLXXmbgwoULuWbypOxy41+lDvgT7rjjDvXv31/vvvuuDh06pJUrV2rbtm3u9bfeeqsPq/Ot9HqzdetWSVcvBHnvvff6uELfSL2o47UX5C1XrpzKly+vkJAQ97iMLiCamwUGBqpWrVqSrl4MPDk5WdLV/lSuXFnx8fGSpJCQkFz/+lm1apUqVKigCRMmaMmSJfrss8/cFxv+y1/+ohdeeEGTJk3S119/7b5PkSJF1LRpU61du1ZBQUGSpDvvvFNt2rTRyJEj1aZNG59sy/WQXn+kqxdsLl68uFasWKHXX39dAQEBqlWrlqKjo1W9enXdf//92rJli/txUv8eS5UqpebNm/tkW7KTy+WSy+VS06ZN3ctSUlL01FNPpTtWunrR3cuXL0uS6tWrp127dsnMlD9/frVu3VpDhw5Vy5Ytc2YDckihQoU8Lvo9cuRI9e/fX4MHD9aOHTsk/fYevGbNGtWsWVOSlJCQoOjoaO3atUuS1L17d507d06PPvpoDm9Bzti3b582btyookWLSrr6Wmrfvr374ruzZs2S9NtrqUqVKnrsscd09OhRTZs2TZIUHx/v7qXL5dItt9yiypUr+2Br/BdhCnlaUFCQnn32WZUtW1ZVq1bV1KlTlT9/fl+X5RfS601wcLCvy/ILffr00bZt2xQcHKxDhw5p2LBhatasmUqVKuXr0vzCnDlztG/fPuXPn19HjhzRmDFj1KJFCxUvXtzXpeWY8PBw9e/fX40bN1arVq3Uv39/XblyRdLVL3m9evVSpUqV1L9/f+3bt899v0qVKqlatWqSJDPzSe05Ib3+JCUlucPRnXfeqS5dumjYsGHq2bOn+36FChVSnTp1JF39YpjbVKxYUYMGDVLBggUlSQsWLNBrr72m7du36+9//7sWL16s2NhY95ff1FBQoEABSdK5c+f09NNPu9fnVhcuXNAPP/ygTZs2KTIyUmfPnlW9evU0d+5cRUVFacWKFZKkK1eu6Mcff1T16tV17NgxTZ48WTNmzNDBgwclSaVLl/blZmS71B8aUt87SpUqpWPHjumHH36QJPcPXM2aNZMkTZs2TadPn1ZgYKD7x8HGjRurdevW+ve//61JkyZp8ODBOnXqVE5vyo3Fx3vGAJ9JPUH1+eeft9q1a9vMmTN9XZLfoDferV271kqVKmUdOnSwhg0belzQGVevW1KjRg17/PHHrXHjxnmyP0x2411m+mN29cT31NnCDhw4YG3btrWNGzfmWJ2+9EeT3fz4449WpUoV++CDD+zLL7+0Dh06WNu2be3w4cO+LTwHbN261fLly2cvvPCCTZkyxb18+/bt1rhxY6tevbqZXT18rWXLlvbiiy9aiRIl7K9//WuuuwzMnzkH8f7770/3833EiBHmcrmsVatWtn///hzYihsbYQp53rx585iNJgP0JmPLli2zd955h/5kYM2aNTZnzpxcOStWVjHZjXfeJrxZtGiRNW7c2MLDw61hw4Z5pj+Znexm9OjRdv/991u9evXso48+yskSfa59+/bmcrnc15VKDRUzZ860SpUq2c6dO23r1q3mcrmsZMmSNnnyZF+We11lxzmIqT+irlixwiIiInLdeXbXk8ssFx9HAACAHzh06JAaNGigli1basqUKWnWnzt3Lk+fo+mtPzNnzlR8fLyee+45H1XnGykpKQoICFBKSorMTIGBgVq4cKGefPJJbdu2TXfddZck6dixY7rjjjt8XG3O27Vrl2rWrKnmzZtr0qRJuu222yRJMTExaty4sbZt26bQ0FDNmTNHffv29XG111d0dLSOHj2qGjVq6OGHH9ann36qpk2bul9DBw8e1IYNG3T48GGVLFnSfehs3759dfjwYS1atMj9WOfPn3efY4XMIUwBAHCdJSUlafr06erbt6927dqlAwcOqHjx4rrvvvt8XZpfSK8/RYsWVVhYmMws158D9EcSEhIUHBysr7/+Wk899ZT++9//5rrzfZwYNWqU/vWvf2ngwIHq16+fJGnhwoVauXJlnjrP99ChQypdurSSk5MVFRWlw4cPa+vWre6JbDIyYsQIhYSEqF+/fkpOTs6TEydlByagAADgOmOyG+/S60/q7Jh5OUgx2Y13gwYN0lNPPaUJEyaoa9euatOmjebNm6devXrlmSAlSeXLl1dwcLBCQ0M1cOBAff/995o6dWqacUePHtWxY8ckSd9//72++eYb1atXT1LenIE2u7BnCgCA68iunp+sF198UV9//bWefvpp9ejRw9dl+Q36k7F169apQ4cOioiI0OnTp9W1a1d16tTJ12X5lZSUFO3du1e7d+9WYmKioqKifF2ST125ckUDBgzQ7NmztXv3bo9ZVBcvXqxp06YpPj5e+fLlU69evfTII4/4sNrcgTAFAEAOeP/999WuXbs89Yt5VtCf9H3yySf66aef1KlTJ3qDTOEcxJxFmAIAAAByCc5BzFmcMwUAAADkEpyDmLO8T/MBAAAA4IZw7TmIhQsX1qRJkzgH8TrjMD8AAAAgF+EcxJxDmAIAAAAABzhnCgAAAAAcIEwBAAAAgAOEKQAAAABwgDAFAAAAAA4QpgAAAADAAcIUAAAAADhAmAIAAAAABwhTAAAAAOBAkK8LAADAqXLlyik0NFT58+eXJP3yyy86ePCgypQpo6JFi0qSEhMTFRcXpw8++EAPPfSQoqOj1aZNG1+WDQDIJQhTAIAb2ooVK1SuXDlJ0po1a/TAAw9oxIgR6tq1qyTpyJEjatCggQoUKKCyZcuqcOHCvisWAJCrEKYAADesiIgIhYSEeB0TEhKiiIgIVa1aVdu3b8+hygAAeQHnTAEAbljR0dEqUaKE1zElSpRQ27Ztdc8998jlcmnYsGGSpH379umee+7RzTffrAYNGmjBggWKiIjQbbfdphYtWuj06dP6/vvv1bZtW1WsWFH33XefNm/enObxt2zZosaNG6t8+fIqX768mjZtqm+//fY6bC0AwN8QpgAAuV5kZGSagFO5cmV9++23qlWrlvbs2aMTJ05o7dq12rt3r/bu3asePXronXfe0UcffaQDBw6oQoUKioqKUnJysvsxYmJiVL9+fd1zzz06fPiwDh8+rGrVqql+/fr6/vvvc3grAQA5jTAFAMjzkpKS9Pzzz0uSChUqpObNm2v58uV67LHHFBQUJJfLpfbt2+vgwYM6fPiw+359+/ZVaGio/vGPf7iXjRgxQmamMWPG5Ph2AAByFmEKAJDnVahQQfny5XPfTp0J8O6773Yvu/XWWyVJJ0+elCTFxcVpw4YNqlWrlm666Sb3uNDQUN155536v//7v5woHQDgQ0xAAQDI8woUKOBx2+VypVkeEHD198fUw/wuXLig5ORkbdmyRffcc4/H/c+fP+9+DABA7kWYAgDAgSJFiiggIEARERFasmSJr8sBAPgAh/kBAOBAaGiowsPDtX37dqWkpHisW7p0qYYPH+6jygAAOYUwBQCAQ//85z918uRJ96QT0tUp11988UXdd999Pq4OAHC9uSz13R8AgBvYI488om+//VYHDx5UmTJlVKlSJa1evVqStGTJEg0fPlzbt29XiRIlVKVKFX300Ud68MEH3VOYV6xYUevXr9eTTz6ptWvX6qefflKNGjU0fvx4xcTEaPr06Tp48KDuvPNOde7cWUOGDJF0dXr0QYMGadeuXSpRooRCQ0PVr18/tW7d2me9AADkDMIUAAAAADjAYX4AAAAA4ABhCgAAAAAcIEwBAAAAgAOEKQAAAABwgDAFAAAAAA4QpgAAAADAAcIUAAAAADhAmAIAAAAABwhTAAAAAOAAYQoAAAAAHCBMAQAAAIADhCkAAAAAcIAwBQAAAAAO/H/w87XTOipK0AAAAABJRU5ErkJggg==\n", + "image/png": "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GnXNH+sazVQ6mzx5sj311FPuxy+99JINGjTIhg8f7rGXJi4uzv1m2LBhg/Xs2dOKFi1qPXv2tAYNGthrr73mKH5CQoIlJCRYWFiY/etf/zKzv97oTz/9tN199902Z84cj+UJCQnu///oo4/swQcftAoVKlivXr0sNDQ0TW/8qKgou+eee2zGjBnuZbNmzbKSJUvaTz/9lGy+NxL77x+amJgYW7hwoZ07d87mzp1rLpfLPW83cW9Eor9/Afz66682ZcoUe/jhh+3//u//7J133rlm7IsXL9rZs2fN7MoXmze3+3ri4uKsadOmtmrVqjQ97+DBg1aiRAlr1qyZrV692n7++Wdr0qSJTZ06Nc05fPnll9ahQwdr3bq1+zK93oh977332pIlS9yPDx06ZM2aNfPYe/n3P7gShYWFWenSpa1///7Wtm1ba9Omjcfn9u+ufv6pU6esUqVKtnz5cvey6Oho69Wrl9WvXz/J5XATP6uJnnzySStZsqT16dPHwsLCLCwszPbt25embb/azJkzLTQ01OMIwvLly83lctnYsWPt4sWL7jyu/iycOXPG6tWrZ/fee6+NGjXKWrZsaU888YQdP37ca/cIgn+hrlHXvLHd10Ndo675a12jmUpnQ4cOtRYtWti6deusbdu21q9fP1uyZImVKFHCKlSocM0pDtu2bbMPP/zQTp48maaYV3faZle+TJs0aWJ9+/a1CxcuuJfv2bPH6tata40bN3bHSG6PwsWLF+2bb76xd95557o3eUuMnfhmjImJsVq1alndunXt888/t6lTp9odd9xhDz74oC1atMgOHTrk3otzo7Hffvtt69Wrl7388sseXyiJJ0b//PPP7i/za0mcupIoNjbWYmJirvmcmTNnWp06dWzhwoVe3+7riY+Pt7Nnz1rLli3de4VPnz5tY8eOtenTp7tzNvPcm5z4O4yMjLTBgwdbixYtrGbNmu4/UlLj6i/SNWvWWLdu3WzBggXmcrnccePj493r3Gjs6OhoO3TokMeUkw0bNri/rM+cOWPNmze3OnXqWO/evW3cuHHum4deLbEgnD592tavX29Tpky5buyLFy96/C7/+OMPGz9+vM2dO9djvfHjx1ubNm08tvNqiX8MXbx40bZs2WLvv/++x548p9577z0rXLiwe69tYq5PPPGElShRItk9com5HD161FauXGnjx4+3jz/++IZzQeZGXaOuUdeoa1ejrnmimUpnP/zwg2XPnt2ee+45jz0PW7dutSZNmljlypXN7MovtX///u49LGntjBPXf+6558zlcrm/OBM/xBMmTLACBQok2Xv06quvWrly5Wz27NnuZdu3b7fRo0cnu6cpLbET37Dff/+9TZw40bp27WpVq1a1qKgoi4uLs4EDB1rlypU99oylNbbZlRtDPvroo9axY0d78803LVu2bNajR49kv0z++9//Wo4cOeztt9/2yDHRiy++aFWqVHF/OV/PN998Y+3atbOuXbtaVFSUx1hGb3dKZsyYYR988IFt2LDBY3nJkiXttddes82bN1uNGjVs0KBB9uyzz5rL5bI+ffrYkSNHPNb/5ZdfPB6fOnXqunPyp0yZYq+//rp9/vnnScbefvttmzx5spmZtWvXzooWLerx2jcae+rUqVapUiW7//77rXr16sn+sbZo0SLr3bu3bdu2zV588UULCQmxZ555xn3OgdmVaSNXT4FIjddff90aNmxoDz/8sMdNMM+cOeP+fCR+yS9btizF6S1OYv/duHHj3EXq6p/ZwYMHLVeuXPb++++bmbmLz4kTJywkJMSGDBni8cfVu+++a5s3b76hXJA1Udeoa9S1K6hr1LXk0ExlgPbt25vL5XKf2Jb4Znv33XetXLlytnPnTtu4caOVKFHCBg8e7DjOkSNHrGvXrnbnnXe6L3OZGOvIkSN266232gsvvODxZj99+rSVL1/eY475rFmzLHfu3DZz5sx0iZ3o8ccf95gecPr0aWvZsqXVrl3bvZdt5syZaYq9Z88ee+ihhzz2Krz99ttWrFgxj/USczlz5ow988wzdvPNN3t8IBP/f9WqVdaiRYtUnRT76aefWs2aNe3TTz/1WP73QpYR252clE7GTiwmzz//vN1+++02ceJEj4L06quvWqlSpTzOPejQoYM99NBD7jnH17N+/Xq7//77rWPHjjZixAjLli2b9e7d2+Pn+NVXX1nv3r3NzGzTpk128803W5cuXaxFixb2n//8x3Hsn376yVq3bm39+vWzAwcO2LZt26xgwYL24osvmlnK87fNzN58800LCQmxpUuXupdVrlzZateunew5AH+3e/dua968ufXu3dt27dplw4YNs9y5c3t8nsw8PwsDBw60CRMmmNmVk7Cv/qJPS+zk/PDDD1a0aFErV66c+4+uxO0/ceKEPfroo1a8eHH3+omx//Wvf1mpUqXcyy9evGi5cuWyzp07e+z1BxJR166grl1BXaOuUdf+QjOVAXbs2GEhISEWFhZmv/32m3t54gfvwIEDZmY3fOLbzJkzLTw83JYsWWJBQUH25Zdfusfi4uIsPDzccufObevXr/d4Xr9+/axu3boey7744ot0i212ZZ52yZIl3YfAEz+Eb7/9tuXNm9d974W0xk48ifnqK9NMnTrVwsPDU3zO999/b7fffrs999xzZmbXneqQkoMHD9q4ceM89nzFx8fbyZMn3YfTf/nlF7vzzjvTfbuTc72TsTdv3mwlSpQwl8tla9asca93+fJla9CggT3xxBPun8Xbb79tTZo08dizdS09evSw9957z/14wYIFVqBAAevatat72ciRI23KlClmdmWaQ6VKlSw4ONh9ha9EU6dOTVPsiRMnJjkZvmPHjjZ8+PAk6/592oWZWaFChWz8+PHux9u2bbvuHtzE548dO9bj6j9//vmnjRkzxvLnz5/kyzrxj5FOnTq5X//DDz/0mPe+devWVO89/rs//vjDOnToYB07dvT4Q/LqbV24cKHdfPPN7oKcmNP27dutQIEC9uOPP7rX/fLLLy0yMtJRLsj6qGvUNeoadY26ljyaqQwyduxYu+WWW9yHg82ufDC7d++ebh3y/v377dKlS3bhwgVr06aNVapUyeNkwOPHj1vVqlWtQYMGHntW3nrrLXv66afNLOnepxuJ/ffX+sc//mFt2rTxmPe7bt06q1ixYpJD8Wlx9U3W5s+fbzfffLM9/PDDVqdOHfv000/dJ88m5nPhwgV78803LTg42F599VXr3LlzkqkMqfXOO+/Y/Pnz7dKlSzZ//nxr0qSJtWvXzsqWLWuffPKJxcbGWu3ata1Vq1bpvt2Jrncydrly5WzBggVmduVch+DgYFu8eLElJCS43x/PP/+8Va9e3VH83bt329133+2+ilBi7LCwMHO5XO4rP3344Yc2fPhwGzlypD3wwAM2cuRIu/vuu9179VJ7ieS/7xl+77333HvEzK7ML2/cuLF99dVXHkU9OXFxcfZ///d/Nm3atFTFTrxJ6aRJk+z48eM2evRoe/DBBz22e926dVa1atUkJ/Qmfvk/8sgj7j2306dPt1tvvdXxHrur/f777zZ79my7ePGiPf/881asWDH3nPrE3/OpU6dswIABlj17do+pDps3b7Y6deqkeq8pYEZdM6OuUdeoa2bUtb+jmcpAiW+Erl27WuvWre2hhx6yTZs2pdvrX/1h3LBhg+XKlcveeOMNj3V27txpxYsXtxYtWtimTZts7969dv/999/QYfjrxU4cW7hwoblcLhsyZIgdP37cdu/ebY0aNbLnn3/ecbG7WkxMjI0dO9Y2btxoP/30k3Xt2tWKFSuW7N68+fPnW1BQkDVq1Mhjr0VanT171oYNG2b9+vWzDh062K5duywqKso6depkd9xxh7366qu2bNmydN9uJydjR0dH2+HDh61mzZpWo0YN92Vczcz69+/vsQcuNbETf6/R0dGWK1cue/PNN83sry+4d955x1wul9WsWdPOnj1rr7/+ut1zzz02ZswY96H6Dz74wFwul1WqVMmmTp3qcdJucq4+GTvxjwkzcxf0HTt2WNmyZa1Vq1b20EMPue/4fvToUTO78uWaeF6B2ZWCdd9997kv13sts2fPtgYNGlibNm2sadOmtnTpUjt79qx9/fXXHlcK2r9/vxUpUiTZSz7/+OOP9thjj9nu3bvt8ccftxw5cli7du3SvBc5pTn8iUUmIiLCatasaR07dkzy3EOHDtmDDz5od999t/uPkddff906dOiQ7PkYwLVQ16hr1DXqGnXNE81UBoqPj7edO3fawoUL0+UqJtcSGxtrAwYMsIIFC7rvQ5C4B2Hjxo323HPPWatWraxWrVoeV73JqNiJXnrpJatSpYrVq1fP7rvvvnSLndL84bCwMKtVq5bt3bvXzK58UW7ZssXq16+fbldvWbFihT311FP2ww8/eCxv3LixNWzY0M6cOeO+qdyNbPeNnIxdpkwZ99V39u/fb+XLl7dq1arZ+PHjrWXLlvb444/br7/+mubYiT/3f/7zn1a0aFGPvVavvPKK9ejRw2rXrm0fffSRRUdHe3y579q1y6pVq2Zt2rTxKIDJScvJ2InTi8zMJk2aZIULF3bPXY+IiLDixYtbv3797MEHH/S48ei1/P0mpXv37k32JqVxcXF28OBBCwsLcxfCq6cjvPvuu1a0aFHLkyePVapUKcl75npSmsOfuAc6MZ/Lly/b5MmTrUiRIu5L2F69N//SpUvWu3dva9y4sTVo0MAeeeSRJCdHA6lBXaOuUdeoa9Q1TzRTWcj+/futePHi1qtXr2TH03pp2vSKfeHChQy5mkriF2B8fLz7g75gwQLLkyePu+iYXf8u8WkVFxfn3hN79SVYZ86caXnz5nXPe7948eINb/eNnoyduMdw3759tmTJEhs+fLjH3Oa0xk50/PhxK1eunN1111324osvWs+ePa1Lly62detWq127tsd0hcTf05EjR1I1BSItJ2Nf/aWbqEaNGvbII4+Y2ZW9vJ999pmNHj06TXP5U3OT0sTf+4oVK6xbt25mduVzsG7dOved5ceMGWMFChRw/AdPaubwJ277rl27rHnz5knOG7n6Mr1nzpxJ1UnpgL+grlHXzKhr1DX/rms0U1nI5cuXbcqUKXbTTTfZ/v377auvvkrzHoP0jO3Nk9kT9+xs2LDB/vGPf1xz71R6Szy0HRERYTVq1EiyF/NGpOfJ2OkVO/HLd9++fTZz5kwbNWqUx1ztgQMH2sMPP+w4bmpPxv773rTEPWj9+/e3e+6554ZuxJfam5SamQ0bNsw9NWTXrl329NNPu0+MvpH34fXm8CcWo6v/qPrggw+sWLFi7t9H4mVjgcyKukZdS0Rdo66Z+Wddo5nKgsqXL2833XSTtWnT5ronLmb22M8995y7sO7fv98efPBBe/755695GdH0Mnv2bPfekIMHD1qzZs1s1KhR6RojPU7Gdvrlm5qTsZMTHh7uPkHd6e8htSdjm12ZX361zp0722uvveYobqLU3qQ0NjbWunbtat9++639/PPP1qdPH3O5XI7O3XAyh//33383s7/24v3666/Wu3dvu/vuu+3NN9+0gQMHuufZA5kZdY26Rl17zVHcRNS1jEMzlUUknjjYt29fq1Wrlr377rsBEfvbb7+122+/3Tp06GCNGjXyuGljRvvhhx+scuXK9vjjj1uTJk0yJLa/nox9tUOHDrmvnrN3715r27atrVu37oZiJ7reydi//fab3XPPPfbxxx/bd999Zx06dLC2bdvawYMHbyju9W5SWqlSJTO78mXfqlUr69+/vxUuXNjuvffeNF0a+kbm8NetWzfZz9qYMWPM5XLZQw89ZHv27En7xgN+grpGXaOuUdfM/L+u0UxlMfPmzfPZFbp8Ffvzzz+3GTNm+CR2RESEzZkzx/E9PtLCX0/G/vTTT61JkyZWv359a9SokddPxh4/frzVrVvX6tWrd8N3Xb/a9W5Sun37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\n", "text/plain": [ - "<Figure size 1000x400 with 1 Axes>" + "<Figure size 1000x400 with 2 Axes>" ] }, "metadata": {}, @@ -590,7 +590,7 @@ }, { "cell_type": "markdown", - "id": "09ad9584", + "id": "23c9c27d", "metadata": {}, "source": [ "<a id=\"fsn\"></a>\n", @@ -599,7 +599,7 @@ }, { "cell_type": "markdown", - "id": "83d13bf2", + "id": "c4fe5451", "metadata": {}, "source": [ "<b>DCPH</b> [2], [3] is an extension to the CPH model. DCPH involves modeling the proportional hazard ratios over the individuals with Deep Neural Networks allowing the ability to learn non linear hazard ratios.\n", @@ -613,7 +613,7 @@ }, { "cell_type": "markdown", - "id": "ee882560", + "id": "139eadb5", "metadata": {}, "source": [ "<a id=\"fitfsn\"></a>\n", @@ -622,22 +622,22 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "0eb815b5", + "execution_count": 8, + "id": "6a50e060", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:03<00:00, 15.29it/s]\n", - " 32%|███████████████████████████████████▌ | 16/50 [00:01<00:02, 12.67it/s]\n", - " 64%|███████████████████████████████████████████████████████████████████████ | 32/50 [00:03<00:02, 8.56it/s]\n", - " 20%|██████████████████████▏ | 10/50 [00:01<00:04, 8.21it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:02<00:00, 24.79it/s]\n", - " 50%|███████████████████████████████████████████████████████▌ | 25/50 [00:01<00:01, 19.35it/s]\n", - " 82%|███████████████████████████████████████████████████████████████████████████████████████████ | 41/50 [00:02<00:00, 16.10it/s]\n", - " 16%|█████████████████▉ | 8/50 [00:00<00:03, 13.96it/s]\n" + "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:03<00:00, 16.29it/s]\n", + " 32%|██████████████████████████▏ | 16/50 [00:00<00:02, 16.57it/s]\n", + " 64%|████████████████████████████████████████████████████▍ | 32/50 [00:02<00:01, 12.88it/s]\n", + " 20%|████████████████▍ | 10/50 [00:00<00:02, 13.95it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:01<00:00, 31.97it/s]\n", + " 50%|█████████████████████████████████████████ | 25/50 [00:00<00:00, 28.28it/s]\n", + " 82%|███████████████████████████████████████████████████████████████████▏ | 41/50 [00:01<00:00, 21.97it/s]\n", + " 16%|█████████████▎ | 8/50 [00:00<00:02, 19.77it/s]\n" ] } ], @@ -678,7 +678,7 @@ }, { "cell_type": "markdown", - "id": "8983b804", + "id": "53fc00ce", "metadata": {}, "source": [ "<a id=\"evalfsn\"></a>\n", @@ -687,7 +687,7 @@ }, { "cell_type": "markdown", - "id": "28aad20c", + "id": "41828164", "metadata": {}, "source": [ "Compute the Brier Score and time-dependent concordance index for the test set. See notebook introduction for more details." @@ -695,8 +695,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "dd8caa11", + "execution_count": 9, + "id": "492fdeee", "metadata": {}, "outputs": [ { @@ -732,7 +732,7 @@ } }, "cell_type": "markdown", - "id": "b875cc6c", + "id": "33256182", "metadata": {}, "source": [ "<a id=\"dsm\"></a>\n", @@ -753,7 +753,7 @@ }, { "cell_type": "markdown", - "id": "68ee298a", + "id": "27608fc2", "metadata": {}, "source": [ "<a id=\"fitdsm\"></a>\n", @@ -762,38 +762,38 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "2f1e347f", + "execution_count": 7, + "id": "c697a92a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 18%|██████████████████▉ | 1799/10000 [00:04<00:20, 400.33it/s]\n", - " 90%|████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 9/10 [00:01<00:00, 5.31it/s]\n", - " 18%|██████████████████▉ | 1799/10000 [00:04<00:22, 369.96it/s]\n", - " 90%|████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 9/10 [00:01<00:00, 4.96it/s]\n", - " 18%|██████████████████▉ | 1799/10000 [00:05<00:23, 350.53it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.25it/s]\n", - " 18%|██████████████████▉ | 1799/10000 [00:04<00:21, 376.50it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.96it/s]\n", - " 18%|██████████████████▉ | 1799/10000 [00:04<00:22, 364.78it/s]\n", - " 90%|████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 9/10 [00:02<00:00, 4.01it/s]\n", - " 18%|██████████████████▉ | 1799/10000 [00:05<00:24, 340.31it/s]\n", - " 90%|████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 9/10 [00:01<00:00, 4.63it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:03<00:21, 399.50it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.22it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:03<00:22, 393.39it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.22it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:03<00:23, 368.06it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.61it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:03<00:23, 372.02it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.72it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:02<00:16, 516.68it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.32it/s]\n", - " 12%|████████████▊ | 1224/10000 [00:03<00:22, 391.68it/s]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.24it/s]\n" + " 18%|█████████████▋ | 1799/10000 [00:03<00:14, 568.56it/s]\n", + " 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [00:01<00:00, 6.72it/s]\n", + " 18%|█████████████▋ | 1799/10000 [00:03<00:15, 545.06it/s]\n", + " 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [00:01<00:00, 6.83it/s]\n", + " 18%|█████████████▋ | 1799/10000 [00:03<00:15, 516.95it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 6.62it/s]\n", + " 18%|█████████████▋ | 1799/10000 [00:03<00:15, 533.51it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 6.53it/s]\n", + " 18%|█████████████▋ | 1799/10000 [00:03<00:15, 516.46it/s]\n", + " 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [00:01<00:00, 5.57it/s]\n", + " 18%|█████████████▋ | 1799/10000 [00:03<00:15, 531.59it/s]\n", + " 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [00:01<00:00, 5.75it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:02<00:17, 501.85it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.54it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:02<00:20, 432.94it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.61it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:02<00:17, 496.41it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:01<00:00, 5.51it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:02<00:19, 445.10it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.75it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:02<00:20, 428.19it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.45it/s]\n", + " 12%|█████████▎ | 1224/10000 [00:03<00:26, 334.34it/s]\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:02<00:00, 4.47it/s]\n" ] } ], @@ -834,7 +834,7 @@ }, { "cell_type": "markdown", - "id": "81c45ead", + "id": "b3ca9d31", "metadata": {}, "source": [ "<a id=\"evaldsm\"></a>\n", @@ -843,7 +843,7 @@ }, { "cell_type": "markdown", - "id": "ad13ad21", + "id": "d93ab7b9", "metadata": {}, "source": [ "Compute the Brier Score and time-dependent concordance index for the test set. See notebook introduction for more details." @@ -851,8 +851,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "d0d5b400", + "execution_count": 8, + "id": "59273964", "metadata": {}, "outputs": [ { @@ -883,7 +883,7 @@ }, { "cell_type": "markdown", - "id": "8185b74e", + "id": "a3b7c31e", "metadata": {}, "source": [ "<a id=\"dcm\"></a>\n", @@ -897,7 +897,7 @@ } }, "cell_type": "markdown", - "id": "82daa2f4", + "id": "e2714a30", "metadata": {}, "source": [ "<b>DCM</b> [2] generalizes the proportional hazards assumption via a mixture model, by assuming that there are latent groups and within each, the proportional hazards assumption holds. DCM allows the hazard ratio in each latent group, as well as the latent group membership, to be flexibly modeled by a deep neural network.\n", @@ -915,7 +915,7 @@ }, { "cell_type": "markdown", - "id": "03951373", + "id": "c3d8e1cd", "metadata": {}, "source": [ "<a id=\"fitdcm\"></a>\n", @@ -924,66 +924,66 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "065c68c6", + "execution_count": 9, + "id": "e0b8699d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 14%|███████████████▋ | 7/50 [00:02<00:14, 3.04it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 14%|███████████▌ | 7/50 [00:02<00:16, 2.55it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 32%|███████████████████████████████████▌ | 16/50 [00:05<00:12, 2.75it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", + " 32%|██████████████████████████▏ | 16/50 [00:06<00:14, 2.40it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", " return spl(ts)**risks\n", "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:53: RuntimeWarning: invalid value encountered in power\n", " s0ts = (-risks)*(spl(ts)**(risks-1))\n", - " 34%|█████████████████████████████████████▋ | 17/50 [00:06<00:12, 2.64it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 34%|███████████████████████████▉ | 17/50 [00:07<00:13, 2.37it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 14%|███████████████▋ | 7/50 [00:02<00:14, 3.02it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 14%|███████████▌ | 7/50 [00:02<00:18, 2.32it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 72%|███████████████████████████████████████████████████████████████████████████████▉ | 36/50 [00:12<00:04, 2.90it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 72%|███████████████████████████████████████████████████████████ | 36/50 [00:14<00:05, 2.44it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 6%|██████▋ | 3/50 [00:01<00:19, 2.41it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 6%|████▉ | 3/50 [00:01<00:18, 2.52it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 54%|███████████████████████████████████████████████████████████▉ | 27/50 [00:12<00:10, 2.18it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 54%|████████████████████████████████████████████▎ | 27/50 [00:11<00:09, 2.33it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 30%|█████████████████████████████████▎ | 15/50 [00:06<00:15, 2.22it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 30%|████████████████████████▌ | 15/50 [00:05<00:11, 3.00it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:22<00:00, 2.27it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:16<00:00, 2.96it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 6%|██████▋ | 3/50 [00:01<00:21, 2.20it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 6%|████▉ | 3/50 [00:01<00:17, 2.71it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 52%|█████████████████████████████████████████████████████████▋ | 26/50 [00:11<00:10, 2.26it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", + " 52%|██████████████████████████████████████████▋ | 26/50 [00:10<00:08, 2.87it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", " return spl(ts)**risks\n", "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:53: RuntimeWarning: invalid value encountered in power\n", " s0ts = (-risks)*(spl(ts)**(risks-1))\n", - " 70%|█████████████████████████████████████████████████████████████████████████████▋ | 35/50 [00:15<00:06, 2.21it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 70%|█████████████████████████████████████████████████████████▍ | 35/50 [00:14<00:06, 2.49it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 4%|████▍ | 2/50 [00:00<00:15, 3.03it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 4%|███▎ | 2/50 [00:00<00:15, 3.14it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 72%|███████████████████████████████████████████████████████████████████████████████▉ | 36/50 [00:15<00:07, 1.84it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", + " 72%|███████████████████████████████████████████████████████████ | 36/50 [00:12<00:04, 2.90it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:58: RuntimeWarning: invalid value encountered in power\n", " return spl(ts)**risks\n", "C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:53: RuntimeWarning: invalid value encountered in power\n", " s0ts = (-risks)*(spl(ts)**(risks-1))\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:23<00:00, 2.17it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:17<00:00, 2.86it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 2%|██▏ | 1/50 [00:00<00:27, 1.78it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 2%|█▋ | 1/50 [00:00<00:16, 2.91it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 78%|██████████████████████████████████████████████████████████████████████████████████████▌ | 39/50 [00:20<00:05, 1.91it/s]\n", - " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", + " 78%|███████████████████████████████████████████████████████████████▉ | 39/50 [00:15<00:04, 2.44it/s]\n", + " 0%| | 0/50 [00:00<?, ?it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: invalid value encountered in log\n", " probs = gates+np.log(event_probs)\n", - " 20%|██████████████████████▏ | 10/50 [00:04<00:21, 1.83it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", + " 20%|████████████████▍ | 10/50 [00:03<00:14, 2.82it/s]C:\\Users\\Willa Potosnak\\OneDrive\\Documents\\CMU Research\\CMU_Projects\\auton-survival\\examples\\..\\auton_survival\\models\\dcm\\dcm_utilities.py:105: RuntimeWarning: divide by zero encountered in log\n", " probs = gates+np.log(event_probs)\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:22<00:00, 2.27it/s]\n" + "100%|██████████████████████████████████████████████████████████████████████████████████| 50/50 [00:18<00:00, 2.75it/s]\n" ] } ], @@ -1024,7 +1024,7 @@ }, { "cell_type": "markdown", - "id": "4794d4f9", + "id": "0ecdf4ba", "metadata": {}, "source": [ "<a id=\"evaldcm\"></a>\n", @@ -1033,7 +1033,7 @@ }, { "cell_type": "markdown", - "id": "b6248233", + "id": "babdf485", "metadata": {}, "source": [ "Compute the Brier Score and time-dependent concordance index for the test set. See notebook introduction for more details." @@ -1042,12 +1042,12 @@ { "cell_type": "code", "execution_count": 12, - "id": "2ee57c19", + "id": "cfdd7cb5", "metadata": {}, "outputs": [ { "data": { - "image/png": "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pzJlyqh79+6aMGGCJCk8PFz16tXT+fPnMzJHAAAyVdmyZVNtpCRxZAoAkCJHzdTEiRO1dOlSjR07VkuWLFGhQoUkSXPnzlWTJk00atSoDE0SAIDM1LdvX02dOlXx8fEpjterV8/LGQEAsgJH0/zmz5+vtWvXqly5cpKkcePGSZKCgoI0btw41a5dO+MyBAAgk82YMUN79+7V1KlTVbZsWeXLl89j/MCBAz7KDADgzxw1U8HBwe5GKqWxuLi4m0oKAABvioyMVK1atdyPuaIfACAtHDVTcXFxOnz4sMqUKZNs7NChQ4qNjb3pxAAA8JZy5crp22+/TXW8evXqXswGAJBVODpnqnPnzmrQoIFee+01/fDDD4qLi9OuXbs0d+5ctWjRQl27ds3oPAEAyDQff/zxdcfXrFnjpUwAAFmJoyNTo0ePVlRUlIYMGSKXyyUzU9WqVSVJHTp00MiRIzM0SQAAMtr333+v+vXrS5IqVKhw3XWjoqLc6wIAkMRRM5UjRw4tXrxY3333nVauXKnTp0+rcOHCatGihUJDQzM6RwAAMlz//v21devWDF8XABA4HDVTb775piSpa9euNE8AgCxp//79atKkSZrW5Wp+AICUOGqmBg4cqB49enBuFAAgy0q6mFJa1wUA4K8cNVP33XefPvjgg4zORUuXLtWECROUO3duBQUFafr06apUqVKq658+fVrDhg3TgQMHdPHiRV2+fFkvvfSSOnbsmOG5AQCyl/vuu0/btm1L07pOr+ZHXQOA7M3R1fzuuusuxcTEpDret2/fdL/m5s2b1a1bNy1YsEDr1q1T79691aJFC/3xxx8prh8XF6emTZuqUaNGioiIUGRkpFq2bKktW7akOzYAIPAMHz48U9ZNQl0DgOzPUTM1depUPfPMM9q8ebMuXbqUbHzTpk3pfs0pU6aoVatWqlixoiTpySefVHx8vObMmZPi+u+9955uueUWdevWzb3sH//4h3r37p3u2ACAwPP4449nyrpJqGsAkP05aqaqVKmijz76SPXq1VOBAgUUHBzs8W/79u3pfs01a9aodu3a/00sKEg1a9bU6tWrU1z/s88+S3bxi8KFC+vee+9Nd2wAADIadQ0Asj9H50wVLVpUzz77bIpjZqZ33303Xa935swZRUdHq1ixYh7LixUrlur0hp07d6phw4bq06ePduzYoVy5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zp3VpUsXlSxZUomJiQoK8l6vu379er322ms6d+6cYmNjNXjwYD300EPKmzevzCxTv4R9GfvkyZPq2rWrChUqpGrVqumpp57SZ599poEDB6pGjRqZFlfy7XanZu7cuYqLi1OlSpVUr149r+bgy9gffPCBPvjgA+XJk0fR0dGqXLmyqlev7pXYb7/9thYtWqSiRYsqJCREb7/9tm699VavxP6rKVOm6KuvvtJdd92l0qVLKzw83CfvQ2Rd1DXfx6aueaKuUdcyva4ZfOLy5cvWpk0b++CDD8zMbM6cOValShVr3769Xb582czMEhMTvZLL0aNH7YEHHrDly5fbhQsX7KWXXrLixYvbyJEjs3VsM7Nly5ZZ79693Y83btxolStXttatW9uZM2cyLa6vt/uv9u3bZw0bNrQuXbrYc889Z7fddpuNHj3aTpw4YWaZ+170ZWwzs8jISHviiSds3759Zma2detW++OPPzI1ZpIZM2ZYWFiY7d+/377//nu799577YEHHrDvvvvOK/GTXLlyxV588UXr3r27HTx40GbOnGlFihSxXr162ZEjR7yaC7Iu6prvY5tR15JQ16hr3qprNFM+snHjRitdurTHsnfffddKly5tAwYMMDOzhIQEr+Ty0UcfWfXq1T2WDRw40MqXL28zZszI1Fx8GdvMbNy4cVa3bl0zM4uPjzezq7+HcuXKuX8PmcHX2/1X//znP23UqFHuxwsWLLAiRYrY4MGDLS4uLtvGNjN79tlnbfLkyZkeJyUtWrSw9957z/143759VqlSJXv44YftP//5j9fyiImJsfvvv982bNjgXrZq1SrLly+fDRkyxC5evOi1XJB1Udd8H9uMupaEukZd81Zd45wpH8mfP7+CgoL0/fffu5c9/vjj6tixo958801FRUUpKCjIK3NMc+TIoZCQEB05csS9bMCAAapUqZJef/11nT59OtNy8WVsSUpMTFTevHm1f/9+BQcHS5I6d+6sZs2a6dNPP9VPP/2UKXF9vd1Jkl5/+/btOnHihCQpISFBXbp00RNPPKEvv/xSs2fP9lg3O8S+9jVz587t/t0nJCRo8uTJmjRpkl5//XWdOXMmw+MmuXDhglwul86fP+/OpXz58urbt6+ioqL09ttvZ1rsv/r11191/vx5Xbx4UXZ1J5uaNWumHj16aNmyZVq2bJnXckHWRV3z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W716tU2cONE++eSTm84FWRt1jbpGXaOuXYu65olmKoP9+OOPljNnTnv++ec99jxs377dmjVrZlWrVjWzq7/UgQMHuvewpLczTlr/+eefN5fL5f7iTPoQT5o0yQoVKpRs79Frr71mFSpUsLlz57qX7dy508aOHZvinqb0xE56w/7www82efJk6969u1WvXt2ioqIsPj7eBg8ebFWrVvXYM5be2GZXbwz52GOPWefOne2tt96yHDlyWK9evVL8MvnXv/5luXLlsnfeeccjxyQvvfSSVatWzf3lfCPffvutdejQwbp3725RUVEeY5m93amZNWuWffjhh7Zp0yaP5aVLl7bXX3/dtm7darVq1bIhQ4bYc889Zy6Xy/r162fHjh3zWP/XX3/1eHzmzJkbzsmfNm2avfHGG/bFF18kG3vnnXds6tSpZmbWoUMHK168uMdr32zs6dOnW5UqVeyBBx6wmjVrpvjH2pIlS6xv3762Y8cOe+mllywkJMSeffZZ9zkHZlenjVw7BSIt3njjDWvcuLE98sgjHjfBPHfunPvzkfQlv2LFilSntziJ/VcTJkxwF6lrf2aHDx+2PHny2AcffGBm5i4+p06dspCQEBs2bJjHH1fvvfeebd269aZyQfZEXaOuUdeuoq5R11JCM5UJOnbsaC6Xy31iW9Kb7b333rMKFSrY7t27bfPmzVaqVCkbOnSo4zjHjh2z7t2721133eW+zGVSrGPHjtntt99u//jHPzze7GfPnrWKFSt6zDGfM2eO5c2b12bPnp0hsZM88cQTHtMDzp49a61bt7a6deu697LNnj07XbH37dtnDz/8sMdehXfeecdKlCjhsV5SLufOnbNnn33Wbr31Vo8PZNL/r1mzxlq1apWmk2I/++wzq127tn322Wcey/9ayDJju1OS2snYScXkxRdftDvuuMMmT57sUZBee+01K1OmjMe5B506dbKHH37YPef4RjZu3GgPPPCAde7c2UaNGmU5cuSwvn37evwcv/rqK+vbt6+ZmW3ZssVuvfVW69atm7Vq1cr+7//+z3Hsn3/+2dq2bWsDBgywQ4cO2Y4dO6xw4cL20ksvmVnq87fNzN566y0LCQmx5cuXu5dVrVrV6tatm+I5AH+1d+9ea9mypfXt29f27NljI0aMsLx583p8nsw8PwuDBw+2SZMmmdnVk7Cv/aJPT+yU/Pjjj1a8eHGrUKGC+4+upO0/deqUPfbYY1ayZEn3+kmxX3jhBStTpox7eUxMjOXJk8e6du3qsdcfSEJdu4q6dhV1jbpGXfsvmqlMsGvXLgsJCbGwsDD7z3/+416e9ME7dOiQmdlNn/g2e/ZsCw8Pt2XLlllQUJD9+9//do/Fx8dbeHi45c2b1zZu3OjxvAEDBlj9+vU9ln355ZcZFtvs6jzt0qVLuw+BJ30I33nnHcufP7/73gvpjZ10EvO1V6aZPn26hYeHp/qcH374we644w57/vnnzcxuONUhNYcPH7YJEyZ47PlKSEiw06dPuw+n//rrr3bXXXdl+Han5EYnY2/dutVKlSplLpfL1q1b517vypUr1qhRI3vyySfdP4t33nnHmjVr5rFn63p69epl77//vvvxokWLrFChQta9e3f3stGjR9u0adPM7Oo0hypVqlhwcLD7Cl9Jpk+fnq7YkydPTnYyfOfOnW3kyJHJ1v3rtAszsyJFitjEiRPdj3fs2HHDPbhJzx8/frzH1X/+/PNPGzdunBUsWDDZl3XSHyNdunRxv/5HH33kMe99+/btad57/Fd//PGHderUyTp37uzxh+S127p48WK79dZb3QU5KaedO3daoUKF7KeffnKv++9//9siIyMd5YLsj7pGXaOuUdeoaymjmcok48ePt9tuu819ONjs6gezZ8+eGdYhHzx40C5fvmyXLl2ydu3aWZUqVTxOBjx58qRVr17dGjVq5LFn5e2337ZnnnnGzJLvfbqZ2H99rb///e/Wrl07j3m/GzZssMqVKyc7FJ8e195kbeHChXbrrbfaI488YvXq1bPPPvvMffJsUj6XLl2yt956y4KDg+21116zrl27JpvKkFbvvvuuLVy40C5fvmwLFy60Zs2aWYcOHax8+fL26aefWlxcnNWtW9fatGmT4dud5EYnY1eoUMEWLVpkZlfPdQgODralS5daYmKi+/3x4osvWs2aNR3F37t3r91zzz3uqwglxQ4LCzOXy+W+8tNHH31kI0eOtNGjR9uDDz5oo0ePtnvuuce9Vy+tl0j+657h999/371HzOzq/PKmTZvaV1995VHUUxIfH2//8z//YzNmzEhT7KSblE6ZMsVOnjxpY8eOtYceeshjuzds2GDVq1dPdkJv0pf/o48+6t5zO3PmTLv99tsd77G71u+//25z5861mJgYe/HFF61EiRLuOfVJv+czZ87YoEGDLGfOnB5THbZu3Wr16tVL815TwIy6ZkZdo65R18yoa39FM5WJkt4I3bt3t7Zt29rDDz9sW7ZsybDXv/bDuGnTJsuTJ4+9+eabHuvs3r3bSpYsaa1atbItW7bY/v377YEHHripw/A3ip00tnjxYnO5XDZs2DA7efKk7d2715o0aWIvvvii42J3rdjYWBs/frxt3rzZfv75Z+vevbuVKFEixb15CxcutKCgIGvSpInHXov0On/+vI0YMcIGDBhgnTp1sj179lhUVJR16dLF7rzzTnvttddsxYoVGb7dTk7Gjo6OtqNHj1rt2rWtVq1a7su4mpkNHDjQYw9cWmIn/V6jo6MtT5489tZbb5nZf7/g3n33XXO5XFa7dm07f/68vfHGG3bvvffauHHj3IfqP/zwQ3O5XFalShWbPn26x0m7Kbn2ZOykPybMzF3Qd+3aZeXLl7c2bdrYww8/7L7j+/Hjx83s6pdr0nkFZlcL1v333+++XO/1zJ071xo1amTt2rWz5s2b2/Lly+38+fP29ddfe1wp6ODBg1asWLEUL/n8008/2eOPP2579+61J554wnLlymUdOnRI917k1ObwJxWZiIgIq127tnXu3DnZc48cOWIPPfSQ3XPPPe4/Rt544w3r1KlTiudjANdDXaOuUdeoa9Q1TzRTmSghIcF2795tixcvzpCrmFxPXFycDRo0yAoXLuy+D0HSHoTNmzfb888/b23atLE6dep4XPUms2Inefnll61atWrWoEEDu//++zMsdmrzh8PCwqxOnTq2f/9+M7v6Rblt2zZr2LBhhl29ZdWqVfb000/bjz/+6LG8adOm1rhxYzt37pz7pnI3s903czJ2uXLl3FffOXjwoFWsWNFq1KhhEydOtNatW9sTTzxhv/32W7pjJ/3c//d//9eKFy/usdfq1VdftV69elndunXt448/tujoaI8v9z179liNGjWsXbt2HgUwJek5GTtpepGZ2ZQpU6xo0aLuuesRERFWsmRJGzBggD300EMeNx69nr/epHT//v0p3qQ0Pj7eDh8+bGFhYe5CeO10hPfee8+KFy9u+fLlsypVqiR7z9xIanP4k/ZAJ+Vz5coVmzp1qhUrVsx9Cdtr9+ZfvnzZ+vbta02bNrVGjRrZo48+muzkaCAtqGvUNeoadY265olmKhs5ePCglSxZ0vr06ZPieHovTZtRsS9dupQpV1NJ+gJMSEhwf9AXLVpk+fLlcxcdsxvfJT694uPj3Xtir70E6+zZsy1//vzuee8xMTE3vd03ezJ20h7DAwcO2LJly2zkyJEec5vTGzvJyZMnrUKFCnb33XfbSy+9ZL1797Zu3brZ9u3brW7duh7TFZJ+T8eOHUvTFIj0nIx97Zduklq1atmjjz5qZlf38n7++ec2duzYdM3lT8tNSpN+76tWrbIePXqY2dXPwYYNG9x3lh83bpwVKlTI8R88aZnDn7Tte/bssZYtWyY7b+Tay/SeO3cuTSelA/6CukZdM6OuUdf8u67RTGUjV65csWnTptktt9xiBw8etK+++irdewwyMrY3T2ZP2rOzadMm+/vf/37dvVMZLenQdkREhNWqVSvZXsybkZEnY2dU7KQv3wMHDtjs2bNtzJgxHnO1Bw8ebI888ojjuGk9Gfuve9OS9qANHDjQ7r333pu6EV9ab1JqZjZixAj31JA9e/bYM8884z4x+mbehzeaw59UjK79o+rDDz+0EiVKuH8fSZeNBbIq6hp1LQl1jbpm5p91jWYqG6pYsaLdcsst1q5duxueuJjVYz///PPuwnrw4EF76KGH7MUXX7zuZUQzyty5c917Qw4fPmwtWrSwMWPGZGiMjDgZ2+mXb1pOxk5JeHi4+wR1p7+HtJ6MbXZ1fvm1unbtaq+//rqjuEnSepPSuLg46969u3333Xf2yy+/WL9+/czlcjk6d8PJHP7ff//dzP67F++3336zvn372j333GNvvfWWDR482D3PHsjKqGvUNera647iJqGuZR6aqWwi6cTB/v37W506dey9994LiNjfffed3XHHHdapUydr0qSJx00bM9uPP/5oVatWtSeeeMKaNWuWKbH99WTsax05csR99Zz9+/db+/btbcOGDTcVO8mNTsb+z3/+Y/fee6998skn9v3331unTp2sffv2dvjw4ZuKe6OblFapUsXMrn7Zt2nTxgYOHGhFixa1++67L12Xhr6ZOfz169dP8bM2btw4c7lc9vDDD9u+ffvSv/GAn6CuUdeoa9Q1M/+vazRT2cyCBQt8doUuX8X+4osvbNasWT6JHRERYfPmzXN8j4/08NeTsT/77DNr1qyZNWzY0Jo0aeL1k7EnTpxo9evXtwYNGtz0Xdev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\n", + "image/png": "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14QJEyRJ4eHhqlevni5cuJCROQIAkKnKli2baiMliSNTAAC3PGqmJk6cqGXLlmns2LFaunSpChUqJEmaN2+emjRpolGjRmVokgAAZKa+fftq6tSpSkhIcDter149L2cEAMgKPDrNb8GCBVq3bp3KlSsnSRo3bpwkKSgoSOPGjVPt2rUzLkMAADLZzJkztW/fPk2dOlVly5ZVvnz5XMYPHjzoo8wAAP7Mo2YqODjY2Ui5G4uPj7+lpAAA8KbIyEjVqlXL+ZgZ/QAAaeFRMxUfH68jR46oTJkyKcYOHz6suLi4W04MAABvKVeunL799ttUx6tXr+7FbAAg+8suk194dM1U586d1aBBA73++uv64YcfFB8fr927d2vevHlq0aKFunbtmtF5AgCQaT7++OMbjq9du9ZLmQAAshKPjkyNHj1aUVFRGjJkiBwOh8xMVatWlSR16NBBI0eOzNAkAQDIaN9//73q168vSapQocIN142KinKuCwBAMo+aqRw5cmjJkiX67rvvtGrVKp05c0aFCxdWixYtFBoamtE5AgCQ4fr3769t27Zl+LoAgMDhUTM1bdo0SVLXrl1pngAAWdKBAwfUpEmTNK3LbH4AAHc8aqYGDhyoHj16cG0UACDLSp5MKa3rAgBwPY+aqQceeEAffPBBRueiZcuWacKECcqdO7eCgoI0Y8YMVapUKdX1z5w5o2HDhungwYO6dOmSYmNj9fLLL6tjx44ZnhsAIHt54IEHtH379jSt6+lsftQ1AMjePJrN75577lFMTEyq43379k33a27ZskXdunXTwoULtX79evXu3VstWrTQH3/84Xb9+Ph4NW3aVI0aNVJERIQiIyPVsmVLbd26Nd2xAQCBZ/jw4ZmybjLqGgBkfx41U1OnTtVzzz2nLVu26PLlyynGN2/enO7XnDJlilq1aqWKFStKkp5++mklJCRo7ty5btd/7733dNttt6lbt27OZf/85z/Vu3fvdMcGAASeJ598MlPWTUZdA4Dsz6NmqkqVKvroo49Ur149FShQQMHBwS7/duzYke7XXLt2rWrXrv1XYkFBqlmzptasWeN2/c8++yzF5BeFCxfW/fffn+7YAABkNOoaAGR/Hl0zVbRoUT3//PNux8xM7777brpe7+zZs4qOjlaxYsVclhcrVizV0xt27dqlhg0bqk+fPtq5c6dy5cqljh076rnnnpPD4XD7nLi4OMXFxaWaNwAAGYG6BgCBwaNmqnz58hozZkyq4zt37kzX6yVffxUSEuKyPCQkJNVrs86fP69JkyZp+fLlmjlzpg4cOKCGDRsqOjpa//znP90+Z9KkSQoPD3c7VqhQIZ0+fTpded+K6Ohor8Xyp9i+jk/swItPbPhCINY1T/gyP2IHXvxAje3r+Nk9tkfN1Lp16244vnTp0nS9Xp48eSQpxd61uLg459j1goKCVKdOHbVs2VLS1QavV69eeuONN1ItOsOHD9egQYPcjtWpU0dFihRJV963ytvx/CW2r+MTO/DiExveFqh1Lb0C9fMRqLF9HT9QY/s6fnaP7VEzlWzdunVavXq1Tp8+rSJFiqhFixZq2LBhul/nzjvvVMGCBXXy5EmX5SdPnlTZsmXdPqdkyZIqUaKEy7JSpUrp999/159//qncuXOneE5ISEiKvYTJUjuFAgCA9KKuAUBg8KiZSkxMVJcuXfTpp5+6nJM9adIkPfHEE1q4cKGCg4PT9ZpNmjRRZGSk87GZadu2bRo5cqTb9Rs2bJjiZou///67Chcu7LbgAABwM8eOHVNERIQuXryofv366cCBAypfvrxHr0VdA4Dsz6PZ/CZOnKjvv/9er732mjZu3Kiff/5ZGzdu1Guvvabvv/9ekyZNSvdrDhs2TCtXrtT+/fslydmQde/eXZLUs2dPde3a1bn+P/7xD23ZssV5Ie+5c+c0b948vfjii55sEgAggCUlJalfv34qU6aMunfvrgkTJkiSwsPDVa9ePV24cCHdr0ldA4Dsz6MjUwsWLFBERITKlSvnXFa+fHnVrVtXjz76qFq1aqVRo0al6zXr1KmjuXPnqkuXLs47xa9atUr58+eXJMXGxurKlSvO9atUqaJly5apX79+ypkzpxISEvTss89q8ODBnmwSACCATZw4UcuWLdPYsWNVuXJlZw2bN2+eXn75ZY0aNUrTp09P12tS1wAg+/OomQoODnZppK5Vrlw55cjh2aVYYWFhCgsLczu2aNGiFMtatGihFi1aeBQLAIBkCxYs0Lp165y1bdy4cZKuTgoxbtw4l/tFpQd1DQCyN49O84uLi9PZs2fdjp05c0axsbG3lBQAAN50o52EwcHBio+P93JGAICswKNmql27dmratKlWrFihU6dOKSEhQadOndKXX36p5s2bp7oXDgAAfxQfH59i8odkhw8fTvXGuACAwObR+XivvPKKmjVrpnbt2qUYq1u3rvP0CAAAsoLOnTurQYMGGjx4sOrXr6/4+Hjt3r1b27Zt0yuvvOIyUQQAAMk8aqby5s2rdevWacGCBVq9erXOnDmjwoULq0WLFnrqqac8vmYKAABfGD16tKKiojRkyBA5HA6ZmapWrSpJ6tChQ6rTmQMAApvHXU+OHDnUo0cP9ejRIwPTAQDA+3LkyKElS5YoIiIixU7C0NBQX6cHAPBTHjVTZ8+e1ffff6/g4GC1bt3aufzjjz/WQw89pL/97W8ZliAAAN7SuHFjNW7c2NdpAACyCI8moHjrrbf0xBNPaMGCBS7LIyIiVKNGDe3duzdDkgMAwBt++eUXTZs2TTNmzHBZ/sYbb1DTAACp8qiZWrFihVatWpXiHhkzZ87UrFmzNHTo0AxJDgAAb5g+fbrGjh2rX3/91WX5H3/8oYcfflgbN270UWYAAH/mUTOVlJSU6mkQrVu31okTJ24lJwAAvOrrr7/W+vXrNXnyZJflo0eP1pdffskEFAAAtzxqps6fP3/D8XPnznmUDAAAvuBwOFSpUiW3Y7Vq1VJ0dLSXMwIAZAUeNVP333+/xowZo8TERJfliYmJGj16tO6///4MSQ4AAG84d+6czMztWGJios6ePevljAAAWYHHN+1t1KiR3n33XVWvXl2FChXSuXPntH37dl28eFEbNmzI6DwBAMg0devWVe/evfWvf/1Ld9xxh3P5uXPnNHjwYNWtW9eH2QEA/JVHzVTNmjX13XffaciQIVq9erWSkpIUFBSkhg0b6tVXX1X16tUzOk8AADLNxIkTVbduXS1atEhlypRx7iQ8cuSI8ufPr82bN/s6RQCAH/LoND/p6jnkERER+uOPP/Tbb7/pjz/+0LfffqtatWplZH4AAGS6e++9Vz/++KM6duyoCxcuaMuWLbpw4YI6deqkrVu3qmzZsr5OEQDghzw6MnWt3LlzK3fu3BmRCwAAPnPPPfdozpw5vk4DAJCFpPnIVExMjA4fPqzDhw8rKSnJufzSpUsaPXq02rRpo549e2rr1q2ZkigAAL4ycOBAX6cAAPBDaT4y9X//938aOXKk7rjjDu3du1dFixaVJLVr104RERHKkyePJGnRokVat26d6tSpkzkZAwCQCS5evKitW7fq5MmTKWarXb58ud58803fJAYA8FtpbqY2bNigAQMG6F//+peCgq4e0Fq7dq2+/fZbPfHEE1qwYIGCgoI0aNAgTZ48WUuXLs20pAEAyEgrV65U586ddenSJbdTpDscDh9kBQDwd2lupo4dO6alS5c6GylJWrBggRwOhyZNmqScOXNKkiZNmqTKlStnfKYAAGSSoUOHqnfv3urcubMKFy7sUuvMTK1bt/ZhdgAAf5XmZipHjhwKCQlxPjYz/ec//1G1atVcZjnKkyeP85Q/AACygsTERL3++uupjo8bN86L2QAAsoo0T0Bx/WkPGzZs0KlTp9SyZcsU6+bIccuTBAIA4DVlypRRQkJCquPFihXzYjYAgKwizc1U7ty59f333zsfv/baa3I4HOrcubPLeocOHXJ7vjkAAP5qypQp6tevn7Zv366YmJgU4/379/dBVgAAf5fmQ0jPPfecWrZsqWbNmumXX37Rtm3b9Mgjj6hSpUqSrs6CtGnTJg0fPpyZ/AAAWUq1atXkcDj03nvv+ToVAEAWkuZmqnv37jpw4IBmzZqlhIQEdejQQW+//bZzfMWKFRo5cqQkqW3bthmfKQAAmaRo0aJ6/vnn3Y6Zmd59910vZwQAyArSdXHT+PHjNX78eLdjXbp0UZcuXTIkKQAAvKl8+fIaM2ZMquM7d+70YjYAgKwizddMAQCQXa1bt+6G4++//76XMgEAZCU0UwAA3MTDDz/s6xQAAH6IOcwBANDVU/lmz56tgwcPKi4uzmXs4MGDPsoKAODPODIFAAh433zzjR588EFFRkZqw4YNMjOZmY4fP66IiAjdf//9vk4RAOCHODIFAAh44eHhWrlypRo1aqTq1avr22+/dY7NmzdPu3fv9mF2AAB/5dGRqS+++EJffPGFLl++nNH5AADgdRcvXlSjRo3cjnXr1k2RkZFezggAkBV41Ey1b99e06ZNo5kCAGQLOXPmdP6/w+HQpUuXnI8TEhK4ZgoA4JZHzdS9996rNWvW6G9/+1tG5wMAgNflzp1bK1eulCRVq1ZN3bt31/bt2/XTTz+pR48e1DsAgFseXTN1zz33yMzkcDjcjo8fP16jRo26pcQAAPCWrl27asiQISpXrpyGDx+uBg0aqFatWpKkkJAQLVu2zMcZAgD8kUdHpkaPHq0+ffro1KlTbseXLl16S0kBAOBNzzzzjPbu3asKFSqofPny2rFjh2bNmqVp06Zpx44datGiha9TBAD4IY+OTPXo0UPnz5/X7NmzVahQIeXPn99l/Pjx4xmSHAAAvlCsWDE988wzzscHDhxQ+fLlfZgRAMAfedRMXbx4UWFhYW7HzEwrVqy4paQAAPAnHTt21LZt23ydBgDAz3h8zdSHH36Y6njdunU9TggAgMzWpEmTdK3PbH4AAHc8aqbWr19/w/HNmzd7lAwAAN6wdetW5wQTyfbs2aO4uDjde++9KliwoC5cuKDDhw8rKSlJtWvX9lGmAAB/5lEzlS9fPknSsWPHFBERoYsXL6pfv36cUw4AyBLKlSunb7/91vn4o48+0k8//aTw8HDlzp3bufzPP//Uyy+/rLJly/oiTQCAn/NoNr+kpCT169dPZcqUUffu3TVhwgRJUnh4uOrVq6cLFy5kZI4AAGSo5cuXuzyeMWOGpk6d6tJISVfvP/Xaa69pzpw53ksOAJBleNRMTZw4UcuWLdPYsWO1dOlSFSpUSJI0b948NWnShHtMAQD8WqlSpVweHzt27Ibrnzx5MjPTAQBkUR41UwsWLNC6des0atQotW/fXrly5br6YkFBGjdunDZu3JihSQIAkJny5s2rSZMmycxcliclJWnixIkqUKCAjzIDAPgzj66ZCg4OVrly5VIdi4+Pv6WkAADwpnHjxqljx46aPn26qlevrjvuuEPnzp3T9u3bderUKS1ZssTXKQIA/JBHzVR8fLyOHDmiMmXKpBg7fPiw4uLibjkxAAC85fHHH9c333yjl19+WV9//bWuXLminDlzqm7dulq8eLEaNWrk6xQBAH7Io2aqc+fOatCggQYPHqz69esrPj5eu3fv1rZt2/TKK6+oa9euGZ0nAACZKjQ0VOvWrVNSUpLOnDmjwoULKyjIo7PhAQABwqNmavTo0YqKitKQIUPkcDhkZqpataokqUOHDho5cmSGJgkAQGa64447FBwcrM2bN6tcuXL629/+5uuUAABZgEfNVI4cObRkyRJFRERo9erVzj14LVq0UGhoaEbnCABApjIzRUZGqnTp0r5OBQCQhXjUTCVr3LixGjdunGJ5atdTAQDgjypVqnTDRmrnzp2qUqWK9xICAGQJmXIyeIcOHTLjZQEAyBTNmzfXypUrUx3v0aOH95IBAGQZaT4yNWzYMBUtWlT/+Mc/1KRJkxuue/DgQY+SWbZsmSZMmKDcuXMrKChIM2bMUKVKlW76vBUrVujRRx/Vhx9+SMEDAKRbUlKSnnvuOf39739XpUqVlD9/fpdxT2/aS10DgOwtzc3UJ598olKlSukf//iHtm7dqlq1amVoIlu2bFG3bt0UGRmpihUrat68eWrRooWioqJSFLVrXb58WaNGjcrQXAAAgeWVV16RJP33v//VV199lWLc4XCk+zWpawCQ/aX5NL89e/Zo1apVkqRy5crp22+/TfXfvffem+5EpkyZolatWqlixYqSpKeffloJCQmaO3fuDZ83evRo9enTJ93xAABIVrVqVSUlJaX6z5PrpahrAJD9pbmZyp07t3LlyiVJeuutt7Rz507Fx8e7XffLL79MdyJr165V7dq1/0osKEg1a9bUmjVrUn3O9u3btWXLFj377LPpjgcAQLKhQ4fecHzKlCnpfk3qGgBkfx7N5teoUSNVqFBBa9asUYkSJVKMu1t2I2fPnlV0dLSKFSvmsrxYsWLaunWr2+ckJSWpX79+euedd9J8+kVcXJzi4uLcjplZunIGAGQfXbp0cf5/XFyczp07p0KFCikkJETS1Qkq0oO6BgCBwaNmqkSJEtq1a5dy5syZIUnExMRIkrNoJQsJCXGOXW/69Olq0KBBuk69mDRpksLDw92OFSpUSKdPn07za92q6Ohor8Xyp9i+jk/swItPbKTVtm3bNGTIEG3YsEGJiYkKDg5Wo0aN9Oqrr6p69erpeq1ArGue8GV+xA68+IEa29fxs3tsj5qpMmXK3LCR+uCDD9SrV680v16ePHkkKcXetbi4OOfYtf773//qvffe06ZNm9IcQ5KGDx+uQYMGuR2rU6eOihQpkq7Xu1XejucvsX0dn9iBF5/YuJnt27erYcOGyps3r5o0aaI777xTZ8+edS7fsGGDqlWrlubXC9S6ll6B+vkI1Ni+jh+osX0dP7vH9ug+U/3799fIkSNTvWZq+vTp6Xq9O++8UwULFkwx9ezJkydVtmzZFOuvXr1aktS6dWuXGwdPnjxZjRs31oYNG9zGCQkJUYECBdz+82SmJgBA9jBy5Ei98MILztn8Fi5cqK+++kq//fab+vfvrxEjRqTr9ahrABAYPDoy9fbbb2vfvn2aMWOGypUrl2KKV0/uM9WkSRNFRkY6H5uZtm3bppEjR6ZYt2fPnurZs6fLMofDoWHDhnE/DgBAukVFRbm9aW/OnDk1ceJEtw3QzVDXACD78+jIVGRkpO677z5Vq1ZN+fLlk5m5/PPEsGHDtHLlSu3fv1+StHDhQgUHB6t79+6Srhaarl27evTaAADcSHBwcKpjDodDQUHpL5fUNQDI/jw6MpV8n6nUpPdCXenqud1z585Vly5dnHeKX7VqlfOoV2xsrK5cuZLieZMnT3beYHHy5MmaM2eOIiIi0h0fABC4ihcvrtmzZ+t///d/U4y9//77Kl68eLpfk7oGANmfR83Uxx9/fMPxtWvXepRMWFiYwsLC3I4tWrTI7fJhw4Zp2LBhHsUDAECSXn75ZT3yyCOaOXOm6tatq0KFCuncuXP64YcftHPnTudN69OLugYA2ZtHzVSFChVcHkdHR2v//v0qVqyYSpYsqUKFCmVIcgAAeEPTpk21dOlSDRgwQO+8845zeenSpbV06VI1adLEh9kBAPxVupqpjRs36osvvlBQUJCef/553XPPPZo1a5YGDhzonNkvLCxMH330kXLlypUpCQMAkBnatm2rtm3bav/+/Tpz5owKFy6cYuchAADXSnMz9cUXX+ixxx5TUlKSJGnevHn6/PPP1b9/f1WpUkXlypXTr7/+qqVLl+qNN97QP//5z0xLGgCAzFKhQgWaKABAmqR5eqIpU6YoNDRUn332mRYvXqy77rpL/fr109ixYxUZGanFixdr48aN+uCDD7RkyZLMzBkAgAy1cuVK1ahRQ/Xq1XNZ3qxZM4WHh/soKwCAv0tzM3XkyBEtXbpUYWFhevLJJ/XJJ58oMjJSgwcPdlmvR48eOnPmTIYnCgBAZnn//fdVqlQpzZ4922X5lClTtHHjRk2dOtVHmQEA/Fmam6kCBQqoYMGCzsdlypRRmTJlFBISkmLd22+/PUOSAwDAGw4cOKBFixapcuXKLstr1KihTz/9NNWZ9wAAgS3NzVSePHlSLEu+V0aKF/Xg5oYAAPiKmem2225zO5Y/f34lJCR4OSMAQFaQ5gko4uPjdezYMZnZDZclLwcAIKuIj4/X0aNHVbp06RRjhw8fVmxsrPeTAgD4vTQ3U3v37k1RZMzMbeEBACAreeqpp9S4cWMNHTpUtWvXdt60d8uWLXrttdfUu3dvX6cIAPBDaW6mihYtqueff/6m65mZ3n333VtKCgAAbxoxYoR27dql/v37y+FwOJebmR5//HGNGDHCh9kBAPxVmpupYsWKacyYMWla9/PPP/c4IQAAvC1HjhxasmSJIiIitHr1audNe1u0aKHQ0FBfpwcA8FNpbqY2bdqU5hdNz7oAAPiLxo0bq3HjximWX7x4UQUKFPB+QgAAv5bmafdSm+XoVtcFAMDfuWuwAABI85EpAACyq8TERM2fP19r167VyZMnlZiY6DJ+8OBBH2UGAPBn3BAKABDwBg8erGeeeUbbtm1TfHy8zMzlHwAA7nBkCgAQ8JYuXarIyEhVq1bN7Xj16tW9mxAAIEvgyBQAIOD97W9/S7WRkqQtW7Z4LxkAQJZBMwUACHgPPvigoqKiUh0fNWqUF7MBAGQVnOYHAAh4lSpV0hNPPKGHH35YFStWVL58+VzGP/74Y02ZMsVH2QEA/BXNFAAg4PXp00eStHfvXrfjDofDm+kAALIImikAQMC7//77tXLlSrdjZqbWrVt7OSMAQFZAMwUACHg9e/ZUqVKlUh0fOnSoF7MBAGQVTEABAAh4Q4YMueF4jx49vJMIACBLoZkCAEDSsWPH1KtXL5UoUUIhISEqUaKEnnnmGR07dszXqQEA/BTNFAAg4B06dEg1a9bUwoULlS9fPtWqVUv58uXT/PnzVbNmTR0+fNjXKQIA/BDNFAAg4A0fPlzNmjXTsWPHtG/fPn3//ffat2+fjh07pubNm2v48OG+ThEA4IeYgAIAEPC2bNmiQ4cOKTg42GX53/72N82ZM0f33nuvjzIDAPgzjkwBAAJeSEhIikYqWY4cORQSEuLljAAAWQHNFAAg4OXPnz/V+0x99dVXKlCggJczAgBkBZzmBwAIeEOHDlX79u3Vtm1b1alTR4UKFdK5c+f0ww8/aMWKFZo/f76vUwQA+CGaKQBAwOvYsaNOnz6tESNGaOnSpc7l+fLl0+uvv64nn3zSh9kBAPwVzRQAAJJeeOEF9ejRQxs3btSZM2dUuHBhPfjgg8qXL5+vUwMA+CmaKQAA/r98+fKpefPmvk4DAJBF0EwBAALSlStXtGjRIklSmTJl1LBhQ5fx3bt368iRI3r00Ud9kR4AIAtgNj8AQED69ttv1aNHDw0aNEg//fRTivELFy6offv26tOnj/eTAwBkCTRTAICA9MUXX6hBgwY6dOiQ+vfvn2K8QYMG2rlzp1avXq0lS5b4IEMAgL+jmQIABKQtW7Zo9uzZKliwYKrrVKpUSQsWLNA777zjxcwAAFkFzRQAICDFxsaqYsWKN12vXr16Onv2rBcyAgBkNTRTAICAlDNnzjSvGxREuQQApER1AAAEpMTERMXHx990vfj4+DStBwAIPDRTAICAVL9+fU2bNu2m602fPl3169f3QkYAgKyG+0wBAALSkCFDVLVqVZ09e1YDBw5U0aJFXcZ///13/d///Z9mzpypbdu2+ShLAIA/o5kCAASkMmXKaP78+erSpYteffVVlS5dWsWKFZMknTx5UkePHlXu3Ln1ySefqEyZMj7OFgDgjzjNDwAQsNq1a6etW7fq8ccf1+nTp7Vx40Zt3LhRp0+f1uOPP67IyEi1bNnS12kCAPwUR6YAAAHtgQce0OLFi2VmOnPmjCSpcOHCcjgcPs4MAODvaKYAAJDkcDhUpEgRX6cBAMhCOM0PAAAAADzAkSkA6ZIrV9pvdPqXu9O1dnz8Fb+LDQAAcD2OTAEAAACAB/zqyNSyZcs0YcIE5c6dW0FBQZoxY4YqVarkdt01a9Zo2rRpunTpkv7880/lz59fU6ZMUfXq1b2cNeB96T9Ck76jMxJHaICMQF0DgOzNb45MbdmyRd26ddPChQu1fv169e7dWy1atNAff/zhdv3nn39ejz76qL755htt2rRJdevWVbNmzXTq1CkvZw4AQErUNQDI/vymmZoyZYpatWqlihUrSpKefvppJSQkaO7cuW7Xr1Wrlnr37u18/OKLL+rs2bNas2aNV/IFEHhy5cqZrn/Fi9+d7ucg+6CuAUD25zfN1Nq1a1W7dm3n46CgINWsWTPVIrJ48WIFBf2V/m233SZJio+Pz9xEAQBIA+oaAGR/ftFMnT17VtHR0SpWrJjL8mLFiunw4cNpeo1NmzYpd+7catOmTWakCABAmlHXACAw+MUEFDExMZKkkJAQl+UhISHOsRsxM40fP16vvPKKChcunOp6cXFxiouLS/U1gPRgEggAqaGuAUBg8ItmKk+ePJKUoiDExcU5x25k7NixKl68uAYPHnzD9SZNmqTw8HC3Y4UKFdLp06fTmPGti46O9losf4rt6/gZGzv9zVF6pf6eJLb3Y/tD/LTz9ec80AViXfOEL/MjduDFD9TYvo6f3WP7RTN15513qmDBgjp58qTL8pMnT6ps2bI3fO6sWbO0detWLV++/KZxhg8frkGDBrkdq1OnjooUKZLmnDOCt+P5S2xfx/f1tqdHoP6cAjV2Rsf39bYEskCta+kVqJ/1QI3t6/iBGtvX8bN7bL+4ZkqSmjRposjISOdjM9O2bdvUtGnTVJ+zaNEiffzxx/rss8+UK1cuHT58+IazHoWEhKhAgQJu/zkcjgzdHgBAYKOuAUD25xdHpiRp2LBhatq0qfbv368KFSpo4cKFCg4OVvfu3SVJPXv2VEJCgubPny9JWrFihYYNG6Y5c+Zoz549kqQff/xRJ06cuGGhAgDAG6hrAJD9+U0zVadOHc2dO1ddunRx3il+1apVyp8/vyQpNjZWV678dTF+z549debMGTVp0sTldcaMGePVvAEAcIe6BgDZn980U5IUFhamsLAwt2OLFi1yeezrC/kAALgZ6hoAZG9+c80UAAAAAGQlfnVkCkiP9N/nSUrv1Nbc5wkAAACp4cgUAAAAAHiAZgoAAAAAPEAzBQAAAAAeoJkCAAAAAA8wAQUAZAHpn3AlfZOtSEy4AgBAenFkCgAAAAA8QDMFAAAAAB6gmQIAAAAAD9BMAQAAAIAHaKYAAAAAwAPM5odbkv4ZxqT0zjLGDGMAAADwRxyZAgAAAAAP0EwBAAAAgAdopgAAAADAAzRTAAAAAOABmikAAAAA8ADNFAAAAAB4gGYKAAAAADxAMwUAAAAAHqCZAgAAAAAP0EwBAAAAgAdopgAAAADAAzl8nQBuXa5cOdP5jLvTHSM+/kq6nwMAAABkZxyZAgAAAAAP0EwBAAAAgAdopgAAAADAAzRTAAAAAOABmikAAAAA8ADNFAAAAAB4gGYKAAAAADxAMwUAAAAAHqCZAgAAAAAP0EwBAAAAgAdopgAAAADAAzRTAAAAAOCBHL5OILvIlStnOp9xd7pjxMdfSfdzAAAAAGQOjkwBAAAAgAdopgAAAADAAzRTAAAAAOABmikAAAAA8ADNFAAAAAB4gGYKAAAAADxAMwUAAAAAHqCZAgAAAAAP0EwBAAAAgAdopgAAAADAAzRTAAAAAOABmikAAAAA8IBfNVPLli1TrVq11LBhQ4WGhmrPnj03XH/Dhg2qW7euQkNDVbduXa1fv95LmQIAcHPUNQDI3nL4OoFkW7ZsUbdu3RQZGamKFStq3rx5atGihaKiopQ/f/4U6//yyy9q3bq1Pv/8czVu3Fjfffed2rRpo507d6pUqVI+2AIAAP5CXQOA7M9vjkxNmTJFrVq1UsWKFSVJTz/9tBISEjR37ly360+bNk333XefGjduLEkKDQ1VxYoV9dZbb3krZQAAUkVdA4Dsz2+aqbVr16p27drOx0FBQapZs6bWrFnjdv01a9a4rC9JtWvXTnV9AAC8iboGANmfXzRTZ8+eVXR0tIoVK+ayvFixYjp8+LDb5xw+fDhd60tSXFycLl686Pafmd36hgAAIOoaAAQKv7hmKiYmRpIUEhLisjwkJMQ55u456VlfkiZNmqTw8HC3Y7ly5VLVqlXTk7aL++9P+7pmpjNnzqhw4cJyOBxpfl5q6WWV2J7G98fY6Y3P75zfeVr54+88LX777TfPn5wNZYe6Ji+85z6u+nGWju1pfL+Mnc74/NwD7+eerX7naZDWuuYXzVSePHkkXd3Ddq24uDjnmLvnpGd9SRo+fLgGDRrkdiwkJCRFEcssFy9eVMGCBXXo0CEVKFDAKzH9Ibav4xOb3zmx4S3UNe/x9fs9ULednzuxvc3X8VPjF83UnXfeqYIFC+rkyZMuy0+ePKmyZcu6fU7ZsmXTtb7k3cICAAhc1DUACAx+cc2UJDVp0kSRkZHOx2ambdu2qWnTpm7Xf/jhh13Wl6TIyMhU1wcAwJuoawCQ/flNMzVs2DCtXLlS+/fvlyQtXLhQwcHB6t69uySpZ8+e6tq1q3P9AQMGKCoqSuvWrZMkrV+/XlFRUerfv7/3kwcA4DrUNQDI/vziND9JqlOnjubOnasuXbood+7cCgoK0qpVq5w3NoyNjdWVK1ec65cqVUorVqzQ0KFDlStXLsXFxenf//43NzYEAPgF6hoAZH9+00xJUlhYmMLCwtyOLVq0KMWyhg0bavPmzZmdFgAAHqGuAUD25jen+QWSkJAQjRkzxicXDfsytq/jE5vfObGBzBHI7/dA3XZ+7sQOtPipcRh39QMAAACAdOPIFAAAAAB4gGYKAAAAADxAMwUAAAAAHqCZAgAAAAAP0EwBbjAvS+Dy1e/en95z/pQLgIzB5zpwUdcyNxeaKT+wZ88eXbp0yddpSJIOHTrkfMN5+0Pgy9gLFy7UhAkT9Pnnn0uSHA6H12L7crtvxpf5eDv2pUuXNGnSJC1YsMDrn8fY2Fj9+eefzse+/LlfvnzZ5f3vb+9JZA3UNd/Hpq65R13zjkCqa351095As337dk2dOlXHjx9XdHS0OnfurC5duqhkyZJKSkpSUJD3et0NGzbo9ddf1/nz5xUXF6fBgwfrkUceUd68eWVmmfol7MvYp06dUteuXVWoUCFVq1ZNzzzzjD777DMNHDhQNWrUyLS4km+3OzXz5s1TfHy8KlWqpHr16nk1B1/G/uCDD/TBBx8oT548io6OVuXKlVW9enWvxH777be1ePFiFS1aVCEhIXr77bd1++23eyX29aZMmaKvvvpK99xzj0qXLq3w8HCfvA+RdVHXfB+buuaKukZdy/S6ZvCJ2NhYa9OmjX3wwQdmZjZ37lyrUqWKtW/f3mJjY83MLCkpySu5HDt2zB566CFbsWKFXbx40V5++WUrXry4jRw5MlvHNjNbvny59e7d2/l406ZNVrlyZWvdurWdPXs20+L6eruvt3//fmvYsKF16dLFXnjhBbvjjjts9OjRdvLkSTPL3PeiL2ObmUVGRtpTTz1l+/fvNzOzbdu22R9//JGpMZPNnDnTwsLC7MCBA/b999/b/fffbw899JB99913Xomf7MqVK/bSSy9Z9+7d7dChQzZr1iwrUqSI9erVy44ePerVXJB1Udd8H9uMupaMukZd81Zdo5nykU2bNlnp0qVdlr377rtWunRpGzBggJmZJSYmeiWXjz76yKpXr+6ybODAgVa+fHmbOXNmpubiy9hmZuPGjbO6deuamVlCQoKZXf09lCtXzvl7yAy+3u7r/etf/7JRo0Y5Hy9cuNCKFCligwcPtvj4+Gwb28zs+eeft8mTJ2d6HHdatGhh7733nvPx/v37rVKlSvboo4/af//7X6/lERMTYw8++KBt3LjRuWz16tWWL18+GzJkiF26dMlruSDroq75PrYZdS0ZdY265q26xjVTPpI/f34FBQXp+++/dy578skn1bFjR02bNk1RUVEKCgryyjmmOXLkUEhIiI4ePepcNmDAAFWqVElvvPGGzpw5k2m5+DK2JCUlJSlv3rw6cOCAgoODJUmdO3dWs2bN9Omnn+qnn37KlLi+3u5kya+/Y8cOnTx5UpKUmJioLl266KmnntKXX36pOXPmuKybHWJf+5q5c+d2/u4TExM1efJkTZo0SW+88YbOnj2b4XGTXbx4UQ6HQxcuXHDmUr58efXt21dRUVF6++23My329X799VdduHBBly5dkl3dyaZmzZqpR48eWr58uZYvX+61XJB1Udd8H1uirlHXqGuSd+sazVQmS0xMdLs8NjZWuXPn1vr1653LChYsqI4dO6py5coaNmyYJO9dMPrLL79o9+7dzselS5dWp06dlJiYqDfffDNTc/FF7OQPeYMGDbR+/Xpt27bNuSxfvnzq0KGDihQpovfffz9D417Llz/zZMmvHx0dLTPTH3/84fwCHjRokIoXL64FCxbo+PHjGZ6LL2NfG//YsWPatm2b9uzZoxYtWujEiRO64447NHz4cHXq1EmbN2/O8NiSVKBAAcXExGjdunX6448/nMt79+6tqlWr6uuvv9auXbsyJfb1KlasqAsXLigiIkIOh8P5vTV69GjlypVLX375pX7//Xev5AL/R13zz9jUNbm8PnWNuua1upZhx7jg4vLlyzZ27Fh79dVXUz03s2nTplavXj3bs2ePc9mVK1fslVdesfLly9v27dszPK/UztMtWbKkde3a1c6dO+dcFh0dbZ06dbJmzZrZiRMnsmzsm52bXLt2bXvooYfst99+c3lOly5drFWrVnb69OlMie+Nn/nNJJ9y8fbbb1u+fPls165dLjnPnDnTypcvb7NmzfI4Rmrb743YN5J8+svKlSstZ86cNmrUKPvoo4+c419//bXVqFHDOnTokGmxlyxZYsHBwbZu3Toz+2vbly1bZvfee6/LqRIZwd0pNsnLRowYYXfeeafz/XjlyhUzM5s6daoVLVrUfvjhhwzNBVkPdc1/YlPXUkddo655u65xZCoTzJ8/Xy1bttT27du1Zs2aFF14cnccHh6uzZs364svvlBsbKykq4fJGzZsqJCQEJeu3lPvvfee5syZox9++EFSyj1CybmMGjVKH3/8sTZs2ODck1WgQAE9/PDDOnLkiEd7UKZPn67w8HAtWLDA67GnTJmi8ePHS7p6yoM7ybEmTpyoiIgILV261DmNp8PhUNu2bfXjjz+qcOHC6Yrty+125/jx45o8ebI2bdqUYix5Zq1OnTqpYMGCmjlzppKSkpyxu3fvrty5c2vv3r1KSkpK92kJv//+uxISEiSl/D1kduwTJ05ozJgxmjdvnvMzeG0OyXsLGzVqpEaNGmnChAk6c+aMc7xp06Zq3ry5fv31Vx07dixdsU+ePKnFixdr165dzlMqrt2bnxz74YcfVtWqVTVp0iRdunTJue3t27dX3rx5nXt4U3sPp8XRo0c1f/58HTp0SDExMSleL/n30L59ewUFBWncuHEuy4cOHarLly9rz549kvxvmmN4B3XtKuoadY26Rl1LIUNaMjgdOXLEnnrqKdu7d6+ZmR08eNAuXryYYi9G8uMuXbpYuXLlbOnSpS7LCxcubP/+9789zmPXrl1Wt25d69q1q/Xr188KFChgkydPtlOnTplZyk4+KSnJ6tSpY/Xq1bMdO3Y4l585c8YKFChg+/btS3Ps7777zho3bmy9evWyadOmmcPhsBEjRqR6sV9GxjYzO336tFWrVs0cDodz5pzkPSap6dGjh91zzz22bNky57IdO3ZY06ZNLTo6Ok0z7/h6u9157bXXrGbNmlanTh1r2LChRUdHp5rLv/71LwsJCbFvv/3WZWzMmDFWpUqVdMf+6aefzOFwWK9evcws9QuPMyP2G2+8YaGhofbss89agwYNrECBAvbnn3+muv7y5cstODjYXnrpJbt48aJz+eeff24FCxZ02ct6M//617+sTp061qFDBytZsqQ1b97cOebufbRs2TILCgqyGTNmWGxsrHOdESNGWMuWLdMc93pJSUk2ceJEq1q1qnXp0sVq1apl7du3T/X3cPnyZQsPD7fg4GDbsGGDmf21F699+/b2z3/+0+NckLVR13z//U5d+wt1jbrmb3WNZiqDjRo1ygYOHOiyzN0XfPKX4OnTp61evXrWqFEj5y/6wIED1rZt21s6DD9u3DiXmVxmzZplRYsWtREjRrjkce1/d+/ebYULF7ZevXrZoUOHzOzqzCcdO3ZM8zSeSUlJ1qFDB5dD2K+99prly5fPjh075nb9jIptdvVD8sILL1i3bt3sgQcesLZt25rZjb/wzMzi4+OtSZMmVqNGDfvggw/s6NGj9thjj9lLL72UJbbbnfnz51ufPn2cf2h89913N/ziPXfunNWvX99q1aplu3fvdi6fO3eudevWzRITE9M1E9OOHTvM4XCYw+FwnvKTWvHPqNixsbE2atQoe/75553bvXfvXitevLjLHxTXu3Llij3//PNWuHBh+/TTT53LZ86caUOGDEnL5rrE/v33383MbN68eZY/f34bM2aMmaX+PnzhhRfsrrvusoULFzqXPfvsszZ37tw0xXZn165d9vDDDztjRkREWNGiRa1jx472yy+/mFnKInj8+HFr1qyZValSxbZs2eJc3rZtW69Pawv/QV2jrvliu92hrlHX/LGu0UxlsKlTp9qzzz7rfPzKK6/YkCFDbOTIkS57aRISEpxvhs2bN1vv3r2tePHi1rt3b2vUqJG98cYbHsVPSkqypKQkCwsLs3/84x9m9tcb/bnnnrP77rvP5s+f77I8KSnJ+f8ff/yxPfLII1apUiXr06ePhYaGpuuNHxUVZffff7/Nnj3buWzu3LlWunRp+/nnn93meyuxr//QxMXF2ZIlS+zixYu2YMECczgczvN2k/dGJLv+C+C3336z6dOn22OPPWb/8z//Y+++++4NY8fExNiFCxfM7OoXmze3+2YSEhKsefPmtnbt2nQ978iRI1aqVClr0aKFrVu3zn755Rdr1qyZzZgxI905/Oc//7FOnTpZ27ZtndP0eiP2Aw88YMuXL3c+Pnr0qLVo0cJl7+X1f3AlCwsLs7Jly9rAgQOtffv21q5dO5fP7fWuff7Zs2etSpUqtmrVKuey6Oho69OnjzVs2DDFdLjJn9VkzzzzjJUuXdr69etnYWFhFhYWZgcPHkzXtl9rzpw5Fhoa6nIEYdWqVeZwOGz8+PEWExPjzOPaz8L58+etQYMG9sADD9iYMWOsdevW9vTTT9upU6e8do8g+BfqGnXNG9t9M9Q16pq/1jWaqQw2fPhwa9WqlW3cuNHat29vAwYMsOXLl1upUqWsUqVKNzzFYefOnfbRRx/ZmTNn0hXz2k7b7OqXabNmzax///52+fJl5/L9+/db/fr1rWnTps4Y7vYoxMTE2LfffmvvvvvuTW/ylhw7+c0YFxdnderUsfr169sXX3xhM2bMsLvvvtseeeQRW7p0qR09etS5F+dWY7/zzjvWp08fe/XVV12+UJIvjP7ll1+cX+Y3knzqSrL4+HiLi4u74XPmzJlj9erVsyVLlnh9u28mMTHRLly4YK1bt3buFT537pyNHz/eZs2a5czZzHVvcvLvMDIy0oYOHWqtWrWy2rVrO/9ISYtrv0jXr19vPXr0sMWLF5vD4XDGTUxMdK5zq7Gjo6Pt6NGjLqecbN682fllff78eWvZsqXVq1fP+vbtaxMmTHDePPRayQXh3LlztmnTJps+ffpNY8fExLj8Lv/44w+bOHGiLViwwGW9iRMnWrt27Vy281rJfwzFxMTY9u3b7YMPPnDZk+ep999/34oWLerca5uc69NPP22lSpVyu0cuOZcTJ07YmjVrbOLEifbJJ5/cci7I2qhr1DXqGnXtWtQ1VzRTGezHH3+0nDlz2osvvuiy52HHjh3WrFkzq1q1qpld/aUOHDjQuYclvZ1x8vovvviiORwO5xdn8od40qRJVqhQoRR7j15//XWrUKGCzZs3z7ls165dNnbsWLd7mtITO/kN+8MPP9jkyZOte/fuVr16dYuKirKEhAQbPHiwVa1a1WXPWHpjm129MeQTTzxhnTt3trfeesty5MhhvXr1cvtl8u9//9ty5cpl77zzjkuOyV5++WWrVq2a88v5Zr799lvr0KGDde/e3aKiolzGMnu7UzN79mz78MMPbfPmzS7LS5cubW+88YZt27bNatWqZUOGDLEXXnjBHA6H9evXz44fP+6y/q+//ury+OzZszc9J3/69On25ptv2hdffJFi7J133rGpU6eamVmHDh2sePHiLq99q7FnzJhhVapUsYceeshq1qzp9o+1pUuXWt++fW3nzp328ssvW0hIiD3//PPOaw7Mrp42cu0pEGnx5ptvWuPGje2xxx5zuQnm+fPnnZ+P5C/5lStXpnp6iyexrzdhwgRnkbr2Z3bkyBHLkyePffDBB2ZmzuJz+vRpCwkJsWHDhrn8cfXee+/Ztm3bbikXZE/UNeoade0q6hp1zR2aqUzQsWNHczgczgvbkt9s7733nlWoUMH27NljW7ZssVKlStnQoUM9jnP8+HHr3r273XPPPc5pLpNjHT9+3O6880775z//6fJmP3funFWsWNHlHPO5c+da3rx5bc6cORkSO9lTTz3lcnrAuXPnrHXr1la3bl3nXrY5c+akK/b+/fvt0Ucfddmr8M4771iJEiVc1kvO5fz58/b888/b7bff7vKBTP7/tWvXWqtWrdJ0Uexnn31mtWvXts8++8xl+fWFLDO2253ULsZOLiYvvfSS3XXXXTZ58mSXgvT6669bmTJlXK496NSpkz366KPOc45vZtOmTfbQQw9Z586dbdSoUZYjRw7r27evy8/xq6++sr59+5qZ2datW+3222+3bt26WatWrez//u//PI79888/W9u2bW3AgAF2+PBh27lzpxUuXNhefvllM0v9/G0zs7feestCQkJsxYoVzmVVq1a1unXrur0G4Hr79u2zli1bWt++fW3v3r02YsQIy5s3r8vnycz1szB48GCbNGmSmV29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GnWNukZdc0UzlY0cOnTISpYsaX369HE7nt6paTMq9uXLlzNlNpXkL8DExETnB33x4sWWL18+Z9Exu/ld4tMrISHBuSf22ilY58yZY/nz53ee9x4TE3PL232rF2Mn7zE8ePCgLV++3EaOHOlybnN6Yyc7deqUVahQwe699157+eWXrXfv3tatWzfbsWOH1a1b1+V0heTf0/Hjx9N0CkR6Lsa+9ks3Wa1atezxxx83s6t7eT///HMbO3Zsus7lT8tNSpN/76tXr7YePXqY2dXPwcaNG513lh83bpwVKlTI4z940nIOf/K2792711q2bJniupFrp+k9f/58mi5KB/wFdY26ZkZdo675d12jmcpGrly5YtOnT7fbbrvNDh06ZF999VW69xhkZGxvXsyevGdn8+bN9ve///2Ge6cyWvKh7YiICKtVq1aKvZi3IiMvxs6o2MlfvgcPHrQ5c+bYmDFjXM7VHjx4sD322GMex03rxdjX701L3oM2cOBAu//++2/pRnxpvUmpmdmIESOcp4bs3bvXnnvuOeeF0bfyPrzZOfzJxejaP6o+/PBDK1GihPP3kTxtLJBVUdeoa8moa9Q1M/+sazRT2VDFihXttttus3bt2t30wsWsHvvFF190FtZDhw7ZI488Yi+99NINpxHNKPPmzXPuDTly5Ii1aNHCxowZk6ExMuJibE+/fNNyMbY74eHhzgvUPf09pPVibLOr55dfq2vXrvbGG294FDdZWm9SGh8fb927d7fvvvvOfvnlF+vXr585HA6Prt3w5Bz+33//3cz+2ov322+/Wd++fe2+++6zt956ywYPHuw8zx7Iyqhr1DXq2hsexU1GXcs8NFPZRPKFg/3797c6derYe++9FxCxv/vuO7vrrrusU6dO1qRJE5ebNma2H3/80apWrWpPPfWUNWvWLFNi++vF2Nc6evSoc/acAwcOWPv27W3jxo23FDvZzS7G/u9//2v333+/ffLJJ/b9999bp06drH379nbkyJFbinuzm5RWqVLFzK5+2bdp08YGDhxoRYsWtQceeCBdU0Pfyjn89evXd/tZGzdunDkcDnv00Udt//796d94wE9Q16hr1DXqmpn/1zWaqWxm4cKFPpuhy1exv/jiC5s9e7ZPYkdERNj8+fM9vsdHevjrxdifffaZNWvWzBo2bGhNmjTx+sXYEydOtPr161uD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\n", "text/plain": [ "<Figure size 1000x400 with 2 Axes>" ] @@ -1073,7 +1073,7 @@ }, { "cell_type": "markdown", - "id": "006724a1", + "id": "aa8a83a8", "metadata": {}, "source": [ "<a id=\"rsf\"></a>\n", @@ -1090,7 +1090,7 @@ }, { "cell_type": "markdown", - "id": "c26416ad", + "id": "40b95214", "metadata": {}, "source": [ "<a id=\"fitrsf\"></a>\n", @@ -1099,8 +1099,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "8e039745", + "execution_count": 14, + "id": "6c5154e7", "metadata": {}, "outputs": [], "source": [ @@ -1129,7 +1129,7 @@ "\n", " # Obtain survival probabilities for validation set and compute the Integrated Brier Score \n", " predictions_val = model.predict_survival(x_val, times)\n", - " metric_val = survival_regression_metric('ibs', y_tr, predictions_val, times, y_vals)\n", + " metric_val = survival_regression_metric('ibs', y_tr, predictions_val, times, y_val)\n", " models.append([metric_val, model])\n", " \n", "# Select the best model based on the mean metric value computed for the validation set\n", @@ -1140,7 +1140,7 @@ }, { "cell_type": "markdown", - "id": "b0680104", + "id": "ef08dbb9", "metadata": {}, "source": [ "<a id=\"evalrsf\"></a>\n", @@ -1149,7 +1149,7 @@ }, { "cell_type": "markdown", - "id": "5135b083", + "id": "5e76a1c0", "metadata": {}, "source": [ "Compute the Brier Score and time-dependent concordance index for the test set. See notebook introduction for more details." @@ -1157,8 +1157,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "27fa6905", + "execution_count": 15, + "id": "7b215f6d", "metadata": {}, "outputs": [ { @@ -1190,7 +1190,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7cfaac62", + "id": "e8f5b443", "metadata": {}, "outputs": [], "source": []