我想确定每个基因的得分然而,为此,我需要设置一个条件来识别分数(第3列分数列表),该分数位于基因列表的第3列和第4列的给定范围之间的一个位置
基因列表:
chr1 TAS1R1 6615000 6615100
chr1 TAS1R1 6615130 6615200
chr5 TCERG1 145858055 145858216
分数列表:
rs79923433 chr1 6615060 0.327009537545002 0.177578086220885
rs4908925 chr1 6615107 0.492182375024342 0.278821401692196
rs114220820 chr1 6615172 0.24581165286421 0.129806066087895
rs925345 chr5 145858100 1.22569136462918 0.744498627741366
我想要什么:
chr1 TAS1R1 6615000 6615100 0.327009537545002
chr1 TAS1R1 6615130 6615200 0.24581165286421
chr5 TCERG1 145858055 145858216 1.22569136462918
带awk:
awk '
NR == FNR {score[$3] = $4; next}
{
for (key in score)
if ($3 <= key && key <= $4)
print $0, score[key]
}
' score.list gene.list
chr1 TAS1R1 6615000 6615100 0.327009537545002
chr1 TAS1R1 6615130 6615200 0.24581165286421
chr5 TCERG1 145858055 145858216 1.22569136462918
这并不是非常有效,因为你必须迭代每一行基因的所有分数,但它非常简单。