{
"cells": [
{
"cell_type": "markdown",
"id": "dca40d3f",
"metadata": {},
"source": [
"# amyloid dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "43acb29b",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:14.433015Z",
"start_time": "2021-11-11T20:47:12.356766Z"
}
},
"outputs": [],
"source": [
"# Standard imports\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"# Special imports\n",
"import mavenn\n",
"import os\n",
"import urllib"
]
},
{
"cell_type": "markdown",
"id": "5c257c40",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T17:26:47.608641Z",
"start_time": "2021-11-11T17:26:47.392567Z"
}
},
"source": [
"## Summary"
]
},
{
"cell_type": "markdown",
"id": "c7e0fed0",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T17:27:24.538136Z",
"start_time": "2021-11-11T17:27:24.529622Z"
}
},
"source": [
"The deep mutational scanning (DMS) dataset of Seuma et al., 2021. The function of small protein called amyloid beta (A$\\beta$) is suspected to play a significant role in Alzheimer's disease. By mutating each position in the protein, Seuma et al. produced more than 14,000 different versions of A$\\beta$ with single and double mutation. \n",
"To globally quantify the impact of mutations, they used *in-vivo* selection assay using yeast cells and measured how quickly these mutants were able to aggregate. The quantification is summarized in the variable called nucleation score.\n",
"\n",
"**Names**: ``'amyloid'``\n",
"\n",
"**Reference**: Seuma M, Faure A, Badia M, Lehner B, Bolognesi B. The genetic landscape for amyloid beta fibril nucleation accurately discriminates familial Alzheimer’s disease mutations. [eLife 10:e63364 (2021)](https://doi.org/10.7554/eLife.63364)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ba16bbe4",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:14.458963Z",
"start_time": "2021-11-11T20:47:14.434183Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" set | \n",
" dist | \n",
" y | \n",
" dy | \n",
" x | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" training | \n",
" 1 | \n",
" -0.117352 | \n",
" 0.387033 | \n",
" KAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 1 | \n",
" training | \n",
" 1 | \n",
" 0.352500 | \n",
" 0.062247 | \n",
" NAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 2 | \n",
" training | \n",
" 1 | \n",
" -2.818013 | \n",
" 1.068137 | \n",
" TAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 3 | \n",
" training | \n",
" 1 | \n",
" 0.121805 | \n",
" 0.376764 | \n",
" SAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 4 | \n",
" training | \n",
" 1 | \n",
" -2.404340 | \n",
" 0.278486 | \n",
" IAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 16061 | \n",
" training | \n",
" 2 | \n",
" -0.151502 | \n",
" 0.389821 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVKV | \n",
"
\n",
" \n",
" | 16062 | \n",
" training | \n",
" 2 | \n",
" -1.360708 | \n",
" 0.370517 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVLV | \n",
"
\n",
" \n",
" | 16063 | \n",
" training | \n",
" 2 | \n",
" -0.996816 | \n",
" 0.346949 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVMV | \n",
"
\n",
" \n",
" | 16064 | \n",
" training | \n",
" 2 | \n",
" -3.238403 | \n",
" 0.429008 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVTV | \n",
"
\n",
" \n",
" | 16065 | \n",
" training | \n",
" 2 | \n",
" -1.141457 | \n",
" 0.365638 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVVV | \n",
"
\n",
" \n",
"
\n",
"
16066 rows × 5 columns
\n",
"
"
],
"text/plain": [
" set dist y dy \\\n",
"0 training 1 -0.117352 0.387033 \n",
"1 training 1 0.352500 0.062247 \n",
"2 training 1 -2.818013 1.068137 \n",
"3 training 1 0.121805 0.376764 \n",
"4 training 1 -2.404340 0.278486 \n",
"... ... ... ... ... \n",
"16061 training 2 -0.151502 0.389821 \n",
"16062 training 2 -1.360708 0.370517 \n",
"16063 training 2 -0.996816 0.346949 \n",
"16064 training 2 -3.238403 0.429008 \n",
"16065 training 2 -1.141457 0.365638 \n",
"\n",
" x \n",
"0 KAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"1 NAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"2 TAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"3 SAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"4 IAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"... ... \n",
"16061 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVKV \n",
"16062 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVLV \n",
"16063 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVMV \n",
"16064 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVTV \n",
"16065 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVVV \n",
"\n",
"[16066 rows x 5 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mavenn.load_example_dataset('amyloid')"
]
},