有时候需要在 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” 获取下载链接。

生信之巅微信公众号生信之巅小程序码

敬告:使用文中脚本请引用本文网址,请尊重本人的劳动成果,谢谢!Notice: When you use the scripts in this article, please cite the link of this webpage. Thank you!

Edited on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Hualin Liu WeChat Pay

WeChat Pay

Hualin Liu Alipay

Alipay