Skip to content

Instantly share code, notes, and snippets.

@PatWalters
Created May 29, 2024 17:42
Show Gist options
  • Save PatWalters/547adc9884eefbb5ca35393a4fdbee47 to your computer and use it in GitHub Desktop.
Save PatWalters/547adc9884eefbb5ca35393a4fdbee47 to your computer and use it in GitHub Desktop.
A simple example showing how to generate random hexapeptides
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 145,
"id": "83eb7100",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from io import StringIO\n",
"import mols2grid\n",
"from rdkit import Chem\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 183,
"id": "92d438c5",
"metadata": {},
"outputs": [],
"source": [
"aa_table = \"\"\"Name,Abbreviation,Code,SMILES\n",
"Alanine,Ala,A,C[C@H](N)C(=O)O\n",
"Arginine,Arg,R,N=C(N)NCCC[C@H](N)C(=O)O\n",
"Asparagine,Asn,N,NC(=O)C[C@H](N)C(=O)O\n",
"Aspartic acid,Asp,D,N[C@@H](CC(=O)O)C(=O)O\n",
"Cysteine,Cys,C,N[C@@H](CS)C(=O)O\n",
"Glutamine,Gln,Q,NC(=O)CC[C@H](N)C(=O)O\n",
"Glutamic acid,Glu,E,N[C@@H](CCC(=O)O)C(=O)O\n",
"Glycine,Gly,G,NCC(=O)O\n",
"Histidine,His,H,N[C@@H](Cc1c[nH]cn1)C(=O)O\n",
"Isoleucine,Ile,I,CC[C@H](C)[C@H](N)C(=O)O\n",
"Leucine,Leu,L,CC(C)C[C@H](N)C(=O)O\n",
"Lysine,Lys,K,NCCCC[C@H](N)C(=O)O\n",
"Methionine,Met,M,CSCC[C@H](N)C(=O)O\n",
"Phenylalanine,Phe,F,N[C@@H](Cc1ccccc1)C(=O)O\n",
"Proline,Pro,P,O=C(O)[C@@H]1CCCN1\n",
"Serine,Ser,S,N[C@@H](CO)C(=O)O\n",
"Threonine,Thr,T,C[C@@H](O)[C@H](N)C(=O)O\n",
"Tryptophan,Trp,W,N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O\n",
"Tyrosine,Tyr,Y,N[C@@H](Cc1ccc(O)cc1)C(=O)O\n",
"Valine,Val,V,CC(C)[C@H](N)C(=O)O\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 184,
"id": "c172deb3",
"metadata": {},
"outputs": [],
"source": [
"aa_df = pd.read_csv(StringIO(aa_table))"
]
},
{
"cell_type": "code",
"execution_count": 185,
"id": "5cb2f47b",
"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>Name</th>\n",
" <th>Abbreviation</th>\n",
" <th>Code</th>\n",
" <th>SMILES</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Alanine</td>\n",
" <td>Ala</td>\n",
" <td>A</td>\n",
" <td>C[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Arginine</td>\n",
" <td>Arg</td>\n",
" <td>R</td>\n",
" <td>N=C(N)NCCC[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Asparagine</td>\n",
" <td>Asn</td>\n",
" <td>N</td>\n",
" <td>NC(=O)C[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Aspartic acid</td>\n",
" <td>Asp</td>\n",
" <td>D</td>\n",
" <td>N[C@@H](CC(=O)O)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Cysteine</td>\n",
" <td>Cys</td>\n",
" <td>C</td>\n",
" <td>N[C@@H](CS)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Glutamine</td>\n",
" <td>Gln</td>\n",
" <td>Q</td>\n",
" <td>NC(=O)CC[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Glutamic acid</td>\n",
" <td>Glu</td>\n",
" <td>E</td>\n",
" <td>N[C@@H](CCC(=O)O)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Glycine</td>\n",
" <td>Gly</td>\n",
" <td>G</td>\n",
" <td>NCC(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Histidine</td>\n",
" <td>His</td>\n",
" <td>H</td>\n",
" <td>N[C@@H](Cc1c[nH]cn1)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Isoleucine</td>\n",
" <td>Ile</td>\n",
" <td>I</td>\n",
" <td>CC[C@H](C)[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Leucine</td>\n",
" <td>Leu</td>\n",
" <td>L</td>\n",
" <td>CC(C)C[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Lysine</td>\n",
" <td>Lys</td>\n",
" <td>K</td>\n",
" <td>NCCCC[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Methionine</td>\n",
" <td>Met</td>\n",
" <td>M</td>\n",
" <td>CSCC[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Phenylalanine</td>\n",
" <td>Phe</td>\n",
" <td>F</td>\n",
" <td>N[C@@H](Cc1ccccc1)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Proline</td>\n",
" <td>Pro</td>\n",
" <td>P</td>\n",
" <td>O=C(O)[C@@H]1CCCN1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Serine</td>\n",
" <td>Ser</td>\n",
" <td>S</td>\n",
" <td>N[C@@H](CO)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Threonine</td>\n",
" <td>Thr</td>\n",
" <td>T</td>\n",
" <td>C[C@@H](O)[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Tryptophan</td>\n",
" <td>Trp</td>\n",
" <td>W</td>\n",
" <td>N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Tyrosine</td>\n",
" <td>Tyr</td>\n",
" <td>Y</td>\n",
" <td>N[C@@H](Cc1ccc(O)cc1)C(=O)O</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Valine</td>\n",
" <td>Val</td>\n",
" <td>V</td>\n",
" <td>CC(C)[C@H](N)C(=O)O</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Abbreviation Code SMILES\n",
"0 Alanine Ala A C[C@H](N)C(=O)O\n",
"1 Arginine Arg R N=C(N)NCCC[C@H](N)C(=O)O\n",
"2 Asparagine Asn N NC(=O)C[C@H](N)C(=O)O\n",
"3 Aspartic acid Asp D N[C@@H](CC(=O)O)C(=O)O\n",
"4 Cysteine Cys C N[C@@H](CS)C(=O)O\n",
"5 Glutamine Gln Q NC(=O)CC[C@H](N)C(=O)O\n",
"6 Glutamic acid Glu E N[C@@H](CCC(=O)O)C(=O)O\n",
"7 Glycine Gly G NCC(=O)O\n",
"8 Histidine His H N[C@@H](Cc1c[nH]cn1)C(=O)O\n",
"9 Isoleucine Ile I CC[C@H](C)[C@H](N)C(=O)O\n",
"10 Leucine Leu L CC(C)C[C@H](N)C(=O)O\n",
"11 Lysine Lys K NCCCC[C@H](N)C(=O)O\n",
"12 Methionine Met M CSCC[C@H](N)C(=O)O\n",
"13 Phenylalanine Phe F N[C@@H](Cc1ccccc1)C(=O)O\n",
"14 Proline Pro P O=C(O)[C@@H]1CCCN1\n",
"15 Serine Ser S N[C@@H](CO)C(=O)O\n",
"16 Threonine Thr T C[C@@H](O)[C@H](N)C(=O)O\n",
"17 Tryptophan Trp W N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O\n",
"18 Tyrosine Tyr Y N[C@@H](Cc1ccc(O)cc1)C(=O)O\n",
"19 Valine Val V CC(C)[C@H](N)C(=O)O"
]
},
"execution_count": 185,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aa_df"
]
},
{
"cell_type": "code",
"execution_count": 193,
"id": "b9ab6306",
"metadata": {},
"outputs": [],
"source": [
"backbone = \"NC(X)C(=O)NC(X)C(=O)NC(X)C(=O)NC(X)C(=O)NC(X)C(=O)NC(X)C(=O)O\""
]
},
{
"cell_type": "code",
"execution_count": 194,
"id": "821c45b2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 194,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len([x for x in backbone if x == \"X\"])"
]
},
{
"cell_type": "code",
"execution_count": 195,
"id": "8b8adefa",
"metadata": {},
"outputs": [],
"source": [
"peptide = Chem.MolFromFASTA(\"\".join(aa_df.Code.sample(6).values))"
]
},
{
"cell_type": "code",
"execution_count": 196,
"id": "82d2ac6d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x131a7ca50>"
]
},
"execution_count": 196,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"peptide"
]
},
{
"cell_type": "code",
"execution_count": 197,
"id": "04ac974c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CC[C@H](C)[C@H](NC(=O)[C@H](CCC(N)=O)NC(=O)[C@@H](N)CCSC)C(=O)N[C@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](C)C(=O)O)[C@@H](C)O\n",
"CC(C)[C@H](NC(=O)[C@H](CCC(N)=O)NC(=O)[C@H](CS)NC(=O)[C@H](C)N)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O\n",
"C[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](Cc1c[nH]c2ccccc12)NC(=O)[C@@H](N)CCC(=O)O)C(=O)NCC(=O)N1CCC[C@H]1C(=O)O\n",
"CC[C@H](C)[C@H](NC(=O)[C@@H](N)Cc1ccccc1)C(=O)N[C@@H](CO)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O\n",
"C[C@@H](O)[C@H](NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CCCCN)NC(=O)[C@@H](N)CC(N)=O)C(=O)N[C@@H](CS)C(=O)N[C@@H](CC(=O)O)C(=O)O\n",
"CC[C@H](C)[C@H](NC(=O)[C@@H](N)Cc1ccc(O)cc1)C(=O)N[C@@H](CO)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@@H](C)C(=O)O\n",
"CC(C)C[C@H](NC(=O)[C@@H](NC(=O)[C@@H](NC(=O)CNC(=O)[C@H](CC(=O)O)NC(=O)[C@@H](N)CCCNC(=N)N)[C@@H](C)O)C(C)C)C(=O)O\n",
"CSCC[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1c[nH]c2ccccc12)NC(=O)[C@@H](N)CO)C(=O)O\n",
"CC(C)[C@H](NC(=O)[C@H](CO)NC(=O)[C@@H](N)CCCCN)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CC(=O)O)C(=O)O\n",
"C[C@@H](O)[C@H](N)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCC(N)=O)C(=O)O\n"
]
}
],
"source": [
"for i in range(0,10):\n",
" peptide = Chem.MolFromFASTA(\"\".join(aa_df.Code.sample(6).values))\n",
" print(Chem.MolToSmiles(peptide))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fd4ce464",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment