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

按条件复制行指定值 替换表格第一列FALSE为对应主蛋白ID

蛋白质数据集批量替换实现方案

核心逻辑

每个蛋白条目区块中,将数据行第一列的FALSE替换为当前区块首行第三列的主蛋白ID值。

原始数据集示例

High    Master Protein  Q8WHN2
Checked Confidence      Annotated Sequence
FALSE   High            [K].GWSVNIEYTDDPHPR.[N]
FALSE   High            [R].LTQGTFSFLPDLTDDQISK.[Q]
FALSE   High            [-].MRLTQGTFSFLPDLTDDQISK.[Q]
High    Master Protein  A0A345UA09
Checked Confidence      Annotated Sequence
FALSE   High            [R].DGEIILR.[Y]
FALSE   High            [R].DGEIILRYVSYSLLAGDPSVLEDR.[C]
FALSE   High            [-].MIDAFSR.[VIT]
FALSE   High            [R].YVSYSLLAGDPSVLEDR.[C]

预期处理结果示例

High    Master Protein  Q8WHN2
Checked Confidence      Annotated Sequence
Q8WHN2  High            [K].GWSVNIEYTDDPHPR.[N]
Q8WHN2  High            [R].LTQGTFSFLPDLTDDQISK.[Q]
Q8WHN2  High            [-].MRLTQGTFSFLPDLTDDQISK.[Q]
High    Master Protein  A0A345UA09
Checked Confidence      Annotated Sequence
A0A345UA09  High        [R].DGEIILR.[Y]
A0A345UA09  High        [R].DGEIILRYVSYSLLAGDPSVLEDR.[C]
A0A345UA09  High        [-].MIDAFSR.[VIT]
A0A345UA09  High        [R].YVSYSLLAGDPSVLEDR.[C]

实现方法

方法1:awk 命令行快速处理(适合单文件批量处理)

如果数据集是以制表符作为分隔符,直接执行以下命令即可:

awk 'BEGIN{FS=OFS="\t"} /^High/{current_pid=$3} /^FALSE/{$1=current_pid}1' input.txt > output.txt
  • 逻辑说明:
    • 首先设置输入输出分隔符为制表符
    • 匹配到以High开头的行时,提取第三列内容作为当前区块的蛋白ID
    • 匹配到以FALSE开头的数据行时,将第一列替换为存储的蛋白ID
    • 所有行原样输出到新文件

如果数据集是用多个空格分隔,修改分隔符设置即可:

awk 'BEGIN{FS="\\s+";OFS="\t"} /^High/{current_pid=$3} /^FALSE/{$1=current_pid}1' input.txt > output.txt

方法2:Python 代码实现(适合二次开发集成)

current_pid = ""
# 替换为你的输入输出文件路径
with open("input.txt", "r", encoding="utf-8") as f_in, open("output.txt", "w", encoding="utf-8") as f_out:
    for line in f_in:
        line = line.rstrip("\n")
        parts = line.split("\t")  # 若为多空格分隔改为 parts = line.split()
        if parts[0] == "High":
            current_pid = parts[2]
            f_out.write(line + "\n")
        elif parts[0] == "FALSE":
            parts[0] = current_pid
            f_out.write("\t".join(parts) + "\n")
        else:
            f_out.write(line + "\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:00