# 中药-疾病多组学关联分析系统 **Repository Path**: fitz_gitee/traditional-chinese-medicine-multi-omics-association-analysis-aystem-for-diseases ## Basic Information - **Project Name**: 中药-疾病多组学关联分析系统 - **Description**: 利用机器学习预测分析中药对特定疾病的潜在疗效 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-03-13 - **Last Updated**: 2025-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中药-疾病多组学关联分析系统 ## 📜 项目背景 本项目旨在构建一个整合现代数据科学与传统中医药理论的分析平台。通过分析6种经典中药(党参、茯苓等)的151个有效成分与3种疾病(哮喘、乙肝等)的分子机制关联,揭示中药多靶点作用的科学内涵。为中医药现代化研究提供数据支持。 (代码中修改配置路径可以完成对更多种疾病以及更多中药的关联分析) --- ## 📂 文件结构 ```bash traditional-chinese-medicine-multi-omics-association-analysis-aystem-for-diseases/ ├── data/ │ ├── herbs/ # 中药成分数据(CSV格式) │ └── diseases/ # 疾病基因数据(CSV格式) ├── src/ │ └──TCMMOAAAFD.ipynb # 算法集成模块,运行文件 │ ├── output/ │ ├── component_disease_association.csv #中药-疾病关联评分表 │ ├── core_regulatory_genes.csv # 统计分析报告 │ ├── enhanced_network.png # 可视化图表 │ ├── feature_matrix.png #特征工程矩阵可视化 │ ├── herb_disease_heatmap.png #关联热力图 │ ├── ml_report.txt #机器学习预测结果 │ ├── statistical_report.txt #数据汇报 │ └─── tcm_network.gexf # 异构网络图 └── README.md # 项目文档 ``` --- ## 🧩 核心功能模块 ### 1. 智能数据预处理 ```python class DataProcessor: def load_components(self, file_path, herb_name): # 数据清洗:过滤OB≥25且DL≥0.15的有效成分 # 靶点处理:拆分逗号分隔的基因列表并进行标准化 #基因标准化:移除技术描述词(如protein),保留核心符号 return 有效成分DataFrame def load_disease(self, disease_name, path): # 疾病基因数据清洗 return 标准基因集合 ``` #### 关键技术参数 | 参数 | 默认值 | 说明 | | :--------- | :-------: | ----------: | | ob_threshold | 25 | 筛选高生物利用度成分 | | dl_threshold | 0.15 | 药物相似性筛选阈值 | | gene_regex | r"\b(mRNA...)| 基因名称清洗正则表达式 | --- ### 2. 创新管理评分模型 ```python class AssociationAnalyzer: @staticmethod def calculate_association(row, disease_genes): """ 创新关联评分公式: Score = (OB/100) × DL × ln(OverlapCount+1) 注:融合药代动力学特性与靶点覆盖度 参数说明: - OB: 口服生物利用度(Oral Bioavailability) - DL: 药物相似性指数(Drug Likeness) - OverlapCount: 成分靶点与疾病基因交集数 """ ``` #### 公式选择 - **对数选择:** 平滑处理靶点数量差异(避免过拟合) - **归一化:** OB除以100确保量纲统一 - **增强效应:** DL作为质量系数放大成分 --- ### 3. 多层次网络分析 ```python class NetworkBuilder: def build_network(self): # 构建四类节点(中药/成分/基因/疾病) # 创建三类关系边(成分-中药/成分-疾病/成分-基因) return 异构网络图 def get_key_genes(self): # 基于度中心性识别核心调控基因 return 前10关键基因表 ``` --- ### 4. 可视化引擎 ```python class EnhancedVisualizer: @staticmethod def plot_network(G, save_path): """ 网络可视化技术细节: 1. 布局算法:Fruchterman-Reingold力导向布局(k=0.2) 2. 视觉编码: - 节点颜色:疾病(红)/中药(绿)/基因(蓝)/成分(灰) - 节点大小:度中心性×缩放系数(base_size=800) - 边粗细:权重×0.5(增强可读性) 3. 字体渲染:强制使用SimHei字体避免乱码 """ ``` #### 可视化参数 | 参数 | 默认值 | 调节建议 | | :--------- | :-------: | ----------: | | k (布局密度) | 0.2 | 增大值可降低节点重叠 | | node_size | 800 | 根据节点数量动态调整 | | edge_width | 0.5×weight| 可视情况调整系数 | --- ### 5. 机器学习预测模块 ```python class EnhancedAnalyzer: def run_rf_analysis(self, final_df): """ 随机森林预测流程: 1. 特征工程: - 输入特征:OB, DL, association_score - 目标变量:overlap_count 2. 数据标准化:StandardScaler处理连续特征 3. 模型训练:100棵决策树(n_estimators=100) 4. 评估指标:R²(解释方差) + MAE(绝对误差) """ ``` #### 可视化参数 | 参数 | 值 | 优化方向 | | :--------- | :-------: | ----------: | | n_estimators | 100 | 增加可提升稳定性(计算成本↑) | | max_depth | None | 限制树深度防止过拟合 | | test_size | 0.2| 根据数据量调整分割比例 | --- ### 6. 其他模快 **详见文件TCMMOAAAFD.ipynb(测试日志模块及语句已大致清除,所有模块都有注释)** --- ## 🛠️ 生成结果演示 ### 成分-疾病关联数据 ![输入图片说明](picture/aaa.png) ### 核心调控基因 ![输入图片说明](picture/rrr.png) ### 网络图 ![输入图片说明](output/enhanced_network.png) ### 特征矩阵可视化 ![输入图片说明](output/feature_matrix.png) ### 中药-疾病热力关联图 ![输入图片说明](output/herb_disease_heatmap.png) ### 随机森林预测结果 ![输入图片说明](picture/ml_report.png) ### 关键统计摘要 ![输入图片说明](picture/st_report.png) ## 📚 参考文献 ### [1] 王勇献. 生物信息学导论: 面向高性能计算的算法与应用[M]. 清华大学出版社, 2011. ### [2] HOPKINS A L. Network pharmacology: the next paradigm in drug discovery[J/OL]. Nature Chemical Biology, 2008, 4(11): 682-690. DOI:10.1038/nchembio.118. ### [3] 医疗保健领域的人工智能[EB/OL]. [2025-03-13]. --- ***最后的话***:项目制作过程有诸多坎坷。数据来自TCMSP以及Disgenet网站两个来源。 TCMSP中不支持批量下载,我只能利用webdriver爬取,但是网站存在内部动态页面以及一定防爬手段,所幸的是我所必需的数据大多是可以正常爬取的,花了一些时间和精力测试还是爬取成功了(我把代码藏在/src里面了);Disgenet网站是商用网站,非用户不能观看下载数据,我只能注册学术账号并加入学术计划下载,但也只能一条疾病下载至多30条信息,我不敢也不能去爬取。**导致数据和图片做出来不严谨不好看,这也成了这个模型的、我的遗憾。** **因为数据来源不同,下载的文件中数值没有统一的数据类型以及统一的命名(大小写空格短杠格式以及别名问题是存在的),我能力有限只能解决大小写空格短杠格式和部分命名问题如”Adult_Onset_Diabetes_Mellitus"与"Type 2 diabetes",这也是这个模型的缺陷之一,但是统一了命名及格式这个问题便迎刃而解。** 后续删删改改代码,主要问题就是在于加载和计算导入,带着测试日志测试段,代码一度达到500行往上,眼花缭乱。我也重新多次确认各个模块是否正确,抑或是添加增强或者处理模块排除问题解决问题。最后还是通过两次回档重做完成了。 **正确运行代码的话可能需要把运行代码文件以及数据文件拿出来都放在同一个路径上运行。** **希望阅读者发现问题或者优化方法后能告知我,也可以私聊我多沟通,交个朋友,谢谢!!**