首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用部分匹配向fasta标头添加前缀

使用部分匹配向fasta标头添加前缀
EN

Stack Overflow用户
提问于 2022-04-26 15:47:14
回答 1查看 41关注 0票数 0

我有一个fasta文件,其中的标题如下所示:

代码语言:javascript
复制
>scf7180000349958_18140-5p
>scf7180000350303_40840-5p
>scf7180000349939_17296-5p
>scf7180000350072_24702-5p
>scf7180000347531_4577-3p
>scf7180000350345_46159-3p

我想在密钥文件中为这个头添加一个前缀。问题是密钥文件中的in只是部分的(缺少-5p或-3p部分),这使我更难解决它。

代码语言:javascript
复制
Map file
IDs prefix
scf7180000349958_18140  mir-67
scf7180000350303_40840  let-7
scf7180000349939_17296  mir-252
scf7180000350072_24702  mir-11
scf7180000347531_4577   mir-124
scf7180000350345_46159  mir-449

#Expected results in fasta file
>mir-67_scf7180000349958_18140-5p
>let-7_scf7180000350303_40840-5p
>mir-252_mir-252_scf7180000349939_17296-5p
>mir-11_scf7180000350072_24702-5p
>mir-124_scf7180000347531_4577-3p
>mir-449_scf7180000350345_46159-3p
EN

回答 1

Stack Overflow用户

发布于 2022-04-26 22:11:22

使用awk

代码语言:javascript
复制
$ awk 'NR == FNR { ids[sprintf(">%s", $1)]=$2; next }
       $1 in ids { $1 = sprintf(">%s_%s", ids[$1], substr($1, 2)); }
       1' map.txt FS=- OFS=- input.fasta
>mir-67_scf7180000349958_18140-5p
>let-7_scf7180000350303_40840-5p
>mir-252_scf7180000349939_17296-5p
>mir-11_scf7180000350072_24702-5p
>mir-124_scf7180000347531_4577-3p
>mir-449_scf7180000350345_46159-3p

首先将映射文件中的所有id和前缀存储在数组中,然后将字段分隔符(输入和输出)设置为破折号,这样您就可以轻松地引用id的前导部分,对于fasta文件中的每一行,如果数组中存在该前导id,则向其添加前缀,并打印fasta文件中的所有内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72016885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档