Я новичок в perl и хотел бы сделать то, что, по моему мнению, является одним из основных манипуляций с строками в последовательности ДНК, хранящиеся в файле rtf.Основные регулярные выражения и манипуляции с строкой для анализа ДНК с использованием perl
По сути, мой файл читает (файл в формате FASTA):
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGG
TAATACGTAGGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGCGC
GCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTTAACCGGGGAG
GGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAG
GCGACTCTCTGGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCA
AACAGGATTAGATACCCTGGTAGTCCACGCCGT
То, что я хотел бы сделать, это прочитать в мой файл и напечатать заголовок (заголовок> LM1), то соответствует следующей ДНК последовательности GTGCCAGCAGCCGC
, а затем распечатать предыдущую последовательность ДНК.
Так что мой результат будет выглядеть следующим образом:
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
Я написал следующую программу:
#!/usr/bin/perl
use strict; use warnings;
open(FASTA, "<seq_V3_V6_130227.rtf") or die "The file could not be found.\n";
while(<FASTA>) {
chomp($_);
if ($_ =~ m/^>/) {
my $header = $_;
print "$header\n";
}
my $dna = <FASTA>;
if ($dna =~ /(.*?)GTGCCAGCAGCCGC/) {
print "$dna";
}
}
close(FASTA);
Проблема заключается в том, что моя программа читает файл построчно, а выход я получаю это следующий:
>LM1
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
в принципе я не знаю, как назначить всю последовательность ДНК моего переменный $ днк и в конечном счете, не знаю, как чтобы избежать прослеживания последовательности ДНК последовательно. Также я получаю это предупреждение: Использование неинициализированного значения $ dna в соответствии с шаблоном (m //) в stacked.pl строке 14, строка 1113.
Если кто-нибудь может мне помочь с написанием лучшего кода или указать мне в правильном направлении это было бы очень признательно.
У вас нет биоинформатики, у парней есть уже существующие библиотеки для этого? Мы получаем много вопросов, связанных с ДНК + регулярными выражениями, и я думаю, что уже существуют протестированные библиотеки, чтобы справиться с этим. –
Попробуйте найти StackOverflow для "fasta perl". Есть много вопросов, которые, как представляется, от людей, имеющих дело с вашими проблемами. http://stackoverflow.com/search?q=fasta+perl –
@AndyLester Правда, библиотеки, занимающиеся этим материалом, существуют, но так много биоинформатики нужно подбирать для ваших конкретных требований, что затрудняет поиск оптимальной программы. Спасибо за ваше предложение, я буду смотреть под fasta perl. – cebach561