BioPerl を利用したテキストファイルの処理

SeqIO

生物学でよく利用するファイル形式のほとんどは Bio::SeqIO モジュールで読み込める。読み込みだけでなく、他のファイル形式に変換して書き出しを行うフォーマット変換も可能である。

ファイルの読み込み

SeqIO->new でファイルの読み込みを行い、ファイルポインタを $inseq に保存し、以降 while 文を利用して $inseq からデータをひとつずつ取り出すことができる。

use strict;
use Bio::SeqIO;

my $inseq = Bio::SeqIO->new(
                 -file => '<complete.1.genomic.gbff',
                 -format =>  'genbank'
            );

while (my $seq = $inseq->next_seq) {
	print $seq->accession_number, "\n";
}
#NT_112066
#NT_108597
#NT_086517
#NT_113343
# ...

ファイル中のデータをすべて配列に保存する場合は以下のようにする。

my $inseq = Bio::SeqIO->new(
                 -file => '<complete.1.genomic.gbff',
                 -format => 'genbank'
            );

my @seq_array = ();
while (my $seq = $inseq->next_seq) {
 push(@seq_array, $seq);
}

ファイルの書き出し

$seqio->write_seq のように利用してファイルの書き出しを行う。書き出しを行う前にファイル形式を指定する必要がある。次のスクリプトは genbank 形式のファイルを fasta 形式のファイルに変換する例である。

use strict;
use Bio::SeqIO;

my $inseq = Bio::SeqIO->new(
                 -file => '<complete.1.genomic.gbff',
                 -format => 'genbank'
            );

my $outseq = Bio::SeqIO->new(
                 -file => '<complete.1.genomic.fa',
                 -format => 'fasta'
            );

while (my $seq = $inseq->next_seq) {
	#print $seq->accession_number;
	$outseq->write_seq($seq);
}