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

基于外部Pseudo_ID文件生成GWAS表型病例/对照列的Linux实现

全基因组关联分析(GWAS)表型文件处理方案(Linux命令实现)

需求背景

现有包含44k研究对象的主文件(列顺序:FID、IID、Pseudo_ID),需新增第4列ICD_10,赋值规则:

  • 匹配病例文件中Pseudo_ID的行赋值1
  • 匹配对照文件中Pseudo_ID的行赋值0
  • 其余行赋值NA

假设文件命名:

  • 主文件:all_samples.txt
  • 病例Pseudo_ID文件:cases.txt(每行一个ID)
  • 对照Pseudo_ID文件:controls.txt(每行一个ID)

分步解决(对应你的三个问题)

1. 构建Pseudo_ID与表型值的映射文件

先把病例和对照的ID分别对应1和0,生成临时映射文件,方便后续关联:

# 生成病例ID到1的映射
awk '{print $0, 1}' cases.txt > pheno_map.txt
# 追加对照ID到0的映射
awk '{print $0, 0}' controls.txt >> pheno_map.txt

2. 处理主文件:新增表头+关联赋值+填充NA

用awk一次性完成三个需求,命令如下:

awk '
BEGIN {OFS=" "}  # 设置输出列分隔符为空格(匹配示例输出格式)
# 第一步:读取映射文件,将ID和对应值存入数组map
NR==FNR {map[$1]=$2; next}
# 第二步:处理主文件
FNR==1 {print $0, "ICD_10"; next}  # 给第一行表头追加ICD_10
{
    # 匹配到映射的输出对应值,否则输出NA
    if ($3 in map) print $0, map[$3]
    else print $0, "NA"
}
' pheno_map.txt all_samples.txt > final_pheno.txt

示例验证

用你提供的示例数据测试:

  • all_samples.txt内容:
FID IID Pseudo_ID
1 150023532 E78GJHI
1 150023457 E96GH25
1 150075826 E56HFT7
1 150065943 EH87HN7
1 150034923 ENM8H53
  • cases.txt内容:
E78GJHI
ENM8H53
  • controls.txt内容:
E96GH25
EH87HN7

执行上述命令后,final_pheno.txt的输出与你期望的一致:

FID IID Pseudo_ID ICD_10
1 150023532 E78GJHI 1
1 150023457 E96GH25 0
1 150075826 E56HFT7 NA
1 150065943 EH87HN7 0
1 150034923 ENM8H53 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:33