根据bete和se计算gwas数据中的Z

 awk 'NR==1{print $0 " Z";next} {if($6=="NA" || $7=="NA" || $7==0){print $0, "NA"} else {printf "%s %f\n", $0, $6/$7}}' test.txt | column -t > test_Z.txt

计算gwas数据中的Z。当beta或者se为NA或者se为0时,输出NA
输入数据:

CHROM   POS     SNP     A2      A1      beta    se      pval
1       54676   rs2462492       C       T       0.00310951      0.00348526      0.372000051494865
1       55326   rs3107975       T       C       NA      0.032341        0.966233743154665
1       79137   rs143777184     A       T       76554   NA      1.1296208505696
1       86028   rs114608975     T       C       0.0022  64434   NA
1       91536   rs1251109649    G       T       0.0579919       0.0916  0
1       234313  rs8179466       C       T       0.00304548      0.966576        0.357272838151929
1       526736  rs28863004      C       G       -0.00466575     0.00603352      0.439000484956254
1       533198  rs1557498752    C       T       NA      -0.0116174      0.972317942492195
1       534192  rs6680723       C       T       89403   NA      1.02600954251891
1       544584  rs576404767     C       T       0.00405 68422   NA
1       546697  rs12025928      A       G       0.9914  0.236   0
1       565130  rs371431021     G       A       0.0344858       0.215383        0.994763862597434
1       565196  rs139723294     T       C       0.00895702      0.00590608      0.129999894541902
1       565469  rs554127336     C       T       NA      -0.00809044     0.956322998061718

输出数据:

CHROM  POS     SNP           A2  A1  beta         se           pval               Z
1      54676   rs2462492     C   T   0.00310951   0.00348526   0.372000051494865  0.892189
1      55326   rs3107975     T   C   NA           0.032341     0.966233743154665  NA
1      79137   rs143777184   A   T   76554        NA           1.1296208505696    NA
1      86028   rs114608975   T   C   0.0022       64434        NA                 0.000000
1      91536   rs1251109649  G   T   0.0579919    0.0916       0                  0.633099
1      234313  rs8179466     C   T   0.00304548   0.966576     0.357272838151929  0.003151
1      526736  rs28863004    C   G   -0.00466575  0.00603352   0.439000484956254  -0.773305
1      533198  rs1557498752  C   T   NA           -0.0116174   0.972317942492195  NA
1      534192  rs6680723     C   T   89403        NA           1.02600954251891   NA
1      544584  rs576404767   C   T   0.00405      68422        NA                 0.000000
1      546697  rs12025928    A   G   0.9914       0.236        0                  4.200847
1      565130  rs371431021   G   A   0.0344858    0.215383     0.994763862597434  0.160114
1      565196  rs139723294   T   C   0.00895702   0.00590608   0.129999894541902  1.516576
1      565469  rs554127336   C   T   NA           -0.00809044  0.956322998061718  NA

这个命令的含义是:读取名为test.txt的文件内容,对每一行进行处理,按照一定的规则生成新的输出,并将结果保存到名为test_Z.txt的文件中。
其中,awk命令由两部分组成,用单引号括起来。第一个部分是对第一行的处理,即在第一行的末尾添加一个名为Z的新列名,然后忽略此行,继续对下一行进行处理。具体来说,NR==1表示当前处理的行号为1,$0表示整行内容," Z"表示要添加的新列名,next表示跳过当前行,继续对下一行进行处理。

第二个部分是对非第一行的处理,即根据条件生成新的输出。具体来说,这个部分使用了一个if语句,判断当前行的第6列(即beta)和第7列(即se)是否为NA或0。如果是,则输出当前行内容和NA;否则,使用printf函数按照一定的格式输出当前行的内容和计算出的Z值(即beta/se),并将结果保存到test_Z.txt文件中。其中,%f表示输出浮点数,\n表示换行符。

最后,这个命令使用了column命令将输出结果格式化为表格形式,以便于查看和分析。">"符号表示将结果输出到test_Z.txt文件中,而不是终端。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值