私はバイオインフォマティクスの初心者で、ペアエンドの MiSeq データ (現在は 1 つの fastq ファイル) を 2 つのファイルに分割する小さな Bio Perl コードに取り組んでおり、各ファイルにはペアの一方の端が含まれています。ペアエンドリードの異なるエンドは、fastq ヘッダーのスペースの後の1または2で区別できます。このファイルは、コマンド ラインで「head」を使用する例のように、典型的な fastq 形式に従います。
@M00763:6:000000000-A1U80:1:1101:12620:1732 1:N:0:1
TTATACTC
+
@A@AA@A@
@M00763:6:000000000-A1U80:1:1101:12620:1732 2:N:0:1
T
+
E
一致を使用してヘッダーの 1 または 2 をターゲットにしようとするコードを作成しました。私は Bio::SeqIO を使用していますが、perl は fastq 形式を認識していないようで、このエラーが発生し続けます:
MSG: Could not guess format from file/fh
STACK: Error::throw
STACK: Bio::Root::Root::throw /sw/lib/perl5/5.12.3/Bio/Root/Root.pm:472
STACK: Bio::SeqIO::new /sw/lib/perl5/5.12.3/Bio/SeqIO.pm:389
STACK: SplitPairedEndReads.pl:7
誰かが私のエラーを見つけて修正するのを手伝ってくれますか? BioPerl Web サイトから入手できる情報は、Bio::SeqIO が fastq 形式を認識できる必要があることを示しています。
ここに私が書いたコードがあります:
#!/usr/bin/perl
use Bio::SeqIO;
use Bio::SeqIO::fastq;
$seqout1 = Bio::SeqIO->new(-file => ">peread1.fastq" -format => "fastq",);
$seqout2 = Bio::SeqIO->new(-file => ">peread2.fastq" -format => "fastq",);
$seqio_obj = Bio::SeqIO->new(-file => "AIS351_Strin1edit.fastq", -format => "fastq",
-alphabet => "dna" );
$seq_obj = $seqio_obj->next_seq;
while ($seq_obj = $seqio_obj->next_seq) {
$name = $seq_obj->desc; if($name=~ / 1:/) {$seqout1->write_seq($seq_obj);
} else { $seqout2->write_seq($seq_obj);
}
}
私の初心者の知識に助けてくれてありがとう。
〜アル
質問の更新:
行のコンマ エラーを修正しましたnew
が、コードを実行すると次のエラーが発生します。
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: No description line parsed
STACK: Error::throw
STACK: Bio::Root::Root::throw /sw/lib/perl5/5.12.3/Bio/Root/Root.pm:472
STACK: Bio::SeqIO::fastq::next_dataset /sw/lib/perl5/5.12.3/Bio/SeqIO/fastq.pm:71
STACK: Bio::SeqIO::fastq::next_seq /sw/lib/perl5/5.12.3/Bio/SeqIO/fastq.pm:29
STACK: samplesettrim.pl:10
-----------------------------------------------------------
私が行ったすべての読み取りは、BioPerl 自体の FASTQ パーサーにいくつかの問題があることを示しているようです。私は初心者であり、プログラミングのスキルを向上させようとしているので (私は完全に独学です)、このコードを機能させることを望んでいました。これは遅く、おそらく大きな FASTQ ファイルを操作するための最良の方法ではないというコメントに同意します。
+ 記述子に関しては、私のファイルを他のソフトウェア プログラム (例: CLC) で使用できるようにするために必要ですか、それとも FASTQ でその行を削除することで問題を解決できますか? + には、読み取りに関する品質情報は実際には含まれていませんね。
入力していただきありがとうございます。