Ericaaixue/fyp-tcr-pmhc-pu-learning

GitHub: Ericaaixue/fyp-tcr-pmhc-pu-learning

该项目是一个基于 PU 学习的 TCR-pMHC 结合预测可靠负样本筛选与评估的可复现 Python 工作流。

Stars: 0 | Forks: 0

# 评估正样本-未标记学习与采样策略以构建 TCR-pMHC 结合预测中的可靠负样本 本代码库包含一个可复现的 Python 工作流,用于在 T 细胞受体与肽-MHC (TCR-pMHC) 结合预测中构建可靠负样本。该项目将假定的非交互式 TCR-pMHC 对视为未标记的候选负样本,而非已确认的非结合物,随后评估正样本-未标记 (PU) 学习方法和采样策略,以构建可靠的负样本数据集。 ## 研究目标 经实验验证的非结合 TCR-pMHC 对数量有限。在实践中,假定的非交互对通常被用作负样本,尽管其中一些可能是未经测试的结合物。本项目旨在探讨基于 PU 学习的可靠负样本筛选与采样策略,是否能够为下游的 TCR-pMHC 结合预测构建更具信息量的负样本数据集。 ## 项目摘要 该工作流使用: - `51,183` 个经过筛选的阳性 TCR-pMHC 结合物。 - `3,342,225` 个假定的非交互对作为未标记候选负样本池。 - `44` 个基于序列衍生的 CDR3beta 和肽特征。 - 七种可靠负样本筛选方法:Spy、Rocchio、kNN、biased SVM、weighted logistic regression、uPU 和 nnPU。 - 一种随机基线和四种 PU 指导的采样策略。 - `29` 个负样本数据集,每个数据集恰好包含 `50,000` 个选定的负样本。 - 使用 Logistic Regression、Complement Naive Bayes 和 Random Forest 进行分层 5 折交叉下游验证。 主要发现是,top-k 可靠负样本采样通常能提供最高的分类器分离度,但可能会选择过于简单且分布较窄的负样本。肽平衡和 HLA-肽平衡采样通常会降低分类器得分,但能更好地保留生物学覆盖率。因此,评估可靠负样本的质量应同时考虑下游性能和分布的代表性。 ## 仓库结构 ``` fyp-tcr-pmhc-pu-learning/ |-- README.md |-- environment.yml |-- .gitignore | |-- data/ | `-- example_data/ | |-- positive_sample.csv | |-- unlabeled_candidate_sample.csv | |-- reliable_negative_sample.csv | `-- README.md | |-- rn_screener/ | `-- core implementation package | |-- scripts/ | |-- 01_data_preprocessing.py | |-- 02_feature_extraction.py | |-- 03_rn_screening.py | |-- 04_negative_sampling.py | |-- 05_downstream_validation.py | |-- 06_stage10_analysis.py | |-- 07_plot_figures.py | `-- legacy_helpers/ | `-- auxiliary plotting and continuation scripts from the project workflow | |-- tests/ | `-- smoke tests for core workflows | `-- results/ |-- figures/ | |-- data_distribution.png | |-- stage10_loss_gap_boxplot.png | `-- stage10_mcc_gap_heatmap.png | `-- tables/ |-- stage10_validation_loss.csv |-- stage10_validation_mcc.csv |-- stage10_test_mcc.csv |-- stage10_loss_gap.csv `-- stage10_mcc_gap.csv ``` ## 示例数据 `data/example_data/` 下包含了小型的预览 CSV 文件,以便读者检查预期的输入格式。这些文件每个仅包含 20 行数据,不适用于最终分析。 由于文件大小的限制,完整的项目数据未包含在 GitHub 中。完整数据工作流需要: ``` data/positive_stats_output1/positive_cleaned_mouse_MHC_removed.csv data/omics_neg_with_HLA_peptide.csv rn_features/ rn_method_outputs_50k/ rn_sampling_strategies_50k_29/ staged_validation_outputs/ dataset_level_validation_outputs/ ``` 完整数据包: ``` https://drive.google.com/file/d/1Heify61gDa-YvUQNqAEI4KFRv8rh8Zkx/view?usp=drive_link ``` ## 环境 创建 conda 环境: ``` conda env create -f environment.yml conda activate bio319-rn-analysis ``` 本项目使用 Python `3.8.10` 开发。 可选依赖说明: - 仅在重新运行 uPU 和 nnPU 筛选器时需要 PyTorch。 - 包含 XGBoost 以供可选的重运行使用,但 XGBoost 的结果不作为最终主要分析的一部分。 ## 主工作流脚本 `scripts/` 中的编号脚本代表了项目的主要工作流。 预览并验证示例数据: ``` python scripts\01_data_preprocessing.py ``` 构建特征: ``` python scripts\02_feature_extraction.py ` --positive-input data\positive_stats_output1\positive_cleaned_mouse_MHC_removed.csv ` --unlabeled-input data\omics_neg_with_HLA_peptide.csv ` --output-dir rn_features ``` 运行可靠负样本筛选: ``` python scripts\03_rn_screening.py ` --x-pos rn_features\X_pos.npy ` --x-unlabeled rn_features\X_unlabeled.npy ` --metadata rn_features\U_metadata.csv ` --method all ` --ratio 0.05 ` --output-dir rn_method_outputs_50k ``` 构建 29 个负样本数据集: ``` python scripts\04_negative_sampling.py ` --rn-output-dir rn_method_outputs_50k ` --metadata rn_features\U_metadata.csv ` --output-dir rn_sampling_strategies_50k_29 ` --rn-count 50000 ``` 运行下游验证: ``` python scripts\05_downstream_validation.py ` --staged-run-dir staged_validation_outputs\full_stratified_stage10_20260507_233700 ` --negative-dir rn_sampling_strategies_50k_29 ` --classifiers logistic complement_nb random_forest ` --n-splits 5 ` --save-plots ``` 生成 stage-10 分析表格和热图: ``` python scripts\06_stage10_analysis.py ``` 生成论文风格的数据分布图: ``` python scripts\07_plot_figures.py ``` ## 包含的结果 本次上传包含了部分轻量级的结果文件供查阅: - `results/figures/data_distribution.png` - `results/figures/stage10_loss_gap_boxplot.png` - `results/figures/stage10_mcc_gap_heatmap.png` - `results/tables/stage10_validation_loss.csv` - `results/tables/stage10_validation_mcc.csv` - `results/tables/stage10_test_mcc.csv` - `results/tables/stage10_loss_gap.csv` - `results/tables/stage10_mcc_gap.csv` 这些是具有代表性的面向论文的输出。完整的中间数据、完整的方法输出以及完整的验证输出目录均未包含在 GitHub 中。 ## 测试 `tests/` 目录下包含了冒烟测试: ``` python -B tests\smoke_test_rn_screeners.py python -B tests\smoke_test_rn_sampling.py python -B tests\smoke_test_staged_validation.py python -B tests\smoke_test_staged_continue.py python -B tests\smoke_test_fixed_stage_dataset_validation.py python -B tests\smoke_test_stage_history_summary.py ``` ## 局限性 - 可靠负样本是根据未标记数据推断出来的,而非实验确认的非结合物。 - Top-k 采样可能会产生非常高的 MCC,但可能会导致简单负样本的代表性过高。 - 平衡采样能更好地保留肽或 HLA-肽的覆盖率,但可能会降低分类器的分离度。 - 大型原始和生成的数据文件必须单独下载。 ## AI 使用声明 AI 工具被用于代码编写支持、调试、文档起草和工作流检查。最终的项目决策、解释以及论文内容均由学生本人审查和控制。
标签:Apex, PU学习, Python, TCR-pMHC, 凭据扫描, 无后门, 机器学习, 生物信息学, 负样本选择, 逆向工具