{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "b473046a-3199-4b77-be18-bd3a74d2dfaa", "metadata": {}, "outputs": [], "source": [ "# Install SOFA + dependencies\n", "!pip install --quiet biosofa" ] }, { "cell_type": "markdown", "id": "df209001-70db-4c52-a47e-750b7f79c483", "metadata": { "tags": [] }, "source": [ "The input tcga_gyn_data.h5mu needs to be download from zenodo: https://zenodo.org/records/14761127" ] }, { "cell_type": "code", "execution_count": 2, "id": "86dd3368-ce4c-4564-b929-b17113420f83", "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/capraz/hubershare/anaconda3/envs/base_copy/lib/python3.8/site-packages/torch/onnx/_internal/_beartype.py:30: UserWarning: module 'beartype.roar' has no attribute 'BeartypeDecorHintPep585DeprecationWarning'\n", " warnings.warn(f\"{e}\")\n", "/home/capraz/hubershare/anaconda3/envs/base_copy/lib/python3.8/site-packages/umap/distances.py:1063: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n", " @numba.jit()\n", "/home/capraz/hubershare/anaconda3/envs/base_copy/lib/python3.8/site-packages/umap/distances.py:1071: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n", " @numba.jit()\n", "/home/capraz/hubershare/anaconda3/envs/base_copy/lib/python3.8/site-packages/umap/distances.py:1086: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n", " @numba.jit()\n", "/home/capraz/hubershare/anaconda3/envs/base_copy/lib/python3.8/site-packages/umap/umap_.py:660: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n", " @numba.jit()\n" ] } ], "source": [ "import sofa\n", "import torch\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.decomposition import PCA\n", "import seaborn as sns\n", "import matplotlib\n", "from sklearn.preprocessing import StandardScaler, OneHotEncoder\n", "from sklearn.linear_model import Lasso, LinearRegression\n", "from sklearn.model_selection import cross_val_predict, cross_val_score\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import mean_squared_error, make_scorer\n", "from muon import MuData\n", "from sklearn.manifold import TSNE\n", "import matplotlib.patches as mpatches\n", "import scanpy as sc\n", "import anndata as ad\n", "from anndata import AnnData\n", "import pickle\n", "import muon\n", "from lifelines import CoxPHFitter, KaplanMeierFitter\n", "from lifelines.statistics import logrank_test\n", "import statsmodels\n", "from matplotlib import colors as mp_colors\n", "from muon import MuData\n", "import muon as mu\n", "from decimal import Decimal\n", "from seaborn import axes_style\n", "from mofapy2.run.entry_point import entry_point\n", "import seaborn.objects as so\n", "from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable, make_axes_area_auto_adjustable\n", "from matplotlib.ticker import FormatStrFormatter" ] }, { "cell_type": "markdown", "id": "3b3e9f4a-b57a-480f-9c9b-0cb9f61d9b59", "metadata": {}, "source": [ "# Analysis of TCGA data\n", "\n", "## Introduction\n", "\n", "In this notebook we will explore how `SOFA` can be used to analyze multi-omics data from the TCGA [[1]](#1). \n", "Here we give a brief introduction what the SOFA model does and what it can be used for. For a more \n", "detailed description please refer to our preprint: https://doi.org/10.1101/2024.10.10.617527 \n", "\n", "\n", "### The SOFA model\n", "Given a set of real-valued data\n", "matrices containing multi-omic measurements from overlapping samples (also called views),\n", "along with sample-level guiding variables that capture additional properties such as batches\n", "or mutational profiles, SOFA extracts an interpretable lower-dimensional data representation,\n", "consisting of a shared factor matrix and modality-specific loading matrices. The goal of these \n", "factors is to explain the major axes of variation in the data. SOFA explicitly assigns a subset of factors \n", "to explain both the multi-omics data and the guiding\n", "variables (guided factors), while preserving another subset of factors exclusively\n", "for explaining the multi-omics data (unguided factors). Importantly, this feature allows the\n", "analyst to discern variation that is driven by known sources from novel, unexplained sources\n", "of variability.\n", "\n", "#### Interpretation of the factors (Z)\n", "Analogous to the interpretation of factors in PCA, SOFA factors ordinate samples along a\n", "zero-centered axis, where samples with opposing signs exhibit contrasting phenotypes along\n", "the inferred axis of variation, and the absolute value of the factor indicates the strength of the\n", "phenotype. Importantly, SOFA partitions the factors of the low-rank decomposition into\n", "guided and unguided factors: the guided factors are linked to specific guiding variables,\n", "while the unguided factors capture global, yet unexplained, sources of variability in the data. \n", "The factor values can be used in downstream analysis tasks related to the samples, such as clustering \n", "or survival analysis. The factor values are called Z in SOFA.\n", "\n", "#### Interpretation of the loading weights (W)\n", "SOFA’s loading weights indicate the importance of each feature for its respective factor,\n", "thereby enabling the interpretation of SOFA factors. Loading weights close to zero indicate\n", "that a feature has little to no importance for the respective factor, while large magnitudes\n", "suggest strong relevance. The sign of the loading weight aligns with its corresponding factor,\n", "meaning that positive loading weights indicate higher feature levels in samples with positive\n", "factor values, and negative loading weights indicate higher feature levels in samples with\n", "negative factor values. The top loading weights can be simply inspected or used in downstream analysis such as gene set \n", "enrichment analysis. The factor values are called W in SOFA.\n", "\n", "#### Supported data\n", "SOFA expects a set of matrices containing omics measurements with matching and aligned samples and different features. \n", "Currently SOFA only supports Gaussian likelihoods, for the multi-omics data. \n", "Data should therefore be appropriately normalized according to\n", "its omics modality. Additionally, data should be centered and scaled.\n", "\n", "\n", "For the guiding variables SOFA supports Gaussian, Bernoulli and Categorical likelihoods. Guiding variables\n", "can therefore be continuous, binary or categorical. Guiding variables should be vectors with matching samples with \n", "the multi-omics data.\n", "\n", "In SOFA the multi-omics data is denoted as X and the guiding variables as Y.\n", "\n", "\n", "### The TCGA data set\n", "The pan-gynecologic cancer multi-omic data set of the cancer genome atlas (TCGA) project[[1]](#1), consists of measurements from the transcriptome (mRNA), proteome, methylome, and miRNA of 2599 samples from five different cancers. Additionally, the study includes data about mutations, metadata, and clinical endpoints progression free interval (PFI) and overall survival (OS). We used SOFA to infer 12 latent factors and guided the first 5 factors with the 5 cancer type labels form gynecologic cancers. We hypothesized that the remaining unguided factors will capture cancer type independent variation.\n", "\n", "\n", "### References\n", "[1] \n", "Cancer Genome Atlas Research Network et al. The Cancer Genome Atlas Pan-Cancer analysis project. Nat. Genet. 45, 1113–1120 (2013)." ] }, { "cell_type": "markdown", "id": "b9563068-eb16-4145-8e6f-0819f125d791", "metadata": {}, "source": [ "## Read data and set hyperparameters" ] }, { "cell_type": "code", "execution_count": 3, "id": "8918d464-2460-4d79-94dd-48916c6e92b4", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
MuData object with n_obs × n_vars = 2599 × 8926\n",
" obs:\t'admin.disease_code', 'Unnamed: 0', 'type', 'age_at_initial_pathologic_diagnosis', 'gender', 'race', 'ajcc_pathologic_tumor_stage', 'clinical_stage', 'histological_type', 'histological_grade', 'initial_pathologic_dx_year', 'menopause_status', 'birth_days_to', 'vital_status', 'tumor_status', 'last_contact_days_to', 'death_days_to', 'cause_of_death', 'new_tumor_event_type', 'new_tumor_event_site', 'new_tumor_event_site_other', 'new_tumor_event_dx_days_to', 'treatment_outcome_first_course', 'margin_status', 'residual_tumor', 'OS', 'OS.time', 'DSS', 'DSS.time', 'DFI', 'DFI.time', 'PFI', 'PFI.time', 'Redaction'\n",
" 10 modalities\n",
" RNA:\t2599 x 4436\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" Protein:\t2599 x 183\n",
" uns:\t'llh'\n",
" obsm:\t'mask'\n",
" Methylation:\t2599 x 3436\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" miRNA:\t2599 x 680\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" Mutations:\t2599 x 186\n",
" uns:\t'llh'\n",
" obsm:\t'mask'\n",
" brca:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" cesc:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ov:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ucec:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ucs:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'"
],
"text/plain": [
"MuData object with n_obs × n_vars = 2599 × 8926\n",
" obs:\t'admin.disease_code', 'Unnamed: 0', 'type', 'age_at_initial_pathologic_diagnosis', 'gender', 'race', 'ajcc_pathologic_tumor_stage', 'clinical_stage', 'histological_type', 'histological_grade', 'initial_pathologic_dx_year', 'menopause_status', 'birth_days_to', 'vital_status', 'tumor_status', 'last_contact_days_to', 'death_days_to', 'cause_of_death', 'new_tumor_event_type', 'new_tumor_event_site', 'new_tumor_event_site_other', 'new_tumor_event_dx_days_to', 'treatment_outcome_first_course', 'margin_status', 'residual_tumor', 'OS', 'OS.time', 'DSS', 'DSS.time', 'DFI', 'DFI.time', 'PFI', 'PFI.time', 'Redaction'\n",
" 10 modalities\n",
" RNA:\t2599 x 4436\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" Protein:\t2599 x 183\n",
" uns:\t'llh'\n",
" obsm:\t'mask'\n",
" Methylation:\t2599 x 3436\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" miRNA:\t2599 x 680\n",
" uns:\t'llh', 'log1p'\n",
" obsm:\t'mask'\n",
" Mutations:\t2599 x 186\n",
" uns:\t'llh'\n",
" obsm:\t'mask'\n",
" brca:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" cesc:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ov:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ucec:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'\n",
" ucs:\t2599 x 1\n",
" uns:\t'llh', 'scaling_factor'\n",
" obsm:\t'mask'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# First we read the preprocessed data as a single MuData object\n",
"mdata = mu.read(\"data/tcga/tcga_gyn_data.h5mu\")\n",
"mdata"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b430fadb-66cf-4d58-96ef-cfe0ad4fb100",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# We create the MuData object Xmdata, which contains the multi-omics data:\n",
"Xmdata = MuData({\"RNA\":mdata[\"RNA\"], \"Protein\":mdata[\"Protein\"], \"Methylation\":mdata[\"Methylation\"], \"miRNA\":mdata[\"miRNA\"]})\n",
"# We create the MuData objectYmdata, which contains the guiding variables:\n",
"Ymdata = MuData({\"BRCA\":mdata[\"brca\"], \"CESC\": mdata[\"cesc\"], \"OV\": mdata[\"ov\"], \"UCEC\":mdata[\"ucec\"], \"UCS\":mdata[\"ucs\"]})"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "15b70394-f7b6-4afe-ab8c-18300a5e9661",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]], dtype=torch.float64)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We set the number of factors to infer\n",
"num_factors = 12\n",
"# Use obs as metadata of the cell lines\n",
"metadata = mdata.obs\n",
"# In order to relate factors to guiding variables we need to provide a design matrix (guiding variables x number of factors) \n",
"# indicating which factor is guided by which guiding variable.\n",
"# Here we just indicate that the first 5 factors are each guided by a different guiding variable:\n",
"design = np.zeros((len(Ymdata.mod), num_factors))\n",
"for i in range(len(Ymdata.mod)):\n",
" design[i,i] = 1\n",
" \n",
"# convert to torch tensor to make it usable by SOFA\n",
"design = torch.tensor(design)\n",
"design"
]
},
{
"cell_type": "markdown",
"id": "722697d1-5b85-4aab-bdb2-d41b97e19359",
"metadata": {},
"source": [
"## Fit the `SOFA` model"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "502876e2-440a-4473-bfd0-54d3654419a4",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Current Elbo 1.40E+07 | Delta: 11086: 100%|██████████| 6000/6000 [13:03<00:00, 7.66it/s] \n",
"Current Elbo 1.39E+07 | Delta: 5385: 100%|██████████| 3000/3000 [12:36<00:00, 3.97it/s] \n",
"Current Elbo 1.39E+07 | Delta: 13180: 100%|██████████| 6000/6000 [25:08<00:00, 3.98it/s] \n",
"Current Elbo 1.38E+07 | Delta: 1659: 100%|██████████| 3000/3000 [12:33<00:00, 3.98it/s] \n",
"Current Elbo 1.39E+07 | Delta: 5138: 100%|██████████| 6000/6000 [25:13<00:00, 3.97it/s] \n",
"Current Elbo 1.38E+07 | Delta: -2798: 100%|██████████| 3000/3000 [12:33<00:00, 3.98it/s]\n",
"Current Elbo 1.38E+07 | Delta: 17196: 100%|██████████| 6000/6000 [25:07<00:00, 3.98it/s] \n",
"Current Elbo 1.38E+07 | Delta: -4738: 100%|██████████| 3000/3000 [12:35<00:00, 3.97it/s] \n"
]
}
],
"source": [
"model = sofa.SOFA(Xmdata = Xmdata, # the input multi-omics data \n",
" num_factors=num_factors, # number of factors to infer\n",
" Ymdata = Ymdata, # the input guiding variables\n",
" design = design, # design matrix relating factors to guiding variables\n",
" device='cuda', # set device to \"cuda\" to enable computation on the GPU, if you don't have a GPU available set it to \"cpu\"\n",
" seed=42) # set seed to get the same results every time we run it\n",
"# train SOFA with learning rate of 0.01 for 3000 steps\n",
"model.fit(n_steps=6000, lr=0.01, predict=False)\n",
"# decrease learning rate to 0.005 and continue training\n",
"model.fit(n_steps=3000, lr=0.005)\n",
"models.append(model)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d69f52bb-2fc5-4c84-853b-8b99969b7e93",
"metadata": {},
"outputs": [],
"source": [
"# if we would like to save the fitted model we can save it using:\n",
"#sofa.tl.save_model(model,\"models/model_name\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "15d96e01-4ad2-43fd-b72f-26524be550ee",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# load fitted model to exactly reproduce manuscript figures\n",
"# to load the model use:\n",
"model = sofa.tl.load_model(\"models/tcga_gyn_model\")"
]
},
{
"cell_type": "markdown",
"id": "bd1038c0-22fa-4bc1-a753-fb012f0161da",
"metadata": {},
"source": [
"## Downstream analysis\n",
"\n",
"\n",
"### Convergence\n",
"\n",
"We will first assess whether the ELBO loss of SOFA has converged by plotting it over training steps"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "8d3cf291-098d-4131-be6f-a03b7e2c7628",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'ELBO')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAGwCAYAAABiu4tnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBZUlEQVR4nO3de1xVZd7///dmb04ikIpgKCiWGYhHMNOyRPKcTnf3TJamNuXdw4YO6jRm2VRjmjYzldMvtdum0btpSp1fVk6ZiWOZaaYS5IHUNAxHRcUDCMpp7/X9w9i5BQ9sgbUXvJ6PB49hrX3ttT6bNbXfXde1rmUzDMMQAAAAaszP7AIAAACsiiAFAADgJYIUAACAlwhSAAAAXiJIAQAAeIkgBQAA4CWCFAAAgJccZhfQkLlcLh08eFChoaGy2WxmlwMAAC6DYRg6deqUoqOj5ed38T4nglQdOnjwoGJiYswuAwAAeGH//v1q06bNRdsQpOpQaGiopLMXIiwszORqAADA5SgsLFRMTIz7e/xiCFJ1qHI4LywsjCAFAIDFXM60HCabAwAAeIkgBQAA4CWCFAAAgJcIUgAAAF4iSAEAAHiJIAUAAOAlghQAAICXCFIAAABeIkgBAAB4iSAFAADgJYIUAACAlwhSAAAAXuKhxRZUXFqhE6fLFOiwq2VooNnlAADQaNEjdQmvvPKKOnXqpISEBD366KMyDMPskvTJ9jzd/OJn+t3//63ZpQAA0KgRpC7i6NGjeu2115SRkaFt27YpIyNDGzduNLss+dnO/q/L/EwHAECjxtDeJVRUVKikpESSVF5ersjISJMrkmw/BSlf6B0DAKAxa9A9Ul988YWGDx+u6Oho2Ww2ffDBB1XazJs3T3FxcQoKClJSUpLWrVvnfq1ly5Z6/PHHFRsbq+joaN1222265ppr6vETVM/vpyRFjgIAwFwNOkgVFxera9eueu2116p9fcmSJZo4caKmTZumzMxM9e3bV0OGDFFubq4k6cSJE/roo4+0b98+HThwQBs2bNAXX3xRnx+hWrafgpSLJAUAgKkadJAaMmSIZsyYoTvvvLPa119++WU98MADGj9+vOLj4zVnzhzFxMRo/vz5kqTVq1fr2muvVfPmzRUcHKxhw4ZddI5UaWmpCgsLPX7qws9zpAhSAACYqUEHqYspKytTRkaGBg4c6LF/4MCB2rBhgyQpJiZGGzZsUElJiZxOpz7//HN17NjxgsecNWuWwsPD3T8xMTF1Urufu0eqTg4PAAAuU6MNUvn5+XI6nYqKivLYHxUVpby8PEnSjTfeqKFDh6p79+7q0qWLrrnmGo0YMeKCx3zyySdVUFDg/tm/f3+d1O7HZHMAAHxCo79rr3K+USXDMDz2zZw5UzNnzrysYwUGBiowsO4XyLTRIwUAgE9otD1SERERstvt7t6nSkeOHKnSS+Vr/JhsDgCAT2i0QSogIEBJSUlKT0/32J+enq4+ffqYVNXlYUFOAAB8Q4Me2isqKtKePXvc2zk5OcrKylLz5s0VGxuryZMna8yYMUpOTlbv3r21YMEC5ebmasKECSZWfWksyAkAgG9o0EFqy5YtSklJcW9PnjxZkjRu3DgtWrRII0eO1LFjxzR9+nQdOnRIiYmJWrFihdq2bWtWyZeFdaQAAPANDTpI9evX75K9Nr/5zW/0m9/8pp4qqh2sbA4AgG9otHOkrIw5UgAA+AaClAX93CNFkgIAwEwEKQuy8YgYAAB8AkHKgnhEDAAAvoEgZUEsyAkAgG8gSFnQz8/aM7cOAAAaO4KUBbGOFAAAvoEgZUFMNgcAwDcQpCyIBTkBAPANBCkLYo4UAAC+gSBVB+bOnauEhAT17NmzTo7PXXsAAPgGglQdSEtLU3Z2tjZv3lwnx2eOFAAAvoEgZUEsyAkAgG8gSFkQz9oDAMA3EKQsyM89tGduHQAANHYEKQtiQU4AAHwDQcqC3D1SdEkBAGAqgpQF2ViQEwAAn0CQsiD3gpzmlgEAQKNHkLIgFuQEAMA3EKQsiAU5AQDwDQQpC2JBTgAAfANByoJYkBMAAN9AkLIgFuQEAMA3EKQsiAU5AQDwDQQpC3Ivf2AwvAcAgJkIUhZUOUdKYlFOAADMRJCyoHNyFMN7AACYiCBlQbZze6RMrAMAgMaOIGVBfvRIAQDgEwhSdWDu3LlKSEhQz5496+T4zJECAMA3EKTqQFpamrKzs7V58+Y6Of65QYoeKQAAzEOQsiDPyebm1QEAQGNHkLIgeqQAAPANBCkLOneyueEyrw4AABo7gpQF0SMFAIBvIEhZEAtyAgDgGwhSFmTz6JEysRAAABo5gpRFuR9czNrmAACYhiBlUZXzpBjZAwDAPAQpi6oMUsyRAgDAPAQpi6qcJuVkkhQAAKYhSFmU/adJUi7WkQIAwDQEKYuy/9Ql5WRoDwAA0xCkLMrvpx4phvYAADAPQcqi3EN79EgBAGAagpRFVd61R48UAADmIUhZlP2nK0eQAgDAPAQpi7KzjhQAAKYjSFkUk80BADAfQcqi7AQpAABMR5CyKDuTzQEAMB1Bqg7MnTtXCQkJ6tmzZ52dwz20xxwpAABMQ5CqA2lpacrOztbmzZvr7BwOHhEDAIDpCFIW5ccjYgAAMB1ByqJ+fmgxQQoAALMQpCyK5Q8AADAfQcqi7GdzFEN7AACYiCBlUQztAQBgPoKURTHZHAAA8xGkLIqVzQEAMB9ByqLcQ3v0SAEAYBqClEW5h/ZYkBMAANMQpCyKyeYAAJiPIGVRlT1SFQQpAABMQ5CyKPtPV4679gAAMA9ByqIY2gMAwHwEKYv6ebI5QQoAALMQpCyK5Q8AADAfQcqi7PRIAQBgOoKURfn58YgYAADMRpCyKAeTzQEAMB1ByqLcPVKsbA4AgGkIUpdp165d6tatm/snODhYH3zwgWn1uOdIMbQHAIBpHGYXYBUdO3ZUVlaWJKmoqEjt2rXTgAEDTKuHdaQAADAfPVJeWL58uVJTUxUSEmJaDX70SAEAYDqfCFIHDhzQvffeqxYtWqhJkybq1q2bMjIyau34X3zxhYYPH67o6GjZbLYLDsnNmzdPcXFxCgoKUlJSktatW1dtu6VLl2rkyJG1Vp83Kh8RQ48UAADmMT1InThxQjfddJP8/f31ySefKDs7Wy+99JKuuuqqatuvX79e5eXlVfbv3LlTeXl51b6nuLhYXbt21WuvvXbBOpYsWaKJEydq2rRpyszMVN++fTVkyBDl5uZ6tCssLNT69es1dOjQy/+QdaBysjkPLQYAwDymB6kXX3xRMTExWrhwoW644Qa1a9dOqampuuaaa6q0dblcSktL06hRo+R0Ot37d+/erZSUFL311lvVnmPIkCGaMWOG7rzzzgvW8fLLL+uBBx7Q+PHjFR8frzlz5igmJkbz58/3aPfhhx9q0KBBCgoKuuCx5s6dq4SEBPXs2fNSH99rLMgJAID5TA9Sy5cvV3Jysn71q18pMjJS3bt31xtvvFFtWz8/P61YsUKZmZkaO3asXC6X9u7dq/79+2vEiBGaMmWKVzWUlZUpIyNDAwcO9Ng/cOBAbdiwwWPf5QzrpaWlKTs7W5s3b/aqnsvBI2IAADCf6UHqhx9+0Pz589WhQwd9+umnmjBhgh599NEL9i5FR0drzZo1Wr9+vUaNGqX+/fsrNTVVr7/+utc15Ofny+l0KioqymN/VFSUx3BhQUGBNm3apEGDBnl9rtrCQ4sBADCf6csfuFwuJScn64UXXpAkde/eXTt27ND8+fM1duzYat8TGxurt956S7feeqvat2+vN998U7afgsWVOP8YhmF47AsPD9fhw4ev+Dy1gR4pAADMZ3qP1NVXX62EhASPffHx8VUmeZ/r8OHDevDBBzV8+HCdPn1akyZNuqIaIiIiZLfbq0xWP3LkSJVeKl9h96NHCgAAs5kepG666Sbt2rXLY9/u3bvVtm3batvn5+crNTVV8fHxWrZsmdasWaOlS5fq8ccf97qGgIAAJSUlKT093WN/enq6+vTp4/Vx69LPQ3smFwIAQCNm+tDepEmT1KdPH73wwgu66667tGnTJi1YsEALFiyo0tblcmnw4MFq27atlixZIofDofj4eK1evVopKSlq3bp1tb1TRUVF2rNnj3s7JydHWVlZat68uWJjYyVJkydP1pgxY5ScnKzevXtrwYIFys3N1YQJE+ruw18B9zpSDO0BAGAa04NUz5499f777+vJJ5/U9OnTFRcXpzlz5mj06NFV2vr5+WnWrFnq27evAgIC3Ps7d+6s1atXq0WLFtWeY8uWLUpJSXFvT548WZI0btw4LVq0SJI0cuRIHTt2TNOnT9ehQ4eUmJioFStWXLBnzGxMNgcAwHw2w6BLo64UFhYqPDxcBQUFCgsLq9VjL1yfoz/8K1vDulytuaN61OqxAQBozGry/W36HCl4h4cWAwBgPoKURTG0BwCA+QhSFsU6UgAAmI8gZVGsIwUAgPkIUhZV+dDiCoIUAACmIUhZFEN7AACYjyBlUX4M7QEAYDqClEVVDu25eEQMAACmIUhZVOUjYpwM7QEAYBqClEXZ/c5eOiabAwBgHoKURTnslXOkGNsDAMAsBCmLcvw02bzCSY8UAABmIUhZVOXyBwztAQBgHoKURfn/NNuc5Q8AADAPQcqifu6RYo4UAABmIUhZFHOkAAAwH0HKohwsfwAAgOkIUhb18/IHBCkAAMxCkLKoyjlS5U7mSAEAYBaClEX5+3HXHgAAZiNIWZTdzjpSAACYjSBlUf7uu/YY2gMAwCwEqTowd+5cJSQkqGfPnnV2jso5Ui5DctErBQCAKQhSdSAtLU3Z2dnavHlznZ2jcvkDSXIaBCkAAMxAkLKoyuUPJBblBADALAQpi6oc2pN4TAwAAGYhSFmU45wgxRIIAACYgyBlUef2SJUztAcAgCkIUhZls9ncvVL0SAEAYA6ClIVV9koxRwoAAHMQpCzM33728nHXHgAA5iBIWdjPPVIEKQAAzECQsjDmSAEAYC6ClIVVLspZzvP2AAAwBUHKwiofE0OPFAAA5iBIWRhzpAAAMBdBysIqh/YqGNoDAMAUBCkLY7I5AADmIkhZWOUcKYb2AAAwB0HKwtxDe6xsDgCAKQhSFuaebM7K5gAAmIIgZWH+LH8AAICpCFIWVtkjVU6QAgDAFAQpC6ucI+VkjhQAAKYgSFmYgzlSAACYiiBlYXaWPwAAwFQEKQtz8IgYAABMRZCyMPccKR4RAwCAKQhSFkaPFAAA5iJIWRhzpAAAMBdBysL87Ty0GAAAMxGkLMy9ICdzpAAAMAVBysIq50jRIwUAgDkIUhbmsDNHCgAAM9U4SFVUVOhPf/qTevTooaZNmyo0NFQ9evTQn//8Z5WXl9dFjbiAn1c2Z2gPAAAz1ChInTlzRv369dPUqVPVsmVLjR8/Xvfff79atmypJ554QqmpqSopKamrWk21a9cudevWzf0THBysDz74wNSa7Cx/AACAqRw1aTxr1izt379fmZmZ6tKli8dr3377rUaMGKHZs2frueeeq80afULHjh2VlZUlSSoqKlK7du00YMAAU2uqHNpjjhQAAOaoUY/U4sWL9fLLL1cJUZLUtWtX/fnPf9Y777xTa8X5quXLlys1NVUhISGm1uFw37VHkAIAwAw1ClK5ubm64YYbLvj6jTfeqNzcXK+LmTVrlmw2myZOnOj1MarzxRdfaPjw4YqOjpbNZrvgkNy8efMUFxenoKAgJSUlad26ddW2W7p0qUaOHFmrNXrD/YgYF3OkAAAwQ42CVFhYmI4cOXLB1/Py8hQWFuZVIZs3b9aCBQuq7e061/r166ud1L5z507l5eVV+57i4mJ17dpVr7322gWPu2TJEk2cOFHTpk1TZmam+vbtqyFDhlQJhoWFhVq/fr2GDh16GZ+qbvGIGAAAzFWjIJWSkqIXXnjhgq/Pnj1b/fr1q3ERRUVFGj16tN544w01a9bsgu1cLpfS0tI0atQoOZ1O9/7du3crJSVFb731VrXvGzJkiGbMmKE777zzgsd++eWX9cADD2j8+PGKj4/XnDlzFBMTo/nz53u0+/DDDzVo0CAFBQVd8Fhz585VQkKCevbsecE2teHk6bOB8tPt1QdIAABQt2oUpJ599lmtWrVKN954o5YuXaqtW7dq69atWrx4sXr16qVVq1bp2WefrXERaWlpGjZsmG677baLF+vnpxUrVigzM1Njx46Vy+XS3r171b9/f40YMUJTpkyp8bklqaysTBkZGRo4cKDH/oEDB2rDhg0e+y5nWC8tLU3Z2dnavHmzV/Vcrk93nA1QxWXOS7QEAAB1oUZ37SUkJCg9PV0PPPCA7r77btlsZ4eWDMPQ9ddfr08//VSdOnWqUQGLFy/WN998c9mhIzo6WmvWrNEtt9yiUaNG6auvvlJqaqpef/31Gp33XPn5+XI6nYqKivLYHxUV5TFcWFBQoE2bNum9997z+ly16X/6ttfUZdvcz9wDAAD1q0ZBSjo7oXzHjh3KysrS7t27JUnXXXedunXrVuOT79+/X4899phWrVp10aGy88XGxuqtt97Srbfeqvbt2+vNN990h7orcf4xDMPw2BceHq7Dhw9f8XlqS8vQQElSh8hQkysBAKBx8voRMd26ddNdd92lu+66SwkJCSoqKqrxMTIyMnTkyBElJSXJ4XDI4XBo7dq1evXVV+VwODzmQZ3r8OHDevDBBzV8+HCdPn1akyZN8vZjSJIiIiJkt9urTFY/cuRIlV4qX1K5IGf2oUJWNwcAwAQ1DlILFy7UI488on/84x+SpKeeekqhoaEKDw/XgAEDdOzYscs+VmpqqrZt26asrCz3T3JyskaPHq2srCzZ7fYq78nPz1dqaqri4+O1bNkyrVmzRkuXLtXjjz9e04/iFhAQoKSkJKWnp3vsT09PV58+fbw+bl1zGT/frXfwZMNcUR4AAF9Wo6G9mTNnaubMmerTp4/eeecdffnll/rggw80ffp0+fn56dVXX9XTTz9d5U63CwkNDVViYqLHvpCQELVo0aLKfunsXXuDBw9W27ZttWTJEjkcDsXHx2v16tVKSUlR69atq+2dKioq0p49e9zbOTk5ysrKUvPmzRUbGytJmjx5ssaMGaPk5GT17t1bCxYsUG5uriZMmFCTP1G9OnfYsRZGNgEAQA3VKEgtWrRIb775pu655x5t2bJFvXr10pIlS/TLX/5SkpSYmFinwcPPz0+zZs1S3759FRAQ4N7fuXNnrV69Wi1atKj2fVu2bFFKSop7e/LkyZKkcePGadGiRZKkkSNH6tixY5o+fboOHTqkxMRErVixQm3btq2zz3Olzs1OBCkAAOqfzTCMy17NMTAwUHv27FFMTIx7e+vWrerYsaMk6cCBA4qLi1NZWVndVGsxhYWFCg8PV0FBgdcLlV7M2t1HNe5vmyRJ66f2V+urgmv9HAAANDY1+f6u0Ryp8vJyBQYGurcDAgLk7+/v3r7YBHHUvnM7ofzokQIAoN7VePmD7Oxs991thmFo586d7jv28vPza7c6XBTDeQAAmKvGQSo1NVXnjgbefvvtks5OfD5/3SXULb9z/tY8bg8AgPpXoyCVk5NTV3XAC+fOiarBVDcAAFBLahSkLnUH24kTJ/Svf/1LY8eOvaKicHnaRYS4f8/af1JtmjUxsRoAABofr1c2r05ubq5+/etf1+YhcZk+3nrI7BIAAGh0ajVIwTyM7AEAUP8IUg2EIZIUAAD1jSDVQNAjBQBA/avRZPNXX331oq8fOHDgioqB91h1AgCA+lejIPXKK69csk3lQ4BRv3q2a252CQAANDqsI2Vx17QM0d6jxWrTjOfsAQBQ32o0R2ro0KEqKChwb8+cOVMnT550bx87dkwJCQm1VhwurUXTs88+ZGVzAADqX42C1MqVK1VaWurefvHFF3X8+HH3dkVFhXbt2lV71eGSKh9W7GK2OQAA9e6K7trjsSTmO1FcLkkqLq0wuRIAABoflj+wuF2HT0mSnv/oO5MrAQCg8alRkLLZbLKdd5/9+dswRxE9UgAA1Lsa3bVnGIbuu+8+BQaeneBcUlKiCRMmKCTk7MNzz50/BQAA0NDVKEiNGzfOY/vee++t0mbs2LFXVhFqZFCnKH2647B+0S3a7FIAAGh0ahSkFi5cWFd1wEsbfzh71+SHWQf1l7u7m1wNAACNC5PNLa7gTLnZJQAA0GgRpCxuVC8eyQMAgFkIUhYXGlij0VkAAFCLCFIWF+hvd//OAqkAANQvgpTFBfn/fAnJUQAA1C+ClMUFOn7ukXKSpAAAqFcEKYsLD/Z3/37idJmJlQAA0PgQpCxucGIr9+9f7T1mYiUAADQ+BCmLa3rOXXtrdh4xsRIAABofglQDQpACAKB+EaQakFMlFWaXAABAo0KQAgAA8BJBCgAAwEsEKQAAAC8RpC7Trl271K1bN/dPcHCwPvjgA7PLkvTzg4ubhwSYXAkAAI0LT7y9TB07dlRWVpYkqaioSO3atdOAAQPMLeonu/JOSZKOF7MgJwAA9YkeKS8sX75cqampCgkJMbsUSVLhmXL37ycIUwAA1BvTg9T8+fPVpUsXhYWFKSwsTL1799Ynn3xSq+f44osvNHz4cEVHR8tms11wSG7evHmKi4tTUFCQkpKStG7dumrbLV26VCNHjqzVGq9E9FXB7t+7P59uYiUAADQupgepNm3aaPbs2dqyZYu2bNmi/v376xe/+IV27NhRbfv169ervLy8yv6dO3cqLy+v2vcUFxera9eueu211y5Yx5IlSzRx4kRNmzZNmZmZ6tu3r4YMGaLc3FyPdoWFhVq/fr2GDh1ag09Zt65q4u+x/fravSZVAgBA42J6kBo+fLiGDh2q6667Ttddd51mzpyppk2bauPGjVXaulwupaWladSoUXI6ne79u3fvVkpKit56661qzzFkyBDNmDFDd9555wXrePnll/XAAw9o/Pjxio+P15w5cxQTE6P58+d7tPvwww81aNAgBQUFefmJa1+zJp6TzGd/stOkSgAAaFxMD1LncjqdWrx4sYqLi9W7d+8qr/v5+WnFihXKzMzU2LFj5XK5tHfvXvXv318jRozQlClTvDpvWVmZMjIyNHDgQI/9AwcO1IYNGzz2Xc6w3ty5c5WQkKCePXt6VU9NPZraoV7OAwAAPPlEkNq2bZuaNm2qwMBATZgwQe+//74SEhKqbRsdHa01a9Zo/fr1GjVqlPr376/U1FS9/vrrXp8/Pz9fTqdTUVFRHvujoqI8hgsLCgq0adMmDRo06KLHS0tLU3Z2tjZv3ux1TTXBsgcAAJjDJ4JU5dICGzdu1EMPPaRx48YpOzv7gu1jY2P11ltvacmSJXI4HHrzzTdls9muuI7zj2EYhse+8PBwHT58WAEBBBcAAOAjQSogIEDXXnutkpOTNWvWLHXt2lV/+ctfLtj+8OHDevDBBzV8+HCdPn1akyZNuqLzR0REyG63V5msfuTIkSq9VL6qaSBLggEAUN98IkidzzAMlZaWVvtafn6+UlNTFR8fr2XLlmnNmjVaunSpHn/8ca/PFxAQoKSkJKWney4dkJ6erj59+nh93Pp0/03tzC4BAIBGx/RujKeeekpDhgxRTEyMTp06pcWLF+vzzz/XypUrq7R1uVwaPHiw2rZt6x7Wi4+P1+rVq5WSkqLWrVtX2ztVVFSkPXv2uLdzcnKUlZWl5s2bKzb27ONVJk+erDFjxig5OVm9e/fWggULlJubqwkTJtTdh69Fgf52s0sAAKDRMT1IHT58WGPGjNGhQ4cUHh6uLl26aOXKldU+fsXPz0+zZs1S3759PeYpde7cWatXr1aLFi2qPceWLVuUkpLi3p48ebIkady4cVq0aJEkaeTIkTp27JimT5+uQ4cOKTExUStWrFDbtm1r8dPWnSGJrfSnT3e5t8+f3wUAAGqfzTAMw+wiGqrCwkKFh4eroKBAYWFhdX6+dlM/dv++a8ZgBTropQIAoKZq8v3tk3OkcOUeezfL7BIAAGjwCFINyKpJt7h/X7mj+sflAACA2kOQakCuiwr12C4pd16gJQAAqA0EqQas8EzVhzsDAIDaQ5BqwJ5dvsPsEgAAaNAIUg3MPyf8/LDnT7bnqbSC4T0AAOoKQaqB6dmuucf2f8/fYFIlAAA0fASpBujeG2Pdv28/UKgKp8vEagAAaLgIUg3QH0Ykemw/w1wpAADqBEGqAbL7eT4a5p2vc1VYwh18AADUNoJUA7VuSorH9m/e/sakSgAAaLgIUg1UTPMmHttf7snXniNFJlUDAEDDRJBqwF6/N8lje+mW/SZVAgBAw0SQasAGJ7by2F7wxQ8mVQIAQMNEkGrgPnu8n8f2N7knzCkEAIAGiCDVwMVFhHhs3zmPBToBAKgtBKlGYOGve3psF5dWmFQJAAANC0GqEUjpGOmx3enZT1VwmnWlAAC4UgSpRmL91P4e212nr6JnCgCAK0SQaiRaXxVcZV9OfrEJlQAA0HAQpBqRf//2Vo9tFugEAODKEKQakWtaNvXYnrgky5xCAABoIAhSjcy3zwz02H7zyxyTKgEAwPoIUo1MeBN/3RYf5d5+/qNsE6sBAMDaCFKN0LzRPTy2X1vzvUmVAABgbQSpRijA4affDero3v7zqt06XcZSCAAA1BRBqpFKS7nWY3vEa+tNqgQAAOsiSDVi5z7QeM+RIm39z0nTagEAwIoIUo3Y+Q80HvHaerlchknVAABgPQSpRm73jCEe23e/sdGkSgAAsB6CVCMX4PDTH3/Zxb29Kee4dh8+ZWJFAABYB0EKuis5xmN74CtfmFQJAADWQpCCJGnn84M9tv/93WGTKgEAwDoIUpAkBfnbNf0XndzbD/zfFhWWlJtYEQAAvo8gBbexvdt5bHd5bpU5hQAAYBEEKXjImTXUY7vd1I9lGCyJAABAdQhS8GCz2bTsN3089s1fu9ekagAA8G0EKVTRI7aZ+naIcG//ceUuZeaeMLEiAAB8E0EK1fr7A708tv9r3gbl5BebVA0AAL6JIIUL2jd7mMd2yp8/1/o9+SZVAwCA7yFI4aK+n+n5CJnRf/1aucdOm1QNAAC+hSCFi/K3+2nTU6ke+27502fcyQcAgAhSuAyRYUHaNM0zTMU9ucKkagAA8B0EKVyWyNAgfflEise+dlM/NqkaAAB8A0EKl61NsyZa+7t+HvuG/39fyuVimA8A0DgRpFAjbVuE6I+/7OLe3nagQIP/8oWJFQEAYB6CFGrsruQY3XJdS/f27sNFOl5cZmJFAACYgyAFr7x1/w0e2z2eT+dOPgBAo0OQgtfOX7Dz3je/NqkSAADMQZDCFdn63ED37+v3HJOTiecAgEaEIIUrEhbk77F9zVMrVFxaYVI1AADUL4IUrljOrKEe252e/dSkSgAAqF8EKVwxm81WZbHOae9vM6kaAADqD0EKtaJNsya6s0dr9/Y/vs7V3qNFJlYEAEDdI0ih1rx8VzeP7dSX1rLqOQCgQSNIXaZdu3apW7du7p/g4GB98MEHZpflc85fEqH9UzzcGADQcBGkLlPHjh2VlZWlrKwsffnllwoJCdGAAQPMLssnZTx9m8f2kVMlJlUCAEDdIkh5Yfny5UpNTVVISIjZpfikFk0D9cbYZPf2DTP/rZJyp4kVAQBQN0wPUrNmzVLPnj0VGhqqyMhI3XHHHdq1a1etnuOLL77Q8OHDFR0dLZvNdsEhuXnz5ikuLk5BQUFKSkrSunXrqm23dOlSjRw5slZrbGgGJER5bF//+5UmVQIAQN0xPUitXbtWaWlp2rhxo9LT01VRUaGBAwequLi42vbr169XeXl5lf07d+5UXl5ete8pLi5W165d9dprr12wjiVLlmjixImaNm2aMjMz1bdvXw0ZMkS5ubke7QoLC7V+/XoNHTr0AkdCpU3TUj22WfUcANDQ2Awfe9Ls0aNHFRkZqbVr1+qWW27xeM3lcqlHjx7q0KGDFi9eLLvdLknavXu3br31Vk2aNElTpky56PFtNpvef/993XHHHR77e/XqpR49emj+/PnuffHx8brjjjs0a9Ys976///3v+vTTT/X2229f8Bxz587V3Llz5XQ6tXv3bhUUFCgsLOxy/wQNykNvZ+iT7T8H3PMnowMA4GsKCwsVHh5+Wd/fpvdIna+goECS1Lx58yqv+fn5acWKFcrMzNTYsWPlcrm0d+9e9e/fXyNGjLhkiLqQsrIyZWRkaODAgR77Bw4cqA0bNnjsu5xhvbS0NGVnZ2vz5s1e1dOQzL83yWP75OkykyoBAKD2+VSQMgxDkydP1s0336zExMRq20RHR2vNmjVav369Ro0apf79+ys1NVWvv/661+fNz8+X0+lUVJTnvJ6oqCiP4cKCggJt2rRJgwYN8vpcjdHHj97s/r3b9HQTKwEAoHb5VJB6+OGHtXXrVr377rsXbRcbG6u33npLS5YskcPh0JtvvimbzXbF5z//GIZheOwLDw/X4cOHFRAQcMXnakw6RYd7bD/0doZJlQAAULt8Jkg98sgjWr58uT777DO1adPmom0PHz6sBx98UMOHD9fp06c1adKkKzp3RESE7HZ7lcnqR44cqdJLBe+cO/H8k+158rGpeQAAeMX0IGUYhh5++GEtW7ZMa9asUVxc3EXb5+fnKzU1VfHx8e73LF26VI8//rjXNQQEBCgpKUnp6Z7DTunp6erTp4/Xx8XPIkODPLbjnmTFcwCA9ZkepNLS0vT222/rnXfeUWhoqPLy8pSXl6czZ85UaetyuTR48GC1bdvWPawXHx+v1atXa9GiRXrllVeqPUdRUZF7VXJJysnJUVZWlsfSBpMnT9Zf//pX/e1vf9N3332nSZMmKTc3VxMmTKiTz90YnX/H3tIt+02qBACA2mH68gcXmtu0cOFC3XfffVX2p6enq2/fvgoK8uzhyMrKUosWLRQTE1PlPZ9//rlSUlKq7B83bpwWLVrk3p43b57++Mc/6tChQ0pMTNQrr7xSZQmGmqjJ7ZONxY6DBRr26pfu7Yynb1OLpoEmVgQAgKeafH+bHqQaMoJU9br+YZUKzvy8qOr2PwxS00CHiRUBAPAzS68jhYYv6xnPhz0nPvupSit4Fh8AwHoIUqh3NptNObM8H7HT8WmexQcAsB6CFExhs9mq9Ey1m/qxSdUAAOAdghRMc1WTAH39lOeDjQlTAAArIUjBVFFhQVr7u34e+9pN/VguF/dAAAB8H0EKpmvbIkQfpt3ksa/9UytUVuEyqSIAAC4PQQo+oWvMVdr4pOcw33VPf8KjZAAAPo0gBZ/RKjxIm6fd5rEv7skVDPMBAHwWQQo+pWVooL6bPthjX/unCFMAAN9EkILPCQ6wa9eMqmGKYT4AgK8hSMEnBTrsVRbtjHtyhUnVAABQPYIUfJbNZtMPL3iGKdaZAgD4EoIUfJqfn027Zwzx2EeYAgD4CoIUfF6Aw6/anikedAwAMBtBCpbg52fTnpmePVMdn16p5d8eNKkiAAAIUrAQh91PO5/3vJvv0Xcz9cv5G0yqCADQ2BGkYClB/nbtmz1MQxJbufdt+fEE86YAAKYgSMGS5t+bpGduT/DY127qxzp6qtSkigAAjRFBCpZ1/81xVZ7P13Pmaj341haTKgIANDYEKVhaq/CgKgt3rso+zF19AIB6QZCC5dlsNu2bPUwjukZ77O/49Er96dOdJlUFAGgMbAYPMKszhYWFCg8PV0FBgcLCwswup1EoLClXl+dWVdn/1ZP9dXV4sAkVAQCspibf3/RIoUEJC/LXvtnDFBUW6LG/96w1umHmah58DACoVQQpNEhfP3VblTWnjpwqVdyTK3SqpNykqgAADQ1BCg1W5ZpT80f38Njf+blVSn3pc3OKAgA0KAQpNHhDOl9d5Vl9e48Wq93Uj3XydJlJVQEAGgKCFBoFP7+zd/Y9PSzeY3+36emsig4A8BpBCo3K+L7ttfP5wUps7XkXRrupH2ve53tMqgoAYFUEKTQ6Qf52ffRIX838r0SP/X9cuUvtpn6sb/efNKcwAIDlsI5UHWIdKd9nGIZG/u9Gbdp3vMprL9/VVXf2aGNCVQAAM9Xk+5sgVYcIUtZhGIbinlxR7WuvjOyq/+pOoAKAxoIg5SMIUtZTVFqhxGc/rfa10b1iNfO/OtdzRQCA+kaQ8hEEKes6XVahhGeqD1SS9MMLQ+XnZ6vHigAA9YUg5SMIUtZ3sSE/SXrxvztrZM/YeqwIAFDXCFI+giDVsPzfhn16dvmOC77++MDr9HD/DvVYEQCgLhCkfARBqmHKyS9Wyp8/v2iba1qG6ONH+yrI314/RQEAag1BykcQpBq+19Z8rz+v2n3Jdq/e013DOl8tO/OqAMDnEaR8BEGqcVm8KVdTl227rLZvP9BLN3eIqOOKAADeIEj5CIJU47Uvv1i//3C71n2ff1ntO0Q21Zy7u6lTdHgdVwYAuBSClI8gSKHS2t1H9YflO/RDfvFltQ90+MmQ9GDf9hp9Y6yuDg+u2wIBAG4EKR9BkMKFnCop14srd+rtjbk1el/zkAAdLy7TTde20P/0ba8b27dgQjsA1DKClI8gSKEmDheW6NkPd2jljrwavzcuIkQ5P/V2PdTvGu05UqQpgzqqbYsQBTh4NjkA1ARBykcQpFAb9hwp0tT3turgyTM6WFByRceKvzpMQxJb6eTpcrkMQ3f2aK22zUMU3sS/lqoFAOsjSPkIghTqUrnTpZXb8/Tpjjxd07Kp/vLv72v1+O0jQnSw4IxKyl2aMrijWl8VrB6xzdQ8JEAhgY5aPRcA+BKClI8gSMFMhSXl2pV3Su9+navPdx9VudOlUyUV6hXXXF/nHK/Tc49MjlFEaIA6tgpTi5AAXdXEX00DHQoJdKhpoEOBPw032mysqwXA9xCkfARBCr7OMAz9kF+spZv36+ipUjkNQ1v/U+Ceb1VfbmjXXLnHTyuvsEShgQ4N6BSlZd8c8GjzcMq1at8yRE0CHGoSYFegw08Ou59CgxwK9rcrJNChknKnwoL9FWD3Y24YLKWwpFw5R4vVNeYqs0uxhFMl5Tp4skQdW4XWyfEJUj6CIIWGxjAMFZ6p0MkzZdp//Ix2Hz6lf209qMzck5KkpoEOFZVW6NbrWuqL74+qVViQgvztKiqtUHFphU6XOeut1tAgh06VVFTZ375liH44ejYoRjQNUMdWoWoVFqxTJeVa932+mjXxV98OLdWiaYAimgbKZRjKzD2p0gqnbr42Qpv3ndA1kU11TcsQ/WX19/ohv1h3dm+t+2+OU3CAXWUVLu0+fEq94looOMAuP9vZnrcm/nb5+dlU7nTJ3+4Z8k6XVehUSYWiwoJq9W9gGIZ+u/Rb9Y+P1O1doi/a1uUydKq0QuHBZ+fLHS8u0+2vrtOoXrGWeoaky2XIz4JPEBjw8lp9f6RIf7svWf2vj6qXc54uq9A3P55Ur/bNq/x/0tclPZ+uY8Vl+ueE3urZrnmtH58g5SMIUoAnl8tQcVmFvj9SJH8/Px0tKtGBkyUKC3Lo6KlSzfj4O4UGOjSmd1t9tuuovjtU6H5v2xZNdFWwv86UO+Vns6mswnXZ63L5igC7n8qcLklSaKBDTQLtahro0N6jP3+Orm3CJZtN3+4/KUly+NnUpU24woP9FeDwU7C/XWfKnQr2tyvQYZfdbtM7X1ddRmNYl6v18dZD7u3I0EAdOVUqSXostYPe2ZSrYZ2vVmzzJgpw+OnpD7a72/btEFFlMdlZd3ZWVFigzpS5VFrh1Okyp1o3C9YPR4tVWuFUr7gW+mpvvj7elqdnhyeoZWigQgIcKq04e712Hz6lpz/Yrk7RYZr9313c+5Zu3q9lmQf0zO0JGt41Wh9vPagfj5/W7wZ1VLC/3T38++6mXK37/qhevbu7HHY/GYZRZWj4+Y+y9eaXOfrnhN5KbtvM/Xp1bS/FMAzlF5UpommA+73VheDq3lfhMmocTNpN/dj9+77Zwy7ZvsLp0vSPspUYHa67esbU6FyVJi7O1AdZBzXxtg6aeNt1Xh1j79EihQQ41Co8SIZhqKTcpeCAul+SpaZ/r5oiSPkIghRQP5wuQxUul+w2m06VVKjM6VLBmXL9cLRI3x8u0t6jReoac5U25RxXyvWR2vafAn37n5PqEdtMZU6XwoP9dbyoTEu27FdokEMD4qNks9lUUuFUxr4Tyiu89N2SEU0DVf7TeVE/QgLsMiS1aBqgQIdde44UebweFRYop+tsIJKk8GB/hQY5FBkaKD+bTceLy/RDfrE6RYepZWigSstdMmRo4w+ecwjPD5a94prLZRjacbDQo5f1zu6ttSzTc0j6/H1394yRYUhLtux37xt/c5z++mWOx/vG3xynQH8/2WTTxh+OacuPJxQa5NB9fdqprMKlzfuO65ufeoIlKTo8yH1Xb1LbZmrWxF+rvzuiQIefSitcHse+/6Y4/W295/nu7hmjayObquBMubYdKFC3mKv01d5j+s+JM7LZpKlDrtfD72RKkkb1ilWQw17lGOdKbttMrZsFq2mgQ4mtw3W8uEz/3LJffa6NcAf/XnHNNbxrtJo1CVBYsEPT3t+u3OOnNbxrtO7uGSOXYWjMm5vUIbKp0lKu1YGTZ7Qr75TOlDuVnn3Yfa4lD96oXu1bXLAWbxCkfARBCmicDMOQYUgVLkOGDDldho4VlanM6ZLTZcgmyWVIJ06XqfBMuQ6cPKP8olIlRoerpMIpp0sqKXfq5Oky/XjstDq3CZdhSC7DUIXT0JlypwIdfqpwGSp3urT9QKFWf3f2i2Vwp1ZauSNPd3ZvrbBgfy375j8qLKlQTPNg7T9+RtLZOWmb9h1XRNNAdWzVVMeKyrQz79RFP9MN7ZrrTLlT2w4UuPf5220qd174K8Rmk/iGQV27LT5Kfx2XXKvHrMn3N/cwA0Ats9lsstmkgHPm6jRpbs6/bp8b0cmU80pnh3LPHVGz2WwyjLPBstxpyGG3uYfAKod9y52GwoP9day4VE6XoR0HCtW+ZYj8bDZd1cRfJ06XK7+oVM2a+MtlyN0LeKbMKcOQoq8KVn5RqcoqXGoW4q+DJ0u07UCB2rZooiOFpWoX0UR+trMB0CZp9+FTim3RRJK0Oee4+lwToeKyCn289ZC2/HhC9/Vp557Q/PHWQzpVUq5Bia20bne+vvrhmMKCHCosqdA9N8SqTbNg7T1a5HGjxH192snhZ3P3OE0ecJ0OFZRo1Y48HSs+21P24C3tVVbh0qIN+yRJV4cHqf/1kXK6DJVWuPT+OT1aI7pGu+963ZhzzB2OAx1+Kne65DLODgeHBDou2Dvat0OEtuw7ocTWYXL4+an3NS10uLBEp0oqtPzbg5KkZj/9rSt1i7lKWT8NN0c0DXD38l1M5TD0xVTOqzxf+4gQSbqs4fsBCZGXbFOX6JGqQ/RIAQBgPTX5/rbWNH0AAAAfQpACAADwEkEKAADASwQpAAAALxGkAAAAvESQAgAA8BJBCgAAwEsEKQAAAC8RpAAAALxEkAIAAPASQQoAAMBLBCkAAAAvEaQAAAC8RJACAADwksPsAhoywzAkSYWFhSZXAgAALlfl93bl9/jFEKTq0KlTpyRJMTExJlcCAABq6tSpUwoPD79oG5txOXELXnG5XDp48KBCQ0Nls9lq9diFhYWKiYnR/v37FRYWVqvHRs1xPXwL18O3cD18D9fk4gzD0KlTpxQdHS0/v4vPgqJHqg75+fmpTZs2dXqOsLAw/iHwIVwP38L18C1cD9/DNbmwS/VEVWKyOQAAgJcIUgAAAF4iSFlUYGCgnn32WQUGBppdCsT18DVcD9/C9fA9XJPaw2RzAAAAL9EjBQAA4CWCFAAAgJcIUgAAAF4iSAEAAHiJIGVB8+bNU1xcnIKCgpSUlKR169aZXZLlzZo1Sz179lRoaKgiIyN1xx13aNeuXR5tDMPQc889p+joaAUHB6tfv37asWOHR5vS0lI98sgjioiIUEhIiEaMGKH//Oc/Hm1OnDihMWPGKDw8XOHh4RozZoxOnjxZ1x/R0mbNmiWbzaaJEye693E96t+BAwd07733qkWLFmrSpIm6deumjIwM9+tck/pTUVGhp59+WnFxcQoODlb79u01ffp0uVwudxuuRz0xYCmLFy82/P39jTfeeMPIzs42HnvsMSMkJMT48ccfzS7N0gYNGmQsXLjQ2L59u5GVlWUMGzbMiI2NNYqKitxtZs+ebYSGhhrvvfeesW3bNmPkyJHG1VdfbRQWFrrbTJgwwWjdurWRnp5ufPPNN0ZKSorRtWtXo6Kiwt1m8ODBRmJiorFhwwZjw4YNRmJionH77bfX6+e1kk2bNhnt2rUzunTpYjz22GPu/VyP+nX8+HGjbdu2xn333Wd8/fXXRk5OjrF69Wpjz5497jZck/ozY8YMo0WLFsZHH31k5OTkGP/85z+Npk2bGnPmzHG34XrUD4KUxdxwww3GhAkTPPZdf/31xtSpU02qqGE6cuSIIclYu3atYRiG4XK5jFatWhmzZ892tykpKTHCw8ON119/3TAMwzh58qTh7+9vLF682N3mwIEDhp+fn7Fy5UrDMAwjOzvbkGRs3LjR3earr74yJBk7d+6sj49mKadOnTI6dOhgpKenG7feeqs7SHE96t8TTzxh3HzzzRd8nWtSv4YNG2bcf//9HvvuvPNO49577zUMg+tRnxjas5CysjJlZGRo4MCBHvsHDhyoDRs2mFRVw1RQUCBJat68uSQpJydHeXl5Hn/7wMBA3Xrrre6/fUZGhsrLyz3aREdHKzEx0d3mq6++Unh4uHr16uVuc+ONNyo8PJxrWI20tDQNGzZMt912m8d+rkf9W758uZKTk/WrX/1KkZGR6t69u9544w3361yT+nXzzTfr3//+t3bv3i1J+vbbb/Xll19q6NChkrge9YmHFltIfn6+nE6noqKiPPZHRUUpLy/PpKoaHsMwNHnyZN18881KTEyUJPfft7q//Y8//uhuExAQoGbNmlVpU/n+vLw8RUZGVjlnZGQk1/A8ixcv1jfffKPNmzdXeY3rUf9++OEHzZ8/X5MnT9ZTTz2lTZs26dFHH1VgYKDGjh3LNalnTzzxhAoKCnT99dfLbrfL6XRq5syZuueeeyTxz0h9IkhZkM1m89g2DKPKPnjv4Ycf1tatW/Xll19Wec2bv/35baprzzX0tH//fj322GNatWqVgoKCLtiO61F/XC6XkpOT9cILL0iSunfvrh07dmj+/PkaO3asux3XpH4sWbJEb7/9tt555x116tRJWVlZmjhxoqKjozVu3Dh3O65H3WNoz0IiIiJkt9ur/FfAkSNHqvxXB7zzyCOPaPny5frss8/Upk0b9/5WrVpJ0kX/9q1atVJZWZlOnDhx0TaHDx+uct6jR49yDc+RkZGhI0eOKCkpSQ6HQw6HQ2vXrtWrr74qh8Ph/ltxPerP1VdfrYSEBI998fHxys3NlcQ/I/Xtd7/7naZOnaq7775bnTt31pgxYzRp0iTNmjVLEtejPhGkLCQgIEBJSUlKT0/32J+enq4+ffqYVFXDYBiGHn74YS1btkxr1qxRXFycx+txcXFq1aqVx9++rKxMa9eudf/tk5KS5O/v79Hm0KFD2r59u7tN7969VVBQoE2bNrnbfP311yooKOAaniM1NVXbtm1TVlaW+yc5OVmjR49WVlaW2rdvz/WoZzfddFOVJUF2796ttm3bSuKfkfp2+vRp+fl5foXb7Xb38gdcj3pkwgR3XIHK5Q/efPNNIzs725g4caIREhJi7Nu3z+zSLO2hhx4ywsPDjc8//9w4dOiQ++f06dPuNrNnzzbCw8ONZcuWGdu2bTPuueeeam8lbtOmjbF69Wrjm2++Mfr371/trcRdunQxvvrqK+Orr74yOnfuzK3El+Hcu/YMg+tR3zZt2mQ4HA5j5syZxvfff2/84x//MJo0aWK8/fbb7jZck/ozbtw4o3Xr1u7lD5YtW2ZEREQYU6ZMcbfhetQPgpQFzZ0712jbtq0REBBg9OjRw32LPrwnqdqfhQsXutu4XC7j2WefNVq1amUEBgYat9xyi7Ft2zaP45w5c8Z4+OGHjebNmxvBwcHG7bffbuTm5nq0OXbsmDF69GgjNDTUCA0NNUaPHm2cOHGiHj6ltZ0fpLge9e9f//qXkZiYaAQGBhrXX3+9sWDBAo/XuSb1p7Cw0HjssceM2NhYIygoyGjfvr0xbdo0o7S01N2G61E/bIZhGGb2iAEAAFgVc6QAAAC8RJACAADwEkEKAADASwQpAAAALxGkAAAAvESQAgAA8BJBCgAAwEsEKQAAAC8RpAA0OP369dPEiRMvu/2+fftks9mUlZVVZzUBaJhY2RyAaWw220VfHzdunBYtWlTj4x4/flz+/v4KDQ29rPZOp1NHjx5VRESEHA5Hjc9XG/bt26e4uDhlZmaqW7duptQAoObM+TcGAOjsk+YrLVmyRM8884x27drl3hccHOzRvry8XP7+/pc8bvPmzWtUh91uV6tWrWr0HgCQGNoDYKJWrVq5f8LDw2Wz2dzbJSUluuqqq7R06VL169dPQUFBevvtt3Xs2DHdc889atOmjZo0aaLOnTvr3Xff9Tju+UN77dq10wsvvKD7779foaGhio2N1YIFC9yvnz+09/nnn8tms+nf//63kpOT1aRJE/Xp08cj5EnSjBkzFBkZqdDQUI0fP15Tp069aG/SiRMnNHr0aLVs2VLBwcHq0KGDFi5cKEmKi4uTJHXv3l02m039+vVzv2/hwoWKj49XUFCQrr/+es2bN69K7YsXL1afPn0UFBSkTp066fPPP7+s8wK4MgQpAD7tiSee0KOPPqrvvvtOgwYNUklJiZKSkvTRRx9p+/btevDBBzVmzBh9/fXXFz3OSy+9pOTkZGVmZuo3v/mNHnroIe3cufOi75k2bZpeeuklbdmyRQ6HQ/fff7/7tX/84x+aOXOmXnzxRWVkZCg2Nlbz58+/6PF+//vfKzs7W5988om+++47zZ8/XxEREZKkTZs2SZJWr16tQ4cOadmyZZKkN954Q9OmTdPMmTP13Xff6YUXXtDvf/97/d///Z/HsX/3u9/pt7/9rTIzM9WnTx+NGDFCx44du+R5AVwhAwB8wMKFC43w8HD3dk5OjiHJmDNnziXfO3ToUOO3v/2te/vWW281HnvsMfd227ZtjXvvvde97XK5jMjISGP+/Pke58rMzDQMwzA+++wzQ5KxevVq93s+/vhjQ5Jx5swZwzAMo1evXkZaWppHHTfddJPRtWvXC9Y5fPhw49e//nW1r51fQ6WYmBjjnXfe8dj3/PPPG7179/Z43+zZs92vl5eXG23atDFefPHFS54XwJWhRwqAT0tOTvbYdjqdmjlzprp06aIWLVqoadOmWrVqlXJzcy96nC5durh/rxxCPHLkyGW/5+qrr5Yk93t27dqlG264waP9+dvne+ihh7R48WJ169ZNU6ZM0YYNGy7a/ujRo9q/f78eeOABNW3a1P0zY8YM7d2716Nt79693b87HA4lJyfru+++8+q8AC4fQQqATwsJCfHYfumll/TKK69oypQpWrNmjbKysjRo0CCVlZVd9DjnT1K32WxyuVyX/Z7KOwzPfc/5dx0al7gJesiQIfrxxx81ceJEHTx4UKmpqXr88ccv2L7yXG+88YaysrLcP9u3b9fGjRsveq5z66vpeQFcPoIUAEtZt26dfvGLX+jee+9V165d1b59e33//ff1XkfHjh3d85oqbdmy5ZLva9mype677z69/fbbmjNnjnvSe0BAgKSzPW6VoqKi1Lp1a/3www+69tprPX4qJ6dXOjdYVVRUKCMjQ9dff/0lzwvgyrD8AQBLufbaa/Xee+9pw4YNatasmV5++WXl5eUpPj6+Xut45JFH9D//8z9KTk5Wnz59tGTJEm3dulXt27e/4HueeeYZJSUlqVOnTiotLdVHH33krjsyMlLBwcFauXKl2rRpo6CgIIWHh+u5557To48+qrCwMA0ZMkSlpaXasmWLTpw4ocmTJ7uPPXfuXHXo0EHx8fF65ZVXdOLECffk+IudF8CVoUcKgKX8/ve/V48ePTRo0CD169dPrVq10h133FHvdYwePVpPPvmkHn/8cfXo0UM5OTm67777FBQUdMH3BAQE6Mknn1SXLl10yy23yG63a/HixZLOzmt69dVX9b//+7+Kjo7WL37xC0nS+PHj9de//lWLFi1S586ddeutt2rRokVVeqRmz56tF198UV27dtW6dev04Ycfuu/Mu9h5AVwZVjYHgFoyYMAAtWrVSn//+9/r7ZysiA6Yi6E9APDC6dOn9frrr2vQoEGy2+169913tXr1aqWnp5tdGoB6RJACAC/YbDatWLFCM2bMUGlpqTp27Kj33ntPt912m9mlAahHDO0BAAB4icnmAAAAXiJIAQAAeIkgBQAA4CWCFAAAgJcIUgAAAF4iSAEAAHiJIAUAAOAlghQAAICX/h+mxYV2aHFJsQAAAABJRU5ErkJggg==",
"text/plain": [
"| \n", " | Factor_1 (brca) | \n", "Factor_2 (cesc) | \n", "Factor_3 (ov) | \n", "Factor_4 (ucec) | \n", "Factor_5 (ucs) | \n", "Factor_6 | \n", "Factor_7 | \n", "Factor_8 | \n", "Factor_9 | \n", "Factor_10 | \n", "Factor_11 | \n", "Factor_12 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TCGA-A1-A0SB | \n", "-0.068559 | \n", "-0.956759 | \n", "0.395876 | \n", "0.353804 | \n", "-0.449537 | \n", "-0.244394 | \n", "-0.489684 | \n", "0.234003 | \n", "0.364860 | \n", "-0.349728 | \n", "-0.021216 | \n", "0.583005 | \n", "
| TCGA-A1-A0SD | \n", "-0.791113 | \n", "-0.176194 | \n", "0.162773 | \n", "0.077882 | \n", "0.022851 | \n", "0.090326 | \n", "0.110678 | \n", "0.036941 | \n", "0.281851 | \n", "-0.163649 | \n", "-0.056130 | \n", "0.102763 | \n", "
| TCGA-A1-A0SE | \n", "-0.649877 | \n", "-0.516037 | \n", "0.241078 | \n", "0.019738 | \n", "0.355230 | \n", "0.079890 | \n", "-0.057455 | \n", "0.151067 | \n", "0.365583 | \n", "-0.202970 | \n", "-0.646631 | \n", "0.212070 | \n", "
| TCGA-A1-A0SF | \n", "-0.436990 | \n", "-0.397665 | \n", "0.262103 | \n", "-0.131475 | \n", "0.457887 | \n", "0.311861 | \n", "0.133225 | \n", "0.461349 | \n", "0.154909 | \n", "-0.215308 | \n", "0.080673 | \n", "0.108758 | \n", "
| TCGA-A1-A0SG | \n", "-0.796272 | \n", "-0.228161 | \n", "0.087272 | \n", "-0.005371 | \n", "0.616239 | \n", "0.122077 | \n", "0.041294 | \n", "0.088474 | \n", "0.196174 | \n", "-0.137173 | \n", "-0.251898 | \n", "-0.354120 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| TCGA-NF-A5CP | \n", "0.384871 | \n", "0.149592 | \n", "0.140378 | \n", "0.200661 | \n", "-1.616578 | \n", "0.166475 | \n", "0.342098 | \n", "-0.267612 | \n", "0.145394 | \n", "0.229709 | \n", "0.012862 | \n", "-0.198812 | \n", "
| TCGA-NG-A4VU | \n", "0.511174 | \n", "-0.193516 | \n", "0.299988 | \n", "0.069122 | \n", "-2.975001 | \n", "-1.160977 | \n", "0.002463 | \n", "0.582547 | \n", "0.403265 | \n", "0.781878 | \n", "-0.013149 | \n", "-0.131417 | \n", "
| TCGA-NG-A4VW | \n", "0.668518 | \n", "0.125276 | \n", "0.162740 | \n", "0.090213 | \n", "-1.621962 | \n", "0.385436 | \n", "-0.587095 | \n", "0.180678 | \n", "0.314375 | \n", "0.189267 | \n", "-0.081897 | \n", "0.192156 | \n", "
| TCGA-QM-A5NM | \n", "1.058689 | \n", "0.071231 | \n", "0.241933 | \n", "-0.284919 | \n", "-1.533058 | \n", "0.279359 | \n", "-0.279391 | \n", "0.174577 | \n", "0.358607 | \n", "0.190392 | \n", "0.053573 | \n", "-0.531947 | \n", "
| TCGA-QN-A5NN | \n", "0.386474 | \n", "-0.215088 | \n", "0.212471 | \n", "-0.068811 | \n", "-1.736867 | \n", "-0.674749 | \n", "0.190650 | \n", "-0.281425 | \n", "0.337099 | \n", "0.273190 | \n", "0.074353 | \n", "-0.624181 | \n", "
2599 rows × 12 columns
\n", "| \n", " | IGF2 | \n", "DLK1 | \n", "CYP17A1 | \n", "APOE | \n", "SLPI | \n", "CYP11B1 | \n", "STAR | \n", "H19 | \n", "GNAS | \n", "GAPDH | \n", "... | \n", "LRRN4CL | \n", "SLC25A1 | \n", "ARID5B | \n", "RHOQ | \n", "PDE6G | \n", "KIAA0664 | \n", "FAM134A | \n", "PEX6 | \n", "NARF | \n", "TRAF7 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Factor_1 (brca) | \n", "0.256977 | \n", "0.464854 | \n", "0.425984 | \n", "0.109858 | \n", "1.112575 | \n", "0.103872 | \n", "0.529434 | \n", "0.286809 | \n", "0.498709 | \n", "1.013466 | \n", "... | \n", "0.367414 | \n", "0.587168 | \n", "0.027022 | \n", "0.064519 | \n", "0.255864 | \n", "0.737403 | \n", "-0.468108 | \n", "0.264154 | \n", "0.999687 | \n", "0.338431 | \n", "
| Factor_2 (cesc) | \n", "-0.371340 | \n", "-0.627032 | \n", "-0.278327 | \n", "-0.231412 | \n", "-0.320379 | \n", "0.021412 | \n", "-0.323378 | \n", "-0.197620 | \n", "-0.858876 | \n", "-0.654136 | \n", "... | \n", "-0.292036 | \n", "-0.237705 | \n", "-0.305694 | \n", "-0.874484 | \n", "-0.383729 | \n", "-0.336187 | \n", "-0.245804 | \n", "-0.461135 | \n", "-0.451547 | \n", "-0.009286 | \n", "
| Factor_3 (ov) | \n", "-0.558795 | \n", "-0.102920 | \n", "-1.380738 | \n", "-0.295772 | \n", "-0.245436 | \n", "0.169791 | \n", "-0.371026 | \n", "-0.326948 | \n", "0.071627 | \n", "-0.148008 | \n", "... | \n", "-0.026116 | \n", "-0.034537 | \n", "-0.406462 | \n", "-0.257028 | \n", "-0.613797 | \n", "-0.093484 | \n", "-0.939213 | \n", "-0.158356 | \n", "0.479365 | \n", "-0.332378 | \n", "
| Factor_4 (ucec) | \n", "0.321659 | \n", "0.274981 | \n", "0.148637 | \n", "-0.832970 | \n", "0.020647 | \n", "0.033767 | \n", "-0.202398 | \n", "0.065250 | \n", "-1.134238 | \n", "-1.619760 | \n", "... | \n", "0.295630 | \n", "-1.465490 | \n", "1.537956 | \n", "0.259835 | \n", "-0.707334 | \n", "0.781751 | \n", "-0.384141 | \n", "-0.071286 | \n", "-0.721724 | \n", "0.367421 | \n", "
| Factor_5 (ucs) | \n", "-0.246544 | \n", "-0.396687 | \n", "-0.053422 | \n", "-0.028221 | \n", "0.059327 | \n", "-0.059312 | \n", "0.274254 | \n", "-0.084729 | \n", "-0.194032 | \n", "-0.108764 | \n", "... | \n", "0.092816 | \n", "0.252733 | \n", "0.035070 | \n", "-0.412078 | \n", "-0.065257 | \n", "0.324985 | \n", "0.109216 | \n", "-0.071969 | \n", "0.008588 | \n", "0.196552 | \n", "
| Factor_6 | \n", "0.056331 | \n", "-0.018716 | \n", "0.026955 | \n", "-0.245057 | \n", "0.252097 | \n", "-0.084610 | \n", "-0.308168 | \n", "0.120581 | \n", "0.316507 | \n", "-0.160259 | \n", "... | \n", "0.106847 | \n", "0.229631 | \n", "0.029902 | \n", "0.188749 | \n", "-0.011532 | \n", "-0.216373 | \n", "0.151458 | \n", "-0.031476 | \n", "0.122704 | \n", "-0.108069 | \n", "
| Factor_7 | \n", "0.944083 | \n", "0.190422 | \n", "-0.057485 | \n", "1.765003 | \n", "0.045593 | \n", "0.235488 | \n", "-0.119139 | \n", "0.720282 | \n", "0.056930 | \n", "-0.210789 | \n", "... | \n", "1.772369 | \n", "0.157764 | \n", "0.819517 | \n", "0.625311 | \n", "1.294285 | \n", "-0.240169 | \n", "-0.199078 | \n", "-0.321732 | \n", "0.018755 | \n", "-0.211537 | \n", "
| Factor_8 | \n", "0.567729 | \n", "0.866502 | \n", "0.309059 | \n", "0.263794 | \n", "-0.752690 | \n", "0.049291 | \n", "0.931249 | \n", "-0.032493 | \n", "-0.359230 | \n", "-0.975684 | \n", "... | \n", "0.737753 | \n", "-0.696783 | \n", "0.189181 | \n", "-0.056764 | \n", "0.683843 | \n", "-0.067248 | \n", "0.573768 | \n", "0.351589 | \n", "-0.339139 | \n", "-0.256080 | \n", "
| Factor_9 | \n", "1.361504 | \n", "0.462694 | \n", "0.173420 | \n", "-0.463739 | \n", "-0.196467 | \n", "-0.239038 | \n", "-0.203452 | \n", "0.735064 | \n", "0.491511 | \n", "-0.076739 | \n", "... | \n", "1.247741 | \n", "0.358347 | \n", "0.286029 | \n", "0.187339 | \n", "-0.728862 | \n", "-0.415017 | \n", "0.249448 | \n", "0.128513 | \n", "-0.140165 | \n", "0.117316 | \n", "
| Factor_10 | \n", "0.280253 | \n", "0.628980 | \n", "0.000314 | \n", "0.263023 | \n", "-0.880207 | \n", "-0.004985 | \n", "0.116316 | \n", "-0.213680 | \n", "0.927243 | \n", "0.325137 | \n", "... | \n", "-0.442285 | \n", "0.154566 | \n", "-0.581967 | \n", "0.341046 | \n", "0.377159 | \n", "-0.124212 | \n", "-0.156052 | \n", "-0.333031 | \n", "0.964307 | \n", "0.109611 | \n", "
| Factor_11 | \n", "-0.017417 | \n", "-0.049315 | \n", "0.036915 | \n", "0.014929 | \n", "-0.023290 | \n", "0.029108 | \n", "-0.020272 | \n", "-0.001592 | \n", "0.028506 | \n", "-0.010991 | \n", "... | \n", "-0.017803 | \n", "-0.123792 | \n", "0.022235 | \n", "-0.062988 | \n", "0.032762 | \n", "-0.021049 | \n", "-0.052274 | \n", "0.012072 | \n", "0.063581 | \n", "-0.015236 | \n", "
| Factor_12 | \n", "-0.046363 | \n", "-0.025982 | \n", "-0.078152 | \n", "-0.990845 | \n", "0.123614 | \n", "-0.020091 | \n", "0.017208 | \n", "-0.359655 | \n", "-0.125432 | \n", "-0.198495 | \n", "... | \n", "0.023031 | \n", "-0.938130 | \n", "0.821455 | \n", "0.410206 | \n", "-0.300631 | \n", "-0.820548 | \n", "-0.382904 | \n", "-0.754267 | \n", "-0.709637 | \n", "-0.756123 | \n", "
12 rows × 4436 columns
\n", "" ], "text/plain": [ " IGF2 DLK1 CYP17A1 APOE SLPI CYP11B1 \\\n", "Factor_1 (brca) 0.256977 0.464854 0.425984 0.109858 1.112575 0.103872 \n", "Factor_2 (cesc) -0.371340 -0.627032 -0.278327 -0.231412 -0.320379 0.021412 \n", "Factor_3 (ov) -0.558795 -0.102920 -1.380738 -0.295772 -0.245436 0.169791 \n", "Factor_4 (ucec) 0.321659 0.274981 0.148637 -0.832970 0.020647 0.033767 \n", "Factor_5 (ucs) -0.246544 -0.396687 -0.053422 -0.028221 0.059327 -0.059312 \n", "Factor_6 0.056331 -0.018716 0.026955 -0.245057 0.252097 -0.084610 \n", "Factor_7 0.944083 0.190422 -0.057485 1.765003 0.045593 0.235488 \n", "Factor_8 0.567729 0.866502 0.309059 0.263794 -0.752690 0.049291 \n", "Factor_9 1.361504 0.462694 0.173420 -0.463739 -0.196467 -0.239038 \n", "Factor_10 0.280253 0.628980 0.000314 0.263023 -0.880207 -0.004985 \n", "Factor_11 -0.017417 -0.049315 0.036915 0.014929 -0.023290 0.029108 \n", "Factor_12 -0.046363 -0.025982 -0.078152 -0.990845 0.123614 -0.020091 \n", "\n", " STAR H19 GNAS GAPDH ... LRRN4CL \\\n", "Factor_1 (brca) 0.529434 0.286809 0.498709 1.013466 ... 0.367414 \n", "Factor_2 (cesc) -0.323378 -0.197620 -0.858876 -0.654136 ... -0.292036 \n", "Factor_3 (ov) -0.371026 -0.326948 0.071627 -0.148008 ... -0.026116 \n", "Factor_4 (ucec) -0.202398 0.065250 -1.134238 -1.619760 ... 0.295630 \n", "Factor_5 (ucs) 0.274254 -0.084729 -0.194032 -0.108764 ... 0.092816 \n", "Factor_6 -0.308168 0.120581 0.316507 -0.160259 ... 0.106847 \n", "Factor_7 -0.119139 0.720282 0.056930 -0.210789 ... 1.772369 \n", "Factor_8 0.931249 -0.032493 -0.359230 -0.975684 ... 0.737753 \n", "Factor_9 -0.203452 0.735064 0.491511 -0.076739 ... 1.247741 \n", "Factor_10 0.116316 -0.213680 0.927243 0.325137 ... -0.442285 \n", "Factor_11 -0.020272 -0.001592 0.028506 -0.010991 ... -0.017803 \n", "Factor_12 0.017208 -0.359655 -0.125432 -0.198495 ... 0.023031 \n", "\n", " SLC25A1 ARID5B RHOQ PDE6G KIAA0664 FAM134A \\\n", "Factor_1 (brca) 0.587168 0.027022 0.064519 0.255864 0.737403 -0.468108 \n", "Factor_2 (cesc) -0.237705 -0.305694 -0.874484 -0.383729 -0.336187 -0.245804 \n", "Factor_3 (ov) -0.034537 -0.406462 -0.257028 -0.613797 -0.093484 -0.939213 \n", "Factor_4 (ucec) -1.465490 1.537956 0.259835 -0.707334 0.781751 -0.384141 \n", "Factor_5 (ucs) 0.252733 0.035070 -0.412078 -0.065257 0.324985 0.109216 \n", "Factor_6 0.229631 0.029902 0.188749 -0.011532 -0.216373 0.151458 \n", "Factor_7 0.157764 0.819517 0.625311 1.294285 -0.240169 -0.199078 \n", "Factor_8 -0.696783 0.189181 -0.056764 0.683843 -0.067248 0.573768 \n", "Factor_9 0.358347 0.286029 0.187339 -0.728862 -0.415017 0.249448 \n", "Factor_10 0.154566 -0.581967 0.341046 0.377159 -0.124212 -0.156052 \n", "Factor_11 -0.123792 0.022235 -0.062988 0.032762 -0.021049 -0.052274 \n", "Factor_12 -0.938130 0.821455 0.410206 -0.300631 -0.820548 -0.382904 \n", "\n", " PEX6 NARF TRAF7 \n", "Factor_1 (brca) 0.264154 0.999687 0.338431 \n", "Factor_2 (cesc) -0.461135 -0.451547 -0.009286 \n", "Factor_3 (ov) -0.158356 0.479365 -0.332378 \n", "Factor_4 (ucec) -0.071286 -0.721724 0.367421 \n", "Factor_5 (ucs) -0.071969 0.008588 0.196552 \n", "Factor_6 -0.031476 0.122704 -0.108069 \n", "Factor_7 -0.321732 0.018755 -0.211537 \n", "Factor_8 0.351589 -0.339139 -0.256080 \n", "Factor_9 0.128513 -0.140165 0.117316 \n", "Factor_10 -0.333031 0.964307 0.109611 \n", "Factor_11 0.012072 0.063581 -0.015236 \n", "Factor_12 -0.754267 -0.709637 -0.756123 \n", "\n", "[12 rows x 4436 columns]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# specify the view of which we want to retrieve the loadings\n", "W = sofa.tl.get_loadings(model, view=\"rna\")\n", "W" ] }, { "cell_type": "code", "execution_count": 30, "id": "37b1b42b-fdea-4402-95ad-91229fd4eabf", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "