用 DNA 字母替换数字基因型代码
Replace numeric genotype code with DNA letter
如何用 DNA 字母替换数字基因型代码?
我有一个修改后的 vcf 文件,看起来像这样:
POS REF ALT A2.bam C10.bam
448 T C 0/0:0,255,255 0/0:0,255,255
2402 C T 1/1:209,23,0 xxx:255,0,255
n...
我想用 ref 字母替换 0/0,用 alt 字母替换 1/1 并删除它后面的所有字符串。
它应该看起来像这样:
POS REF ALT A2.bam C10.bam
448 T C T T
2402 C G G xxx
n...
一直在尝试用 sed 来做,但没有成功
不知道如何处理它
你要不要试试:
awk '{
if (NR > 1) {
for (i=4; i<=5; i++) {
split($i, a, ":")
$i = a[1]
if ($i == "0/0") $i =
if ($i == "1/1") $i =
}
}
print
}' file.txt
输出:
POS REF ALT A2.bam C10.bam
448 T C T T
2402 C T T xxx
n...
for
循环处理第 4 和第 5 列(A2.bam
和 C10.bam
)。
- 首先它会截掉“:”之后的子串。
- 如果剩余的值等于“0/0”,则将其替换为第2列(
REF
)。
- 如果是“1/1”,则使用第 3 列 (
ALT
)。
希望对您有所帮助。
如何用 DNA 字母替换数字基因型代码? 我有一个修改后的 vcf 文件,看起来像这样:
POS REF ALT A2.bam C10.bam
448 T C 0/0:0,255,255 0/0:0,255,255
2402 C T 1/1:209,23,0 xxx:255,0,255
n...
我想用 ref 字母替换 0/0,用 alt 字母替换 1/1 并删除它后面的所有字符串。 它应该看起来像这样:
POS REF ALT A2.bam C10.bam
448 T C T T
2402 C G G xxx
n...
一直在尝试用 sed 来做,但没有成功 不知道如何处理它
你要不要试试:
awk '{
if (NR > 1) {
for (i=4; i<=5; i++) {
split($i, a, ":")
$i = a[1]
if ($i == "0/0") $i =
if ($i == "1/1") $i =
}
}
print
}' file.txt
输出:
POS REF ALT A2.bam C10.bam
448 T C T T
2402 C T T xxx
n...
for
循环处理第 4 和第 5 列(A2.bam
和C10.bam
)。- 首先它会截掉“:”之后的子串。
- 如果剩余的值等于“0/0”,则将其替换为第2列(
REF
)。 - 如果是“1/1”,则使用第 3 列 (
ALT
)。
希望对您有所帮助。