Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C>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>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]"
]
},
"execution_count": 35,
"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",
"execution_count": 36,
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
"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]"
]
},
"execution_count": 36,
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Imports and helpers"
]
},
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"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",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import roc_auc_score\n",
"from sklearn.metrics import roc_curve\n",
"from sklearn.metrics import classification_report\n",
"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",
"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",
"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",
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
" 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",
"execution_count": 38,
"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 (23829, 97)\n",
" Thymoma::TCGA-4V-A9QI-01A-11D-A423-09 1.0\n",
"CNS::TCGA-06-0216-01B-01D-1492-08 1.0\n",
"Prost-AdenoCA::SP114926 1.0\n",
"CNS::TCGA-06-1802-01A-01W-0643-08 1.0\n",
"Sarcoma-bone::IC086T_WGS 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: 0\n",
"Series([], Name: tumor_types, dtype: int64)\n",
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
"\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 = 0\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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dataset preprocess for activites data"
]
},
{
"cell_type": "code",
"execution_count": 39,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Activities data:\n",
"\n",
"---Data set diagnostics print---\n",
"\n",
"Missing entries in mutations: 0\n",
"The shape of the mutations data frame (23829, 66)\n",
"Checking normalization: sum of some rows:\n",
"Thymoma::TCGA-4V-A9QI-01A-11D-A423-09 1.0\n",
"CNS::TCGA-06-0216-01B-01D-1492-08 1.0\n",
"Prost-AdenoCA::SP114926 1.0\n",
"CNS::TCGA-06-1802-01A-01W-0643-08 1.0\n",
"Sarcoma-bone::IC086T_WGS 1.0\n",
" Breast 1858\n",
"Lung 1668\n",
"CNS 1595\n",
"Liver 1358\n",
"Kidney 1269\n",
"Name: tumor_types, dtype: int64\n",
"Tumor types with smallish counts: 0\n",
"Series([], Name: tumor_types, dtype: int64)\n",
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
"\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": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Some content from the full profile set:\n"
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
"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>A_ACA</th>\n",
" <th>C>A_ACC</th>\n",
" <th>C>A_ACG</th>\n",
" <th>C>A_ACT</th>\n",
" <th>C>A_CCA</th>\n",
" <th>C>A_CCC</th>\n",
" <th>C>A_CCG</th>\n",
" <th>C>A_CCT</th>\n",
" <th>C>A_GCA</th>\n",
" <th>C>A_GCC</th>\n",
" <th>...</th>\n",
" <th>T>G_CTT</th>\n",
" <th>T>G_GTA</th>\n",
" <th>T>G_GTC</th>\n",
" <th>T>G_GTG</th>\n",
" <th>T>G_GTT</th>\n",
" <th>T>G_TTA</th>\n",
" <th>T>G_TTC</th>\n",
" <th>T>G_TTG</th>\n",
" <th>T>G_TTT</th>\n",
" <th>tumor_types</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <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>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",
" <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>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",
" <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>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",
" <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>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",
" <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>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>"
],
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
"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]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(\"Some content from the full profile set:\")\n",
"profile_mut_all.head(5)"
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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sdasWaPo6Gi1bdtWY8aMUd++ffXyyy8biRUXF6eoqCjPSOaqVasaKUFRpEiRPO9jvr6+xtr0o0eP1osvvqiJEyfq7bff1vz58x3vPC5SJP/KrSaO66677pIkTZ8+XfPmzfPEuO+++9SjRw8jI0eXLFmijz76yHPP6datmzp16mQkMZ2enq709HTPuZKWlpbtecQptu5rzZo103XXXacuXbrojTfeUPHixXX//fc7GiOrNm3a6PTp02rTpo2io6NVtWpVBQUFGUtKS9KsWbO0ePFi9ezZUzExMfr666+NzaSyeW20mRuZN2+eoqKidObMGbVt21YxMTHq0qWLpzPICV6XmM5v+ojL5VJiYqLj8X777bd8X3P6wdvt+uuv15kzZxy/ceVl1apVioqK0rfffquHH35Y48aNU3h4uHr16mUkXl4XJRMj2a699lrP/7vrIVesWNHxODnZeLj67rvvtHjxYv3555/ZHsSvuuoqx5NX6enpSk5OVsmSJbVlyxY99dRTntecvkmnp6crLS1NxYoV03fffefpgZcyHwpMycjIUHJysooWLarU1FQj5+OCBQtUv3599erVS40aNZJkviPNfSMrVaqU/vjjD1199dWO1YjKydb32nZy4nznnalz0v292rhxo1q1apVvQ8opO3fuVGRkpNatWydJKl26tDIyMhyNcerUKV199dW5tleuXFmnT592NFZWDRs2VMOGDfXzzz+rd+/eev/999W8eXOFh4crICDA0VjHjh3TY489pgYNGnim/UsyMvVz8+bN2UZxuhuD77//vlq1auVorO+//15xcXHZknMm2WjEu23btk1Lly5VcHCwnn32WXXu3DnPGRKXw/0ssnnzZv33v//1bB8+fLi6du1qbEbJJ598ooULF6pTp0565513tHPnTs2ePdvRGOfrCD916pSjsQriHipJRYsW1YEDBzwdWvv373f8etysWTM1bNhQL7/8su68805JmbNJTLJxfmRlI2nwwQcfOPp+F2KjEZ/Tvn37NH36dK1atUqtW7fWQw89ZLS9VrRoUfn4+CgtLU1VqlTR4cOHjcQqUaJErnuMie93amqqUlJSVLJkyWzbT506ZSTx6I7ZuHFjuVwuVa5cWQMGDFC3bt0c/7sdO3YsVzv32LFjRmeTJyQk6OzZs56yn6mpqTpy5IixeFk7QvPqFHVK06ZNNWDAAHXv3l1S5ne9WbNmjsexdV/717/+pQ0bNmjdunWqUqWKp2PBFF9fX08y350rM32/Llq0qCpVquTpOL7nnns0ffp0I7FsXhtt5kYmTJigxo0ba8yYMZ5nHqf/bl6XmDY1aiw/57txmJoa/NJLL6lr165q0KBBtoSPiSlGffv2VePGjfXpp596bmimLh5nz57VuXPnVLRo9tMyLS3N8ZG+UmZdnjlz5ngS05UqVdIzzzyjJ5980vFYbjYertq0aaM2bdpo8eLFatu2raPvndMTTzyhdu3aqUyZMqpatapuu+02SZm1d51O9D/00EPq0aOHKlSoIB8fH9WvX1+S9PvvvxvtpOnUqZNq166txYsX68iRIxo4cKA2bNjgaE22devWaenSpZo0aZL++usvhYaGGl9opWHDhjpx4oQ6deqktm3bys/PTw8//LDjcWx+r20nJypWrKj4+PhcUxPj4+OzTfNz0l133aWHH35YLpdLo0eP1smTJ887GuZy5bxenT171vGGzJkzZ/J9zcS1323Lli2aP3++fvzxRz3++ONq3769NmzYoD59+mjlypWOxnr00UeNJiSyOn78uM6ePet5BklNTVVCQoJ8fHwcXxeiatWqjr7fhdhqxEv//wzn6+urlJQUlSlTxlij+siRI9kSB8eOHdPRo0eNxJIyG06lSpVSRkaGXC6Xateu7fhU5AYNGmjOnDm5kutz5871JFidUhD3UCmzZmSnTp08o23XrFmjcePGORqje/fuWrp0qV599VW1a9fOyH06JxvnR1Y2kgbnG0gkyfE1IWw04nNytwmLFSumEydOqFy5csYSIqVLl1ZKSorq16+viIgI+fv7G+skr1q1qrZs2SIfHx9lZGRo1qxZRuq4t2rVSoMHD9aECRM8ic2kpCSNHDlSjzzyiOPxJHk+s3LlymnHjh2qUqWK4zPu2rdvr/79+2v8+PG6/vrrJWV2YowYMSJXPW0ntWzZUh07dvR0iH/66adq2bKlkVi33XabhgwZovbt28vHx0cLFy70tEmdNnDgQM2ePVuvvPKKXC6X7rvvPiPPILbua2+88Yb++usvLVmyRBMnTtRff/2l5OTkbJ2uTlq0aJF+++03LVq0SB07dlStWrV0+vTpPDuFnOLn5yeXy6Xrr79eH3zwga699lodP37cSCyb10abuZFly5Zp0aJF6tSp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ooSkzOu0yc5CG414t9atW2vBggVq2bJltiSgiaT4gQMHNGjQIP3888/y8fHRLbfcosmTJ+c5ys0JdevWNVJOKSdbDaaCuIdK0scff6zZs2erdOnS8vPzM1Jj+uzZszp37lyu+2VaWpqxRryt88PNRtJgxIgRWrx4sbp06aK2bdsaaTNlZbNN49atWze9/vrrevDBB7Nds0zM4m3cuLH69OmjIkWKGDv33erVq+eZCWRyIEVBXEciIiL03HPP6Z577snWAeXkrNMaNWrom2++yVWreP369UZnhI4aNUo33nijIiIi5HK59Mknn2jkyJFGBkmNHTtWK1euVFBQkKZOnaqbbrpJUuZAukceecTRWOvXr1dERIQSExNVpEgRpaWlqXz58o6f+7bOxwYNGmjOnDm5Zt/MnTvXyLorN998s5YuXZprEMOyZcs8fzenPf/88+rQoYPq1KljvAyuzWtj+/bt1b9/f40fP94zK37fvn0aMWJErlmol6t48eI6cOBArufSAwcOONZR7nWJaSmzYbR69WpFRUXphx9+0Llz5/TOO+84viiUJH344YeKjY2Vn5+f2rRpo5iYGOMjeb755htFREToyy+/VJUqVfTaa6+pV69exh6ybDUsbJzwbu5VifNjqhSLrYcrKXN6/LZt2/Tbb7/p/vvv16pVqxwfDT5lyhT5+/vr+++/V69evXK97mR9zDZt2qhPnz4aO3asatasKUnas2ePRo0aZXQWga+vr+677z7dd999OnHihF599VV17tzZ0Zp9ffr0UZ8+fdS3b19PPcJt27Zp5syZxqaZfv7551q9erUnoWRK1sRizlhOJx1tNypsP8xJUsOGDfX5559rz549crlcqlWrlqcxY+J7YONhPzU1VSkpKbnunadOnVJqaqojMXKKiIjQK6+8oqNHj6pDhw4KCgoyWk5hy5YtatiwobFkdFZbt27V4sWLdcMNN2S7z5ioV1y9enV17NjRs2r7ihUr1LBhQ0+pLKdLOtloxLtVqlRJI0aM8MwaM1mvdeTIkerQoYOn/M/ixYs1cuRIvfvuu47HkqQnnnhCXbt2VdWqVY2dIzYbTAVxD5WUZ4kNpzVv3lyvvPKKhgwZ4unAy8jI0OTJk9WsWTMjMW2cH1nZSBp06dJFXbp00S+//KKoqCh17NhRp06dUlRUlB5++GHHB43YbNO4JSQk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9evnGhFrok7Uiy++qJ07d6ply5aaOnWqqlev7th7X4iNhyspcxG2F198URkZGVqzZo22bdumTz75RGPHjnUsRqtWrTR48OA8Fy0z+cC/evVqvfbaa/L399frr7+u2267zVisUqVKqU2bNmrevHm2G5mpB4Ks1w+T15K8krd79+61Ojrb1PHZeojz9fX1JCbWr1+v0NBQVapUSS1atNBrr73maCw39wiGFStWeLaZGMV55syZbLNHsv6/03+3+Ph4TwIrNjZWAQEBmjt3rg4fPqxnn33WSGK6Zs2a6tGjh/Ea627Dhg0rsPr0ycnJOnDggJH3vv7663XmzBlr9TFtNOKzMj1TzD0NMyfTI1SvvfZa42UhsiYHvvvuOz3wwAOSpLJlyxrtyLB1Dz1x4oSuuuoq/fXXX+rcubPatm0rPz8/Y88+KSkp2epKN2rU6IIlzi6VjfMjK5tJgzlz5njuZ+7OkazbnGZzQIpkb3T22rVrFR4ersDAQEmZbbjJkycbiXfbbbdpyJAhnsETCxcuNPLc734WKFasmKpVq5bt+mFqdlVKSopmzpyZ7W/23HPPGStP+MMPP3gWbzedrxg2bJj69OmjevXqGS+vkZCQoPfee08xMTGeWKZmOL355ptq1aqVtm7dqnXr1ql79+7GOgndbN3X3CIiInT06FFji7hLUkZGhhITE7MtjpmRkWEk1oEDBzRo0CD9/PPP8vHx0S233KLJkyerRo0ajseyeW08n6yLgDrNVC7rH5GYNmndunVaunSpJk2a5KlpbfJEkDJ7Ydq3b6958+apfv36qlu3rnr06GE0pqRsFycTF6o6depYK+WxYsUKlStXTvPnz9eHH37o2W66MZjz4eqTTz4xllSdOHGi5syZo7CwMEnS7bffroiICEdj9O3bVxEREWrWrFmuRcv69evnaCxJ2rJli6ZMmaKMjAwNHTrU6OI/btdff73RWrdZNW3aVM8884zatGkjHx8fRUdHG6sxait5279//3wTL3/99ZejsbKy8RCXnp6utLQ0FStWTN99950ef/xxz2tpaWlGYtoaxWlztGjWBNa3337rSWBVrVrV2N8uNTVV1113nXbu3Gnk/d0OHDigGjVqqHz58p51GrIyMZona43pjIwMHTx4UE899ZTjcaTMDrquXbuqQYMGxktrSHYb8TZmitkemepmoyxEsWLF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uMPx51QS04VIXlO43UxP5Y6IiND27dt1yy23GL0opqenq2/fvp7ksKlRBue7AJoYWebn5+eZPnjdddd5vshFihQxMhXT5XKpS5cuWrJkiZVRowVl4sSJRpOAknKtRH/y5EljHSYnT550fIRofmwlb3/77bdsSWm3Bx54wFgPss0Ef06mzg23+Ph4vfPOO0pLS1OjRo3UuHFjNWrUSFdffbXRuLa98847Rhuev//+e7bRrzVq1NCePXscj2MzWXy+6eimyji1bt3aWoJAstuItzFTzK106dL6888/Pc8fGzduVJkyZYzFs1kWIivT10db91Cbi8O6zZ07V3FxcVaSPbbPj+bNm2vZsmX68ccfjSUNfv31VzVu3FhfffWVihUrZvT7lZXJRnxONkdnx8TE6L777lO5cuUkZZYw++qrr4wMtrnmmmt07Ngxzzlx/Phxa53zpv9mUma5CRt1mLMy+X0ODw/X5MmTsy3EnNWiRYuMxF27dm22hZFNLDYnZdbsvvHGGz0z2D/++GONHDkyz5nfTrB1XytRooRn8XFJqlKliqpUqWI0nq3FMaXMZ7p77rnHU0LV5KDO/fv3a//+/dnKtdr+jpuyb98+YyX8SEwXIgU5hfv7779XXFyc8YaLr6+vzpw5o4yMDBUpUsRIzVu3rA85WbeZaDhlneaZc8qnicW9fHx8VKNGDf3111+eh0ZvZLqRK2UucDdy5EidOnVKixcv1ocffmhssZCbbrpJCQkJRh8E3Gwlb0uUKHFJr10Omwn+nO68806j7z9q1ChJmbV9v/zyS7366qs6dOhQoa4xnRfT3+3y5ctrxowZat++vaTMKafly5d3PI7NZHFBJMuaNGli5XqVlelG/LfffqsGDRpozZo1+cZ32qBBg/TMM8/o4MGD6tatm/bu3etZVMmEF154QW+88Ua2kgbubSaZTprZvIfa5u/vb3UEoq2yIVLmYovDhg3LtiCye5tTbrzxRrVo0UKlS5dWamqqpk+fnq2OtikmG/E52RydPXfuXIWGhnp+Ll++vObOnetoYto9ar5UqVIKCQnxnB9ffvmllb+dJH3yySdG33/37t168803c/3NTCVv3Uwe15NPPikp+0LMps2ZM0exsbF69NFHJUmvvPKKQkNDjSzct3//fk2fPt3zc//+/Y2WXzF9X3vyySf1/vvvq1GjRtk6EkyW1pDsLo65cuVKTZgwQUeOHJH0/8dmou00depULVy4UAEBAZ6BkKbKyhSEGjVqKDk52chIcBLThdSxY8f0448/ysfHR3Xr1jWyYF9WplYjzkvdunX1/PPPq3Xr1ipdurRnu5Nf6Pbt26t///4aP368p7zFvn37NGLECE+iwkk5p31m/X9TtT9LlSqlNm3aqHnz5tkWejHxgFpQTC76mZ6ertTUVD399NNasmSJTp48qTVr1qh79+6eBx+nnTx5Uo899piVafG2krc5a3HmfM2EgkxO5LXAjJO2b9+u9evXa/369Tp69KiaNm1qrYFmU/fu3Y2+f2RkpMaPH+8ZrdGoUSNFRkY6HqcgksU2tWvXTvXr11eXLl089WhNmDx5ssLDw9W/f/8875lOXiOjo6PVoEEDvf3227leM9W4qFu3rubNm6fvvvtOUuYMuay1mZ2WV/3q3bt3Oxojr/JzDRo08Gw3MVLJ5j3UtiZNmmjSpEl69NFHsx2biWSxzbIhUma5u5zyKrdxOd5880199NFHCgwM1IYNGzRjxgwr906TjficbI7OzovTi7m72y433nhjtvO8Q4cOjsbJyWaC371gX9u2bY3P8LN1XO665qZLLWa1ZMkSffTRR57vWbdu3dSpUycjiemMjAwlJiaqUqVKkjJnoGZkZDgex830fc09e9VmTXDJ7uKYkyZN0vTp03XbbbcZLxuyYsUKffHFF15XwsOtTJkyateunZo1a5btPkON6X+ozz77TCNGjNCtt94ql8ulHTt2aOzYsdmmXzitZs2a6tGjhx544IFsJ6GJmmzuhtmCBQs825xuDD755JM6duyYHnvsMc9F/uzZs+rRo4d69OjhWBy3gkhOXH/99V5XUzqrc+fOqUWLFnmOfHfClClTVKtWLbVv316PPfaYZxTIvHnzNHXqVCMPqDanxdtK3uZVi9PNVKeM7eRESkqKZs6cma3eXO/evY0kXh5//HHVr19fgwYNUsOGDR1//4KQVwKrZcuWRhNYVapUsbJwkrdbvXq1li9frtdee01JSUnq0qWLQkJCHH8gb9CggSRlG1Fpirs+q82alW+99Zbat29vfETNJ598oo8//lh79+7V448/7tmelJSkG264wdFYeZWfc/9saqSS7dIyNsXExEjKbPS6mUoW2yob8umnn+rTTz/V77//rhdeeMGzPTk52fEZ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jo+P19ixYx2N8Z///Ec9e/bUf/7zHz3//POekdJt2rTRs88+62isf4KWLVvm2maq1JGUmcDN+l0uWrSoDh06JD8/P8cbNDZHqIaGhqpt27b68MMPVbVqVc/2GjVqqG3bto7HO3funCRp8+bNatGihUqWLGnsXpOamqrGjRvL5XKpcuXKGjBggLp162ZkJJbNe6htJUqUyHUfM/lds9UpI2U2bENDQxUaGuqpVT916tRCXavezWQjPiebo7O3bNmiBQsW6Prrr882ytLU7NZ169bp559/ztaOMZWIt5ngT0pK0pw5c3Id27x58xyPZfO40tPT1bdvX82aNctop/+vv/6qli1bavv27cZi5FS8eHFPUlqSGjZs6PhirVnZuq99/fXXqlatmsqUKaPw8HBt27ZNw4cPV9OmTR2PJWXmkv78889ss6FNrYN1xx13aODAgUbrPo8bN06zZ8/O89nG5Iwj24oWzZ4+PnnypGODO0lMF1LHjx/Xjz/+KB8fH9WtW9d4jemcD8Nnz541NsK4du3aWrJkiVwulw4ePKi33npLDRo0cDRGXr1ZVatWzbYQYmGVs45e1v832YgxrUuXLrr99tt15MgR3XPPPZ7tvr6+RqbCFS1aVFOmTNG+ffsUHx8vl8ulW2+91TOa04TOnTvr+eef1/HjxzV9+nTFxMRowIABRmJ588iygkhONG/eXM2bN/fUa3Va1uutO6mU12uF2UMPPaQGDRroxx9/lMvlUv369R3vdCpZsqRmz56t7t27y+Vyafny5Wrbtq3R6Yre6HwLBOY8P5101113qVevXgoJCZGPj4+WLFmiBg0a6NSpU44npm2MUHWP8nruuefybLh06dIl26JwTgkICNC///1v7d69W4MGDdKZM2ccj+HmvvaWK1dOO3bsUJUqVfT7778biWXzHmpb1apVtWXLFvn4+CgjI0OzZs3STTfdZCSWzU4ZN5u16m0y2YjPyebobJslKKZMmaJt27bpt99+0/33369Vq1apcePGjscpiNG3Q4cOVUBAgPbu3asXXnhBUVFRji8EVxDH5evrqzNnzsjlchlte7rvjzbXwmrYsKGWLFniKUuydOlSxwejZGXrvrZ48WI99dRT2rBhg44dO6YJEyZo3LhxxhLTYWFheuaZZ3Tw4EF169ZNe/fu1ZtvvmkklrvjwmTd59mzZ0squLJR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h7R79259+OGHat26te655x51797ds+C6U0qXLq0ff/xRdevWlST9+OOP2RaILazuu+8+SZmDOrdu3erpbI2Li3OstBOJ6UJozJgxCgsL06hRo+Tj46PAwEBNnjzZSCz3F2n//v3avHmzHnzwQUnSF1984XgxfPfCBX379lVsbKxq1KghSTpw4IBngTanjRo1SgMHDvRMGzl79my23mRcWZKTk/XWW28pKipKHTp00Keffmp0SrAt7gv69OnTNW/ePM8Dz3333acePXo4upK2N48ss/0Q98cff+iaa67Js17rI4884ng8b+dONNpYJA2F08mTJzV27Fhr8fbv36/9+/dnG+3iZCLQ5XJp7dq1Wrx4sXbu3KmWLVvqk08+8Tz/mGKzE+jYsWN67LHH1KBBg2yNMycTSzbvoba5Rx2Gh4dr6NChnsbu1q1bjd2vbXbKSN45wsxGIz4vtkZn2yhB4Xb11Vd7/r9Pnz5GYmQVERGhF154Qe+++67Wrl2rFi1aWCkfZXqgiO3jWr58uSIjI3Xy5ElVrlxZ+/fvV506dYx0ONlYC+vJJ5+UlPcMXhNs39d+/PFHvfjii8rIyNCaNWu0bds2ffLJJ8aeub766qtsZV569uypTp06qXv37kbiZVWsWDEVL15cgwcPVrNmzRQREeHYe4eHh6tv376eNWt+++03/ec//3Hs/QtKmzZtJEmxsbGaP3++SpQoISlzNLpTFRVITBdC1113nT755BOdOnVKLpfLaGLOfdF75plnsi1I0rt3b0e/xFn9/vvv2RplNWrU0J49e4zEatiwob744gvt2bNHLpdLtWrVylV/C1eGt99+W++9954eeeQRLV261NgsgYKUkJCgs2fPei72qampOnLkiKMxvHlkme2HuL59+yo6OlolSpTQrFmzPEmCKlWq6LPPPjNa+sgbtWrVytoiaSicbrrpJiUkJBiph5zT1KlTtXDhQgUEBHhK8zhdH7N58+by9/dX27Zt1bdvX/n4+Ojs2bPGF+O02Qn06KOP6tFHH/UsOG2SjXtoQdm1a5cnKS1lLhw1evRoR2MURNkQyTtHmNloxLsVxOhsmyUodu/erVmzZmn//v3ZSjg53TGTdcbsyy+/rGeeeUZ33323unbt6njt20aNGuX5N3N30ji5gJ7N48pq1qxZWrx4sXr27KmYmBh9/fXX+uyzz4zE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xQcffIDQ0FAWpf9LLEwTEREREVWTlZWF4OBgWFpaAgCsra1RVVWlcFZEREREVNuYm5sjNzdX6TSMFgvTRERERETV6ArSOuXl5eD0OyIiIiKqbuHChQAANzc3RERE4OLFi7h69ar+P3o+C6UTICIiIiKqTVxdXREdHQ21Wo309HTExsbC3d1d6bSIiIiIqBbJyMgAAMTFxQEAfvzxR/1jgiDg2LFjSqRlVLj8kIiIiIiomoqKCsTExOD48eMAAHd3d0ybNg3m5uYKZ0ZEREREtYW3tzdUKpXSaRg1FqaJiIiIiADs3r37Lx/39/eXKRMiIiIiqu3at2+PBg0a/Onjp0+fljEb48RRHkREREREACIjI9GhQwe0adNG6VSIiIiIqJZzdHTEli1blE7DqLEwTUREREQEYPny5UhMTMTVq1fh5eWF4cOHw9bWVum0iIiIiKgWsrKywuuvv650GkaNozyIiIiIiKq5efMmVCoVDh8+DGdnZwQGBuKNN95QOi0iIiIiqkXGjBmDAwcOKJ2GUWNhmoiIiIjoCUVFRUhJScHGjRsxb948jB49WumUiIiIiIhMCgvTREREREQAtFotTp48iYSEBGRlZcHDwwNeXl5wcHBQOjUiIiIiIpPDwjQREREREYDevXvDzs4OPj4+6NatGwRBMHi8devWCmVGRERERGR6WJgmIiIiIgLg7u6u/1oQBFR/mywIAo4dO6ZEWkREREREJomFaSIiIiIiIiIiIiKSlZnSCRARERERERERERHRi4WFaSIiIiIiIiIiIiKSFQvTRERERERERERERCQrFqaJiIiIiIiIiIiISFYsTBMRERERERERERGRrP4/ZFbAMbNZGZoAAAAASUVORK5CYII=",
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"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",
{
"cell_type": "markdown",
"metadata": {},
"source": [
"execution_count": 42,
{
"name": "stdout",
"output_type": "stream",
"text": [
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
"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",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.250000</td>\n",