Skip to content
Snippets Groups Projects
MachineLearning_inMolecularBiology2022_GroupProject.ipynb 1.12 MiB
Newer Older
jpronkko's avatar
jpronkko committed
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C&gt;A</td>\n",
       "      <td>ACA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C&gt;A</td>\n",
       "      <td>ACC</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 9693 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  Mutation type Trinucleotide  ALL::TARGET-10-PAIXPH-03A-01D  \\\n",
       "0           C>A           ACA                              0   \n",
       "1           C>A           ACC                              0   \n",
       "\n",
       "   ALL::TARGET-10-PAKHZT-03A-01R  ALL::TARGET-10-PAKMVD-09A-01D  \\\n",
       "0                              0                              0   \n",
       "1                              0                              0   \n",
       "\n",
       "   ALL::TARGET-10-PAKSWW-03A-01D  ALL::TARGET-10-PALETF-03A-01D  \\\n",
       "0                              1                              0   \n",
       "1                              1                              0   \n",
       "\n",
       "   ALL::TARGET-10-PALLSD-09A-01D  ALL::TARGET-10-PAMDKS-03A-01D  \\\n",
       "0                              0                              0   \n",
       "1                              0                              0   \n",
       "\n",
       "   ALL::TARGET-10-PAPJIB-04A-01D  ...  Head-SCC::V-109  Head-SCC::V-112  \\\n",
       "0                              2  ...                0                0   \n",
       "1                              0  ...                1                0   \n",
       "\n",
       "   Head-SCC::V-116  Head-SCC::V-119  Head-SCC::V-123  Head-SCC::V-124  \\\n",
       "0                0                0                0                0   \n",
       "1                0                0                0                0   \n",
       "\n",
       "   Head-SCC::V-125  Head-SCC::V-14  Head-SCC::V-29  Head-SCC::V-98  \n",
       "0                0               0               0               1  \n",
       "1                0               1               0               0  \n",
       "\n",
       "[2 rows x 9693 columns]"
      ]
     },
jpronkko's avatar
jpronkko committed
     "execution_count": 8,
jpronkko's avatar
jpronkko committed
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_wes_mut = pd.read_csv(\"./project_data/catalogs/WES/WES_Other.96.csv\")\n",
    "other_wes_mut.head(2)"
   ]
  },
  {
   "cell_type": "code",
jpronkko's avatar
jpronkko committed
   "execution_count": 9,
jpronkko's avatar
jpronkko committed
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cancer Types</th>\n",
       "      <th>Sample Names</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>SBS1</th>\n",
       "      <th>SBS2</th>\n",
       "      <th>SBS3</th>\n",
       "      <th>SBS4</th>\n",
       "      <th>SBS5</th>\n",
       "      <th>SBS6</th>\n",
       "      <th>SBS7a</th>\n",
       "      <th>...</th>\n",
       "      <th>SBS51</th>\n",
       "      <th>SBS52</th>\n",
       "      <th>SBS53</th>\n",
       "      <th>SBS54</th>\n",
       "      <th>SBS55</th>\n",
       "      <th>SBS56</th>\n",
       "      <th>SBS57</th>\n",
       "      <th>SBS58</th>\n",
       "      <th>SBS59</th>\n",
       "      <th>SBS60</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ALL</td>\n",
       "      <td>TARGET-10-PAIXPH-03A-01D</td>\n",
       "      <td>0.529</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ALL</td>\n",
       "      <td>TARGET-10-PAKHZT-03A-01R</td>\n",
       "      <td>0.696</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 68 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  Cancer Types              Sample Names  Accuracy  SBS1  SBS2  SBS3  SBS4  \\\n",
       "0          ALL  TARGET-10-PAIXPH-03A-01D     0.529     0     0     0     0   \n",
       "1          ALL  TARGET-10-PAKHZT-03A-01R     0.696     0     0     0     0   \n",
       "\n",
       "   SBS5  SBS6  SBS7a  ...  SBS51  SBS52  SBS53  SBS54  SBS55  SBS56  SBS57  \\\n",
       "0     0     0      0  ...      0      0      0      1      0      0      0   \n",
       "1     0     0      0  ...      0      0      0      1      0      0      0   \n",
       "\n",
       "   SBS58  SBS59  SBS60  \n",
       "0      0      0      0  \n",
       "1      0      0      0  \n",
       "\n",
       "[2 rows x 68 columns]"
      ]
     },
