系統解析ソフトウェアのうちMac版PAUP*やMesquiteは大変使いやすいグラフィカルユーザーインターフェースを備えていますが、そうでないものが多くあります。また、ソースコードで配布されるものは、自分の環境に合わせてコンパイルしないと、使用できません。そういうソフトウェアを操作し、自分のコンピュータで使えるようにするには、Unix系のコマンドラインでの操作に慣れておくことが必須です。この講義では、Windows上で走るUnix環境エミュレータであるCygwinを使って、コマンドラインコンピュータの操作を学習します。
Some softwares for phylogenetic analysis are not equipped with GUI like PAUP* of Macintosh or Mesquite. Some softwares also to be compilied under the configuration of each terminal. Here, we try to use Cygwin, an emulater of Unix environment on Windows, to use r8s, PAML, and others.
この演習では、Windowsのグラフィカルインターフェース’(GUI: 簡単に言うと、”マウスでポインタを動かしクリックしてそうさするもの")の下で動作するソフトウェアと、Unix様のコマンドラインインターフェース(CLI: 簡単に言うと、"キーボードから命令を文字で打ち込むもの")の両方を組み合わせて使用できるように、WindowsXPの環境をセットアップします(MacOSXやLinuxのGUIを使っている人は、こんなことをしなくとも、GUIとCLIの両方を簡単に使うことができます)。インストールするのは、以下のソフトウェアです。
Choose following packages under Devel when you see the list of packages make gcc #C compiler 一つクリックすると、関連するものがすべて選択される。 gcc-g77 Choose sqlite3 under Database packages sqlite3
これからCygwinとテキストエディタの他、下でダウンロードする様々なソフトウェアを使ってUnixライク環境を使って系統推定を行います。この授業では、以下の基本操作・知識が必要ですので、必ず慣れておきましょう。なお、Mac OSXユーザの場合、ターミナルを起動するだけでUnixライクの操作を行うことができます。
To use Unix-like environment, you should understand following basics.
echo test > test.txt This command will make a file "test.txt" in which a letter "test" is stored.
先ほどインストールしたcygwinのアイコンがデスクトップにあるはずなので、ダブルクリックして立ち上げてみましょう。そうすると、画面に黒いウィンドウが開き、コマンドプロンプト(カーソルがチカチカ点滅しているところ)が表示されます。Unixライクな操作は、ここに文字で命令を打ち込むことで行います。操作を始める前に、このウィンドウについて、次の設定をしておきましょう。
※ Non-Japanese students: Visit English Tutorials for Unix/Linux of Marine Biological Laboratory .
それでは、コマンドラインインターフェースを使って、コンピュータに命令を与えてみましょう。今、Cygwinの画面には、
$
という文字が表示され、その右側でカーソルがチカチカしているはずです。ここに
pwd
と入力してみましょう。そうすると、
/home/user_name
と表示されたはずです(user_nameの部分は、それぞれWindows設定時に自分が決めたユーザー名.コマンドラインの操作を行う人は、この名前を短くしておく方が、後々の操作が楽になる。名前の変更は、コントロールパネルのユーザーアカウントから行える)。
この pwd というコマンドは、現在自分が操作しているディレクトリの位置を表示してくれる、便利なコマンドです(どのディレクトリを見ているのかわからなくなったら、すぐに pwd と入力しましょう)。
Unixライク環境のコマンドラインインターフェースでの多くの操作は、
・文字で命令を入力 ・その命令をコンピュータが実行 ・結果を出力: 画面に表示したり、ファイルに書き込んだり
という流れで行われます。今の pwd というコマンドでは、
・pwd という命令を入力 ・現在のディレクトリをコンピュータが取得 ・結果を画面に表示
という流れで進みました。では、ここで、結果の出力先をファイルに変更してみましょう。次のコマンドを入力してみてください。
pwd > current_d.txt
> という記号は、出力先をファイルにするということを意味しています。
タイピングが面倒な人は、マウスで選択してコピーし、Cygwinのウィンドウで右クリックすればいいです。
そうすると画面には、特に何も結果は表示されません。ではここで、
ls
と入力します。これは、ディレクトリの中のファイルやディレクトリを一覧するコマンドです。そうすると、
current_d.txt
という文字が表示されました。つまり、このディレクトリの中に、current_d.txt というファイルが存在していることを表しています。では、このファイルの中には何が入っているのでしょうか?ここで、lessというコマンドを使います。
less current_d.txt
そうすると、
/home/tkaji
という文字が表示されましたね。lessはファイルの中身を表示させる命令です。q を押すと、終了できます。
以上が、文字入力でコンピュータに命令を与える、Unixライク環境の基本操作です。結果はいつも、画面に表示されるか、ファイルとしてディスクに保存されます。
では、もう一度 pwd でカレントディレクトリを確認してみましょう。私のコンピュータでは、
/home/tkaji
と表示されていますが、これは、コンピュータのハードディスク上のどの位置にあるのでしょうか?スタートメニューから、マイコンピュータを開いてエクスプローラ(知らない人もいると思いますが、Windowsでファイルの一覧を表示させるソフトの名前です)の、ツールバーの「フォルダ」をクリックして、フォルダーをツリー表示させてみましょう。フォルダが次のような階層構造になっているのがわかります。
Unixライクな操作では、それぞれのフォルダのことを「ディレクトリ」と言います。また、それぞれのディレクトリは名前がついていて、pwd コマンドで表示されたように文字で表すことができます。
cygwin | / | ルート |
home | /home | ホーム |
tkaji | /home/tkaji/ | ユーザーホーム |
sample1 | /home/tkaji/sample1/ | (解析用サンプルファイルの置き場所) |
Windowsのハードディスクの中のフォルダの位置と、Cygwinのファイル構成でのディレクトリの対応を理解しておいてください。この授業でよく使うディレクトリは
/home/tkaji(ユーザーごとに違う名前/ /home/tkaji/sample1(解析ごとに違う名前)/ /usr/local/bin/ (実行形式ファイルの置き場所)
の3つです。では、試しに、sample1というフォルダをエクスプローラーを使って作成してみましょう。フォルダツリーでtkaji(ユーザーごとに違う名前)をクリックし、ファイルメニューから「新規作成/フォルダ」を選択して作った新しいフォルダに sample1 という名前をつけてください。
cygwinで、
ls /home/tkaji(ユーザーごとに違う名前)
と入力すると、
sample1 current_d.txt
という名前が表示されるのがわかります。でも、これでは、sample1がファイルなのかディレクトリなのかはわかりません。そこで、
ls -l /home/tkaji(ユーザーごとに違う名前)
と入力してみましょう。-l はオプションで、表示の形式を変えるものです。ファイルやディレクトリの名前が縦に表示されており、一番左の文字が d になっているものがディレクトリ、それ以外はファイルを表しています。
-rw-r--r-- 1 tkaji なし 12 Jan 20 04:42 current_d.txt drwxrwxrwx+ 2 tkaji なし 0 Jan 20 05:21 sample1
今行った操作で大事なことは、
Cygwinの操作で解析等に使うファイルはWindowsからマウスのクリック操作で作れる 作ったファイルは、 /home/の下の、自分のディレクトリに入れておく
ということです。後でもう一度説明しますが、Windowsのソフトウェアと、Cygwinを行き来するときに、ディレクトリの場所を意識することがとても大切なので、覚えておいてください。
それでは、ディレクトリの基本構成が理解できたところで、基本命令(コマンド)のいくつかを試してみましょう。
sample1 current_d.txtの2つが表示されるはずです。
cd sample1と入力します。もし、どこか別のディレクトリにいて、すぐに /home/tkaji/sample1に移動したいのなら、
cd /home/tkaji(ユーザーごとに違う名前)/sample1と入力します。この
/home/tkaji/sample1という表し方をフルパスと言います。左から順に、
/ ルートディレクトリ home ルートディレクトリの中のhomeというディレクトリ tkaji ルートディレクトリの中のhomeというディレクトリの中のtkajiというディレクトリ sample1 ルートディレクトリの中のhomeというディレクトリの中のtkajiというディレクトリの中の sample1というディレクトリというように、ディレクトリの階層構造を、最上位のルートディレクトリから、1行の文字列で表したものです。入力は面倒ですが、フルパスを入力すれば、ディレクトリからディレクトリへ一気に移動することができます。
cd ..というものがあります。これは、カレントディレクトリから1つ上の階層のディレクトリに移動するものです。実際に入力して試してみましょう。これらはカレントディレクトリとの相対関係を記号で表すものです。
./ カレントディレクトリ自身 .. カレントディレクトリから1つ上の階層のディレクトリ
sample1 current_d.txtというように、sample1 というディレクトリと、 current_d.txt というファイルが入っているはずです。ここで、current_d.txt をsample1 ディレクトリに移動してみます。
mv current_d.txt sample1 同じことをフルパスで表記すると mv /home/tkaji/current_d.txt /home/tkaji/sample1/sample1フォルダに移動したcurrent_d.txtをもとのフォルダに別名でコピーしたいのなら、
cp /home/tkaji/sample1/current_d.txt /home/tkaji/sample2.txt (フルパスで書きましたが、カレントディレクトリにまでは省略可能です)今コピーした sample2.txtというファイルを削除したい場合、
rm /sample2.txtと入力します。 また、新しいディレクトリを作成したい場合、
mkdir sample2です。
Unixライク環境での解析に必要なデータファイルの編集は、viやemacsというエディタをCygwinから使うことも可能ですが、Windowsユーザーにとっては操作がそれほど簡単ではありません。先にインストールした、K2EditorなどのWindowsのテキストエディタを使う方が、ずーっと簡単です。
WindowsとUnixライク環境を行き来する場合、改行コードに注意する必要があります。
改行コードというのはあまり聞き慣れない言葉かもしれませんが、文書(テキスト)で改行されている場所には、改行を示す目に見えない文字が入っています。しかも、それは、Windows、Unix、Macintoshの3者で異なっています.
Windows CR+LF Unix LF Macintosh CR
この違いが、Windows, Unix, Mac間でデータをやりとりする場合、いつも、問題になります。また、コンピュータ間でのデータのやりとりだけでなく、今回のように、WindowsのテキストエディタとUnixライク環境であるCygwinの間のやりとりや、Mac OSとMacのターミナル(Darwin)の間のやりとりでも、注意していなくてはなりません。
では、実際に、K2Editorでファイルを作成して、Cygwinに移動してみましょう。まず、K2Editorを起動して、
ATGCGGTT ATGGCGTT ATGGAGTT
をコピーして、ペーストし、Cygwinの自分のデータフォルダに保存してください(私の場合、/home/tkaji/)。K2Editorで保存するときにファイルが表示されたら、ハードディスク c:の下のCygwinフォルダの中の、homeフォルダの中の自分のフォルダに、
test1.txt
という名前で保存します。
このとき、ファイル名を入力する欄の下の方に、
現在の文字コードと改行コードと保存
とかかれていますので、右側の▼をクリックして、
文字コードと改行コードを指定して保存
にしてください。そうすると次の画面で、「保存時の文字コードと改行の選択」ウィンドウが開くので、
文字コード SJIS (変更する必要は無いです) 改行コード LF (Unixライク環境で使う場合は、必ず LF にする)
を選んで保存します。
Unixライク環境で使う場合、改行コードは必ず LF にする
を忘れないでください。
今後の操作でも、このようにK2Editorを使ってデータファイルを編集し、Cygwinのデータディレクトリに保存するという操作を繰り返します。
Unixライク環境では、使用するコンピュータを選ばずにソフトウェアをインストールすることができるのですが、そのかわり、その環境に合った実行形式のプログラムファイルを作成するために、コンパイルという作業が必要になります。簡単に流れを説明すると、
・ソースコードをダウンロード(通常、tar等で1つのファイルにまとめられている) - obtain the source code (mostly, archived by ''tar'') ・Windowsのeoやlha、Cygwinの中ならtarを使ってアーカイブを展開 - open (extract) files under cygwin environment using ''tar'' ・ソースコードのフォルダに移動し、make を使ってコンパイル - move to the folder where source codes are stored, then compile them using ''make'' ・できた実行形式ファイル(Windowsでは.exeという拡張子がついている)を /usr/local/bin/ 等のパスの通ったディレクトリに移動しておく - move the executable file to ''/usr/local/bin/''
tar jxf RAxML-7.0.4.tar.bz2
make -f Makefile.gcc
Other useful softerwares under cygwin environment
今回の演習では、ダウンロードしたファイルをもとに自分でサンプルファイルを作って、-MrBayesで簡単な解析ができるところまでを解説しておきます。また、受講生から質問のあった、異なる遺伝子領域のデータを連結して、領域ごとに別のモデルを採用する方法を簡単に紹介します。
You will have a good lecture on Bayesian analysis in Dr. Miya's class in February. To get familiar with the procedure to perform Bayesian analysis, and to answer to a question from a student of the class, I am presenting an example using three genetic regions.
3つの異なる領域の配列データを用いた研究として、以下の論文で発表されたデータを使う。GenBankからデータをダウンロードして、全てをコピー・ペーストしても良いのだが、面倒と間違いを避けるために、次のような方法をとる。
For an example data, prepare nucleotide data of three different regions from GenBank. There three genetic data should be connected for each sample (species). To connect nucleotide sequences, copy-and-paste can be an option, but it will be more time consuming and invite errors. Here you have an easier way.
- 参考論文 reference:Phylogenetic Relationships of Gunnera based on Nuclear Ribosomal DNA ITS Region, rbcL and rps16 Intron Sequences
- 以下、データファイルは全て、c:¥cygwin/home/user1というディレクトリに入れてあるものとして、説明をすすめる。このディレクトリに全てのファイルを入れておくと、Cygwinの環境からMrmodeltestやMrbayesが起動して、解析を行える。
In this explanation, all the data file should be stored in your user directory of c:¥cygsin/home/. You can perform all the analysis using Mrmodeltest and MrBayes directory inputting commands under this directory.
species | ITS | rbcL | rps16 |
G.purpurea | af447748 | ay008154 | ay008165 |
G.cordifolia | af447731 | ay008146 | ay008158 |
G.dentata | af447733 | ay008147 | ay008159 |
G.hamiltonii | af447732 | ay008148 | ay008160 |
G.magellantica | af447746 | ay008152 | ay008163 |
G.herteri | af447728 | ay008149 | ay008161 |
G.chilensis | af447738 | ay008145 | ay008157 |
G.petaloidea | af447744 | ay008155 | ay008166 |
G.pilosa | af447742 | AY008156 | ay008167 |
G.macrophylla | af447730 | ay008151 | ay008162 |
aF447748,af447731,af447733,af447732,af447746,af447728,af447738,af447744,af447742,af447730
Cygwinを用いたUnixライク環境の体験の説明に従って、MrModeltestとMrBayesを、Cygwinの/usr/local/binディレクトリに入れておく。
Before starting, store executable files of MrModeltest and MrBayes in /usr/local/bin of Cygwin directory. See the explanations in the page linked above.
mrmodeltest2 < mrmodel.scores > rbcl.out
less rbcl.outと入力すると、中身が簡単に閲覧できる。終了するときは q とタイプ。
NOTICE: interleave option should be determined by (=yes or =no).
begin data; dimensions ntax=10 nchar=2014; format datatype=dna interleave=yes missing=-; matrix
begin mrbayes; log start filename = 3genes.log replace; charset rbcL = 1-636; #それぞれの配列データをサイトポジションで指定 charset rps16 = 637-1378; #these numbers are the site position. You can know them in each of nexus file. charset ITS = 1379-2014; #the names of partitions should be the same as used in the next line partition favored = 3: rbcL, rps16, ITS; #3つのパーティションに分けるということ; divided into trhee partitions set partition = favored; lset applyto=(1,3) nst=6 rates=gamma; #rbcLとITSのモデル設定 lset applyto=(2) nst=6 rates=equal; #(2) means the second partion. rps16 in this example prset applyto=(1,3) statefreqpr=fixed(equal); # you will get all the lset and prset from the ..out file of Mrmodeltest prset applyto=(2) statefreqpr=dirichlet(1,1,1,1); mcmc ngen=10000 printfreq=1000 samplefreq=100 nchains=4 savebrlens=yes filename=MyFile;
Prset statefreeqpr=fixed(equal); Lset nst=6 rates=gamma;等と書かれている。そのモデルをそれぞれ applyto=(2)などとして書き込めば良い。
execute 3genes.nexと入力すると解析が始まる。
sumt burnin=10
$ raxmlHPC -s allseq-1.phy -n allseq-1.out -m GTRGAMMA -o s_55Myrmic,s_56Myrmic,s_67Pogono