
{
"cell_type": "markdown",
"id": "6fe018cb",
"metadata": {},
"source": [
"## Preprocessing\n",
"\n",
"The DMS dataset of single and double mutations in A$\\beta$ of Seuma et al., (2021)\n",
"is publicly available in the excel format on the [Gene Expression Omnibus server](https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE151147&format=file&file=GSE151147%5FMS%5FBL%5FBB%5Fprocessed%5Fdata%2Exlsx).\n",
"It is formatted as follows: \n",
"\n",
"- Single mutated sequences are in `1 aa change sheet`. For these sequences the `Pos` column lists the amino acid (aa) position which mutated, and `Mut` column is mutated aa residue.\n",
"\n",
"- Double mutated sequences are in `2 aa change sheet`. For these sequences the `Pos1` and `Pos2` columns list the first and second aa positions which mutated. `Mut1` and `Mut2` columns are residues of mutation 1 and 2 in double mutant, respectively.\n",
"\n",
"- Both single and double mutant consist of the nucleation scores across three replicates \n",
"and the weighted average (`nscore`) of them based on their uncertainties (`sigma`)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "29aecf0a",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:16.593192Z",
"start_time": "2021-11-11T20:47:14.460041Z"
}
},
"outputs": [],
"source": [
"# Download datset\n",
"url = 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE151147&format=file&file=GSE151147%5FMS%5FBL%5FBB%5Fprocessed%5Fdata%2Exlsx'\n",
"raw_data_file = 'Abeta_raw_data.xlsx'\n",
"urllib.request.urlretrieve(url, raw_data_file)\n",
"\n",
"# Record wild-type sequence\n",
"wt_seq = 'DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA'\n",
"\n",
"# Read single mutation sheet from raw data\n",
"single_mut_df = pd.read_excel(raw_data_file, sheet_name='1 aa change')\n",
"\n",
"# Read double mutation sheet from raw data\n",
"double_mut_df = pd.read_excel(raw_data_file, sheet_name='2 aa changes')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c2d32d78",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:16.599358Z",
"start_time": "2021-11-11T20:47:16.593926Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Pos | \n",
" WT_AA | \n",
" Mut | \n",
" Nham_nt | \n",
" Nham_aa | \n",
" Nmut_codons | \n",
" STOP | \n",
" mean_count | \n",
" nscore1 | \n",
" sigma1 | \n",
" nscore2 | \n",
" sigma2 | \n",
" nscore3 | \n",
" sigma3 | \n",
" nscore | \n",
" sigma | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1 | \n",
" D | \n",
" K | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" False | \n",
" 210.500000 | \n",
" -0.280176 | \n",
" 0.482820 | \n",
" 0.175372 | \n",
" 0.647374 | \n",
" NaN | \n",
" NaN | \n",
" -0.117352 | \n",
" 0.387033 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1 | \n",
" D | \n",
" N | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" False | \n",
" 28544.000000 | \n",
" 0.388480 | \n",
" 0.112041 | \n",
" 0.306589 | \n",
" 0.077314 | \n",
" 0.785219 | \n",
" 0.299795 | \n",
" 0.352500 | \n",
" 0.062247 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" D | \n",
" T | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" False | \n",
" 97.000000 | \n",
" NaN | \n",
" NaN | \n",
" -2.818013 | \n",
" 1.068137 | \n",
" NaN | \n",
" NaN | \n",
" -2.818013 | \n",
" 1.068137 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" D | \n",
" S | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" False | \n",
" 150.666667 | \n",
" 0.003406 | \n",
" 0.525670 | \n",
" 0.180478 | \n",
" 0.622756 | \n",
" 0.448936 | \n",
" 1.086370 | \n",
" 0.121805 | \n",
" 0.376764 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1 | \n",
" D | \n",
" I | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" False | \n",
" 334.333333 | \n",
" -2.364750 | \n",
" 0.373224 | \n",
" -2.579152 | \n",
" 0.482386 | \n",
" -2.074932 | \n",
" 0.839842 | \n",
" -2.404340 | \n",
" 0.278486 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Pos WT_AA Mut Nham_nt Nham_aa Nmut_codons STOP mean_count \\\n",
"0 1 D K 2 1 1 False 210.500000 \n",
"1 1 D N 2 1 1 False 28544.000000 \n",
"2 1 D T 2 1 1 False 97.000000 \n",
"3 1 D S 2 1 1 False 150.666667 \n",
"4 1 D I 2 1 1 False 334.333333 \n",
"\n",
" nscore1 sigma1 nscore2 sigma2 nscore3 sigma3 nscore \\\n",
"0 -0.280176 0.482820 0.175372 0.647374 NaN NaN -0.117352 \n",
"1 0.388480 0.112041 0.306589 0.077314 0.785219 0.299795 0.352500 \n",
"2 NaN NaN -2.818013 1.068137 NaN NaN -2.818013 \n",
"3 0.003406 0.525670 0.180478 0.622756 0.448936 1.086370 0.121805 \n",
"4 -2.364750 0.373224 -2.579152 0.482386 -2.074932 0.839842 -2.404340 \n",
"\n",
" sigma \n",
"0 0.387033 \n",
"1 0.062247 \n",
"2 1.068137 \n",
"3 0.376764 \n",
"4 0.278486 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Preview single-mutant data\n",
"single_mut_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "280e35c1",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:16.608307Z",
"start_time": "2021-11-11T20:47:16.600072Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Pos2 | \n",
" Mut2 | \n",
" Pos1 | \n",
" Mut1 | \n",
" WT_AA1 | \n",
" WT_AA2 | \n",
" Nham_nt | \n",
" Nham_aa | \n",
" Nmut_codons | \n",
" STOP | \n",
" mean_count | \n",
" nscore1 | \n",
" sigma1 | \n",
" nscore2 | \n",
" sigma2 | \n",
" nscore3 | \n",
" sigma3 | \n",
" nscore | \n",
" sigma | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 2 | \n",
" E | \n",
" 1 | \n",
" E | \n",
" D | \n",
" A | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
" False | \n",
" 78.500000 | \n",
" 0.160562 | \n",
" 0.878728 | \n",
" -1.908344 | \n",
" 0.999612 | \n",
" NaN | \n",
" NaN | \n",
" -0.741292 | \n",
" 0.659978 | \n",
"
\n",
" \n",
" | 1 | \n",
" 2 | \n",
" E | \n",
" 1 | \n",
" G | \n",
" D | \n",
" A | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
" False | \n",
" 139.500000 | \n",
" -0.461932 | \n",
" 0.679144 | \n",
" -0.616485 | \n",
" 0.715070 | \n",
" NaN | \n",
" NaN | \n",
" -0.535229 | \n",
" 0.492438 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2 | \n",
" E | \n",
" 1 | \n",
" N | \n",
" D | \n",
" A | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
" False | \n",
" 146.000000 | \n",
" 0.143146 | \n",
" 0.530710 | \n",
" -0.181673 | \n",
" 0.855333 | \n",
" NaN | \n",
" NaN | \n",
" 0.052856 | \n",
" 0.450957 | \n",
"
\n",
" \n",
" | 3 | \n",
" 2 | \n",
" E | \n",
" 1 | \n",
" V | \n",
" D | \n",
" A | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
" False | \n",
" 133.333333 | \n",
" -0.526572 | \n",
" 0.551242 | \n",
" -1.427565 | \n",
" 0.708833 | \n",
" -0.423844 | \n",
" 1.053086 | \n",
" -0.801619 | \n",
" 0.402165 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2 | \n",
" E | \n",
" 1 | \n",
" Y | \n",
" D | \n",
" A | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
" False | \n",
" 62.000000 | \n",
" -0.288245 | \n",
" 0.876578 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" -0.288245 | \n",
" 0.876578 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Pos2 Mut2 Pos1 Mut1 WT_AA1 WT_AA2 Nham_nt Nham_aa Nmut_codons STOP \\\n",
"0 2 E 1 E D A 2 2 2 False \n",
"1 2 E 1 G D A 2 2 2 False \n",
"2 2 E 1 N D A 2 2 2 False \n",
"3 2 E 1 V D A 2 2 2 False \n",
"4 2 E 1 Y D A 2 2 2 False \n",
"\n",
" mean_count nscore1 sigma1 nscore2 sigma2 nscore3 sigma3 \\\n",
"0 78.500000 0.160562 0.878728 -1.908344 0.999612 NaN NaN \n",
"1 139.500000 -0.461932 0.679144 -0.616485 0.715070 NaN NaN \n",
"2 146.000000 0.143146 0.530710 -0.181673 0.855333 NaN NaN \n",
"3 133.333333 -0.526572 0.551242 -1.427565 0.708833 -0.423844 1.053086 \n",
"4 62.000000 -0.288245 0.876578 NaN NaN NaN NaN \n",
"\n",
" nscore sigma \n",
"0 -0.741292 0.659978 \n",
"1 -0.535229 0.492438 \n",
"2 0.052856 0.450957 \n",
"3 -0.801619 0.402165 \n",
"4 -0.288245 0.876578 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Preview double-mutant data\n",
"double_mut_df.head()"
]
},