From b9afc3bb290336577f2756c74ae9f89c63deef5f Mon Sep 17 00:00:00 2001 From: Lucas Camillo Date: Mon, 25 Dec 2023 13:03:28 -0300 Subject: [PATCH] fixed preprocessing bug --- pyaging/predict/_pred_utils.py | 36 +-- tutorials/tutorial_dnam.ipynb | 481 +++++++++++++++++---------------- 2 files changed, 261 insertions(+), 256 deletions(-) diff --git a/pyaging/predict/_pred_utils.py b/pyaging/predict/_pred_utils.py index 3a4fdef..922d2f0 100644 --- a/pyaging/predict/_pred_utils.py +++ b/pyaging/predict/_pred_utils.py @@ -452,13 +452,6 @@ def preprocess_data( np.array([...]) """ - # Skip if it there is no preprocessing to be done - if preprocessing is None: - logger.info( - "There is no preprocessing to be done", - indent_level=3, - ) - return adata # Move to adata.X for preprocessing adata.X = ( @@ -467,6 +460,14 @@ def preprocess_data( else adata.layers["X_original"].copy() ) + # Skip if it there is no preprocessing to be done + if preprocessing is None: + logger.info( + "There is no preprocessing to be done", + indent_level=3, + ) + return adata + logger.info(f"Preprocessing data with function {preprocessing}", indent_level=3) # Apply specified preprocessing method if preprocessing == "tpm_norm_log1p": @@ -596,12 +597,7 @@ def postprocess_data( @progress("Predict ages with model") def predict_ages_with_model( - model: torch.nn.Module, - adata: torch.Tensor, - features: List[str], - device: str, - logger, - indent_level: int = 2, + model: torch.nn.Module, adata: torch.Tensor, features: List[str], device: str, logger, indent_level: int = 2 ) -> torch.Tensor: """ Predict biological ages using a trained model and input data. @@ -655,7 +651,7 @@ def predict_ages_with_model( """ # Create an AnnLoader - use_cuda = device == "cuda" + use_cuda = device == 'cuda' dataloader = AnnLoader(adata, batch_size=1024, use_cuda=use_cuda) # Use the AnnLoader for batched prediction @@ -826,17 +822,11 @@ def filter_missing_features( """ n_missing_features = sum(adata.var["percent_na"] == 1) if n_missing_features > 0: - logger.info( - f"Removing {n_missing_features} added features", - indent_level=indent_level + 1, - ) + logger.info(f"Removing {n_missing_features} added features", indent_level=indent_level+1) adata = adata[:, adata.var["percent_na"] < 1].copy() else: - logger.info( - "No missing features, so adata size did not change", - indent_level=indent_level + 1, - ) - + logger.info("No missing features, so adata size did not change", indent_level=indent_level+1) + return adata diff --git a/tutorials/tutorial_dnam.ipynb b/tutorials/tutorial_dnam.ipynb index 68b9177..ed82b41 100644 --- a/tutorials/tutorial_dnam.ipynb +++ b/tutorials/tutorial_dnam.ipynb @@ -84,8 +84,9 @@ "output_type": "stream", "text": [ "|-----> 🏗️ Starting download_example_data function\n", - "|-----------> Data found in pyaging_data/GSE139307.pkl\n", - "|-----> 🎉 Done! [0.0007s]\n" + "|-----------> Downloading data to pyaging_data/GSE139307.pkl\n", + "|-----------> in progress: 100.0000%\n", + "|-----> 🎉 Done! [25.2517s]\n" ] } ], @@ -374,22 +375,22 @@ "text": [ "|-----> 🏗️ Starting df_to_adata function\n", "|-----> ⚙️ Create anndata object started\n", - "|-----> ✅ Create anndata object finished [0.1550s]\n", + "|-----> ✅ Create anndata object finished [0.1437s]\n", "|-----> ⚙️ Add metadata to anndata started\n", "|-----------> Adding provided metadata to adata.obs\n", - "|-----> ✅ Add metadata to anndata finished [0.0008s]\n", + "|-----> ✅ Add metadata to anndata finished [0.0006s]\n", "|-----> ⚙️ Log data statistics started\n", "|-----------> There are 37 observations\n", "|-----------> There are 485514 features\n", "|-----------> Total missing values: 526\n", "|-----------> Percentage of missing values: 0.00%\n", - "|-----> ✅ Log data statistics finished [0.0231s]\n", + "|-----> ✅ Log data statistics finished [0.0203s]\n", "|-----> ⚙️ Impute missing values started\n", "|-----------> Imputing missing values using mean strategy\n", - "|-----> ✅ Impute missing values finished [0.2524s]\n", + "|-----> ✅ Impute missing values finished [0.2116s]\n", "|-----> ⚙️ Add unstructured data to anndata started\n", "|-----> ✅ Add unstructured data to anndata finished [0.0003s]\n", - "|-----> 🎉 Done! [0.6471s]\n" + "|-----> 🎉 Done! [0.4777s]\n" ] } ], @@ -459,52 +460,55 @@ "|-----> 🏗️ Starting predict_age function\n", "|-----> ⚙️ Set PyTorch device started\n", "|-----------> Using device: cpu\n", - "|-----> ✅ Set PyTorch device finished [0.0006s]\n", + "|-----> ✅ Set PyTorch device finished [0.0005s]\n", "|-----> 🕒 Processing clock: horvath2013\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/horvath2013.pt\n", - "|-----------> ✅ Load clock finished [0.0046s]\n", + "|-----------------> Downloading data to pyaging_data/horvath2013.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.5835s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0013s]\n", + "|-----------> ✅ Check features in adata finished [0.0039s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0015s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0014s]\n", + "|-----------> ✅ Initialize model finished [0.0040s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0321s]\n", + "|-----------> ✅ Predict ages with model finished [0.0451s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0004s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function anti_log_linear\n", - "|-----------> ✅ Postprocess data finished [0.0008s]\n", + "|-----------> ✅ Postprocess data finished [0.0006s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", "|-----------> ✅ Add predicted ages to adata finished [0.0006s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", - "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0059s]\n", + "|-----------------> Downloading data to pyaging_data/all_clock_metadata.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.7707s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> Removing 1 missing features added\n", - "|-----------> ✅ Return adata to original size finished [0.3025s]\n", + "|-----------------> Removing 1 added features\n", + "|-----------> ✅ Return adata to original size finished [0.3535s]\n", "|-----> 🕒 Processing clock: altumage\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/altumage.pt\n", - "|-----------> ✅ Load clock finished [0.0079s]\n", + "|-----------------> Downloading data to pyaging_data/altumage.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [2.2865s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0120s]\n", + "|-----------> ✅ Check features in adata finished [0.0226s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> Preprocessing data with function scale\n", - "|-----------> ✅ Preprocess data finished [0.1431s]\n", + "|-----------> ✅ Preprocess data finished [0.1547s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0084s]\n", + "|-----------> ✅ Initialize model finished [0.0045s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0481s]\n", + "|-----------> ✅ Predict ages with model finished [0.0396s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0004s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> There is no postprocessing to be done\n", "|-----------> ✅ Postprocess data finished [0.0005s]\n", @@ -512,39 +516,40 @@ "|-----------> ✅ Add predicted ages to adata finished [0.0006s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0013s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0011s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0147s]\n", + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0151s]\n", "|-----> 🕒 Processing clock: pcgrimage\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/pcgrimage.pt\n", - "|-----------> ✅ Load clock finished [0.4664s]\n", + "|-----------------> Downloading data to pyaging_data/pcgrimage.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [111.3300s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0386s]\n", + "|-----------> ✅ Check features in adata finished [0.0788s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", "|-----------> ✅ Preprocess data finished [0.0004s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.2164s]\n", + "|-----------> ✅ Initialize model finished [0.5807s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.3091s]\n", + "|-----------> ✅ Predict ages with model finished [0.3727s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", "|-----------> ✅ Convert tensor to numpy array finished [0.0004s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> There is no postprocessing to be done\n", - "|-----------> ✅ Postprocess data finished [0.0004s]\n", + "|-----------> ✅ Postprocess data finished [0.0003s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0006s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0005s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0023s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0015s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0158s]\n", - "|-----> 🎉 Done! [1.8463s]\n" + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0145s]\n", + "|-----> 🎉 Done! [116.8716s]\n" ] } ], @@ -593,45 +598,45 @@ " M\n", " sperm\n", " GSE139307\n", - " 33.624780\n", - " 37.007027\n", - " 78.843605\n", + " 33.624776\n", + " 37.007213\n", + " 78.843542\n", " \n", " \n", " GSM4137710\n", " M\n", " sperm\n", " GSE139307\n", - " 28.829347\n", - " 29.426697\n", - " 73.004616\n", + " 28.829344\n", + " 29.426899\n", + " 73.004664\n", " \n", " \n", " GSM4137711\n", " M\n", " sperm\n", " GSE139307\n", - " 28.316543\n", - " 22.805408\n", - " 69.910988\n", + " 28.316545\n", + " 22.805551\n", + " 69.911041\n", " \n", " \n", " GSM4137712\n", " M\n", " sperm\n", " GSE139307\n", - " 24.850632\n", - " 18.060074\n", - " 70.567879\n", + " 24.850630\n", + " 18.060107\n", + " 70.567793\n", " \n", " \n", " GSM4137713\n", " M\n", " sperm\n", " GSE139307\n", - " 25.942109\n", - " 20.071888\n", - " 73.494881\n", + " 25.942111\n", + " 20.071985\n", + " 73.495097\n", " \n", " \n", "\n", @@ -639,11 +644,11 @@ ], "text/plain": [ " gender tissue_type dataset horvath2013 altumage pcgrimage\n", - "GSM4137709 M sperm GSE139307 33.624780 37.007027 78.843605\n", - "GSM4137710 M sperm GSE139307 28.829347 29.426697 73.004616\n", - "GSM4137711 M sperm GSE139307 28.316543 22.805408 69.910988\n", - "GSM4137712 M sperm GSE139307 24.850632 18.060074 70.567879\n", - "GSM4137713 M sperm GSE139307 25.942109 20.071888 73.494881" + "GSM4137709 M sperm GSE139307 33.624776 37.007213 78.843542\n", + "GSM4137710 M sperm GSE139307 28.829344 29.426899 73.004664\n", + "GSM4137711 M sperm GSE139307 28.316545 22.805551 69.911041\n", + "GSM4137712 M sperm GSE139307 24.850630 18.060107 70.567793\n", + "GSM4137713 M sperm GSE139307 25.942111 20.071985 73.495097" ] }, "execution_count": 9, @@ -718,45 +723,45 @@ " M\n", " sperm\n", " GSE139307\n", - " 33.624780\n", - " 37.007027\n", - " 78.843605\n", + " 33.624776\n", + " 37.007213\n", + " 78.843542\n", " \n", " \n", " GSM4137710\n", " M\n", " sperm\n", " GSE139307\n", - " 28.829347\n", - " 29.426697\n", - " 73.004616\n", + " 28.829344\n", + " 29.426899\n", + " 73.004664\n", " \n", " \n", " GSM4137711\n", " M\n", " sperm\n", " GSE139307\n", - " 28.316543\n", - " 22.805408\n", - " 69.910988\n", + " 28.316545\n", + " 22.805551\n", + " 69.911041\n", " \n", " \n", " GSM4137712\n", " M\n", " sperm\n", " GSE139307\n", - " 24.850632\n", - " 18.060074\n", - " 70.567879\n", + " 24.850630\n", + " 18.060107\n", + " 70.567793\n", " \n", " \n", " GSM4137713\n", " M\n", " sperm\n", " GSE139307\n", - " 25.942109\n", - " 20.071888\n", - " 73.494881\n", + " 25.942111\n", + " 20.071985\n", + " 73.495097\n", " \n", " \n", "\n", @@ -764,11 +769,11 @@ ], "text/plain": [ " gender tissue_type dataset horvath2013 altumage pcgrimage\n", - "GSM4137709 M sperm GSE139307 33.624780 37.007027 78.843605\n", - "GSM4137710 M sperm GSE139307 28.829347 29.426697 73.004616\n", - "GSM4137711 M sperm GSE139307 28.316543 22.805408 69.910988\n", - "GSM4137712 M sperm GSE139307 24.850632 18.060074 70.567879\n", - "GSM4137713 M sperm GSE139307 25.942109 20.071888 73.494881" + "GSM4137709 M sperm GSE139307 33.624776 37.007213 78.843542\n", + "GSM4137710 M sperm GSE139307 28.829344 29.426899 73.004664\n", + "GSM4137711 M sperm GSE139307 28.316545 22.805551 69.911041\n", + "GSM4137712 M sperm GSE139307 24.850630 18.060107 70.567793\n", + "GSM4137713 M sperm GSE139307 25.942111 20.071985 73.495097" ] }, "execution_count": 11, @@ -951,8 +956,9 @@ "output_type": "stream", "text": [ "|-----> 🏗️ Starting download_example_data function\n", - "|-----------> Data found in pyaging_data/GSE130735_subset.pkl\n", - "|-----> 🎉 Done! [0.0012s]\n" + "|-----------> Downloading data to pyaging_data/GSE130735_subset.pkl\n", + "|-----------> in progress: 100.0000%\n", + "|-----> 🎉 Done! [37.0290s]\n" ] } ], @@ -1222,22 +1228,22 @@ "text": [ "|-----> 🏗️ Starting df_to_adata function\n", "|-----> ⚙️ Create anndata object started\n", - "|-----> ✅ Create anndata object finished [0.7529s]\n", + "|-----> ✅ Create anndata object finished [0.5962s]\n", "|-----> ⚙️ Add metadata to anndata started\n", "|-----------? No metadata provided. Leaving adata.obs empty\n", - "|-----> ⚠️ Add metadata to anndata finished [0.0006s]\n", + "|-----> ⚠️ Add metadata to anndata finished [0.0004s]\n", "|-----> ⚙️ Log data statistics started\n", "|-----------> There are 14 observations\n", "|-----------> There are 1778324 features\n", "|-----------> Total missing values: 6322346\n", "|-----------> Percentage of missing values: 25.39%\n", - "|-----> ✅ Log data statistics finished [0.0212s]\n", + "|-----> ✅ Log data statistics finished [0.0202s]\n", "|-----> ⚙️ Impute missing values started\n", "|-----------> Imputing missing values using mean strategy\n", - "|-----> ✅ Impute missing values finished [0.6397s]\n", + "|-----> ✅ Impute missing values finished [0.3220s]\n", "|-----> ⚙️ Add unstructured data to anndata started\n", - "|-----> ✅ Add unstructured data to anndata finished [0.0004s]\n", - "|-----> 🎉 Done! [1.4181s]\n" + "|-----> ✅ Add unstructured data to anndata finished [0.0003s]\n", + "|-----> 🎉 Done! [0.9417s]\n" ] } ], @@ -1282,116 +1288,120 @@ "|-----> 🏗️ Starting predict_age function\n", "|-----> ⚙️ Set PyTorch device started\n", "|-----------> Using device: cpu\n", - "|-----> ✅ Set PyTorch device finished [0.0007s]\n", + "|-----> ✅ Set PyTorch device finished [0.0004s]\n", "|-----> 🕒 Processing clock: thompsonmultitissue\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/thompsonmultitissue.pt\n", - "|-----------> ✅ Load clock finished [0.0045s]\n", + "|-----------------> Downloading data to pyaging_data/thompsonmultitissue.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.8214s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------? 1 out of 582 features (0.17%) are missing: ['chr4:91376687'], etc.\n", "|-----------------> Filling missing features entirely with 0\n", "|-----------------> Expanded adata with 1 missing features\n", - "|-----------> ⚠️ Check features in adata finished [0.5264s]\n", + "|-----------> ⚠️ Check features in adata finished [0.4514s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0007s]\n", + "|-----------> ✅ Preprocess data finished [0.0004s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0021s]\n", + "|-----------> ✅ Initialize model finished [0.0006s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.3622s]\n", + "|-----------> ✅ Predict ages with model finished [0.2945s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0005s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> There is no postprocessing to be done\n", - "|-----------> ✅ Postprocess data finished [0.0004s]\n", + "|-----------> ✅ Postprocess data finished [0.0005s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0005s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0004s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0014s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0010s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> Removing 1 missing features added\n", - "|-----------> ✅ Return adata to original size finished [0.9158s]\n", + "|-----------------> Removing 1 added features\n", + "|-----------> ✅ Return adata to original size finished [0.6126s]\n", "|-----> 🕒 Processing clock: meermultitissue\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/meermultitissue.pt\n", - "|-----------> ✅ Load clock finished [0.0017s]\n", + "|-----------------> Downloading data to pyaging_data/meermultitissue.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.7107s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------? 225 out of 435 features (51.72%) are missing: ['chr10:111559529', 'chr10:115250413', 'chr10:127620127'], etc.\n", "|-----------------> Filling missing features entirely with 0\n", "|-----------------> Expanded adata with 225 missing features\n", - "|-----------> ⚠️ Check features in adata finished [0.5717s]\n", + "|-----------> ⚠️ Check features in adata finished [0.5355s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0004s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0008s]\n", + "|-----------> ✅ Initialize model finished [0.0006s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.3101s]\n", + "|-----------> ✅ Predict ages with model finished [0.2837s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> There is no postprocessing to be done\n", - "|-----------> ✅ Postprocess data finished [0.0005s]\n", + "|-----------> ✅ Postprocess data finished [0.0004s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0004s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0005s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0014s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0010s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> Removing 225 missing features added\n", - "|-----------> ✅ Return adata to original size finished [0.9786s]\n", + "|-----------------> Removing 225 added features\n", + "|-----------> ✅ Return adata to original size finished [0.6443s]\n", "|-----> 🕒 Processing clock: petkovichblood\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/petkovichblood.pt\n", - "|-----------> ✅ Load clock finished [0.0029s]\n", + "|-----------------> Downloading data to pyaging_data/petkovichblood.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.6025s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------? 40 out of 90 features (44.44%) are missing: ['chr18:58836612', 'chr16:10502211', 'chr16:44812942'], etc.\n", "|-----------------> Filling missing features entirely with 0\n", "|-----------------> Expanded adata with 40 missing features\n", - "|-----------> ⚠️ Check features in adata finished [0.7655s]\n", + "|-----------> ⚠️ Check features in adata finished [0.5245s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0006s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0006s]\n", + "|-----------> ✅ Initialize model finished [0.0005s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.6310s]\n", + "|-----------> ✅ Predict ages with model finished [0.2816s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0002s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function petkovichblood\n", - "|-----------> ✅ Postprocess data finished [0.0013s]\n", + "|-----------> ✅ Postprocess data finished [0.0004s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0025s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0004s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0028s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0009s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> Removing 40 missing features added\n", - "|-----------> ✅ Return adata to original size finished [1.0996s]\n", + "|-----------------> Removing 40 added features\n", + "|-----------> ✅ Return adata to original size finished [0.5893s]\n", "|-----> 🕒 Processing clock: stubbsmultitissue\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/stubbsmultitissue.pt\n", - "|-----------> ✅ Load clock finished [0.0022s]\n", + "|-----------------> Downloading data to pyaging_data/stubbsmultitissue.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.6070s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------? 153 out of 329 features (46.50%) are missing: ['chr1:153890242', 'chr2:25579878', 'chr2:131180254'], etc.\n", "|-----------------> Filling missing features entirely with 0\n", "|-----------------> Expanded adata with 153 missing features\n", - "|-----------> ⚠️ Check features in adata finished [0.6706s]\n", + "|-----------> ⚠️ Check features in adata finished [0.5244s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0004s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0009s]\n", + "|-----------> ✅ Initialize model finished [0.0008s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.3068s]\n", + "|-----------> ✅ Predict ages with model finished [0.2840s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0004s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function stubbsmultitissue\n", "|-----------> ✅ Postprocess data finished [0.0005s]\n", @@ -1399,11 +1409,11 @@ "|-----------> ✅ Add predicted ages to adata finished [0.0004s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0011s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0009s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> Removing 153 missing features added\n", - "|-----------> ✅ Return adata to original size finished [0.7384s]\n", - "|-----> 🎉 Done! [8.5267s]\n" + "|-----------------> Removing 153 added features\n", + "|-----------> ✅ Return adata to original size finished [0.5946s]\n", + "|-----> 🎉 Done! [8.6799s]\n" ] } ], @@ -1463,27 +1473,27 @@ " \n", " GSM3752625\n", " -1.410461\n", - " 0.028222\n", + " 0.028221\n", " 2.794689\n", " 1.843469\n", " \n", " \n", " GSM3752634\n", - " 61.058784\n", - " 21.322180\n", + " 61.058783\n", + " 21.322178\n", " 9.511293\n", " 2.608401\n", " \n", " \n", " GSM3752620\n", - " -2.663818\n", + " -2.663815\n", " 1.611947\n", - " 2.155650\n", + " 2.155649\n", " 1.865847\n", " \n", " \n", " GSM3752622\n", - " 20.594112\n", + " 20.594114\n", " 7.592145\n", " 6.978587\n", " 2.152412\n", @@ -1495,10 +1505,10 @@ "text/plain": [ " thompsonmultitissue meermultitissue petkovichblood \\\n", "GSM3752631 19.634113 7.315183 6.472695 \n", - "GSM3752625 -1.410461 0.028222 2.794689 \n", - "GSM3752634 61.058784 21.322180 9.511293 \n", - "GSM3752620 -2.663818 1.611947 2.155650 \n", - "GSM3752622 20.594112 7.592145 6.978587 \n", + "GSM3752625 -1.410461 0.028221 2.794689 \n", + "GSM3752634 61.058783 21.322178 9.511293 \n", + "GSM3752620 -2.663815 1.611947 2.155649 \n", + "GSM3752622 20.594114 7.592145 6.978587 \n", "\n", " stubbsmultitissue \n", "GSM3752631 2.198807 \n", @@ -1582,27 +1592,27 @@ " \n", " GSM3752625\n", " -1.410461\n", - " 0.028222\n", + " 0.028221\n", " 2.794689\n", " 1.843469\n", " \n", " \n", " GSM3752634\n", - " 61.058784\n", - " 21.322180\n", + " 61.058783\n", + " 21.322178\n", " 9.511293\n", " 2.608401\n", " \n", " \n", " GSM3752620\n", - " -2.663818\n", + " -2.663815\n", " 1.611947\n", - " 2.155650\n", + " 2.155649\n", " 1.865847\n", " \n", " \n", " GSM3752622\n", - " 20.594112\n", + " 20.594114\n", " 7.592145\n", " 6.978587\n", " 2.152412\n", @@ -1614,10 +1624,10 @@ "text/plain": [ " thompsonmultitissue meermultitissue petkovichblood \\\n", "GSM3752631 19.634113 7.315183 6.472695 \n", - "GSM3752625 -1.410461 0.028222 2.794689 \n", - "GSM3752634 61.058784 21.322180 9.511293 \n", - "GSM3752620 -2.663818 1.611947 2.155650 \n", - "GSM3752622 20.594112 7.592145 6.978587 \n", + "GSM3752625 -1.410461 0.028221 2.794689 \n", + "GSM3752634 61.058783 21.322178 9.511293 \n", + "GSM3752620 -2.663815 1.611947 2.155649 \n", + "GSM3752622 20.594114 7.592145 6.978587 \n", "\n", " stubbsmultitissue \n", "GSM3752631 2.198807 \n", @@ -1836,8 +1846,9 @@ "output_type": "stream", "text": [ "|-----> 🏗️ Starting download_example_data function\n", - "|-----------> Data found in pyaging_data/GSE223748_subset.pkl\n", - "|-----> 🎉 Done! [0.0034s]\n" + "|-----------> Downloading data to pyaging_data/GSE223748_subset.pkl\n", + "|-----------> in progress: 100.0000%\n", + "|-----> 🎉 Done! [23.0259s]\n" ] } ], @@ -2128,22 +2139,22 @@ "text": [ "|-----> 🏗️ Starting df_to_adata function\n", "|-----> ⚙️ Create anndata object started\n", - "|-----> ✅ Create anndata object finished [0.0074s]\n", + "|-----> ✅ Create anndata object finished [0.0118s]\n", "|-----> ⚙️ Add metadata to anndata started\n", "|-----------? No metadata provided. Leaving adata.obs empty\n", - "|-----> ⚠️ Add metadata to anndata finished [0.0006s]\n", + "|-----> ⚠️ Add metadata to anndata finished [0.0005s]\n", "|-----> ⚙️ Log data statistics started\n", "|-----------> There are 100 observations\n", "|-----------> There are 37554 features\n", "|-----------> Total missing values: 0\n", "|-----------> Percentage of missing values: 0.00%\n", - "|-----> ✅ Log data statistics finished [0.0043s]\n", + "|-----> ✅ Log data statistics finished [0.0041s]\n", "|-----> ⚙️ Impute missing values started\n", "|-----------> No missing values found. No imputation necessary\n", - "|-----> ✅ Impute missing values finished [0.0080s]\n", + "|-----> ✅ Impute missing values finished [0.0066s]\n", "|-----> ⚙️ Add unstructured data to anndata started\n", - "|-----> ✅ Add unstructured data to anndata finished [0.0006s]\n", - "|-----> 🎉 Done! [0.0247s]\n" + "|-----> ✅ Add unstructured data to anndata finished [0.0003s]\n", + "|-----> 🎉 Done! [0.0265s]\n" ] } ], @@ -2212,120 +2223,124 @@ "|-----> 🏗️ Starting predict_age function\n", "|-----> ⚙️ Set PyTorch device started\n", "|-----------> Using device: cpu\n", - "|-----> ✅ Set PyTorch device finished [0.0011s]\n", + "|-----> ✅ Set PyTorch device finished [0.0007s]\n", "|-----> 🕒 Processing clock: mammalian1\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/mammalian1.pt\n", - "|-----------> ✅ Load clock finished [0.0016s]\n", + "|-----------------> Downloading data to pyaging_data/mammalian1.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.6718s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0012s]\n", + "|-----------> ✅ Check features in adata finished [0.0023s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0011s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0010s]\n", + "|-----------> ✅ Initialize model finished [0.0023s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0028s]\n", + "|-----------> ✅ Predict ages with model finished [0.0074s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0008s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0010s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function anti_logp2\n", - "|-----------> ✅ Postprocess data finished [0.0006s]\n", + "|-----------> ✅ Postprocess data finished [0.0013s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0005s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0010s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0011s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0026s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0021s]\n", + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0038s]\n", "|-----> 🕒 Processing clock: mammalian2\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/mammalian2.pt\n", - "|-----------> ✅ Load clock finished [0.0020s]\n", + "|-----------------> Downloading data to pyaging_data/mammalian2.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.6917s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0015s]\n", + "|-----------> ✅ Check features in adata finished [0.0035s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0005s]\n", + "|-----------> ✅ Preprocess data finished [0.0012s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0010s]\n", + "|-----------> ✅ Initialize model finished [0.0025s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0039s]\n", + "|-----------> ✅ Predict ages with model finished [0.0074s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0003s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0005s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function anti_log_log\n", - "|-----------> ✅ Postprocess data finished [0.0006s]\n", + "|-----------> ✅ Postprocess data finished [0.0010s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0006s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0009s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0015s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0024s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0022s]\n", + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0032s]\n", "|-----> 🕒 Processing clock: mammalian3\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/mammalian3.pt\n", - "|-----------> ✅ Load clock finished [0.0016s]\n", + "|-----------------> Downloading data to pyaging_data/mammalian3.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.8165s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0016s]\n", + "|-----------> ✅ Check features in adata finished [0.0041s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0008s]\n", + "|-----------> ✅ Preprocess data finished [0.0011s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0011s]\n", + "|-----------> ✅ Initialize model finished [0.0022s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0039s]\n", + "|-----------> ✅ Predict ages with model finished [0.0069s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", "|-----------> ✅ Convert tensor to numpy array finished [0.0008s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> There is no postprocessing to be done\n", - "|-----------> ✅ Postprocess data finished [0.0009s]\n", + "|-----------> ✅ Postprocess data finished [0.0011s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0009s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0008s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0023s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0024s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0023s]\n", + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0039s]\n", "|-----> 🕒 Processing clock: mammalianlifespan\n", "|-----------> ⚙️ Load clock started\n", - "|-----------------> Data found in pyaging_data/mammalianlifespan.pt\n", - "|-----------> ✅ Load clock finished [0.0031s]\n", + "|-----------------> Downloading data to pyaging_data/mammalianlifespan.pt\n", + "|-----------------> in progress: 100.0000%\n", + "|-----------> ✅ Load clock finished [0.6593s]\n", "|-----------> ⚙️ Check features in adata started\n", "|-----------------> All features are present in adata.var_names.\n", - "|-----------> ✅ Check features in adata finished [0.0008s]\n", + "|-----------> ✅ Check features in adata finished [0.0025s]\n", "|-----------> ⚙️ Preprocess data started\n", "|-----------------> There is no preprocessing to be done\n", - "|-----------> ✅ Preprocess data finished [0.0009s]\n", + "|-----------> ✅ Preprocess data finished [0.0018s]\n", "|-----------> ⚙️ Initialize model started\n", - "|-----------> ✅ Initialize model finished [0.0008s]\n", + "|-----------> ✅ Initialize model finished [0.0026s]\n", "|-----------> ⚙️ Predict ages with model started\n", "|-----------------> in progress: 100.0000%\n", - "|-----------> ✅ Predict ages with model finished [0.0029s]\n", + "|-----------> ✅ Predict ages with model finished [0.0055s]\n", "|-----------> ⚙️ Convert tensor to numpy array started\n", - "|-----------> ✅ Convert tensor to numpy array finished [0.0009s]\n", + "|-----------> ✅ Convert tensor to numpy array finished [0.0006s]\n", "|-----------> ⚙️ Postprocess data started\n", "|-----------------> Postprocessing data with function anti_log\n", - "|-----------> ✅ Postprocess data finished [0.0018s]\n", + "|-----------> ✅ Postprocess data finished [0.0013s]\n", "|-----------> ⚙️ Add predicted ages to adata started\n", - "|-----------> ✅ Add predicted ages to adata finished [0.0006s]\n", + "|-----------> ✅ Add predicted ages to adata finished [0.0010s]\n", "|-----------> ⚙️ Add clock metadata to adata.uns started\n", "|-----------------> Data found in pyaging_data/all_clock_metadata.pt\n", - "|-----------> ✅ Add clock metadata to adata.uns finished [0.0032s]\n", + "|-----------> ✅ Add clock metadata to adata.uns finished [0.0021s]\n", "|-----------> ⚙️ Return adata to original size started\n", - "|-----------------> There were no missing features, so adata size did not change\n", - "|-----------> ✅ Return adata to original size finished [0.0034s]\n", - "|-----> 🎉 Done! [0.3164s]\n" + "|-----------------> No missing features, so adata size did not change\n", + "|-----------> ✅ Return adata to original size finished [0.0037s]\n", + "|-----> 🎉 Done! [3.2153s]\n" ] } ], @@ -2377,10 +2392,10 @@ " \n", " \n", " 204509080002_R01C02\n", - " 26.372432\n", + " 26.372437\n", " 0.313472\n", - " 0.250646\n", - " 93.886141\n", + " 0.250647\n", + " 93.886067\n", " \n", " \n", " 202897220142_R04C02\n", @@ -2391,10 +2406,10 @@ " \n", " \n", " 204529320092_R01C02\n", - " 18.776440\n", + " 18.776438\n", " 0.253814\n", " -0.202204\n", - " 73.335087\n", + " 73.335119\n", " \n", " \n", " 202794570004_R02C01\n", @@ -2405,10 +2420,10 @@ " \n", " \n", " 203531420070_R05C02\n", - " 10.371314\n", + " 10.371315\n", " 0.142494\n", " -0.559290\n", - " 68.409294\n", + " 68.409331\n", " \n", " \n", "\n", @@ -2416,11 +2431,11 @@ ], "text/plain": [ " mammalian1 mammalian2 mammalian3 mammalianlifespan\n", - "204509080002_R01C02 26.372432 0.313472 0.250646 93.886141\n", + "204509080002_R01C02 26.372437 0.313472 0.250647 93.886067\n", "202897220142_R04C02 1.176586 0.356768 1.384630 6.999176\n", - "204529320092_R01C02 18.776440 0.253814 -0.202204 73.335087\n", + "204529320092_R01C02 18.776438 0.253814 -0.202204 73.335119\n", "202794570004_R02C01 0.890973 0.320041 1.136356 5.332615\n", - "203531420070_R05C02 10.371314 0.142494 -0.559290 68.409294" + "203531420070_R05C02 10.371315 0.142494 -0.559290 68.409331" ] }, "execution_count": 35, @@ -2489,10 +2504,10 @@ " \n", " \n", " 204509080002_R01C02\n", - " 26.372432\n", + " 26.372437\n", " 0.313472\n", - " 0.250646\n", - " 93.886141\n", + " 0.250647\n", + " 93.886067\n", " \n", " \n", " 202897220142_R04C02\n", @@ -2503,10 +2518,10 @@ " \n", " \n", " 204529320092_R01C02\n", - " 18.776440\n", + " 18.776438\n", " 0.253814\n", " -0.202204\n", - " 73.335087\n", + " 73.335119\n", " \n", " \n", " 202794570004_R02C01\n", @@ -2517,10 +2532,10 @@ " \n", " \n", " 203531420070_R05C02\n", - " 10.371314\n", + " 10.371315\n", " 0.142494\n", " -0.559290\n", - " 68.409294\n", + " 68.409331\n", " \n", " \n", "\n", @@ -2528,11 +2543,11 @@ ], "text/plain": [ " mammalian1 mammalian2 mammalian3 mammalianlifespan\n", - "204509080002_R01C02 26.372432 0.313472 0.250646 93.886141\n", + "204509080002_R01C02 26.372437 0.313472 0.250647 93.886067\n", "202897220142_R04C02 1.176586 0.356768 1.384630 6.999176\n", - "204529320092_R01C02 18.776440 0.253814 -0.202204 73.335087\n", + "204529320092_R01C02 18.776438 0.253814 -0.202204 73.335119\n", "202794570004_R02C01 0.890973 0.320041 1.136356 5.332615\n", - "203531420070_R05C02 10.371314 0.142494 -0.559290 68.409294" + "203531420070_R05C02 10.371315 0.142494 -0.559290 68.409331" ] }, "execution_count": 37,