You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从注释文件提取Tag列并通用追加至分析输出文件?

实现方案:自动追加GEO注释Tags列到分析输出文件

核心思路

  • 解析两个文件结构,定位输出文件中「样本信息」与「差异分析结果」的分界点
  • 自动识别注释文件中的Tags列(基于列名关键词匹配,如Tags/Comparison_Tags等,不区分大小写)
  • 按样本ID对应关系,将Tags列数据插入到输出文件的指定位置

具体实现(以Python为例)

步骤1:读取并解析注释文件

import pandas as pd

# 读取注释文件,自动识别分隔符(支持csv/tsv/txt)
anno_df = pd.read_csv("geo_annotation.txt", sep="\t", header=0)

# 自动匹配Tags列
tag_cols = [col for col in anno_df.columns if "tag" in col.lower()]
if not tag_cols:
    raise ValueError("注释文件未找到Tags列,请检查列名")
target_tag_col = tag_cols[0]

# 构建样本ID与Tags的映射(自动识别样本ID列)
sample_id_cols = [col for col in anno_df.columns if "sample" in col.lower() or "id" in col.lower()]
if not sample_id_cols:
    raise ValueError("未找到样本ID列,请检查注释文件")
sample_id_col = sample_id_cols[0]
sample_tag_map = anno_df.set_index(sample_id_col)[target_tag_col].to_dict()

步骤2:定位输出文件的插入分界点

假设输出文件结构为:

样本信息表头
样本信息行1
样本信息行2

差异分析结果表头
差异分析结果行1
...

通过关键词或分隔符定位分界点:

# 读取输出文件内容
with open("analysis_output.txt", "r") as f:
    output_lines = f.readlines()

# 优先通过差异分析表头关键词定位(如log2FC、pvalue)
split_idx = None
for i, line in enumerate(output_lines):
    if "log2FC" in line or "pvalue" in line:
        split_idx = i
        break

# 备选方案:通过分隔符或空行定位
if not split_idx:
    for i, line in enumerate(output_lines):
        stripped_line = line.strip()
        if stripped_line == "---" or not stripped_line:
            split_idx = i
            break

if not split_idx:
    raise ValueError("无法定位样本信息与差异结果的分界点,请检查输出文件结构")

步骤3:插入Tags列并生成最终文件

# 处理样本信息部分,添加Tags列
sample_info_lines = output_lines[:split_idx]
# 修改表头,追加Tags列名
sample_info_lines[0] = f"{sample_info_lines[0].strip()}\t{target_tag_col}\n"

# 为每一行样本信息匹配对应的Tags值
for i in range(1, len(sample_info_lines)):
    sample_id = sample_info_lines[i].split("\t")[0]  # 假设第一列为样本ID
    tag_val = sample_tag_map.get(sample_id, "NA")
    sample_info_lines[i] = f"{sample_info_lines[i].strip()}\t{str(tag_val)}\n"

# 拼接最终内容并写入
final_content = sample_info_lines + output_lines[split_idx:]
with open("final_analysis_output.txt", "w") as f:
    f.writelines(final_content)

通用化优化点

  • 支持自定义样本ID列、Tags列的匹配规则,适应不同命名习惯
  • 增加异常捕获机制,处理样本ID不匹配、文件格式错误等情况
  • 封装为命令行脚本,通过参数指定输入输出路径,方便批量处理

内容的提问来源于stack exchange,提问作者PesKchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:40:16