AI真的懂生信吗?Claude Code 能否胜任个性化生信分析?
本文以单细胞测序数据为例,测试了Claude Code(AI coder)在生信高阶分析中的实际能力。结果表明,它不仅能够精准执行标准流程,还能在已有结果基础上理解分析意图,辅助完成个性化的蛋白互作网络构建与细胞通讯解析,展现出强大的AI分析潜力。
在生物信息学领域,Claude code(AI coder)的强大能力正在得到越来越多的认可,特别是在搭建和优化生信分析流程方面。在之前的文章中,我们成功使用Claude code复现了文献中的图表,展现了其在标准流程执行上的精准性。然而,今天我们将更进一步,探索Claude code在个性化分析中的表现,看看它是否能够理解我们基于已有结果的分析意图,并且精准地帮助我们提取出预期的结果。
本次测试将集中在单细胞高阶分析上,特别是蛋白互作网络图和细胞通讯分析两个方面。我们将使用来自GEO数据库的肺部疾病数据集—— 特发性肺动脉高压(IPAH) 与健康供体对照组样本(GSE169471)进行深入分析。通过这次测试,我们希望验证Claude code在个性化数据分析中的表现,以及它如何在复杂的生物学问题上展现出灵活的处理能力。
原文链接:https://pmc.ncbi.nlm.nih.gov/articles/PMC7052475/#sec5-2045894020908782
Claude Code复现流程
第一步:数据准备
对照组样本(CON)包括了六个健康供体的样本:GSM5206782-89 IPAH组包含三名特发性肺动脉高压患者的样本:GSM5206779-81
第二步:初始化CLAUDE.md
# 项目概述
本仓库包含了一个以平滑肌细胞为对象的生物信息学研究项目,主要利用单细胞RNA测序数据,对平滑肌细胞的差异基因进行分析,并构建其分子互作网络。
# 数据结构
主要数据源为 GSE169471.zip,该压缩包包含:
- 单细胞RNA-seq数据,H5格式(文件名如 GSM5206779-GSM5206789.h5)
- 质控报告和分析PDF文档
- 差异表达基因结果(CSV格式)
- UMAP可视化图
# 研究目标
1. 平滑肌细胞差异基因分析及网络构建
基于平滑肌差异基因,利用 Cytoscape 进行网络可视化
2. 关键基因介导的细胞通信分析
分析平滑肌细胞与其他细胞亚群之间,关键基因在细胞通信中的作用
构建信号通路网络,识别基因为发送者、接收者、中介因子或影响因子等角色
输出详细的细胞通讯结果,包括:
源细胞、靶细胞、配体、受体
概率值、P值、互作名称
信号通路及注释信息
# 分析流程
根据已有的图示,主要流程包括:
网络分析(Figure 1):利用 Cytoscape 构建蛋白质互作(PPI)网络,识别枢纽基因
细胞通讯(Figure 2):分析 CCL 和补体信号通路在不同细胞类型(包括平滑肌细胞、内皮细胞、巨噬细胞及其他免疫细胞)间的相互作用
# 核心分析细胞类型
平滑肌细胞(分析重点)
内皮细胞
巨噬细胞
T细胞、B细胞、NK细胞
单核细胞、中性粒细胞
软骨细胞
组织干细胞
第三步:Claude code(AI coder)执行
指令:将DEGs上传到STRING数据库进行PPI分析之后 ,基于平滑肌差异基因,用Cytoscape对网络进行可视化。
从STRING数据库获取蛋白质相互作用数据
def get_string_ppi_data(genes, species=9606, score_threshold=400):
"""
从STRING数据库获取蛋白质相互作用数据
Args:
genes: 基因列表
species: 物种ID (默认9606为人类)
score_threshold: 相互作用置信度阈值 (默认400)
Returns:
相互作用数据DataFrame
"""
# 构建查询URL
string_api_url = "https://version-11-5.string-db.org/api"
output_format = "tsv-no-header"
method = "network"
# 将基因列表转换为查询字符串
my_genes = "\r".join(genes[:30]) # 限制前30个基因以避免请求过大
# 构建请求参数
params = {
"identifiers": my_genes,
"species": species,
"required_score": score_threshold,
"network_flavor": "evidence",
"caller_identity": "ppi_analysis"
}
try:
# 发送请求
print("正在从STRING数据库获取PPI数据...")
request_url = f"{string_api_url}/{output_format}/{method}"
response = requests.post(request_url, data=params, timeout=30)
if response.status_code == 200:
# 解析响应数据
lines = response.text.strip().split('\n')
if len(lines) > 1: # 确保有数据
data = []
for line in lines:
parts = line.split('\t')
if len(parts) >= 9:
try:
data.append({
'stringId_A': parts[0],
'stringId_B': parts[1],
'preferredName_A': parts[2],
'preferredName_B': parts[3],
'ncbiTaxonId': parts[4],
'score': int(float(parts[5])),
'nscore': float(parts[6]),
'fscore': float(parts[7]),
'pscore': float(parts[8])
})
except (ValueError, IndexError):
continue
df = pd.DataFrame(data)
print(f"成功获取 {len(df)} 个蛋白质相互作用")
return df
else:
print("未找到相互作用数据")
return None
else:
print(f"请求失败,状态码: {response.status_code}")
return None
except Exception as e:
print(f"获取数据时出错: {str(e)}")
return None
创建Cytoscape网络文件
def create_cytoscape_network_file(ppi_data, gene_info, output_file):
"""
创建Cytoscape网络文件
Args:
ppi_data: PPI数据DataFrame
gene_info: 基因信息字典
output_file: 输出文件路径
"""
if ppi_data is None or len(ppi_data) == 0:
print("没有PPI数据可用于创建网络文件")
return
# 创建节点文件
nodes = set()
for _, row in ppi_data.iterrows():
nodes.add(row['preferredName_A'])
nodes.add(row['preferredName_B'])
# 创建SIF格式的网络文件 (Simple Interaction Format)
sif_content = []
for _, row in ppi_data.iterrows():
interaction = f"{row['preferredName_A']}\tpp\t{row['preferredName_B']}"
sif_content.append(interaction)
# 保存SIF文件
sif_file = output_file.replace('.txt', '.sif')
with open(sif_file, 'w') as f:
f.write('\n'.join(sif_content))
print(f"SIF网络文件已保存到: {sif_file}")
# 创建节点属性文件
node_attr_file = output_file.replace('.txt', '_nodes.txt')
with open(node_attr_file, 'w') as f:
f.write("Gene\tType\tExpression\n")
for node in nodes:
if node in gene_info:
f.write(f"{node}\tSMC_gene\t{gene_info[node]['avg_log2FC']:.3f}\n")
else:
f.write(f"{node}\tInteracting_gene\t0.000\n")
print(f"节点属性文件已保存到: {node_attr_file}")
# 创建边属性文件
edge_attr_file = output_file.replace('.txt', '_edges.txt')
with open(edge_attr_file, 'w') as f:
f.write("Source\tTarget\tInteraction\tScore\n")
for _, row in ppi_data.iterrows():
f.write(f"{row['preferredName_A']}\t{row['preferredName_B']}\tpp\t{row['score']}\n")
print(f"边属性文件已保存到: {edge_attr_file}")
结果图: 成功完成了基于全部2,085个平滑肌细胞差异基因的PPI网络分析
Cytoscape专业可视化
指令:对于当前路径下的数据,使用CellChat方法对11个样本进行了完整的细胞通讯分析
结果图:
总结
本文以单细胞测序数据为例,测试了Claude Code(AI coder)在生信高阶分析中的实际能力。结果表明,它不仅能够精准执行标准流程,还能在已有结果基础上理解分析意图,辅助完成个性化的蛋白互作网络构建与细胞通讯解析,展现出强大的AI分析潜力。
如何使用Claude code(AICoder)
选择Claude code(AICoder)后,点击您所需要的套餐。请耐心等待,待状态变为 “运行中”,然后点击 “查看 API KEY” 按钮,即可获取API 密钥。
更多推荐
所有评论(0)