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

vt decompose拆分多等位位点后median_DP未拆分的处理方法求助

方案1:单行awk命令实现(最便捷,无需额外依赖)

逻辑:以chr + pos + ref作为唯一分组标识,每个分组内按alt出现顺序对应DP列表的下标即可实现自动匹配,命令如下:

awk 'BEGIN{FS=OFS="\t"} NR==1{print; next} {key=$1"_"$2"_"$3"_"$4} !(key in dp_arr){split($6, dp_arr[key], ","); cnt[key]=0} {cnt[key]++; print $1,$2,$3,$4,$5, dp_arr[key][cnt[key]]}' your_input.tsv > output.tsv

参数说明:

  • 假设你的输入是制表符分隔的TSV文件,前5列对应Chr、pos、其他位置标识、ref、alt,第6列为median DP的逗号分隔字符串
  • 自动为每个新位点拆分DP值存入数组,同一位点的多个alt按出现顺序依次取对应下标的DP值,支持最多46个等位位点的场景
  • 如果你的输入是多空格分隔的格式,把BEGIN块的FS=OFS="\t"改为FS="[[:space:]]+"即可适配

方案2:Python Pandas实现(可读性更高,方便后续扩展其他处理)

如果需要后续继续处理变异数据,用pandas的分组操作更直观:

import pandas as pd

# 读取输入表,列名可根据你的实际字段调整
df = pd.read_csv("your_input.tsv", sep="\t")

# 分组处理:每个位点按alt顺序提取对应DP
def extract_dp(group):
    dp_list = group["median DP"].iloc[0].split(",")
    group["median DP"] = dp_list[:len(group)]
    return group

df = df.groupby(["Chr", "pos", "ref"], group_keys=False).apply(extract_dp)

# 输出结果
df.to_csv("output.tsv", sep="\t", index=False)

两种方案都可以直接适配你给出的示例数据,输出结果和你需要的目标格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:03