jpronkko's avatar
jpronkko committed
     "execution_count": 9,
jpronkko's avatar
jpronkko committed
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_wes_act = pd.read_csv(\"./project_data/activities/WES/WES_Other.activities.csv\")\n",
    "other_wes_act.head(2)"
   ]
  },
jpronkko's avatar
jpronkko committed
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imports and helpers"
   ]
  },
jpronkko's avatar
jpronkko committed
  {
   "cell_type": "code",
jpronkko's avatar
jpronkko committed
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
jpronkko's avatar
jpronkko committed
    "import re\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "from sklearn.decomposition import PCA\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
jpronkko's avatar
jpronkko committed
    "#import torch \n",
    "\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
jpronkko's avatar
jpronkko committed
    "\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.metrics import roc_curve\n",
jpronkko's avatar
jpronkko committed
    "from sklearn.metrics import classification_report\n",
jpronkko's avatar
jpronkko committed
    "from sklearn.model_selection import cross_val_score, train_test_split, KFold\n",
    "from sklearn.model_selection import StratifiedShuffleSplit\n",
    "from sklearn.model_selection import StratifiedKFold, GridSearchCV\n",
    "from sklearn.model_selection import learning_curve\n",
jpronkko's avatar
jpronkko committed
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "# These ones are work in progress\n",
    "def plot_roc_auc(X_tst, y_test, model, is_multi_class=False):\n",
    "    probs = model.predict_proba(X_tst)\n",
    "    probs = probs[:, 1]\n",
    "    if is_multi_class:\n",
    "        auc = roc_auc_score(y_test, probs, multi_class='ovo')\n",
    "    else:\n",
    "        auc = roc_auc_score(y_test, probs, multi_class='ovo')\n",
    "    \n",
    "    fp_rate, tp_rate, thresholds = roc_curve(y_test, probs)\n",
    "    \n",
    "    plt.figure(figsize=(7,6))\n",
    "    plt.axis('scaled')\n",
    "    plt.xlim([0,1])\n",
    "    plt.ylim([0,1])\n",
    "    plt.title(\"AUC & ROC\")\n",
    "    plt.plot(fp_rate, tp_rate, 'g')\n",
    "    plt.fill_between(fp_rate, tp_rate, facecolor = \"green\", alpha = 0.7)\n",
    "    plt.text(0.95, 0.05, f'AUC = {auc}', ha='right', fontsize=12, weight='bold', color='blue')\n",
    "    plt.xlabel(\"False Positive Rate\")\n",
    "    plt.ylabel(\"True Positive Rate\")\n",
    "\n",
jpronkko's avatar
jpronkko committed
    "def plot_confusion_mat(y_test, y_pred, labs=None, size=None):\n",
    "    cm = sklearn.metrics.confusion_matrix(y_test, y_pred)\n",
    "    if size is None:\n",
    "        plt.figure(figsize=(12,10))\n",
    "    else:\n",
    "        plt.figure(figsize=size)\n",
    "    if labs is None:\n",
    "        sns.heatmap(cm, square=False, annot=True, fmt='d', cmap='viridis', cbar=True)\n",
    "    else:\n",
    "        sns.heatmap(cm, square=False, annot=True, fmt='d', cmap='viridis', xticklabels=labs, yticklabels=labs, cbar=True)\n",
    "    plt.xlabel('Predicted label')\n",
    "    plt.ylabel('True label')\n",
    "    #plt.ylim(0, 2)\n",
    "\n",
    "def plot_learning_curve(model, X, y):\n",
    "    N, train_lc, val_lc = learning_curve(model, X, y, cv=7, train_sizes=np.linspace(0.3, 1, 25))\n",
    "    plt.figure(figsize=(7,6))\n",
jpronkko's avatar
jpronkko committed
    "    plt.title(\"Learning curve\")\n",
    "    plt.plot(N, np.mean(train_lc, 1), color='blue', label='training score')\n",
    "    plt.plot(N, np.mean(val_lc, 1), color='red', label='validation score')\n",
    "    #plt.hlines(N, np.mean([train_lc[-1],  val_lc[-1]]), N[0], N[-1], color='gray', label='mean', linestyle='dashed')\n",
    "\n",
    "def plot_trn_tst_dist(y_all, y_train, y_test, y_pred, in_cols=False):\n",
    "    #fig = None\n",
    "    #ax = None\n",
    "    if in_cols:\n",
    "        fig, ax = plt.subplots(2,2)\n",
    "    else:\n",
    "        fig, ax = plt.subplots(4,1)\n",
    "\n",
    "    fig.set_size_inches(15,8)\n",
    "\n",
    "    plt_sets = [y_all, y_train, y_test, y_pred]\n",
    "    plt_labels = [\"All\", \"Train\", \"Test\", \"Pred\"]\n",
    "    plt_set_df = pd.DataFrame()\n",
    "    for i in range(len(plt_sets)):\n",
    "        s = pd.Series(plt_sets[i]).value_counts().sort_index()\n",
    "        plt_set_df[plt_labels[i]] = s\n",
    "    \n",
    "        pd.DataFrame({plt_labels[i]: s}).plot(ax=ax.flat[i], kind=\"bar\")\n",
    "        #sns.countplot(x=s, \n",
    "        #            palette=sns.hls_palette(2),\n",
    "        #            ax=ax[i])\n",
    "        ax.flat[i].tick_params(axis=\"x\", rotation=90)\n",
    "\n",
    "    fig.tight_layout()\n",
    "    with pd.option_context('display.max_rows', None,\n",
    "                       'display.max_columns', None,\n",
    "                       'display.precision', 2,\n",
    "                       ):\n",
    "        print(plt_set_df)\n",
    "\n",
    "\n",
    "   \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dataset preprocess, combine profile data to a single data frame\n",
    "\n",
    "From all profile sets, a combined data frame is made, which has samples in the rows and features in the columns."
   ]
  },
  {
   "cell_type": "code",
jpronkko's avatar
jpronkko committed
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Profile data:\n",
      "\n",
      "---Data set diagnostics print---\n",
      "\n",
      "Missing entries in mutations: 0\n",
      "The shape of the mutations data frame (23727, 97)\n",
      "Checking normalization: sum of some rows:\n",
      " Panc::8066452                           1.0\n",
      "Cervix::TCGA-VS-A8QM-01A-11D-A37N-09    1.0\n",
      "Prost-AdenoCA::SP116270                 1.0\n",
      "CNS::MBRep_T68                          1.0\n",
      "Breast::SA056                           1.0\n",
      "dtype: float64\n",
      "\n",
      "\n",
      "Some tumor counts:\n",
      " Breast    1858\n",
      "Lung      1668\n",
      "CNS       1595\n",
      "Liver     1358\n",
      "Kidney    1269\n",
      "Name: tumor_types, dtype: int64\n",
      "\n",
      "\n",
      "Tumor types with smallish counts: 1\n",
      "Small-Intestine-carcinoid    34\n",
      "Name: tumor_types, dtype: int64\n",
      "\n",
      "\n",
      "Unique tumor types:  51\n",
      "['ALL', 'AML', 'Adrenal-neoplasm', 'Biliary-AdenoCA', 'Bladder-TCC', 'Blood-CMDI', 'Bone', 'Breast', 'CNS', 'CNS-NOS', 'Cervix', 'ColoRect-AdenoCA', 'ColoRect-Adenoma', 'DLBC', 'Eso-AdenoCA', 'Eso-SCC', 'Ewings', 'Eye', 'Head-SCC', 'Kidney', 'Liver', 'Lung', 'Lymph', 'Meninges-Meningioma', 'Mesothelium-Mesothelioma', 'Myeloid', 'Neuroblastoma', 'Oral-SCC', 'Ovary-AdenoCA', 'Panc', 'Para-AdenoCA', 'Para-Adenoma', 'Pheochromocytoma', 'Pit-All', 'Prost-AdenoCA', 'Prost-Adenoma', 'Sarcoma', 'Sarcoma-bone', 'Skin-BCC', 'Skin-Melanoma', 'Skin-SCC', 'Small-Intestine-carcinoid', 'SoftTissue-Leiomyo', 'SoftTissue-Liposarc', 'Stomach-AdenoCA', 'Testis-CA', 'Thy-AdenoCA', 'Thymoma', 'Transitional-cell-carcinoma', 'UCS', 'Uterus-AdenoCA']\n"
     ]
    }
   ],
   "source": [
    "\n",
    "def prepare_mut_df(raw_mutation_dfs, is_profile, small_sample_limit=None):\n",
    "\n",
    "    mutations_all = pd.DataFrame()\n",
    "\n",
    "    for df in raw_mutation_dfs:\n",
    "        # Make a copy of the original data frame and start processing from there\n",
    "        mutations  = df.copy()\n",
    "    \n",
    "        if is_profile:\n",
    "            mutations['mut_tri'] = mutations.apply(lambda a: '{}_{}'.format(a['Mutation type'], a['Trinucleotide']), axis=1)\n",
    "            mutations = mutations.set_index('mut_tri').drop(['Mutation type', 'Trinucleotide'], axis=1)\n",
    "            mutations = mutations.T\n",
    "        else:\n",
    "            mutations['mut_tri'] = mutations.apply(lambda a: '{}::{}'.format(a['Cancer Types'], a['Sample Names']), axis=1)\n",
    "            mutations = mutations.set_index('mut_tri').drop(['Cancer Types', 'Sample Names', 'Accuracy'], axis=1)\n",
    "     \n",
    "        # Rename some index names\n",
    "        renamed_items = list(mutations.index)\n",
    "        index_items = list(mutations.index)\n",
    "\n",
    "        # Combine rows for low count labels\n",
    "        for i in range(len(index_items)):\n",
    "            result = index_items[i]\n",
    "            for to_sub in ['Bone', 'Breast', 'Cervix', 'CNS', 'Eye', 'Liver', 'Lymph', 'Lung', 'Kidney', 'Myeloid', 'Panc' ]:\n",
    "                result = re.sub( to_sub + r'(-\\w*)', to_sub, result)\n",
    "                \n",
    "            renamed_items[i] = result.replace('Ca', 'CA')\n",
    "       \n",
    "        mutations.rename(index=dict(zip(index_items, renamed_items)), inplace = True)\n",
    "   \n",
    "        # Normalize \n",
    "        row_sums = mutations.sum(axis=1)\n",
    "        mutations = mutations.divide(row_sums, axis = 0)\n",
    "\n",
    "        mutations_all = pd.concat([mutations_all, mutations])\n",
    "\n",
    "    mutations_all.sort_index(inplace=True)\n",
    "\n",
    "    # Do we need to renormalize after obtaining the full dataframe?\n",
    "  \n",
    "    # Figure out tumor types based on the first part of the index\n",
    "    tumor_types = [a.split(':')[0] for a in mutations_all.index]\n",
    "    # Prepare a list with all the types appearing only once\n",
    "    unique_tumor_types = sorted(list(set(tumor_types)))\n",
    "    # Attach this back to the frame\n",
    "    mutations_all[\"tumor_types\"] = tumor_types\n",
    "\n",
    "    # Get rid of types with very few samples if the limit is specified\n",
    "    if small_sample_limit is not None:\n",
    "        counts = mutations_all[\"tumor_types\"].value_counts()\n",
    "        small_counts = list(counts[counts < small_sample_limit].index)\n",
    "        mutations_all = mutations_all.loc[~mutations_all[\"tumor_types\"].isin(small_counts)]\n",
    "\n",
    "    \n",
    "    return (mutations_all, unique_tumor_types)\n",
    "\n",
    "\n",
    "def print_dset_diag(mut_df, unique_tumor_types, small_sample_limit):\n",
    "    # Check if the data frame is ok\n",
    "    print(\"\\n---Data set diagnostics print---\\n\")\n",
    "    print(\"Missing entries in mutations:\", mut_df.isnull().sum().sum())\n",
    "    print(\"The shape of the mutations data frame\", mut_df.shape)\n",
    "\n",
    "    # Check to see if the rows are normalized to one, take a sample from the data frame\n",
    "    norm_df = mut_df.sample(n=5, random_state=5)\n",
    "    print(\"Checking normalization: sum of some rows:\\n\", norm_df.iloc[:,0:-1].sum(axis=1))\n",
    "    print(\"\\n\")\n",
    "\n",
    "    # Check some counts of tumor types\n",
    "    tumor_counts = mut_df[\"tumor_types\"].value_counts() #.sort_values(ascending=True)\n",
    "    print(\"Some tumor counts:\\n\", tumor_counts.head(5))\n",
    "    print(\"\\n\")\n",
    "\n",
    "    small_counts = tumor_counts < 1.5*small_sample_limit\n",
    "    print(\"Tumor types with smallish counts:\",  sum(small_counts))\n",
    "\n",
    "    print(tumor_counts[small_counts])\n",
    "    print(\"\\n\")\n",
    "\n",
    "    # Tumor types\n",
    "    print(\"Unique tumor types: \", len(unique_tumor_types))\n",
    "    print(unique_tumor_types)\n",
    "\n",
    "\n",
    "small_sample_limit = 30\n",
    "\n",
    "profile_raw_data_sets = [PCAWG_wgs_mut, TCGA_wes_mut, nonPCAWG_wgs_mut, other_wes_mut]\n",
    "profile_mut_all, prf_unique_tumor_types = prepare_mut_df(profile_raw_data_sets, True, small_sample_limit)\n",
    "\n",
    "# Print some diagnostics from the prepared data set\n",
    "print(\"Profile data:\")\n",
    "print_dset_diag(profile_mut_all, prf_unique_tumor_types, small_sample_limit)\n",
    "\n",
    "# Data matrix X for fitting, omit the tumor labeling from there, use that information in constructing true y\n",
    "# Note: this contains profile data only\n",
    "X_prf = profile_mut_all.drop(\"tumor_types\", axis=1)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dataset preprocess for activites data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
jpronkko's avatar
jpronkko committed
      "Activities data:\n",
      "\n",
      "---Data set diagnostics print---\n",
      "\n",
      "Missing entries in mutations: 0\n",
      "The shape of the mutations data frame (23727, 66)\n",
      "Checking normalization: sum of some rows:\n",
jpronkko's avatar
jpronkko committed
      " mut_tri\n",
      "Panc::8066452                           1.0\n",
      "Cervix::TCGA-VS-A8QM-01A-11D-A37N-09    1.0\n",
      "Prost-AdenoCA::SP116270                 1.0\n",
      "CNS::MBRep_T68                          1.0\n",
      "Breast::SA056                           1.0\n",
      "dtype: float64\n",
jpronkko's avatar
jpronkko committed
      "\n",
      "\n",
      "Some tumor counts:\n",
jpronkko's avatar
jpronkko committed
      " Breast    1858\n",
      "Lung      1668\n",
      "CNS       1595\n",
      "Liver     1358\n",
      "Kidney    1269\n",
      "Name: tumor_types, dtype: int64\n",
jpronkko's avatar
jpronkko committed
      "\n",
      "\n",
      "Tumor types with smallish counts: 1\n",
      "Small-Intestine-carcinoid    34\n",
      "Name: tumor_types, dtype: int64\n",
      "\n",
      "\n",
      "Unique tumor types:  51\n",
      "['ALL', 'AML', 'Adrenal-neoplasm', 'Biliary-AdenoCA', 'Bladder-TCC', 'Blood-CMDI', 'Bone', 'Breast', 'CNS', 'CNS-NOS', 'Cervix', 'ColoRect-AdenoCA', 'ColoRect-Adenoma', 'DLBC', 'Eso-AdenoCA', 'Eso-SCC', 'Ewings', 'Eye', 'Head-SCC', 'Kidney', 'Liver', 'Lung', 'Lymph', 'Meninges-Meningioma', 'Mesothelium-Mesothelioma', 'Myeloid', 'Neuroblastoma', 'Oral-SCC', 'Ovary-AdenoCA', 'Panc', 'Para-AdenoCA', 'Para-Adenoma', 'Pheochromocytoma', 'Pit-All', 'Prost-AdenoCA', 'Prost-Adenoma', 'Sarcoma', 'Sarcoma-bone', 'Skin-BCC', 'Skin-Melanoma', 'Skin-SCC', 'Small-Intestine-carcinoid', 'SoftTissue-Leiomyo', 'SoftTissue-Liposarc', 'Stomach-AdenoCA', 'Testis-CA', 'Thy-AdenoCA', 'Thymoma', 'Transitional-cell-carcinoma', 'UCS', 'Uterus-AdenoCA']\n"
     ]
    }
   ],
   "source": [
    "act_raw_data_sets = [PCAWG_wgs_act, TCGA_wes_act, nonPCAWG_wgs_act, other_wes_act]\n",
    "act_mut_all, act_unique_tumor_types = prepare_mut_df(act_raw_data_sets, is_profile=False, small_sample_limit=small_sample_limit)\n",
    "\n",
    "# Print some diagnostics from the prepared data set\n",
    "print(\"Activities data:\")\n",
    "print_dset_diag(act_mut_all, act_unique_tumor_types, small_sample_limit)\n",
    "\n",
    "# Data matrix X for fitting, omit the tumor labeling from there, use that information in constructing true y\n",
    "# Note: this contains profile data only\n",
    "X_act = act_mut_all.drop(\"tumor_types\", axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check profile data content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Some content from the full profile set:\n"
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>mut_tri</th>\n",
       "      <th>C&gt;A_ACA</th>\n",
       "      <th>C&gt;A_ACC</th>\n",
       "      <th>C&gt;A_ACG</th>\n",
       "      <th>C&gt;A_ACT</th>\n",
       "      <th>C&gt;A_CCA</th>\n",
       "      <th>C&gt;A_CCC</th>\n",
       "      <th>C&gt;A_CCG</th>\n",
       "      <th>C&gt;A_CCT</th>\n",
       "      <th>C&gt;A_GCA</th>\n",
       "      <th>C&gt;A_GCC</th>\n",
       "      <th>...</th>\n",
       "      <th>T&gt;G_CTT</th>\n",
       "      <th>T&gt;G_GTA</th>\n",
       "      <th>T&gt;G_GTC</th>\n",
       "      <th>T&gt;G_GTG</th>\n",
       "      <th>T&gt;G_GTT</th>\n",
       "      <th>T&gt;G_TTA</th>\n",
       "      <th>T&gt;G_TTC</th>\n",
       "      <th>T&gt;G_TTG</th>\n",
       "      <th>T&gt;G_TTT</th>\n",
       "      <th>tumor_types</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
jpronkko's avatar
jpronkko committed
       "      <th>ALL::11</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
jpronkko's avatar
jpronkko committed
       "      <td>0.066667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
jpronkko's avatar
jpronkko committed
       "      <th>ALL::2211636</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
jpronkko's avatar
jpronkko committed
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
jpronkko's avatar
jpronkko committed
       "      <th>ALL::2211638</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
jpronkko's avatar
jpronkko committed
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
jpronkko's avatar
jpronkko committed
       "      <th>ALL::2211640</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
jpronkko's avatar
jpronkko committed
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
jpronkko's avatar
jpronkko committed
       "      <th>ALL::2211642</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
jpronkko's avatar
jpronkko committed
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 97 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
jpronkko's avatar
jpronkko committed
       "mut_tri       C>A_ACA  C>A_ACC  C>A_ACG  C>A_ACT  C>A_CCA  C>A_CCC  C>A_CCG  \\\n",
       "ALL::11           0.0      0.0      0.0      0.0      0.0      0.0      0.0   \n",
       "ALL::2211636      0.0      0.0      0.0      0.0      0.0      0.0      0.0   \n",
       "ALL::2211638      0.0      0.0      0.0      0.0      0.0      0.0      0.0   \n",
       "ALL::2211640      0.0      0.0      0.0      0.0      0.0      0.0      0.0   \n",
       "ALL::2211642      0.0      0.0      0.0      0.0      0.0      0.0      0.0   \n",
       "\n",
       "mut_tri        C>A_CCT   C>A_GCA  C>A_GCC  ...   T>G_CTT  T>G_GTA   T>G_GTC  \\\n",
       "ALL::11       0.133333  0.066667      0.0  ...  0.066667      0.0  0.066667   \n",
       "ALL::2211636  0.000000  0.000000      0.0  ...  0.000000      0.0  0.000000   \n",
       "ALL::2211638  0.000000  0.000000      0.0  ...  0.000000      0.0  0.000000   \n",
       "ALL::2211640  0.000000  0.000000      0.0  ...  0.000000      0.0  0.000000   \n",
       "ALL::2211642  0.000000  0.000000      0.0  ...  0.000000      0.0  0.000000   \n",
       "\n",
       "mut_tri       T>G_GTG  T>G_GTT   T>G_TTA  T>G_TTC  T>G_TTG  T>G_TTT  \\\n",
       "ALL::11           0.0      0.0  0.000000      0.0      0.0      0.0   \n",
       "ALL::2211636      0.0      0.0  0.000000      0.0      0.0      0.0   \n",
       "ALL::2211638      0.0      0.0  0.333333      0.0      0.0      0.0   \n",
       "ALL::2211640      0.0      0.0  0.000000      0.0      0.0      0.0   \n",
       "ALL::2211642      0.0      0.0  0.000000      0.0      0.0      0.0   \n",
       "\n",
       "mut_tri       tumor_types  \n",
       "ALL::11               ALL  \n",
       "ALL::2211636          ALL  \n",
       "ALL::2211638          ALL  \n",
       "ALL::2211640          ALL  \n",
       "ALL::2211642          ALL  \n",
       "\n",
       "[5 rows x 97 columns]"
      ]
     },
