如何将字符串添加到 fasta 标识符
How to add strings to fasta identifiers
我有一个包含多个序列的 fasta 文件:
grep -e ">" seq.fasta
>mmu_miR_8109
>mmu_miR_8110
>mmu_miR_8111
>mmu_miR_8112
>mmu_miR_8113
>mmu_miR_8114
>LQNS02136402.1_14821_5p
>LQNS02278094.1_35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p
我想在序列标识符中添加另一部分,使其看起来像这样:
grep -e ">" results.fasta"
>mmu_miR_8109 MOUSE Mus musculus miR_8109
>mmu_miR_8110 MOUSE Mus musculus miR_8110
>mmu_miR_8111 MOUSE Mus musculus miR_8111
>mmu_miR_8112 MOUSE Mus musculus miR_8112
>mmu_miR_8113 MOUSE Mus musculus miR_8113
>mmu_miR_8114 MOUSE Mus musculus miR_8114
>LQNS02136402.1_14821_5p MOUSE Mus musculus 14821_5p
>LQNS02278094.1_35771_5p MOUSE Mus musculus 35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p MOUSE Mus musculus 18963_3p
请注意,MOUSE Mus musculus 始终相同,每个标识符的最后部分等于第 1 列的最后部分“_to_keep”
到目前为止我已经做到了:
grep -e ">" seq.fasta | sed 's/>.*/& MOUSE/' | sed 's/>.*/& Mus musculus/'
但是我遗漏了最后一部分(保留最后的值)以及如何应用它来对 fasta 文件进行更改。
希望有人能帮忙。谢谢!!
这里有一个简单的awk方法,把FS设置为下划线似乎很方便。当一行是 header 时,我们通过添加固定字符串和现有字符串的最后两部分来修改它,并打印所有带有 1
.
的行
awk -F_ '/>/{[=10=] = [=10=] " MOUSE Mus musculus " $(NF-1) FS $NF} 1' file
输出:
>mmu_miR_8109 MOUSE Mus musculus miR_8109
>mmu_miR_8110 MOUSE Mus musculus miR_8110
>mmu_miR_8111 MOUSE Mus musculus miR_8111
>mmu_miR_8112 MOUSE Mus musculus miR_8112
>mmu_miR_8113 MOUSE Mus musculus miR_8113
>mmu_miR_8114 MOUSE Mus musculus miR_8114
>LQNS02136402.1_14821_5p MOUSE Mus musculus 14821_5p
>LQNS02278094.1_35771_5p MOUSE Mus musculus 35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p MOUSE Mus musculus 18963_3p
确认输出良好后,您可以修改现有文件,如下所示:
awk -F_ '/>/{[=12=] = [=12=] " MOUSE Mus musculus " $(NF-1) FS $NF} 1' file > file.tmp && mv file.tmp file
在继续之前始终备份您的数据。
这可能适合您 (GNU sed):
sed -Ei 's/(.*_(.*_\S*)).*/ MOUSE Mus musculus /' file
我有一个包含多个序列的 fasta 文件:
grep -e ">" seq.fasta
>mmu_miR_8109
>mmu_miR_8110
>mmu_miR_8111
>mmu_miR_8112
>mmu_miR_8113
>mmu_miR_8114
>LQNS02136402.1_14821_5p
>LQNS02278094.1_35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p
我想在序列标识符中添加另一部分,使其看起来像这样:
grep -e ">" results.fasta"
>mmu_miR_8109 MOUSE Mus musculus miR_8109
>mmu_miR_8110 MOUSE Mus musculus miR_8110
>mmu_miR_8111 MOUSE Mus musculus miR_8111
>mmu_miR_8112 MOUSE Mus musculus miR_8112
>mmu_miR_8113 MOUSE Mus musculus miR_8113
>mmu_miR_8114 MOUSE Mus musculus miR_8114
>LQNS02136402.1_14821_5p MOUSE Mus musculus 14821_5p
>LQNS02278094.1_35771_5p MOUSE Mus musculus 35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p MOUSE Mus musculus 18963_3p
请注意,MOUSE Mus musculus 始终相同,每个标识符的最后部分等于第 1 列的最后部分“_to_keep”
到目前为止我已经做到了:
grep -e ">" seq.fasta | sed 's/>.*/& MOUSE/' | sed 's/>.*/& Mus musculus/'
但是我遗漏了最后一部分(保留最后的值)以及如何应用它来对 fasta 文件进行更改。 希望有人能帮忙。谢谢!!
这里有一个简单的awk方法,把FS设置为下划线似乎很方便。当一行是 header 时,我们通过添加固定字符串和现有字符串的最后两部分来修改它,并打印所有带有 1
.
awk -F_ '/>/{[=10=] = [=10=] " MOUSE Mus musculus " $(NF-1) FS $NF} 1' file
输出:
>mmu_miR_8109 MOUSE Mus musculus miR_8109
>mmu_miR_8110 MOUSE Mus musculus miR_8110
>mmu_miR_8111 MOUSE Mus musculus miR_8111
>mmu_miR_8112 MOUSE Mus musculus miR_8112
>mmu_miR_8113 MOUSE Mus musculus miR_8113
>mmu_miR_8114 MOUSE Mus musculus miR_8114
>LQNS02136402.1_14821_5p MOUSE Mus musculus 14821_5p
>LQNS02278094.1_35771_5p MOUSE Mus musculus 35771_5p
>Dpu-Mir-22-P2_LQNS02276481.1_18963_3p MOUSE Mus musculus 18963_3p
确认输出良好后,您可以修改现有文件,如下所示:
awk -F_ '/>/{[=12=] = [=12=] " MOUSE Mus musculus " $(NF-1) FS $NF} 1' file > file.tmp && mv file.tmp file
在继续之前始终备份您的数据。
这可能适合您 (GNU sed):
sed -Ei 's/(.*_(.*_\S*)).*/ MOUSE Mus musculus /' file