Я использовал модуль use Bio::DB::Fasta для доступа к файлам fasta (документация здесь:https://metacpan.org/pod/Bio::DB::Fasta#OBJECT-METHODS). Я считаю, что это гораздо быстрее, чем использование Samtools для извлечения позиций из файла 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 (на основе количества символов, исключая заголовок).