jpronkko's avatar
jpronkko committed
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
jpronkko's avatar
jpronkko committed
    "print(\"Some content from the full profile set:\")\n",
    "profile_mut_all.head(5)"
  {
   "cell_type": "code",
jpronkko's avatar
jpronkko committed
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
jpronkko's avatar
jpronkko committed
      "image/png": "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",
      "text/plain": [
       "<Figure size 1800x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25, 5))\n",
jpronkko's avatar
jpronkko committed
    "sns.set_theme()\n",
    "profile_mut_all[\"tumor_types\"].value_counts().sort_index().plot(kind=\"bar\")\n",
    "#sns.countplot(x=profile_mut_all[\"tumor_types\"], palette=sns.hls_palette(2))\n",
    "plt.xticks(rotation=90);\n"
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
jpronkko's avatar
jpronkko committed
    "### Check activites data content"
  {
   "cell_type": "code",
jpronkko's avatar
jpronkko committed
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
jpronkko's avatar
jpronkko committed
      "Some content from the full act set:\n"
jpronkko's avatar
jpronkko committed
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SBS1</th>\n",
       "      <th>SBS2</th>\n",
       "      <th>SBS3</th>\n",
       "      <th>SBS4</th>\n",
       "      <th>SBS5</th>\n",
       "      <th>SBS6</th>\n",
       "      <th>SBS7a</th>\n",
       "      <th>SBS7b</th>\n",
       "      <th>SBS7c</th>\n",
       "      <th>SBS7d</th>\n",
       "      <th>...</th>\n",
       "      <th>SBS52</th>\n",
       "      <th>SBS53</th>\n",
       "      <th>SBS54</th>\n",
       "      <th>SBS55</th>\n",
       "      <th>SBS56</th>\n",
       "      <th>SBS57</th>\n",
       "      <th>SBS58</th>\n",
       "      <th>SBS59</th>\n",
       "      <th>SBS60</th>\n",
       "      <th>tumor_types</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mut_tri</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ALL::11</th>\n",
       "      <td>0.066667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ALL::2211636</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ALL::2211638</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ALL::2211640</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>ALL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ALL::2211642</th>\n",
       "      <td>0.000000</td>\n",