我有一个fasta文件,其中的标题如下所示:
>scf7180000349958_18140-5p
>scf7180000350303_40840-5p
>scf7180000349939_17296-5p
>scf7180000350072_24702-5p
>scf7180000347531_4577-3p
>scf7180000350345_46159-3p我想在密钥文件中为这个头添加一个前缀。问题是密钥文件中的in只是部分的(缺少-5p或-3p部分),这使我更难解决它。
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发布于 2022-04-26 22:11:22
使用awk
$ 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文件中的所有内容。
https://stackoverflow.com/questions/72016885
复制相似问题