
{
"cell_type": "markdown",
"id": "bc82e470",
"metadata": {},
"source": [
"To reformat `single_mut_df` and `double_mut_df` into the one provided with MAVE-NN, we first need to get the full sequence of amino acids corresponding to each mutation. Therefore, we used `Pos` and `Mut` columns to replace single aa in wild type sequence for each record for the single mutant. Then, we used `Pos1`, `Pos2`, `Mut1` and `Mut2` from the double mutants to replace two aa in the wild type sequence. The list of sequences with single and double mutants are called `single_mut_list` and `double_mut_list`, respectively.\n",
"Those lists are then horizontally (column wise) stacked in `x` variable.\n",
"\n",
"Next, we stack single- and double-mutant \n",
"- nucleation scores `nscore` in `y`\n",
"- score uncertainties `sigma` in `dy`\n",
"- hamming distance in `dists`\n",
"\n",
"Finally, we create a `set` column that randomly assigns each sequence to the training, test, or validation set (using a 90:05:05 split), then reorder the columns for clarity. The resulting dataframe is called final_df."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ea6bc93e",
"metadata": {
"ExecuteTime": {
"end_time": "2021-11-11T20:47:16.640561Z",
"start_time": "2021-11-11T20:47:16.609320Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" set | \n",
" dist | \n",
" y | \n",
" dy | \n",
" x | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" training | \n",
" 1 | \n",
" -0.117352 | \n",
" 0.387033 | \n",
" KAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 1 | \n",
" training | \n",
" 1 | \n",
" 0.352500 | \n",
" 0.062247 | \n",
" NAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 2 | \n",
" training | \n",
" 1 | \n",
" -2.818013 | \n",
" 1.068137 | \n",
" TAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 3 | \n",
" training | \n",
" 1 | \n",
" 0.121805 | \n",
" 0.376764 | \n",
" SAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | 4 | \n",
" training | \n",
" 1 | \n",
" -2.404340 | \n",
" 0.278486 | \n",
" IAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 16061 | \n",
" training | \n",
" 2 | \n",
" -0.151502 | \n",
" 0.389821 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVKV | \n",
"
\n",
" \n",
" | 16062 | \n",
" training | \n",
" 2 | \n",
" -1.360708 | \n",
" 0.370517 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVLV | \n",
"
\n",
" \n",
" | 16063 | \n",
" training | \n",
" 2 | \n",
" -0.996816 | \n",
" 0.346949 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVMV | \n",
"
\n",
" \n",
" | 16064 | \n",
" training | \n",
" 2 | \n",
" -3.238403 | \n",
" 0.429008 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVTV | \n",
"
\n",
" \n",
" | 16065 | \n",
" training | \n",
" 2 | \n",
" -1.141457 | \n",
" 0.365638 | \n",
" DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVVV | \n",
"
\n",
" \n",
"
\n",
"
16066 rows × 5 columns
\n",
"
"
],
"text/plain": [
" set dist y dy \\\n",
"0 training 1 -0.117352 0.387033 \n",
"1 training 1 0.352500 0.062247 \n",
"2 training 1 -2.818013 1.068137 \n",
"3 training 1 0.121805 0.376764 \n",
"4 training 1 -2.404340 0.278486 \n",
"... ... ... ... ... \n",
"16061 training 2 -0.151502 0.389821 \n",
"16062 training 2 -1.360708 0.370517 \n",
"16063 training 2 -0.996816 0.346949 \n",
"16064 training 2 -3.238403 0.429008 \n",
"16065 training 2 -1.141457 0.365638 \n",
"\n",
" x \n",
"0 KAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"1 NAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"2 TAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"3 SAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"4 IAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIA \n",
"... ... \n",
"16061 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVKV \n",
"16062 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVLV \n",
"16063 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVMV \n",
"16064 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVTV \n",
"16065 DAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVVV \n",
"\n",
"[16066 rows x 5 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Introduce single mutations into wt sequence and append to a list\n",
"single_mut_list = []\n",
"for mut_pos, mut_char in zip(single_mut_df['Pos'].values,\n",
" single_mut_df['Mut'].values):\n",
" mut_seq = list(wt_seq)\n",
" mut_seq[mut_pos-1] = mut_char\n",
" single_mut_list.append(''.join(mut_seq))\n",
" \n",
"# Introduce double mutations into wt sequence and append to list\n",
"double_mut_list = []\n",
"for mut1_pos, mut1_char, mut2_pos, mut2_char in zip(double_mut_df['Pos1'].values,\n",
" double_mut_df['Mut1'].values,\n",
" double_mut_df['Pos2'].values,\n",
" double_mut_df['Mut2'].values):\n",
" mut_seq = list(wt_seq)\n",
" mut_seq[mut1_pos-1] = mut1_char\n",
" mut_seq[mut2_pos-1] = mut2_char\n",
" double_mut_list.append(''.join(mut_seq))\n",
" \n",
"# Stack single-mutant and double-mutant sequences\n",
"x = np.hstack([single_mut_list, \n",
" double_mut_list])\n",
"\n",
"# Stack single-mutant and double-mutant nucleation scores\n",
"y = np.hstack([single_mut_df['nscore'].values, \n",
" double_mut_df['nscore'].values])\n",
"\n",
"# Stack single-mutant and double-mutant nucleation score uncertainties\n",
"dy = np.hstack([single_mut_df['sigma'].values, \n",
" double_mut_df['sigma'].values])\n",
"\n",
"# List hamming distances\n",
"dists = np.hstack([1*np.ones(len(single_mut_df)), \n",
" 2*np.ones(len(double_mut_df))]).astype(int)\n",
"\n",
"# Assign each sequence to training, validation, or test set\n",
"np.random.seed(0)\n",
"sets = np.random.choice(a=['training', 'validation', 'test'], \n",
" p=[.9,.05,.05], \n",
" size=len(x))\n",
"\n",
"# Assemble into dataframe\n",
"final_df = pd.DataFrame({'set':sets, 'dist':dists, 'y':y, 'dy':dy, 'x':x})\n",
"\n",
"# # Save to file (uncomment to execute)\n",
"# final_df.to_csv('amyloid_data.csv.gz', index=False, compression='gzip')\n",
"\n",
"# Preview dataframe\n",
"final_df"
]
},
{
"cell_type": "markdown",
"id": "c5c7a468",
"metadata": {},
"source": [
"This final dataframe, final_df, has the same format as the `amyloid` dataset that comes with MAVE-NN."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}