有时候需要在 FASTA 格式的文件中搜索短的保守序列,这个时候采用查找法比使用 blast 等序列比对更加人性化。但是要注意避坑,即 FASTA 文档中的序列一般是被打断为许多行的,如果要查找的目标序列恰好在断行处,是没有办法直接揪出它的,所以在查找前需要将序列中间的换行符去掉,将其变为一行。
该任务可以通过 Perl 脚本 search_short_seqs.pl 实现。
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
# Author: Liu Hualin | |
# Date: Oct 20, 2021 | |
local $/ = ">"; | |
open IN, "$ARGV[0]" || die; | |
open OUT, ">Target_seqs.fa" || die; | |
my $str = $ARGV[1]; | |
<IN>; | |
while (<IN>) { | |
chomp; | |
my ($id, $seq) = split ("\n", $_, 2); | |
$seq=~s/[\r\n]+//g; | |
if ($seq=~/$str/i) { | |
print OUT ">$id\n$seq\n"; | |
} | |
} | |
close IN; | |
close OUT; |
运行方法:将 search_short_seqs.pl 与输入文件(FASTA 文件)放在同一目录中,在终端里运行如下命令
perl search_short_seqs.pl FASTA文件 要查找的序列 |
带有搜索序列的序列将输出到文件 Target_seqs.fa 中。
# 脚本获取
关注公众号 “生信之巅”,聊天窗口回复 “6a93” 获取下载链接。
敬告:使用文中脚本请引用本文网址,请尊重本人的劳动成果,谢谢!