PyPDA是一个集成了蛋白质序列分析、PDB文件处理和UniProt数据检索功能的综合工具,旨在为生物信息学研究提供便捷的蛋白质数据分析解决方案。
- 🎯 序列分析:从UniProt批量获取蛋白质序列、提取特定区域、执行突变分析和序列比对
- 🏗️ PDB处理:下载PDB文件、提取配体信息并分类管理
- 📋 结构信息提取:自动从PDB文件中提取PDB ID、结构标题、实验方法和分辨率范围,生成结构化报告
- 🧪 分子结构相似性:基于SMILES计算小分子与PDB结构中配体的相似性,辅助分子对接
- 📊 UniProt数据检索:获取蛋白质详细注释信息并生成结构化报告
- 🎯 OpenTargets数据查询:查询疾病药物关联、靶点药物关联、基因疾病关联和疾病靶点关联信息
- 🧬 KEGG信号通路分析:查询基因参与的信号通路、下载通路图、搜索通路,支持JSON和CSV双格式输出
- 🔍 增强的基因搜索功能:实现从精确到宽松的递进式查询策略,支持灵活的基因名和蛋白质名匹配,提高检索成功率
- ⚡ 并行计算支持:采用多线程和多进程并行处理,显著提升大规模数据处理速度
- 📁 统一管理:所有结果文件和下载zip文件统一存储在
result/目录下
- Python 3.8+
- 所需依赖库:参见requirements.txt
- 克隆或下载本项目到本地
- 安装依赖包:
pip install -r requirements.txt- 配置文件设置:
exclude_residues.ini:定义需要排除的残基config.ini:配置文件路径
python pypda.py <工具> <命令> [参数]用于蛋白质序列的获取、提取、突变和比对分析。
从UniProt批量获取蛋白质序列和结构域信息,支持增强的搜索策略,提高检索成功率
python pypda.py seq fetch <genes> [output_dir]- 参数:
genes: 要下载的基因名称,用空格分隔(例如:BRCA1 TP53 EGFR)output_dir: 输出目录,默认值为result/protein_sequences/基因名_YYYYMMDD_HHMMSS
增强的搜索功能:
- 实现从精确到宽松的递进式查询策略(gene_exact → gene → 一般搜索)
- 支持灵活的基因名和蛋白质名匹配(精确匹配和包含匹配)
- 多结果筛选,提高匹配准确度
- 完善的错误处理和日志记录
示例:
python pypda.py seq fetch BRCA1 TP53 EGFR即使是非标准或难以匹配的基因名(如MOGT2、MOGT3)也能成功检索
从FASTA文件中提取指定位置的氨基酸序列
python pypda.py seq extract <fasta_file> <start> <end> [--output_dir <目录>]- 参数:
fasta_file: 输入FASTA文件路径start: 起始位置(1-based)end: 结束位置(1-based)--output_dir: 输出目录,默认值为输入文件所在目录
示例:
python pypda.py seq extract protein.fasta 10 50 --output_dir ./extract_result对蛋白质序列执行定点突变
python pypda.py seq mutate <fasta_file> --pos <位置列表> --aa <氨基酸列表> [--output_dir <目录>]- 参数:
fasta_file: 输入FASTA文件路径--pos: 突变位置列表(空格分隔)--aa: 对应位置的新氨基酸(空格分隔)--output_dir: 输出目录,默认值为输入文件所在目录
示例:
python pypda.py seq mutate protein.fasta --pos 15 23 --aa A K --output_dir ./mutate_result比较多个蛋白质序列的同源性
python pypda.py seq align <fasta_files>- 参数:
fasta_files: 多个FASTA文件路径(空格分隔)
示例:
python pypda.py seq align protein1.fasta protein2.fasta protein3.fasta用于PDB文件的下载、配体提取和分类管理,以及基于小分子SMILES的结构相似性计算。使用RCSB API进行PDB数据库搜索和文件下载。
根据蛋白质名称搜索并下载相关PDB结构文件,提取配体信息并进行分类管理。
python pypda.py pdb fetch <protein_name> [output_dir] [--smiles <smiles>]- 参数:
protein_name: 蛋白质名称或基因名称(例如:BRCA1, TP53, EGFR)output_dir: 输出目录,默认值为result/pdb_output/蛋白质名_YYYYMMDD_HHMMSS--smiles: 可选,小分子SMILES字符串,用于计算与PDB结构中配体的结构相似性
示例:
# 基本用法:使用蛋白质名称搜索并下载PDB文件
python pypda.py pdb fetch BRCA1
# 高级用法:下载PDB文件并计算结构相似性
python pypda.py pdb fetch HDAC1 --smiles "CC(=O)N(C)C(=O)N1CCC(CC1)C(C)C" # 示例SMILES字符串对指定文件夹下的PDB或CIF文件进行口袋分析,列出配体周围4.5埃内的氨基酸残基。
python pypda.py pdb analyze <folder_path> [--output_dir <目录>]- 参数:
folder_path: 包含PDB或CIF文件的文件夹路径--output_dir: 输出目录,默认值为输入文件夹相同目录
示例:
python pypda.py pdb analyze result/pdb_output/BRCA1_20240101_120000用于查询OpenTargets数据库,获取疾病药物关联、基因疾病关联和疾病靶点关联信息。
查询特定疾病的相关药物信息
python pypda.py opentargets disease-drugs [--disease-name <疾病名称>] [--disease-id <EFO ID>] [--limit <数量>] [--format <格式>]- 参数:
--disease-name: 疾病名称(例如:breast cancer)--disease-id: 疾病的EFO ID(例如:MONDO_0007254)--limit: 返回结果数量限制,默认100--format: 输出格式(json/csv/all),默认json
示例:
python pypda.py opentargets disease-drugs --disease-name "lung cancer" --limit 50 --format csv查询特定靶点的相关药物信息
python pypda.py opentargets target-drugs <gene_name> [--format <格式>]- 参数:
gene_name: 基因名称(例如:EGFR)--format: 输出格式(json/csv/all),默认json
示例:
python pypda.py opentargets target-drugs EGFR --format csv查询特定基因关联的疾病信息
python pypda.py opentargets target-associations <gene_name> [--limit <数量>] [--format <格式>]- 参数:
gene_name: 基因名称(例如:TP53)--limit: 返回结果数量限制,默认100--format: 输出格式(json/csv/all),默认json
示例:
python pypda.py opentargets target-associations EGFR --limit 50 --format csv查询特定疾病关联的靶点信息
python pypda.py opentargets disease-associations [--disease-name <疾病名称>] [--disease-id <EFO ID>] [--limit <数量>] [--format <格式>]- 参数:
--disease-name: 疾病名称(例如:diabetes)--disease-id: 疾病的EFO ID(例如:EFO_0010164)--limit: 返回结果数量限制,默认100--format: 输出格式(json/csv/all),默认json
示例:
python pypda.py opentargets disease-associations --disease-name "breast cancer" --limit 50 --format csv用于查询KEGG数据库,获取基因参与的信号通路信息并下载通路图。
查询特定基因参与的所有信号通路,并下载对应的通路图
python pypda.py kegg gene-pathways <gene_name> [output_dir]- 参数:
gene_name: 基因名称(例如:TP53)output_dir: 输出目录,默认值为result/kegg_output/基因名_YYYYMMDD_HHMMSS
输出文件:
基因名_pathways.json:信号通路列表(JSON格式)基因名_pathways.csv:信号通路列表(CSV格式,Excel兼容)pathway_images/:信号通路图目录(PNG格式)
示例:
python pypda.py kegg gene-pathways TP53根据信号通路ID下载通路图
python pypda.py kegg download-pathway <pathway_id> [output_dir]- 参数:
pathway_id: 信号通路ID(例如:hsa04110)output_dir: 输出目录,默认值为result/kegg_output/通路ID_YYYYMMDD_HHMMSS
示例:
python pypda.py kegg download-pathway hsa04110根据名称搜索信号通路
python pypda.py kegg search-pathway <pathway_name> [output_dir]- 参数:
pathway_name: 信号通路名称关键词(例如:cancer)output_dir: 输出目录(可选)
示例:
python pypda.py kegg search-pathway cancer用于从UniProt数据库获取蛋白质注释信息并生成分析报告。
从UniProt API获取蛋白质数据并生成JSON和Markdown报告
python pypda.py uniprot fetch <accession> [output_dir]- 参数:
accession: 蛋白质名称或基因名称(例如:TP53)output_dir: 输出目录,默认值为result/uniprot_reports/基因名_YYYYMMDD_HHMMSS
示例:
python pypda.py uniprot fetch TP53分析本地已有的UniProt蛋白质信息JSON文件,提取关键数据并生成Markdown格式的分析报告。
python pypda.py uniprot analyze <file>- 参数:
file: 要分析的UniProt蛋白质信息JSON文件路径
示例:
python pypda.py uniprot analyze result/uniprot_reports/TP53_20240101_120000/TP53_20240101_120000.json项目采用统一的目录结构管理所有输出文件:
result/
├── zip/ # 所有下载zip文件统一存放
├── extract_output/ # 序列提取结果
├── mutate_output/ # 序列突变结果
├── align_output/ # 序列比对结果
├── pdb_output/ # PDB处理结果
├── protein_sequences/ # 蛋白质序列结果
├── uniprot_reports/ # UniProt数据结果
├── opentargets/ # OpenTargets查询结果
└── temp/ # 临时文件目录
- FASTA文件:包含蛋白质序列
- domain_info.md:结构域信息报告
- JSON文件:原始UniProt数据(命名格式:
基因名_YYYYMMDD_HHMMSS.json) - Markdown报告:蛋白质详细信息(命名格式:
基因名_YYYYMMDD_HHMMSS.md)
- CIF文件:蛋白质结构文件(CIF格式)
- 配体文件:提取的配体信息
- 分类报告:配体分类结果(with_ligand / no_ligand)
- 结构信息报告:
structure_info.csv,包含PDB ID、结构标题、实验方法、分辨率和种属信息 - 配体化学信息:
chemical_components_info.csv,包含配体ID、名称、分子式、分子量和SMILES - 结构相似性报告:当使用
--smiles参数时生成,包含与输入小分子最相似的PDB结构排名
PyPDA采用模块化设计,代码结构清晰,便于维护和扩展:
pypda/
├── config/ # 配置管理模块
│ ├── __init__.py
│ └── config_manager.py # 配置文件管理
├── logger/ # 日志管理模块
│ ├── __init__.py
│ └── logger.py # 日志记录功能
├── opentargets/ # OpenTargets数据查询模块
│ ├── __init__.py
│ ├── opentargets_api.py # OpenTargets API交互
│ └── opentargets_processor.py # OpenTargets命令处理
├── kegg/ # KEGG信号通路分析模块
│ ├── __init__.py
│ ├── kegg_api.py # KEGG API交互
│ └── kegg_processor.py # KEGG命令处理
├── pdb/ # PDB处理模块
│ ├── __init__.py
│ └── pdb_processor.py # PDB文件处理功能
├── report/ # 报告生成模块
│ ├── __init__.py
│ └── report_generator.py # 报告生成功能
├── sequence/ # 序列处理模块
│ ├── __init__.py
│ └── sequence_processor.py # 序列分析功能
├── uniprot/ # UniProt数据模块
│ ├── __init__.py
│ ├── protein_analyzer.py # 蛋白质数据分析
│ └── uniprot_api.py # UniProt API交互
├── utils/ # 工具函数模块
│ ├── __init__.py
│ └── common_utils.py # 通用工具函数
├── pypda.py # 主应用入口和命令行工具入口
├── requirements.txt # 依赖列表
└── setup.py # 安装配置
- exclude_residues.ini:定义需要排除的残基类型
- 在配体提取时用于过滤不需要考虑的残基
- 主要更新:
- 版本 0.6.0:
- 使用 rcsb-api 库进行 PDB 搜索和下载
- 结构信息报告改为 CSV 格式(structure_info.csv)
- 配体化学信息改为 CSV 格式(chemical_components_info.csv)
- 删除了按种属分类的功能
- 新增KEGG信号通路分析功能,支持查询基因参与的信号通路、下载通路图、搜索通路
- KEGG模块支持JSON和CSV双格式输出,方便数据处理和分析
- 新增OpenTargets数据查询功能,支持疾病药物查询、靶点药物查询、基因关联疾病查询和疾病关联靶点查询
- 修复OpenTargets API查询字段问题,将
knownDrugs更新为drugAndClinicalCandidates - 优化文件夹创建逻辑,避免创建空文件夹
- 版本 0.6.0:
核心依赖:
- biopython:生物信息学工具包
- requests:HTTP请求库
- pandas:数据处理
- configparser:配置文件解析
- rcsb-api:RCSB PDB数据库查询工具
- rdkit:用于分子结构处理和相似性计算(需额外安装)
完整依赖列表参见requirements.txt
注意:RDKit库需要额外安装,可通过
pip install rdkit>=2023.03.01命令安装。该库用于支持--smiles参数的结构相似性计算功能。