add test ipynb

This commit is contained in:
2024-01-31 16:45:34 +08:00
parent f47533bd20
commit 0a2e9445dd

556
analysis_mut.ipynb Normal file
View File

@@ -0,0 +1,556 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"将多聚体提取为单聚体之后在进行修复建模"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" pdb_id MHC_class TCR_alpha TCR_beta peptide MHC_alpha MHC_beta Beta2m \\\n",
"0 1d9k 2 A B P C D NaN \n",
"1 1g6r 1 A B P H NaN L \n",
"2 1kj2 1 A B P H NaN L \n",
"3 1mwa 1 A B P H NaN L \n",
"4 1u3h 2 E F I G H NaN \n",
"5 1zgl 2 M P C A B NaN \n",
"6 2nx5 1 D E C A NaN B \n",
"7 2vlr 1 D E C A NaN B \n",
"8 3dxa 1 D E C A NaN B \n",
"9 3ffc 1 D E C A NaN G \n",
"10 3kpr 1 D E C A NaN B \n",
"11 3mbe 2 C D P A B NaN \n",
"12 3pqy 1 D E C A NaN B \n",
"13 3sjv 1 D E C A NaN B \n",
"14 3utt 1 D E C A NaN B \n",
"15 4e41 2 D E C A B NaN \n",
"16 4eup 1 I J C A NaN B \n",
"17 4gg6 2 G H J A B NaN \n",
"18 4h1l 2 I J C A B NaN \n",
"19 4mji 1 D E C A NaN B \n",
"20 4ozi 2 G H J A B NaN \n",
"21 4p2q 2 D E C A B NaN \n",
"22 4p2r 2 I J H F G NaN \n",
"23 4qrp 1 D E C A NaN B \n",
"24 4z7u 2 E F I A B NaN \n",
"25 4z7v 2 E F I A B NaN \n",
"26 4z7w 2 E F I C D NaN \n",
"27 5c0a 1 D E C A NaN B \n",
"28 5c0b 1 D E C A NaN B \n",
"29 5c0c 1 I J C A NaN B \n",
"30 5c07 1 D E C A NaN B \n",
"31 5c08 1 D E C A NaN B \n",
"32 5c09 1 D E C A NaN B \n",
"33 5d2l 1 E F R C NaN D \n",
"34 5d2n 1 C F G H NaN L \n",
"35 5e6i 1 A B E C NaN D \n",
"36 5e9d 1 D E C A NaN B \n",
"37 5euo 1 G H I C NaN D \n",
"38 5jhd 1 D E C A NaN B \n",
"39 5ks9 2 E F I C D NaN \n",
"40 5ksb 2 E F I C D NaN \n",
"41 5nme 1 D E C A NaN B \n",
"42 5nmg 1 D E C A NaN B \n",
"43 5wkh 1 D E C A NaN B \n",
"44 5wlg 1 D E C A NaN B \n",
"45 6avg 1 B E Q F NaN A \n",
"46 6rp9 1 D E C A NaN B \n",
"47 6rpb 1 D E C A NaN B \n",
"48 6rsy 1 D E C A NaN B \n",
"49 6u3o 2 G H I E F NaN \n",
"50 6uon 1 I J C A NaN B \n",
"51 6vmx 1 D E C A NaN B \n",
"52 6vqo 1 D E P A NaN B \n",
"53 7n6e 1 I J C A NaN B \n",
"54 7sg1 2 D E C A B NaN \n",
"55 7t2b 2 N O M K L NaN \n",
"56 7z50 2 H E T A B NaN \n",
"\n",
" protein_type DOI ... \\\n",
"0 m 10.7554/eLife.82934 ... \n",
"1 m 10.7554/eLife.82916 ... \n",
"2 m 10.7554/eLife.82914 ... \n",
"3 m 10.7554/eLife.82912 ... \n",
"4 m 10.7554/eLife.82935 ... \n",
"5 m 10.7554/eLife.82905 ... \n",
"6 m 10.1101/2023.03.29.533764 ... \n",
"7 m 10.1101/2023.03.29.533767 ... \n",
"8 m 10.7554/eLife.82875 ... \n",
"9 m 10.7554/eLife.82867 ... \n",
"10 m 10.7554/eLife.82876 ... \n",
"11 m 10.7554/eLife.82933 ... \n",
"12 m 10.7554/eLife.82910 ... \n",
"13 m 10.7554/eLife.82868 ... \n",
"14 m 10.7554/eLife.82816 ... \n",
"15 m 10.7554/eLife.82900 ... \n",
"16 m 10.7554/eLife.82815 ... \n",
"17 m 10.7554/eLife.82889 ... \n",
"18 m 10.7554/eLife.82904 ... \n",
"19 m 10.7554/eLife.82878|10.1101/2023.03.29.533776 ... \n",
"20 NaN 10.7554/eLife.82895 ... \n",
"21 m 10.7554/eLife.82937 ... \n",
"22 m 10.7554/eLife.82938 ... \n",
"23 NaN 10.7554/eLife.82869 ... \n",
"24 NaN 10.7554/eLife.82890 ... \n",
"25 NaN 10.7554/eLife.82891 ... \n",
"26 NaN 10.7554/eLife.82892 ... \n",
"27 NaN 10.7554/eLife.82839 ... \n",
"28 NaN 10.7554/eLife.82845 ... \n",
"29 NaN 10.7554/eLife.82846 ... \n",
"30 NaN 10.7554/eLife.82859 ... \n",
"31 NaN 10.7554/eLife.82847 ... \n",
"32 NaN 10.7554/eLife.82856 ... \n",
"33 NaN 10.7554/eLife.82842|10.1101/2023.03.29.533778 ... \n",
"34 NaN 10.7554/eLife.82840|10.1101/2023.03.29.533779 ... \n",
"35 NaN 10.7554/eLife.82822|10.1101/2023.03.29.533780 ... \n",
"36 NaN 10.7554/eLife.82820 ... \n",
"37 NaN 10.1101/2023.03.29.533781 ... \n",
"38 NaN 10.7554/eLife.82826|10.1101/2023.03.29.533784 ... \n",
"39 I链peptide需要手动修复 10.7554/eLife.82888 ... \n",
"40 I链peptide需要手动修复 10.7554/eLife.82897 ... \n",
"41 NaN 10.7554/eLife.82853 ... \n",
"42 NaN 10.7554/eLife.82848 ... \n",
"43 NaN 10.7554/eLife.82860 ... \n",
"44 NaN 10.7554/eLife.82909 ... \n",
"45 NaN 10.7554/eLife.82863 ... \n",
"46 NaN 10.7554/eLife.82852|10.1093/nar/gkad368 ... \n",
"47 NaN 10.7554/eLife.82844|10.1093/nar/gkad359 ... \n",
"48 NaN 10.7554/eLife.82828|10.1093/nar/gkad360 ... \n",
"49 NaN 10.7554/eLife.82896 ... \n",
"50 NaN 10.7554/eLife.82880 ... \n",
"51 NaN 10.1093/nar/gkad369|10.7554/eLife.82865 ... \n",
"52 NaN 10.7554/eLife.82831 ... \n",
"53 NaN 10.7554/eLife.82858|10.1101/2023.03.29.533788|... ... \n",
"54 NaN 10.1093/nar/gkad399 ... \n",
"55 NaN 10.1093/nar/gkad402 ... \n",
"56 NaN 10.1093/nar/gkad400 ... \n",
"\n",
" Exact Mass No. of atoms No. of bonds Polar Surface Area XLOGP3 \\\n",
"0 NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN \n",
"5 NaN NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN NaN \n",
"7 NaN NaN NaN NaN NaN \n",
"8 NaN NaN NaN NaN NaN \n",
"9 NaN NaN NaN NaN NaN \n",
"10 NaN NaN NaN NaN NaN \n",
"11 NaN NaN NaN NaN NaN \n",
"12 NaN NaN NaN NaN NaN \n",
"13 NaN NaN NaN NaN NaN \n",
"14 NaN NaN NaN NaN NaN \n",
"15 NaN NaN NaN NaN NaN \n",
"16 NaN NaN NaN NaN NaN \n",
"17 NaN NaN NaN NaN NaN \n",
"18 NaN NaN NaN NaN NaN \n",
"19 NaN NaN NaN NaN NaN \n",
"20 NaN NaN NaN NaN NaN \n",
"21 NaN NaN NaN NaN NaN \n",
"22 NaN NaN NaN NaN NaN \n",
"23 NaN NaN NaN NaN NaN \n",
"24 NaN NaN NaN NaN NaN \n",
"25 NaN NaN NaN NaN NaN \n",
"26 NaN NaN NaN NaN NaN \n",
"27 NaN NaN NaN NaN NaN \n",
"28 NaN NaN NaN NaN NaN \n",
"29 NaN NaN NaN NaN NaN \n",
"30 NaN NaN NaN NaN NaN \n",
"31 NaN NaN NaN NaN NaN \n",
"32 NaN NaN NaN NaN NaN \n",
"33 NaN NaN NaN NaN NaN \n",
"34 NaN NaN NaN NaN NaN \n",
"35 NaN NaN NaN NaN NaN \n",
"36 NaN NaN NaN NaN NaN \n",
"37 NaN NaN NaN NaN NaN \n",
"38 NaN NaN NaN NaN NaN \n",
"39 NaN NaN NaN NaN NaN \n",
"40 NaN NaN NaN NaN NaN \n",
"41 NaN NaN NaN NaN NaN \n",
"42 NaN NaN NaN NaN NaN \n",
"43 NaN NaN NaN NaN NaN \n",
"44 NaN NaN NaN NaN NaN \n",
"45 NaN NaN NaN NaN NaN \n",
"46 NaN NaN NaN NaN NaN \n",
"47 NaN NaN NaN NaN NaN \n",
"48 NaN NaN NaN NaN NaN \n",
"49 NaN NaN NaN NaN NaN \n",
"50 NaN NaN NaN NaN NaN \n",
"51 NaN NaN NaN NaN NaN \n",
"52 NaN NaN NaN NaN NaN \n",
"53 NaN NaN NaN NaN NaN \n",
"54 NaN NaN NaN NaN NaN \n",
"55 NaN NaN NaN NaN NaN \n",
"56 NaN NaN NaN NaN NaN \n",
"\n",
" open banel LogP HB donor HB acceptor Rotatable bonds Canonical SMILES \n",
"0 NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN \n",
"5 NaN NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN NaN \n",
"7 NaN NaN NaN NaN NaN \n",
"8 NaN NaN NaN NaN NaN \n",
"9 NaN NaN NaN NaN NaN \n",
"10 NaN NaN NaN NaN NaN \n",
"11 NaN NaN NaN NaN NaN \n",
"12 NaN NaN NaN NaN NaN \n",
"13 NaN NaN NaN NaN NaN \n",
"14 NaN NaN NaN NaN NaN \n",
"15 NaN NaN NaN NaN NaN \n",
"16 NaN NaN NaN NaN NaN \n",
"17 NaN NaN NaN NaN NaN \n",
"18 NaN NaN NaN NaN NaN \n",
"19 NaN NaN NaN NaN NaN \n",
"20 NaN NaN NaN NaN NaN \n",
"21 NaN NaN NaN NaN NaN \n",
"22 NaN NaN NaN NaN NaN \n",
"23 NaN NaN NaN NaN NaN \n",
"24 NaN NaN NaN NaN NaN \n",
"25 NaN NaN NaN NaN NaN \n",
"26 NaN NaN NaN NaN NaN \n",
"27 NaN NaN NaN NaN NaN \n",
"28 NaN NaN NaN NaN NaN \n",
"29 NaN NaN NaN NaN NaN \n",
"30 NaN NaN NaN NaN NaN \n",
"31 NaN NaN NaN NaN NaN \n",
"32 NaN NaN NaN NaN NaN \n",
"33 NaN NaN NaN NaN NaN \n",
"34 NaN NaN NaN NaN NaN \n",
"35 NaN NaN NaN NaN NaN \n",
"36 NaN NaN NaN NaN NaN \n",
"37 NaN NaN NaN NaN NaN \n",
"38 NaN NaN NaN NaN NaN \n",
"39 NaN NaN NaN NaN NaN \n",
"40 NaN NaN NaN NaN NaN \n",
"41 NaN NaN NaN NaN NaN \n",
"42 NaN NaN NaN NaN NaN \n",
"43 NaN NaN NaN NaN NaN \n",
"44 NaN NaN NaN NaN NaN \n",
"45 NaN NaN NaN NaN NaN \n",
"46 NaN NaN NaN NaN NaN \n",
"47 NaN NaN NaN NaN NaN \n",
"48 NaN NaN NaN NaN NaN \n",
"49 NaN NaN NaN NaN NaN \n",
"50 NaN NaN NaN NaN NaN \n",
"51 NaN NaN NaN NaN NaN \n",
"52 NaN NaN NaN NaN NaN \n",
"53 NaN NaN NaN NaN NaN \n",
"54 NaN NaN NaN NaN NaN \n",
"55 NaN NaN NaN NaN NaN \n",
"56 NaN NaN NaN NaN NaN \n",
"\n",
"[57 rows x 49 columns]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_4083021/2640995437.py:1: DeprecationWarning: \n",
"Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n",
"(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n",
"but was not found to be installed on your system.\n",
"If this would cause problems for you,\n",
"please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n",
" \n",
" import pandas as pd\n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"# 假设Excel文件的路径为'path_to_excel_file.xlsx'\n",
"file_path = 'TCR-pHMC4.xlsx'\n",
"\n",
"# 读取名为'sheet1'的工作表,第一行作为列名\n",
"df = pd.read_excel(file_path, sheet_name='Sheet1', header=0, engine='calamine')\n",
"\n",
"# 显示数据帧以确认加载正确\n",
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"!rm -rf ./multi_pdb/*_clean.pdb\n",
"!rm -rf ./multi_pdb/*_extracted.pdb"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"multi_pdb/1d9k.clean.pdb\n",
"Saved extracted chains of 1d9k to multi_pdb/1d9k_extracted.pdb\n",
"multi_pdb/1g6r.clean.pdb\n",
"Saved extracted chains of 1g6r to multi_pdb/1g6r_extracted.pdb\n",
"multi_pdb/1kj2.clean.pdb\n",
"Saved extracted chains of 1kj2 to multi_pdb/1kj2_extracted.pdb\n",
"multi_pdb/1mwa.clean.pdb\n",
"Saved extracted chains of 1mwa to multi_pdb/1mwa_extracted.pdb\n",
"multi_pdb/1u3h.clean.pdb\n",
"Saved extracted chains of 1u3h to multi_pdb/1u3h_extracted.pdb\n",
"multi_pdb/1zgl.clean.pdb\n",
"Saved extracted chains of 1zgl to multi_pdb/1zgl_extracted.pdb\n",
"multi_pdb/2nx5.clean.pdb\n",
"Saved extracted chains of 2nx5 to multi_pdb/2nx5_extracted.pdb\n",
"multi_pdb/2vlr.clean.pdb\n",
"Saved extracted chains of 2vlr to multi_pdb/2vlr_extracted.pdb\n",
"multi_pdb/3dxa.clean.pdb\n",
"Saved extracted chains of 3dxa to multi_pdb/3dxa_extracted.pdb\n",
"multi_pdb/3ffc.clean.pdb\n",
"Saved extracted chains of 3ffc to multi_pdb/3ffc_extracted.pdb\n",
"multi_pdb/3kpr.clean.pdb\n",
"Saved extracted chains of 3kpr to multi_pdb/3kpr_extracted.pdb\n",
"multi_pdb/3mbe.clean.pdb\n",
"Saved extracted chains of 3mbe to multi_pdb/3mbe_extracted.pdb\n",
"multi_pdb/3pqy.clean.pdb\n",
"Saved extracted chains of 3pqy to multi_pdb/3pqy_extracted.pdb\n",
"multi_pdb/3sjv.clean.pdb\n",
"Saved extracted chains of 3sjv to multi_pdb/3sjv_extracted.pdb\n",
"multi_pdb/3utt.clean.pdb\n",
"Saved extracted chains of 3utt to multi_pdb/3utt_extracted.pdb\n",
"multi_pdb/4e41.clean.pdb\n",
"Saved extracted chains of 4e41 to multi_pdb/4e41_extracted.pdb\n",
"multi_pdb/4eup.clean.pdb\n",
"Saved extracted chains of 4eup to multi_pdb/4eup_extracted.pdb\n",
"multi_pdb/4gg6.clean.pdb\n",
"Saved extracted chains of 4gg6 to multi_pdb/4gg6_extracted.pdb\n",
"multi_pdb/4h1l.clean.pdb\n",
"Saved extracted chains of 4h1l to multi_pdb/4h1l_extracted.pdb\n",
"multi_pdb/4mji.clean.pdb\n",
"Saved extracted chains of 4mji to multi_pdb/4mji_extracted.pdb\n",
"multi_pdb/4ozi.clean.pdb\n",
"Saved extracted chains of 4ozi to multi_pdb/4ozi_extracted.pdb\n",
"multi_pdb/4p2q.clean.pdb\n",
"Saved extracted chains of 4p2q to multi_pdb/4p2q_extracted.pdb\n",
"multi_pdb/4p2r.clean.pdb\n",
"Saved extracted chains of 4p2r to multi_pdb/4p2r_extracted.pdb\n",
"multi_pdb/4qrp.clean.pdb\n",
"Saved extracted chains of 4qrp to multi_pdb/4qrp_extracted.pdb\n",
"multi_pdb/4z7u.clean.pdb\n",
"Saved extracted chains of 4z7u to multi_pdb/4z7u_extracted.pdb\n",
"multi_pdb/4z7v.clean.pdb\n",
"Saved extracted chains of 4z7v to multi_pdb/4z7v_extracted.pdb\n",
"multi_pdb/4z7w.clean.pdb\n",
"Saved extracted chains of 4z7w to multi_pdb/4z7w_extracted.pdb\n",
"multi_pdb/5c0a.clean.pdb\n",
"Saved extracted chains of 5c0a to multi_pdb/5c0a_extracted.pdb\n",
"multi_pdb/5c0b.clean.pdb\n",
"Saved extracted chains of 5c0b to multi_pdb/5c0b_extracted.pdb\n",
"multi_pdb/5c0c.clean.pdb\n",
"Saved extracted chains of 5c0c to multi_pdb/5c0c_extracted.pdb\n",
"multi_pdb/5c07.clean.pdb\n",
"Saved extracted chains of 5c07 to multi_pdb/5c07_extracted.pdb\n",
"multi_pdb/5c08.clean.pdb\n",
"Saved extracted chains of 5c08 to multi_pdb/5c08_extracted.pdb\n",
"multi_pdb/5c09.clean.pdb\n",
"Saved extracted chains of 5c09 to multi_pdb/5c09_extracted.pdb\n",
"multi_pdb/5d2l.clean.pdb\n",
"Saved extracted chains of 5d2l to multi_pdb/5d2l_extracted.pdb\n",
"multi_pdb/5d2n.clean.pdb\n",
"Saved extracted chains of 5d2n to multi_pdb/5d2n_extracted.pdb\n",
"multi_pdb/5e6i.clean.pdb\n",
"Saved extracted chains of 5e6i to multi_pdb/5e6i_extracted.pdb\n",
"multi_pdb/5e9d.clean.pdb\n",
"Saved extracted chains of 5e9d to multi_pdb/5e9d_extracted.pdb\n",
"multi_pdb/5euo.clean.pdb\n",
"Saved extracted chains of 5euo to multi_pdb/5euo_extracted.pdb\n",
"multi_pdb/5jhd.clean.pdb\n",
"Saved extracted chains of 5jhd to multi_pdb/5jhd_extracted.pdb\n",
"multi_pdb/5ks9.clean.pdb\n",
"Saved extracted chains of 5ks9 to multi_pdb/5ks9_extracted.pdb\n",
"multi_pdb/5ksb.clean.pdb\n",
"Saved extracted chains of 5ksb to multi_pdb/5ksb_extracted.pdb\n",
"multi_pdb/5nme.clean.pdb\n",
"Saved extracted chains of 5nme to multi_pdb/5nme_extracted.pdb\n",
"multi_pdb/5nmg.clean.pdb\n",
"Saved extracted chains of 5nmg to multi_pdb/5nmg_extracted.pdb\n",
"multi_pdb/5wkh.clean.pdb\n",
"Saved extracted chains of 5wkh to multi_pdb/5wkh_extracted.pdb\n",
"multi_pdb/5wlg.clean.pdb\n",
"Saved extracted chains of 5wlg to multi_pdb/5wlg_extracted.pdb\n",
"multi_pdb/6avg.clean.pdb\n",
"Saved extracted chains of 6avg to multi_pdb/6avg_extracted.pdb\n",
"multi_pdb/6rp9.clean.pdb\n",
"Saved extracted chains of 6rp9 to multi_pdb/6rp9_extracted.pdb\n",
"multi_pdb/6rpb.clean.pdb\n",
"Saved extracted chains of 6rpb to multi_pdb/6rpb_extracted.pdb\n",
"multi_pdb/6rsy.clean.pdb\n",
"Saved extracted chains of 6rsy to multi_pdb/6rsy_extracted.pdb\n",
"multi_pdb/6u3o.clean.pdb\n",
"Saved extracted chains of 6u3o to multi_pdb/6u3o_extracted.pdb\n",
"multi_pdb/6uon.clean.pdb\n",
"Saved extracted chains of 6uon to multi_pdb/6uon_extracted.pdb\n",
"multi_pdb/6vmx.clean.pdb\n",
"Saved extracted chains of 6vmx to multi_pdb/6vmx_extracted.pdb\n",
"multi_pdb/6vqo.clean.pdb\n",
"Saved extracted chains of 6vqo to multi_pdb/6vqo_extracted.pdb\n",
"multi_pdb/7n6e.clean.pdb\n",
"Saved extracted chains of 7n6e to multi_pdb/7n6e_extracted.pdb\n",
"multi_pdb/7sg1.clean.pdb\n",
"Saved extracted chains of 7sg1 to multi_pdb/7sg1_extracted.pdb\n",
"multi_pdb/7t2b.clean.pdb\n",
"Saved extracted chains of 7t2b to multi_pdb/7t2b_extracted.pdb\n",
"multi_pdb/7z50.clean.pdb\n",
"Saved extracted chains of 7z50 to multi_pdb/7z50_extracted.pdb\n"
]
}
],
"source": [
"from analysis_pdb import PDBAnalyzer\n",
"from pathlib import Path\n",
"from biopandas.pdb import PandasPdb\n",
"# 假设multi_pdb目录包含所有的PDB文件\n",
"pdb_directory = Path(\"./multi_pdb\")\n",
"\n",
"for index, row in df.iterrows():\n",
" pdb_id = row['pdb_id']\n",
" pdb_file = pdb_directory / f\"{pdb_id}.pdb\"\n",
" \n",
" # 清理杂原子并初始化PDBAnalyzer\n",
" analyzer = PDBAnalyzer.cleanATOM(pdb_file)\n",
" print(analyzer.pdb_file)\n",
" \n",
" # 根据MHC_class选择需要提取的链\n",
" chains_to_extract = []\n",
" if row['MHC_class'] == 1:\n",
" chains_to_extract = [row['TCR_alpha'], row['TCR_beta'], row['peptide'], row['MHC_alpha'], row.get('Beta2m')]\n",
" elif row['MHC_class'] == 2:\n",
" chains_to_extract = [row['TCR_alpha'], row['TCR_beta'], row['peptide'], row['MHC_alpha'], row['MHC_beta']]\n",
" \n",
" ppdb = PandasPdb().read_pdb(analyzer.pdb_file.as_posix())\n",
"\n",
" # 筛选出指定链的原子\n",
" extracted_atoms = ppdb.df['ATOM'][ppdb.df['ATOM']['chain_id'].isin(chains_to_extract)]\n",
"\n",
" if not extracted_atoms.empty:\n",
" # 创建一个新的PandasPdb对象并填充筛选后的原子数据\n",
" new_ppdb = PandasPdb()\n",
" new_ppdb.df['ATOM'] = extracted_atoms\n",
" new_ppdb.df['HETATM'] = ppdb.df['HETATM'][ppdb.df['HETATM']['chain_id'].isin(chains_to_extract)] # 如果需要也包括HETATM信息\n",
"\n",
" # 保存为新的PDB文件\n",
" output_file = pdb_directory / f\"{pdb_id}_extracted.pdb\"\n",
" new_ppdb.to_pdb(path=output_file.as_posix())\n",
" print(f\"Saved extracted chains of {pdb_id} to {output_file}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['A', 'B', 'C', 'D', 'P', 'E', 'F', 'G', 'H', 'Q']\n"
]
}
],
"source": [
"from pathlib import Path\n",
"from analysis_pdb import PDBAnalyzer\n",
"f = Path('multi_pdb/1d9k.pdb')\n",
"o = PDBAnalyzer.cleanATOM(f)\n",
"print(o.chain_id_list)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"r = o.extract_chains_to_new_pdb(['A'])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'ATOM': record_name atom_number blank_1 ... element_symbol charge line_idx\n",
" 0 ATOM 1 ... N NaN 0\n",
" 1 ATOM 2 ... C NaN 1\n",
" 2 ATOM 3 ... C NaN 2\n",
" 3 ATOM 4 ... O NaN 3\n",
" 4 ATOM 5 ... C NaN 4\n",
" .. ... ... ... ... ... ... ...\n",
" 872 ATOM 873 ... C NaN 872\n",
" 873 ATOM 874 ... C NaN 873\n",
" 874 ATOM 875 ... C NaN 874\n",
" 875 ATOM 876 ... O NaN 875\n",
" 876 ATOM 877 ... O NaN 876\n",
" \n",
" [877 rows x 21 columns],\n",
" 'HETATM': Empty DataFrame\n",
" Columns: [record_name, atom_number, blank_1, atom_name, alt_loc, residue_name, blank_2, chain_id, residue_number, insertion, blank_3, x_coord, y_coord, z_coord, occupancy, b_factor, blank_4, segment_id, element_symbol, charge, line_idx]\n",
" Index: []}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r.df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "analysis",
"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.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}