有时候需要在 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” 获取下载链接。
![]() | ![]() |
敬告:使用文中脚本请引用本文网址,请尊重本人的劳动成果,谢谢!