从CATH网站下载数据(CATH)
wget http://download.cathdb.info/cath/releases/latest-release/non-redundant-data-sets/cath-dataset-nonredundant-S40.list ./
为了从CATH数据库的cath-dataset-nonredundant-S40.list文件中找到含有多条多肽链的复合体结构,整个流程需要使用CATH数据库和PDB文件的结合分析,脚本可以用Python或其他脚本语言编写。以下是大致的分析步骤、可能用到的工具和脚本思路。
数据分析代码
import pandas as pd
### 1. 读取CATH数据
cath_file = '/Users/zhengxueming/Downloads/cath-dataset-nonredundant-S40.list'
pdb_ids = []
chain_ids = []
pdb_chain_ids = []
domain_ids = []
with open(cath_file, 'r') as file:
for line in file:
line = line.strip()
#print(line.strip()) # 使用 strip() 去除每行末尾的换行符
# 1a15A00
pdb_id = line[:4] # 提取PDB ID
chain_id = line[4:5] # 提取链ID
domain_id = line[5:] # 提取结构域ID
pdb_ids.append(pdb_id)
chain_ids.append(chain_id)
domain_ids.append(domain_id)
data = {'PDB_ID': pdb_ids, 'Chain_ID': chain_ids, 'Domain_ID':domain_ids}
cath_data = pd.DataFrame(data)
print(cath_data.shape)
#print(cath_data)
### 2. 提取单一链结构
single_chain_pdbs = cath_data.groupby('PDB_ID').filter(lambda x: x['Chain_ID'].nunique() == 1)
print("单一链的结构有:{}个".format(single_chain_pdbs.shape[0]))
### 3. 提取单一链单一结构域的结构
# 在只包含单条链的结构中,筛选出单一结构域的链
single_chain_single_domain = single_chain_pdbs.groupby(['PDB_ID', 'Chain_ID']).filter(lambda x: len(x) == 1)
print("单一链单一结构域的结构有:{}个".format(single_chain_single_domain.shape[0]))
### 4. 提取单一链多结构域的结构
single_chain_multi_domain = single_chain_pdbs.groupby(['PDB_ID', 'Chain_ID']).filter(lambda x: len(x) > 1)
print("单一链多结构域的结构有:{}个".format(single_chain_multi_domain.shape[0]))
# 5. 提取多条链的结构
multi_chain_pdbs = cath_data.groupby('PDB_ID').filter(lambda x: len(x['Chain_ID'].unique()) > 1)
print("多条链的结构有:{}个".format(multi_chain_pdbs.shape[0]))
进一步,可以根据蛋白质复合体中序列的同源性区分出homo和hetero蛋白质复合体,并根据链长度和结构的分辨率进一步筛选。