Jestem nowym użytkownikiem języka Perl i chciałbym zrobić coś, co moim zdaniem jest podstawową manipulacją ciągami do sekwencji DNA przechowywanych w pliku rtf.podstawowe manipulowanie ciągiem i ciągiem dla analizy DNA przy użyciu perl
Zasadniczo mój plik czyta (plik jest w formacie FASTA):
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGG
TAATACGTAGGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGCGC
GCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTTAACCGGGGAG
GGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAG
GCGACTCTCTGGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCA
AACAGGATTAGATACCCTGGTAGTCCACGCCGT
Co chciałbym zrobić, to przeczytać w moim pliku i drukować nagłówek (header jest> LM1), a następnie dopasować następujący DNA sekwencja GTGCCAGCAGCCGC
, a następnie wydrukuj poprzednią sekwencję DNA.
Więc moje wyjście będzie wyglądać następująco:
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
Napisałem następujący program:
#!/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);
Problem polega na tym, że mój program odczytuje pliku linia po linii, a wyjście otrzymuję jest co następuje:
>LM1
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
w zasadzie nie wiem jak przypisać całą sekwencję DNA do mojego zmiennej $ DNA i ostatecznie nie wiem jak aby uniknąć czytania sekwencji sekwencji DNA po linii. Otrzymuję również ostrzeżenie: Użycie niezainicjowanej wartości $ dna w dopasowaniu wzorca (m //) w linii stacked.pl 14, wiersz 1113.
Jeśli ktoś mógłby mi pomóc w napisaniu lepszego kodu lub wskazaniu mi w odpowiednim kierunku byłoby to bardzo cenne.
Czy nie bioinformatyki faceci mają biblioteki już istniejące, aby robić te rzeczy? Otrzymujemy wiele pytań dotyczących + regex DNA i myślę, że istniałyby już przetestowane biblioteki, które poradzą sobie z tym już. –
Spróbuj wyszukać StackOverflow dla "fasta perl". Jest wiele pytań, które wydają się być od osób zajmujących się dokładnie twoimi problemami. http://stackoverflow.com/search?q=fasta+perl –
@AndyLester To prawda, że biblioteki zajmujące się tymi sprawami istnieją, ale tak wiele bioinformatyki musi być dostosowanych do twoich konkretnych wymagań, co utrudnia znalezienie optymalnego programu. Dzięki za twoją sugestię, zajrzę pod fasta perl. – cebach561