首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FASTA文件中搜索motif,并返回包含该motif的每个序列的标题行

在FASTA文件中搜索motif,并返回包含该motif的每个序列的标题行
EN

Stack Overflow用户
提问于 2010-12-01 21:40:19
回答 2查看 2.2K关注 0票数 3

下面是我在命令行输入的FASTA文件中搜索用户提供的motif的代码。当我运行它并输入一个我知道在文件中的motif时,它返回'Motif not found‘。我只是Perl的初学者,我不知道如何打印motif found,更不用说返回标题行了。如果您能帮助我解决这个问题,我将不胜感激。

谢谢。

代码语言:javascript
复制
use warnings;
use strict;


my $motif;  
my $filename;  
my @seq;   
#my $motif_found;  
my $scalar;  

$filename = $ARGV[0];  

open (DNAFILE,$filename) || die "Cannot open file\n";
@seq = split(/[>]/, $filename);
print "Enter a motif to search for; ";

$motif = <STDIN>;  

chomp $motif;  
foreach $scalar(@seq) {  
    if ($scalar =~ m/$motif/ig) {
        print "Motif found in following sequences\n";  
        print $scalar;  
    } else {
        print "Motif was not found\n";  
    }  
}  
close DNAFILE;
EN

回答 2

Stack Overflow用户

发布于 2010-12-01 23:26:23

“使用自己的”Fasta解析器是没有意义的。BioPerl已经花了几年的时间开发了一个,不使用它将是愚蠢的。

代码语言:javascript
复制
use strict;
use Bio::SeqIO;

my $usage = "perl dnamotif.pl <fasta file> <motif>";
my $fasta_filename = shift(@ARGV) or die("Usage: $usage $!");
my $motif = shift(@ARGV) or die("Usage: $usage $!");

my $fasta_parser = Bio::SeqIO->new(-file => $fasta_filename, -format => 'Fasta');
while(my $seq_obj = $fasta_parser->next_seq())
{
  printf("Searching sequence '%s'...", $seq_obj->id);
  if((my $pos = index($seq_obj->seq(), $motif)) != -1)
  {
    printf("motif found at position %d!\n", $pos + 1);
  }
  else
  {
    printf("motif not found.\n");
  }
}

此程序仅查找每个序列中第一个基序匹配的位置(从1开始)。可以很容易地对它进行编辑,以找到每个匹配的位置。它也可能无法以您想要/需要的格式打印内容。我将把这些问题作为“给读者的练习”:)

如果您需要下载BioPerl,请尝试this link。如果你有任何问题,请告诉我。

对于像这样的生物信息学问题,我发现BioStar论坛非常有帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-12-01 22:02:50

您正在尝试读取文件名,而不是文件句柄。

替换

代码语言:javascript
复制
@seq = split(/[>]/, $filename);

通过

代码语言:javascript
复制
@seq = <DNAFILE>

(如果需要,也可以拆分-我不知道拆分/>/应该做什么:在[]中放一个字符是没有意义的)。

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

https://stackoverflow.com/questions/4324901

复制
相关文章

相似问题

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