我一直在使用模块使用Bio :: DB :: Fasta访问fasta文件(文档:https://metacpan.org/pod/Bio::DB::Fasta#OBJECT-METHODS)。我发现这比使用Samtools从fasta文件中提取位置要快得多。但是,我想知道是否有人知道如果查询包含超出法塔最大长度的位置会发生什么。
今天,在查询中,我尝试访问fasta中超出fasta最大位置的位置。但是,在这种情况下,该方法没有给出错误。我的fasta文件包含0/1基数,返回的输出为“1”。我想知道这是一个错误还是事实上它提供了有效的输出但是错误的位置。我尝试查看文档,但找不到有关错误代码的任何信息。
我的代码如下:
use strict;
use warnings;
use Bio::DB::Fasta;
my $maskFile = "1KG_maskfile.fa";
my $db = Bio::DB::Fasta->new($maskFile);
my $chrom = "chr1";
my $start = 300240548;
my $end = 300240548;
my $query = "$chrom:$start-$end";
my $seq = $db->seq($query, $start, $end); # also tried $seq = $db->seq($query);
print $seq, "\n";
注意:在1KG_maskfile.fa中,最大位置为249224750(基于字符数,不包括标题)。
答案 0 :(得分:0)
我在这里看到两个问题。第一个问题是你没有正确格式化查询ID,除非你在Fasta标题中有开始/结束位置(这将是奇怪的)。要按区域获得所需的序列,只需指定特定的ID和坐标,即
my $seq = $db->seq('chr1', 25000, 27000);
您提到的另一个问题看起来像一个错误。如果开始/停止位置超出实际序列长度,我认为没有任何明确的检查。我只是测试了它,并且方法无声地失败了。该代码中有很多其他格式检查,这可能是一个好事,可以作为一个bug报告。