Perl с извлечением последовательности FASTA имеет проблемы (только) с первой последовательностью

 // To detect whether a circular loop exists in a linked list
public boolean findCircularLoop() {
    Node slower, faster;
    slower = head;
    faster = head.next; // start faster one node ahead
    while (true) {

        // if the faster pointer encounters a NULL element
        if (faster == null || faster.next == null)
            return false;
        // if faster pointer ever equals slower or faster's next
        // pointer is ever equal to slower then it's a circular list
        else if (slower == faster || slower == faster.next)
            return true;
        else {
            // advance the pointers
            slower = slower.next;
            faster = faster.next.next;
        }
    }
}
-1
задан user926918 17 January 2019 в 08:04
поделиться

2 ответа

Вы установили разделитель записи на \n>. Это не относится к первой последовательности.

Фиксированная кодовая последовательность:

...
chomp $seq;

# for first sequence
$seq =~ s/^>//;

my ($id) = $seq =~ /^(\S+)/;
if ($id eq $lookup) {
...

Обратите внимание, что ваша реализация крайне неэффективна, поскольку она читает & amp; анализирует содержимое файла для каждого запроса. Как насчет разделения загрузки / разбора и запросов на отдельные функции?

Альтернативное решение: предоставить загрузчику полный список значений поиска. Затем он заполнил бы массив ответов при обнаружении совпадений во время чтения файла.

0
ответ дан Stefan Becker 17 January 2019 в 08:04
поделиться

$/ - это разделитель входной записи, настройка local $/="\n>"; заключается в том, что вход разбивается на запись, заканчивающуюся \n>, после chomp окончание удаляется, однако />*(\S+)/ может не совпадать, так как > используется из предыдущей записи.

из FASTA wikipedia строка, начинающаяся с >, является комментарием и не всегда может быть идентификатором. Однако в случае, если это всегда так, следующее может исправить.

my ($id,$seq) = $seq =~ /^>*(.*)\n(\S+)/;
0
ответ дан Nahuel Fouilleul 17 January 2019 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: