私はperlを初めて使用し、rtfファイルに保存されているDNA配列に対する基本的な文字列操作を実行したいと思います。
基本的に、私のファイルは次のようになります(ファイルはFASTA形式です):
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGG
TAATACGTAGGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGCGC
GCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTTAACCGGGGAG
GGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAG
GCGACTCTCTGGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCA
AACAGGATTAGATACCCTGGTAGTCCACGCCGT
私がやりたいのは、ファイルを読み込んでヘッダー(ヘッダーは> LM1)を印刷し、次のDNA配列GTGCCAGCAGCCGC
と一致させてから、前のDNA配列を印刷することです。
したがって、私の出力は次のようになります。
>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);
問題は、私のプログラムがファイルを1行ずつ読み取り、受信する出力が次のようになることです。
>LM1
GACGGTATCTAACCAGAAAGCCACGGCTAACTAC
基本的に、DNAシーケンス全体を$ dna変数に割り当てる方法がわかりません。また、最終的には、DNAシーケンスを1行ずつ読み取らないようにする方法もわかりません。また、次の警告が表示されます。stacked.pl行14、行1113のパターン一致(m //)で初期化されていない値$dnaを使用しています。
誰かが私にもっと良いコードを書くのを手伝ってくれるか、正しい方向に私を向けることができれば、それは大いにありがたいです。