サンプル4. ClustalWによりアライメントを行う。
bioperl-runがインストールされていなかったので、別途ダウンロード&インストールしました。
Bio::AlignIO->newFh()を使うことにより、アウトプットのフォーマットを指定することができます。
#!/usr/bin/perl
use Bio::Tools::Run::Alignment::Clustalw;
use Bio::AlignIO;
use strict;
my $infile = 'test2.fas';
my $outfile = $infile.'.out';
my @params = ('ktuple' => 2, 'type' => 'protein', 'matrix' => 'BLOSUM',
'outfile' => $outfile);
my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
my $aln = $factory->align($infile);
my $string = Bio::AlignIO->newFh('-format' => 'clustalw');
print $string $aln;
私のマシン
もともと自宅ではMacを使い、職場ではWindowsやLinuxを使っています。
バイオインフォマティクスの自習をしようと思い、使っていないマシンを探してみたら、自宅にほとんど使っていない夫のPowerBook(1.5GHz PowerPC G4)がありました。
実は、もっと古い800MHzくらいのG4マシンもあって、こちらはもう全然使っていない・・・というよりも壊れていたので・・・、これを修理して使う予定だったんですが、まぁ、ちょっとでも早い方がいいかなぁと。自習とはいえ、計算もするわけですし。
LinuxとMacとどっちの方がいいのかなぁと悩んだりしましたが、好きなマシンの方がいいよね〜ってことで、やっぱりMacです。
もうちょっとでLeopardが出ますね。Tigerでインストール方法調べてますが、これが無駄になっちゃうほど、変わりませんよね?ドキドキ。
サンプル3. Tkを使って入力画面を作る
Bioperl-guiの使い方はまだわかりませんが、Tkをインストールしたので、Tkで入力画面を表示するようにしてみました。
サンプルはGenBankを検索して、日時フォルダの中にヒットしたデータをfasta形式で保存してます。実行は、X11上で。私は、使っているエディタmiから実行してます。
1度目の検索はうまくいくのですが、2度目がうまくいきません。なぜだろう・・・。
#
#BLAST in Tk
#
#!/usr/bin/perl -w
use Tk;
use Bio::SeqIO;
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
# グローバル関数
$orgn = ''; #[ORGN]
$titl = ''; #[TITL]
$slen1 = 0; #[SLEN]1
$slen2 = 0; #[SLEN]2
# ドキュメントの表示
sub display {
# 前のドキュメントを消去
$t0->configure( -state => 'normal' );
$t0->delete( '1.0', 'end' );
#blastの実行
$query = '';
if ($orgn){
$query = $orgn."[ORGN]";
}
if ($titl){
$query = $query." AND ".$titl."[TITL]";
}
if ($slen2){
$query = $query." AND ".$slen1.":".$slen2."[SLEN]";
}
$t0->insert('end', $query."?n");
$query_obj = Bio::DB::Query::GenBank->new(-db => $db, -query => $query );
$gb_obj = Bio::DB::GenBank->new;
$stream_obj = $gb_obj->get_Stream_by_query($query_obj);
$now = &get_now();
$t0->insert('end', $now."?n");
mkdir("./$now", 0755);
open (OUT,'>'.$now.'/'.$now.'.log');
print OUT "Query : ".$query."?n?n";
while ($seq_obj = $stream_obj->next_seq) {
$seqio_obj = Bio::SeqIO->new(-file => '>'.$now.'/'.$seq_obj->accession.'.fas',
-format => 'fasta' );
$seqio_obj->write_seq($seq_obj);
$t0->insert('end', $seq_obj->accession."\t".$seq_obj->length."\t".$seq_obj->desc."\n");
print OUT $seq_obj->accession."\t".$seq_obj->length."\t".$seq_obj->desc."\n";
}
close OUT;
$t0->configure( -state => 'disable' );
$t0->focusForce();
return();
}
sub get_now(){
($min,$hour,$mday,$mon,$year) = (localtime(time))[1..5];
$year += 1900;
$year = sprintf("%.2d",$year);
$mon++;
$mon = sprintf("%.2d",$mon);
$mday = sprintf("%.2d",$mday);
$hour = sprintf("%.2d",$hour);
$min = sprintf("%.2d",$min);
$r = "$year$mon$mday-$hour$min";
return $r;
}
# ***** 画面の設定 *****
# メインウィンドウ
$top = MainWindow->new();
# フレーム
$f0 = $top->Frame();
$f1 = $top->Frame();
$f2 = $top->Frame();
$f3 = $top->Frame();
$f4 = $top->Frame();
# フレーム $f0 内の配置
$l0 = $f0->Label( -text => 'ORGN : ' )->pack(-side => 'left');
$e0 = $f0->Entry( -textvariable => ?$orgn )->pack(-side => 'left');
$e0->bind("
$f0->pack( -anchor => 'w' );
# フレーム $f1 内の配置
$l1 = $f1->Label( -text => 'TITL : ' )->pack(-side => 'left');
$e1 = $f1->Entry( -textvariable => ?$titl )->pack(-side => 'left');
$e1->bind("
$f1->pack( -anchor => 'w' );
# フレーム $f2 内の配置
$l2 = $f2->Label( -text => 'SLEN1 : ' )->pack(-side => 'left');
$e2 = $f2->Entry( -textvariable => ?$slen1 )->pack(-side => 'left');
$e2->bind("
$f2->pack( -anchor => 'w' );
# フレーム $f3 内の配置
$l3 = $f3->Label( -text => 'SLEN2 : ' )->pack(-side => 'left');
$e3 = $f3->Entry( -textvariable => ?$slen2 )->pack(-side => 'left');
$e3->bind("
$f3->pack( -anchor => 'w' );
# フレーム $f4 内の配置
$r0 = $f4->Radiobutton( -text => 'protein',
-variable => ?$db, -value => 'protein')->pack( -side => 'left' );
$r1 = $f4->Radiobutton( -text => 'nucleotide',
-variable => ?$db, -value => 'nucleotide')->pack( -side => 'left' );
$f4->pack( -anchor => 'w' );
# テキストウィジェット
$t0 = $top->Scrolled( 'Text', -scrollbars => 'se', -wrap => 'none' )
->pack(-expand => 1, -fill => 'both');
$e0->focus;
MainLoop();
Bioperl-guiのインストール
まず、Perl/Tkをインストールします。http://search.cpan.org/~ni-s/Tk-804.027/からファイルをダウンロードします。適当な場所で解凍し、インストールします。Terminalでなく、X11 windowでmake testしないとエラーになります。(Terminal上でCPANからインストールしようとして失敗したのでダウンロードしたのですが、もしかしたらX11上ならCPANでインストールできるかも。)
% perl Makefile.PL
% make
% make test
% sudo make install
続いて、Bioperl-guiをインストールします。http://cvs.bioperl.org/cgi-bin/viewcvs/viewcvs.cgi/bioperl-gui/から、Download tarballを選んでbioperl-gui.tar.gzをダウンロードします。Tkと同様にインストールします。
epkgのインストール
http://www.ie.u-ryukyu.ac.jp/darwin2/から、Universal Binary 対応版のGUI版をダウンロードしました。
手順は記載のとおりです。