我想exonic
在我的.tsv
文件中 grep ,前提是该文件的第 13 列包含p.
.
你能帮我提供我需要的代码吗?
注意:由于也存在没有氨基酸变化的外显子变体,因此我想过滤第13列中提到的氨基酸变化的外显子变体。
p.
代表氨基酸变化,例子是CD24:uc004ftz.1:exon1:c.A130T:p.T44S
p.
对于所有具有氨基酸变化的变体来说都是常见的。
这是一个例子:
hrY 21154569 21154569 A G PASS hom exonic CD24 . synonymous SNV CD24:NM_001291737:exon1:c.T27C:p.L9L,CD24:NM_001359084:exon1:c.T27C:p.L9L,CD24:NM_013230:exon1:c.T27C:p.L9L,CD24:NM_001291738:exon2:c.T27C:p.L9L
在新注释的.tsv
文件中,有时我们对不同列中的每个变体有 3 个不同的定义。例如,一个变体可以同时定义为外显子、UTR和内含子(基于所使用的不同数据库)。
我要过滤真正的外显子变体,因为某些外显子变体没有氨基酸变化(p.*
)
答案1
使用乐(以前称为 Perl_6)
raku -ne '.put if .words[12].match("p.") && .match("exonic") ;'
输入示例:
hrY 21154569 21154569 A G PASS hom exonic CD24 . synonymous SNV CD24:NM_001291737:exon1:c.T27C:p.L9L,CD24:NM_001359084:exon1:c.T27C:p.L9L,CD24:NM_013230:exon1:c.T27C:p.L9L,CD24:NM_001291738:exon2:c.T27C:p.L9L
hrY 21154569 21154569 A G PASS hom exonic CD24 . synonymous SNV CD24:NM_001291737:exon1:c.T27C:q.L9L,CD24:NM_001359084:exon1:c.T27C:q.L9L,CD24:NM_013230:exon1:c.T27C:q.L9L,CD24:NM_001291738:exon2:c.T27C:q.L9L
hrY 21154569 21154569 A G PASS hom intronic CD24 . synonymous SNV CD24:NM_001291737:exon1:c.T27C:p.L9L,CD24:NM_001359084:exon1:c.T27C:p.L9L,CD24:NM_013230:exon1:c.T27C:p.L9L,CD24:NM_001291738:exon2:c.T27C:p.L9L
示例输出:
hrY 21154569 21154569 A G PASS hom exonic CD24 . synonymous SNV CD24:NM_001291737:exon1:c.T27C:p.L9L,CD24:NM_001359084:exon1:c.T27C:p.L9L,CD24:NM_013230:exon1:c.T27C:p.L9L,CD24:NM_001291738:exon2:c.T27C:p.L9L
上面是一个答案编码乐,Perl 编程语言家族的成员。 Perl6 项目于 2000 年启动,语言名称于 2019 年从 Perl6 更改为 Raku。简单来说,使用以下命令创建测试输入文件:
- 您的真实 tsv 文本为第 1 行;
- 第 2 行用“
q.
”代替“p.
” - 测试输入文件的第 3 行用单词“
intronic
”代替单词“exonic
”;
上面的 Raku 代码搜索第 12 列中包含match
文字“ ”的行(index_0 位于第 13 列)。如果单词“ ”也有一个,则返回该行。如果第一个(即左边的“ ”)条件计算结果为 ,(短路 AND 运算符)会立即跳过该行。p.
.words[12]
match
exonic
&&
p.
False
grep
请注意,如果您习惯编写正则表达式,则可以使用 Raku 的例程。
https://docs.raku.org/routine/match
https://docs.raku.org/routine/grep
https://raku.org