*20140120: Day #1 for Kajita's class [#r3541b9a]

#contents

**About this class (Kajita's part) [#r6673f5a]
-This is a class for graduate students of PhD course who have basic knowledge for phylogenetics. This is NOT a class for beginners.  I don't provide novice-friendly webpage to study all item, and give instruction only by giving very basic information. Students must study by themselves, especially work on assignments, after the class.
-I will evaluate the score based on your achievement, not based on your effort. To attend the all four day classes is a minimum requirement to get a credit.
-You need to do assignments in both Kajita's and Miya's classes.
 
**1. Practice of Unix like environment using Cygwin or Mac OS:  CygwinやMac OSを用いたUnixライク環境の体験 [#abaee11e]
-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, or Mac OS.~
It is very important to get used to using Unix environment, because lots of advanced software for phylogenetics (or bioinformtics, population genetics etc) are first provided by source codes.  Without knowing the basic, we can not use those softwares.
-系統解析ソフトウェアのうちいくつかは、は大変使いやすいグラフィカルユーザーインターフェースを備えていますが、そうでないものが多くあります。また、ソースコードで配布されるものは、自分の環境に合わせてコンパイルしないと、使用できません。そういうソフトウェアを操作し、自分のコンピュータで使えるようにするには、Unix系のコマンドラインでの操作に慣れておくことが必須です。この講義では、Windows上で走るUnix環境エミュレータであるCygwinやMac OSを使って、コマンドラインによるコンピュータの操作を学習します。~

**2.  Preparation for Unix like Environment: Terminal or Cygwin環境の設定:Cygwinのインストール [#m25e3f31]
-If you are using Mac OS, you have unix like envieonment by just lauching 
 terminal
Mac users who never use windows environment do not have to see the following instructions for Cygwin. Jump to the "3. Basics of Unix commands" and study various unix commands by yourself.  If you still have enough time, you can visit "http://www.ee.surrey.ac.uk/Teaching/Unix/index.html" and study more about unix operation. (See, http://korflab.ucdavis.edu/Unix_and_Perl/unix_and_perl_v3.1.1.html  : This is one of the best site to study basic unix operation, and will will study the basic using this site in section #3.)~
If you are windows user, there are various way to construct a unix-like envitonment. We use cygwin for windows in this class.~
-この演習では、Windowsのグラフィカルインターフェース’(GUI: 簡単に言うと、”マウスでポインタを動かしクリックしてそうさするもの")の下で動作するソフトウェアと、Unix様のコマンドラインインターフェース(CLI: 簡単に言うと、"キーボードから命令を文字で打ち込むもの")の両方を組み合わせて使用できるように、Windows環境をセットアップします(MacOSXやLinuxのGUIを使っている人は、こんなことをしなくとも、GUIとCLIの両方を簡単に使うことができます)。インストールするのは、以下のソフトウェアです。
+Cygwin: Windows環境で動くUNIXエミュレータ。このソフトウェアをインストールすることで、UNIXのCLIで使われる様々な機能を簡単に体験することができます。 A UNIX environment emulator that works on Windows PC.  A wide range of UNIX software can be installed on demand.

-''IMPORTANT'': I may not talk a lot about Linux system in this class, but it is much easier for you to install Linux to you PC to obtain a unix-like environment.  There are various ways to do that and the easiest way these day is to use Ubuntu.  You can install [[Ubuntu>http://www.ubuntu.com/]] to your PC by,
--As a dual boot system in your Windows PC
--Starting from memory stick or CD
--Full install to PC   

***Cygwinのインストール: Installation of Cygwin [#n6dbc7ee]
-Cygwinを右のサイトからダウンロード http://cygwin.com/~
Download Cygwin from the URL above.
-デスクトップ上のSetupをクリックしてインストール~
Double click Setup on your desktop.
--c:\cygwinにインストール~
Cygwin will be installed under c:\cygwin
--インストールするパッケージの選択で、Devel(開発環境)とデータベースのいくつかのセットを選択しておく
 Choose following packages under Devel when you see the list of packages (
	make
	gcc       #C compiler 一つクリックすると、関連するものがすべて選択される。
	gcc-g77
 Choose sqlite3 under Database packages
        sqlite3
---※今回の実習では、時間の関係上コンパイラは使用しないかもしれません。 We may not use compiler in today's class.
-インストールが終了したら、デスクトップかスタートメニューのCygwinアイコンをクリック。コマンドラインウィンドウが表示されます。~
Click the Cygwin Icon on the desktop to start.
-一度立ち上げることで、c:\cygwinに/home(自分のユーザー名:以下の例ではtkaji)というディレクトリができます。~
In this example, user have a directory named "tkaji" under c:\cygwinに/home. 
-これでUnixライクな環境が構築できました。~
Now you are in a Unix-like environment running in Windows PC.

***Startup Cygwin and preparation for window setting: Cygwinの起動とウィンドウ設定の変更 [#o71284d6]
-先ほどインストールしたcygwinのアイコンがデスクトップにあるはずなので、ダブルクリックして立ち上げてみましょう。そうすると、画面に黒いウィンドウが開き、コマンドプロンプト(カーソルがチカチカ点滅しているところ)が表示されます。Unixライクな操作は、ここに文字で命令を打ち込むことで行います。操作を始める前に、このウィンドウについて、次の設定をしておきましょう。
+プロパティの変更: ウィンドウ左上のCを右クリックしてプロパティを選択
--オプションタブをクリック:
---バッファサイズを200ぐらいに
---簡易編集モードをチェック(これで、マウスの右クリックでテキストのコピー・ペーストが可能)
--レイアウトタブをクリック
---画面サイズを好みの大きさに(今回は幅95, 高さ20にしてみた)
--ウィンドウを閉じて終了「このウィンドウを起動したショートカットを変更する

**3. Basics of Unix commands  Unixライク環境の基本操作:  [#u5c28980]
-''※'':We are going to study the basic unix operation by using text "Unix and Perl Primer for Biologists" by Keith Bradnam & Ian Korf (http://korflab.ucdavis.edu/Unix_and_Perl/unix_and_perl_v3.1.1.html).  Although I provided Japanese explanations that I wrote 6 years ago, I will explain the basic unix commands not following my Japanese texts, but using the "Unix and Perl Primer for Biologists". I believe the Japanese explanation still would b e useful for some Japanese students who needs additional explanation.  この授業では、Unixコマンドの説明は、"Unix and Perl Primer for Biologists"に従って行います。このセクションの日本語説明は、私が数年前に作成したもので、"Unix and Perl Primer for Biologists"とは無関係です。日本人学生にとっては、補足説明として役立つと思いますので、残してあります。
***Text [#o857ca14]
-"Unix and Perl Primer for Biologists" by Keith Bradnam & Ian Korf ~
http://korflab.ucdavis.edu/Unix_and_Perl/unix_and_perl_v3.1.1.html

***Appendix: Japanese explanation from previous classes [#r775fe8c]
-これからCygwinとテキストエディタの他、下でダウンロードする様々なソフトウェアを使ってUnixライク環境を使って系統推定を行います。この授業では、以下の基本操作・知識が必要ですので、必ず慣れておきましょう。なお、Mac OSXユーザの場合、ターミナルを起動するだけでUnixライクの操作を行うことができます。~
+Cygwinの起動とウィンドウ設定の変更
+コマンドラインインターフェースの使い方
+文字を使っファイルやたディレクトリの表し方とディレクトリの構成
+ディレクトリに関する基本コマンド(命令)
--カレントディレクトリの表示: pwd  : show the current directory
--ディレクトリの内容表示: ls : list the contents of the directory
--ディレクトリへの移動: cd : change directory
--ディレクトリ間のファイルコピー: cp ; 移動: mv 別ディレクトリへのファイルの移動・名前の変更
--- cp : copy file,  mv : move file
--新しいディレクトリの作成: mkdir
--ファイルの削除: rm
--コンソールへの文字の表示: echo  : display strings in the console
---例: ファイルの作成
 echo test > test.txt
 This command will make a file "test.txt" in which a letter "test" is stored.
--ファイルの内容の表示: cat  : display the contents of the text file
--ファイルの削除: rm :: delete a file
--ディレクトリの作成: mkdir : make new directory

***初めてのコマンドラインインターフェース: Unix-like CLI [#ae6d6240]
-それでは、コマンドラインインターフェースを使って、コンピュータに命令を与えてみましょう。今、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ライク環境の基本操作です。結果はいつも、画面に表示されるか、ファイルとしてディスクに保存されます。

***文字を使っファイルやディレクトリの表し方とディレクトリの構成 [#h916b1e0]
-では、もう一度 pwd でカレントディレクトリを確認してみましょう。私のコンピュータでは、
 /home/tkaji
#ref(授業/H20/系統解析論/演習1/Untitled1.gif,around,right,60%)
と表示されていますが、これは、コンピュータのハードディスク上のどの位置にあるのでしょうか?スタートメニューから、マイコンピュータを開いてエクスプローラ(知らない人もいると思いますが、Windowsでファイルの一覧を表示させるソフトの名前です)の、ツールバーの「フォルダ」をクリックして、フォルダーをツリー表示させてみましょう。フォルダが次のような階層構造になっているのがわかります。~
//&ref(./Untitled1.gif,60%);~
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を行き来するときに、ディレクトリの場所を意識することがとても大切なので、覚えておいてください。
-おまけ:コマンド入力のやり直し:|
Cygwinでは矢印キーの上矢印(↑)を押すと、前に入力した命令が表示されます。また、左右の矢印キーを使ってカーソルを移動させ、命令の内容を変更することもできます。

***ディレクトリに関する基本命令 [#ge8ddc7b]
-それでは、ディレクトリの基本構成が理解できたところで、基本命令(コマンド)のいくつかを試してみましょう。
-カレントディレクトリの表示: ''pwd''~
最初に使ったコマンドです。
-ディレクトリの内容表示:'' ls''~
これも何度か使いました。先ほどまでの操作がうまくできていると、自分のディレクトリでは、
 sample1  current_d.txt
の2つが表示されるはずです。
-ディレクトリへの移動: ''cd ''
これは、自分の今いるディレクトリから、他のディレクトリに移動するものです。つまり、カレントディレクトリを他のディレクトリに変更するコマンドです。たとえば、カレントディレクトリがユーザーホームのときに、を先ほど作成した sample1 というディレクトリに変更するには、
 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つ上の階層のディレクトリ

-ディレクトリ間のファイルコピー: ''cp'' ; 移動: ''mv'' 、ディレクトリの作成 ''mkdir''~
ソフトウェアのインストールをしたり、実際の解析をしたりする場合、ファイルのコピーや移動は必須の事項です。~
%%%WindowsでUnixライク環境を構築したのですから、ファイルの移動、コピー、削除は、Windowsのエクスプローラーを使えば簡単にできます%%%。なので、Unix系の命令は覚えなくてもいいのかもしれませんが、、なれてくると、命令を入力する方が楽に思えてくるので、覚えておきましょう。~
ここまでの操作で、自分のディレクトリには、
 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
です。~
なお、上にも書きましたが、ファイルやディレクトリ関係のこれらの操作は、Windowsからマウスを使ってすべて可能です。 

***Compile source code under Cygwin: 解析用プログラムのインストール [#t145f35c]
-Unixライク環境では、使用するコンピュータを選ばずにソフトウェアをインストールすることができるのですが、そのかわり、その環境に合った実行形式のプログラムファイルを作成するために、コンパイルという作業が必要になります。簡単に流れを説明すると、

-1. ソースコードをダウンロード(通常、tar等で1つのファイルにまとめられている)
--obtain the source code (mostly, archived by ''tar'')
-2. Windowsのeoやlha、Cygwinの中ならtarを使ってアーカイブを展開
--open (extract) files under cygwin environment using ''tar''
-3. ソースコードのフォルダに移動し、make を使ってコンパイル
--move to the folder where source codes are stored, then compile them using ''make''
-4. できた実行形式ファイル(Windowsでは.exeという拡張子がついている)を
    /usr/local/bin/ 等のパスの通ったディレクトリに移動しておく
-- move the executable file to ''/usr/local/bin/''

***Installing character code converter, nkf: 文字コード変換プログラム: nkfのコンパイルとインストール [#wf273ddc]
Windows、Mac, Linuxでは、使っているソフトウェアのバージョンや環境設定により、日本語文字コードが異なる。最近は多くの環境でUTF-8が使われているが、SJISやEUCが使われていることもあり、異なる文字コードの環境でそれらのファイルを開くと文字化けをする。そんなときには、nkfというソフトウェアを使うと、簡単に文字コード変換ができる。~
nkfは実行形式ファイルも配布されているが、ちょうどよい材料なので、cygwinにインストールしてみよう。

-1.nkfのソースコードをダウンロード  http://sourceforge.jp/projects/nkf/releases/
-2.nkfのソースコードをtarで展開
 % tar -xvzf nkf-2.1.2.tar.gz
-3.コンパイル
 % make
 cc -g -O2 -Wall -pedantic -c nkf.c
 cc -g -O2 -Wall -pedantic -c utf8tbl.c
 cc -g -O2 -Wall -pedantic -o nkf nkf.o utf8tbl.o
 ※コンパイルにはgccが必要
--gccの実行時に mno-cygwin test01.cオプションをつけると、WindowsのDOS環境でも実行できるらしい。~
http://homepage3.nifty.com/kaku-chan/cygwin/chapter_005.html~
 gcc -mno-cygwin test01.c
-4.インストール
 % make install
 mkdir /usr/local/bin
 mkdir: ディレクトリ `/usr/local/bin' を作成できません: File exists
 make: [install] エラー 1 (無視されました)
 mkdir /usr/local/man
 mkdir /usr/local/man/man1
 mkdir /usr/local/man/ja
 mkdir /usr/local/man/ja/man1
 cp -f nkf /usr/local/bin/
 cp -f nkf.1 /usr/local/man/man1/
 cp -f nkf.1j /usr/local/man/ja/man1/nkf.1

-5.簡単な利用方法
 SJIS-EUC変換
 % nkf -e -Lu -S SJISファイル名 > EUCファイル名
 -e EUCコードに変換する
 -Lu unix改行形式(LF)に変換
 -S シフトJISと仮定して処理する 

***Notice on "RETURN" codes: LF and CR: 改行コードに注意 [#p5a8f0f4]
-When you used text editors by cross-platform environments, you should be aware of the difference of so called "RETURN" codes:
 Mac: CR
 Windows: CR+LF
 Unix: LF 
~
-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 にする
を忘れないでください。~

***Notice on Character codes 文字コードに関する注意 [#ub7a6480]
-If you also use Japanese environment, you need to be aware of the character codes that you use in different environments.  These days, UTF-8 is getting popular in many environments, but some Windows or Mac file in Japanese would be given by Shift-JIS, or some unix file by EUC.~
Windows, Mac, UNIX環境で日本語を扱う場合、文字コードにも注意しておく必要があります。最近はほとんどの環境でUTF-8が利用可能になっているので、CygwinでもUTF-8を使っておくとよいでしょう。Cygwinターミナルウィンドウの左上のアイコンをクリックし、Option>Textで変更可能

**4. Data manipulation byText editors : テキストエディタ [#nfcbba34]
-Text editor is one of the most popular tool for you  to edit your data (text) file.  There are basic text editor in unix system (for example, vi, emacs, etc), but for the users who use both unix and PC (windows or mac) environments simultaneously, (like in this class), it is sometimes very useful to use a text editor of your choice.  There are various FREE text editors, and I suggest you to install one, and to get used to it.  I highly recommend you to use an editor which has replace function using Regular Expressions.~ 
For mac user in English environment, perhaps, http://www.activestate.com/komodo-edit, may be the choice (but you will consume about 300MB for this editor!). 
Unixライク環境での解析に必要なデータファイルの編集は、viやemacsというエディタをCygwinから使うことも可能ですが、Windowsユーザーにとっては操作がそれほど簡単ではありません。先にインストールした、K2EditorなどのWindowsのテキストエディタを使う方が、ずーっと簡単です。~
UNIXのCLI環境にもviやemacs等のエディタがありますが、Windows利用者には使いやすいと思われるGUIで動くテキストエディタを使います。~
-※Free ASCII text editor is listed in this page: http://www.thefreecountry.com/programming/editors.shtml
--For English User: Notepad ++  at http://notepad-plus-plus.org/
+日本語環境でのMacユーザなら、miが軽くて使いやすいかも(http://www.mimikaki.net/)

***Data manipulation using Regular Expression [#v808178d]
-[[日本語>http://bean.bio.chiba-u.jp/lab/index.php?cmd=read&page=%E6%8E%88%E6%A5%AD%2FH24%2F%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%2F04#fb7329a9]]
-[[English>http://en.wikipedia.org/wiki/Regular_expression]]

*** Use regex by sed: SEDマニュアル Online documentation for SED [#h30882b4]
ーhttp://www.gnu.org/software/sed/manual/sed.html

***Problem in Mac OSX sed: [#g09c5811]
 $ curl -O http://ftp.jaist.ac.jp/pub/GNU/sed/sed-4.2.tar.gz
 $ tar xzf sed-4.2.tar.gz
 $ cd sed-4.2
 $ ./configure --with-libiconv-prefix=/usr --with-libintl-prefix=/usr
 $ make
 $ sudo make install

***sed script to convert TinyXML format to flat tab-delimited format [#s7eada5d]
 #tinyxml.sed
 #最初の3行と空白行、削除
 /<?/d
 /<\!DOC/d
 / <TSeqSet>/d
 /^$/d
 #ループ指定
 :loop1
 #1データの最初の2行は削除
   /<TSeq>/d
   /<TSeq_seqtype/d
 #最初のフィールド読み混み空白から始まる開始タグを削除
    s/ \+<[^>]\+>//
 #2行目を読み混み
    N
  #終止タグと改行と空白に続く次の行の開始タグを削除
    s/<\/[^/]\+>\n \+<[^>]\+>/\t/
  #1データの最後のタグを削除したら、パターンを吐き出し最初へ。置換がおきなければloop1へ戻る
    s/<\/TSeq_sequence>\n<\/TSeq>//
 t loop1
 /<\/TSeqSet>/d
 P
 D

***fields delimited by tab [#q7e4f04d]
 gi	accver	taxid	orgname	defline	length	sequence


**5. Using MrBayes and Mr Modeltest under : Cygwin環境でMrBayesとMrModeltestを使う [#m29f83af]
Other useful softerwares under cygwin environment
~
-MrBayes http://mrbayes.scs.fsu.edu/
-MrModeltest  http://www.abc.se/~nylander/
~
~
いずれも、上で説明した他のソフトウェアと同様に、ダウンロードしたら、c:\cygwin/usr/local/bin/ に入れておく。Unix系の操作が必要な解析のデータファイルはいつも自分のホームディレクトリ(/home/user1)に入れておくと決めておくとよい。。解析ごとにサブディレクトリをつくれば、データの整理が簡単になる。~
After downloading from above sites, move executable files to c:\cygwin/usr/local/bin/.  To put data files in order, making data directories under your home directory (/home/user1 (or your own user name)) is recommendes.


**6. Bayes analysis using partitioned data: 異なる領域のデータ連結と、ベイズ法による解析 [#a9dadc71]
>今回の演習では、ダウンロードしたファイルをもとに自分でサンプルファイルを作って、-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. 

***解析用データファイルの準備 : Preparation of data file [#w30e1c02]
>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>http://www.bioone.org/doi/abs/10.1043/0363-6445-27.3.512]]
-以下、データファイルは全て、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.

***データのダウンロード、アラインメント、ギャップ削除: Data download, alignment, degap [#hf9f80ef]
-上記論文にのっているデータのうち、葉緑体遺伝子のrbcL, rps16 intronと核遺伝子のITSの3領域のデータが揃っている10種の配列データを準備する。種名とアクセッション番号は、下表の通り。~
Download following data published in the paper above, they are, chloroploast rbcL and rps16 intron; and nuclear ITS for 10 species.
|species|ITS|rbcL|rps16|h
|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|
-遺伝子領域ごとのfasta形式ファイルを次の手順で作る~
Make fasta format file of each gene:
++上の表をエクセルのシートにコピー~
copy the table above into Excel
++rbcLの下のアクセッション番号のカラムをエクセルで選択~
For rbcL, copy columns below "rbcL"
++文字列全体をコピーして、GenBank等で検索~
Copy all the accession numbers and search them in [[GenBank>http://www.ncbi.nlm.nih.gov/]]
++Fasta形式でデータを保存~
Download found data in Fasta format
++アクセッション番号の部分とサマリー情報の部分をテキストエディタで一括置換して、種名だけにしておく。また、ドットはアンダーバーに変換しておく。~
Open the Fasta format file by text editor, and delete the ID number, accession number and summary information.  "Replace All" is a good way to do this.  Remain only species name.  Spaces and dots should be replaced into "_".
-同様の方法で、rps16, ITSのデータもダウンロード~
Download data of rps16 and ITS.
-Bioeditでファイルを開いてアラインメント~
Open each file by Bioedit and do alignment.
-アラインメントができたら、Alignment > Strip columns containing gaps を選んで、ギャップを削除~
Delete all gap using "Alignment > Strip columns containing gaps"
-File > Save AsからFasta形式でセーブしておく (この説明では、以下、rbcl.fst, rps16.fst, its.fstという名前で説明する)~
Save them as fasta formatted files.

***rbcL, rps16, ITSのそれぞれの領域に対して、モデルの選択を行う: Choose model for each genetic region [#ia67dd8b]
for Modeltest, we will perhaps use Phylemon2 on the web.

***Concatenating sequence alinments シーケンスデータの連結 [#w2536cb2]

***Use Excel for concatenating data: (only for small number of sequences) エクセルを使う方法 [#tfc09161]
-using text editor (replacement using regular expression), convert fasta formatted file into tab delimited text file.  Name should be shorten about 10 characters (for example "gi|18024675|gb|AY008145.1| Gunnera chilensis ribulose" can be shorten as "G_chilesis" or "Gchile145".)
-''CAUTION:  Limitation of characters in one cell: 32,767''  If the concatenated sequence is longer than this limitation, use SQLite3 or simply write script by awk or perl.

-copy-paste to excel
-order by name
-move same sample in one raw
-use concatenate()
-copy paste to text editor, and make fasta formatted file.

***Open the nexus file by text edito, and add a paup block to star MrBayes analyses [#v14ff67d]
-Models of molecular substitution inferred by jModeltest can be incorporated according to the manual of MrBayes (http://mrbayes.csit.fsu.edu/Help/prset.html)

-Example of NEXUS file
 #NEXUS
 
 begin data;
  dimensions ntax=10 nchar=2318;
  format datatype=dna;
   matrix
 gi|180246  CCCTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 gi|180246  CCTTTAGACCTTTTTGAAGA
 
 ;
   end;
 begin mrbayes;
 log start filename = 3genes.log replace;
 charset ITS = 1-636;
 charset rbcL = 637-1576;
 charset rps16 = 1577-2318;
 partition favored = 3: ITS, rbcL, rps16;
 set partition = favored;
 lset applyto=(1) nst=6  rates=equal;
 lset applyto=(2) nst=2 rates=gamma;
 lset applyto=(3) nst=6 rates=equal;
 mcmc ngen=10000 printfreq=1000 samplefreq=100
 nchains=4 savebrlens=yes filename=MyFile;

-Specify each model inferred by mrmodeltest 090622 (as in psbB.out for example)
 ITS
   Lset base=equal nst=6  rmat=(0.8028 2.3653 1.2508 0.5277 4.2929 1.0000) rates=equal pinvar=0.4520;
 rps16
   Lset base=(0.3560 0.1434 0.1759 0.3248) nst=6  rmat=(1.0000 2.0590 1.0000 1.0000 4.6270 1.0000) 
   rates=equal pinvar=0;
 rbcL
  Lset base=(0.2627 0.1987 0.2512 0.2874) nst=6  rmat=(1.0000 2.2323 1.0000 1.0000 5.4388 1.0000) 
  rates=gamma shape=0.0160 ncat=4 pinvar=0;

-Example of paup block:
 begin mrbayes;
 log start filename = vigna090706.log replace;
 charset psbB = 1-489;
 charset psbD  = 490-1130;
 charset trnT = 1131-1378;
 partition favored = 3: psbB, psbD, trnT;
 lset applyto=(1) nst=6  rates=propinv;
 lset applyto=(2) nst=6  rates=equal;
 lset applyto=(3) nst=1  rates=equal;
 prset applyto=(1,2,3) statefreqpr=dirichlet(1,1,1,1);  
 unlink shape=(all) pinvar=(all) statefreq=(all) revmat=(all);
 mcmc ngen=10000 printfreq=1000 samplefreq=100
 nchains=4 savebrlens=yes filename=MyFile;

-check the tree by
 sumt burnin=10



**7. Manipulating data by sed and sqlite database: 系統解析の基礎技術1. 塩基配列データを扱う技術 [#b57c1a8b]

***sedによる一括置換・サンプル名の変更自由自在:  All replace sample names by sed [#j8cb438b]
-GenBankからデータ取得 FASTA形式でファイルにセーブ  Save the data in FASTA format to your disk
-テキストエディタで項目をタブ区切りに変換  replace some delimiters into tab
-エクセルで(自分のデータと合わせて)サンプルリスト作成 copy and paste into Excel table
-sedのスクリプト編集  all replace by sed using scripts
--例1: アクセッション番号を種名に入れ替える
 s/AF308711.1/Indigofera australis
 s/AM235008.1/Indigofera glomerata
 s/JF265484.1/Indigofera fulgens
--例2: 種名にはスペースを入れない方が良い。PAUPを使うなら、10文字以内が良い
 s/AF308711.1/I_australis
 s/AM235008.1/I_glomerata
 s/JF265484.1/I_fulgens

***SQLite MangerによるTiny XMLデータのインポート: Import Tiny XML data (exported data from GenBank) into Relational Database by SQL Manager (Firefox Addon) [#m89b172a]
-準備 Preparation 1: FireFoxのアドオンであるSQLite Mangerをインストール: Install SQLite Manger to FireFox
--FireFoxを起動
--[[SQLite Manger>https://addons.mozilla.org/ja/firefox/addon/sqlite-manager/]]をインストール  Install SQLite Manger to your FireFox
--SQLite Mangerを起動(ツールかWeb開発の下)  Start SQLite Manger under "Tool Menu" of FireFox
-準備2 Preparation 2: ダウンロードしたTiny XMLファイルの形式を変更
--SQLite MangerでXMLデータを読み込むには、最初と最後のタグが<document> ... </document>で無ければならない(→[[参照>http://code.google.com/p/sqlite-manager/wiki/Import_Export_Files]])。  To import xml data into SQLite Manger, the xml file start with <document> and end with </document>.
---操作: operation
---最初の2行を削除  delete the first two lines
 <?xml version="1.0"?>
 <!DOCTYPE TSeqSet PUBLIC "-//NCBI//NCBI TSeq/EN" ....>
---最初と最後のタグを置換  replace the first and the last tags into <document> and </document> respectively.
 <TSeqSet> -> <document>
 </TSeqSet> -> </document>
--以上の操作は、次のsedスクリプトで可能
 /xml version/d
 /DOCTYPE/d
 s/<TSeqSet>/<document>/
 s/<\/TSeqSet>/<\/document>/
--上のスクリプトを適当な名前(例: tinyxml.sed)で保存して、xmlファイル(例:seuqence.xml)を処理
 >sed -f tinyxml.sed sequence.xml > sequence_out.xml
-SQLite Managerでのデータ取り込み
--SQLliteManageのデータベースメニューから取り込みを選ぶ(あるいはimport wizardを選択)
--XMLタブを開き、上で準備したXMLファイルを選択
--Choose XML exporter versionで"v1.0 (like phpMyAdmin4)"を選択してOKをクリック
--新しいテーブルが作られる
-SQLによるデータ連結
-''SELECT * from its left outer join rbcl on its.TSeq_orgname = rbcl.TSeq_orgname''

-''select rbcl.TSeq_orgname, rbcl.TSeq_sequence, its.TSeq_sequence, rps16.TSeq_sequence from rbcl, its, rps16 where rbcl.TSeq_orgname = its.TSeq_orgname and rbcl.TSeq_orgname = rps16.TSeq_orgname''

-できあがったcsvからFASTAを作るsed スクリプト
 s/"//g
 s/^\([^,][^,]*\),/>\1\n/
 s/,/-------/g

//**Assignment:レポート [#oac6592b]
//-何でもいいから、自分の解析したいグループ、10分類群以上、パーティションデータ(2領域以上つなぐ)でBayes法を使って系統解析。~
//Select any samples of 10 or more and analyze them with molecular data with 2 or more partitions.
//--モデルはjmodeltestを使って良いが、MrBayesでエラーが出る場合、base, shapeなどのパラメーターを削除して、解析する。~
//You can use jmodeltest for model selection, but if you have error in MrBayes, delete those parameters
//-解析が終わったら、最後に下のコマンドで系統樹を表示させる。~
//Show the tree with the following command when you finish your analyses.
// sumt burnin=10
//-MrBayesの終了時は~
//Type "quit" when you finish MrBayes.
// quit
//と入力する。
//-解析のときに作成したログファイル ( ___.log)をメールで梶田に提出~
//Submit the log file to Kajita by e-mail.
//

**Links [#k59e4331]
-http://korflab.ucdavis.edu/Unix_and_Perl/unix_and_perl_v3.1.1.html  **Very Useful for self study
---http://korflab.ucdavis.edu/Unix_and_Perl/index.html
-http://openwetware.org/wiki/Butlin:Unix_for_Bioinformatics_-_basic_tutorial#Recommended_for_further_self-study
-http://www.ee.surrey.ac.uk/Teaching/Unix/index.html
-http://openwetware.org/wiki/Butlin:Unix_for_Bioinformatics_-_advanced_tutorial


**Temporary items [#gfbf3f19]
***解析用プログラムのインストール: RaxMLの場合 [#ade9f50c]
-RAXML http://icwww.epfl.ch/~stamatak/index-Dateien/Page443.htm
--最新版(2009年1月時点ではRAxML 7.0.4)をダウンロードして展開
--Cygwinの自分のホームディレクトリに移動させる
 tar jxf RAxML-7.0.4.tar.bz2
--同サイトからマニュアルをダウンロードし、Installに関するところを読む。コンパイル(compile)の方法が書いてある。
--RAxML7.0.4のディレクトリに移動し、自分のコンピュータ環境に適したmakefileを用いてコンパイル(命令文をcygwinにコピー・ペースト)
---今回の演習の場合、
  make -f Makefile.gcc
--できた実行形式ファイルを /usr/local/bin に移動させる

**Practice data [#r1cb96ec]
-sedtest2.txt
 392357550	JN252970.1
 456367948	KC465962.1
 6686794	AJ235997.1
 428621499	JQ684840.1
 16751687	AF402448.1
 384593382	JQ592919.1
 345848001	JN645200.1
 428621301	JQ684744.1
 428621302	JQ684745.1
 428621304	JQ684747.1
 406716959	JN253146.1
-data for replace2.sed
 392357550	JN252970.1	1200274	Ardisia dasyrhizomatica
 456367948	KC465962.1	1265925	Ardisia polysticta
 6686794	AJ235997.1	13345	Ardisia crenata
 428621499	JQ684840.1	1265925	Ardisia polysticta
 16751687	AF402448.1	175112	Ardisia speciosa
 384593382	JQ592919.1	671251	Ardisia revoluta
 345848001	JN645200.1	693367	Ardisia elliptica
 428621301	JQ684744.1	13345	Ardisia crenata
 428621302	JQ684745.1	13345	Ardisia crenata
 428621304	JQ684747.1	1265925	Ardisia polysticta
 406716959	JN253146.1	13345	Ardisia crenata
 406716953	JN253140.1	587398	Ardisia crispa
 406716944	JN253131.1	1200273	Ardisia curvula
 406716943	JN253130.1	693367	Ardisia elliptica
 406716964	JN253151.1	276775	Ardisia japonica
 406716977	JN253164.1	1082643	Ardisia lindleyana
 406716961	JN253148.1	1073918	Ardisia polycephala
 406716970	JN253157.1	587403	Ardisia pusilla
 406716975	JN253162.1	648860	Ardisia quinquegona

-replace2.sed
 s/392357550/Ardisia dasyrhizomatica//
 s/456367948/Ardisia polysticta/
 s/6686794/Ardisia crenata/
 s/428621499/Ardisia polysticta/
 s/16751687/Ardisia speciosa/
 s/384593382/Ardisia revoluta/
 s/345848001/Ardisia elliptica/
 s/428621301/Ardisia crenata/
 s/428621302/Ardisia crenata/
 s/428621304/Ardisia polysticta/
 s/406716959/Ardisia crenata/
 s/406716953/Ardisia crispa/
 s/406716944/Ardisia curvula/
 s/406716943/Ardisia elliptica/
 s/406716964/Ardisia japonica/
 s/406716977/Ardisia lindleyana/
 s/406716961/Ardisia polycephala/
 s/406716970/Ardisia pusilla/
 s/406716975/Ardisia quinquegona/

-replace3.sed
 s/392357550/Ardisia dasyrhizomatica(392357550)/
 s/456367948/Ardisia polysticta(456367948)/
 s/6686794/Ardisia crenata(6686794)/
 s/428621499/Ardisia polysticta(428621499)/
 s/16751687/Ardisia speciosa(16751687)/
 s/384593382/Ardisia revoluta(384593382)/
 s/345848001/Ardisia elliptica(345848001)/
 s/428621301/Ardisia crenata(428621301)/
 s/428621302/Ardisia crenata(428621302)/
 s/428621304/Ardisia polysticta(428621304)/
 s/406716959/Ardisia crenata(406716959)/
 s/406716953/Ardisia crispa(406716953)/
 s/406716944/Ardisia curvula(406716944)/
 s/406716943/Ardisia elliptica(406716943)/
 s/406716964/Ardisia japonica(406716964)/
 s/406716977/Ardisia lindleyana(406716977)/
 s/406716961/Ardisia polycephala(406716961)/
 s/406716970/Ardisia pusilla(406716970)/
 s/406716975/Ardisia quinquegona(406716975)/

**Assignment 20 Jan. 2014 [#o0fc311c]
-Using the data file below, consider the way to make a sed script to replace all accession numbers into Name(accession numbers). Do not use excel, but use your text editor. By using replace function of your text editor, think about how you can obtain the sed script file.
 -data file
 gi	accver	taxid	orgname	defline	
 392357550	JN252970.1	1200274	Ardisia dasyrhizomatica	Ardisia dasyrhizomatica voucher KS0402MT02 ITS2	PsbA-trnH
 456367948	KC465962.1	1265925	Ardisia polysticta	Ardisia polysticta chloroplast, complete genome	 complete genome
 6686794	AJ235997.1	13345	Ardisia crenata	Ardisia crenata 18S rRNA gene	 ndhF gene
 428621499	JQ684840.1	1265925	Ardisia polysticta	Ardisia polysticta voucher Ku028 trnL-trnF	 complete genome
 16751687	AF402448.1	175112	Ardisia speciosa	Ardisia speciosa tRNA-Leu (trnL) gene,	atpB-rbcL
 384593382	JQ592919.1	671251	Ardisia revoluta	Ardisia revoluta voucher BioBot10746 rbcL	atpB-rbcL
 345848001	JN645200.1	693367	Ardisia elliptica	Ardisia elliptica voucher J. Wang 2007301 (Guangdong) 	atpB-rbcL
 428621301	JQ684744.1	13345	Ardisia crenata	Ardisia crenata voucher Ku025 atpB-rbcL 	atpB-rbcL
 428621302	JQ684745.1	13345	Ardisia crenata	Ardisia crenata voucher Ku031 atpB-rbcLatpB-rbcL
 428621304	JQ684747.1	1265925	Ardisia polysticta	Ardisia polysticta voucher Ku006 atpB-rbcL ; 	atpB-rbcL
 406716959	JN253146.1	13345	Ardisia crenata	Ardisia crenata voucher KS0409MT06 rbcL	atpB-rbcL
 406716953	JN253140.1	587398	Ardisia crispa	Ardisia crispa voucher KS0408MT01 rbcL	atpB-rbcL
 406716944	JN253131.1	1200273	Ardisia curvula	Ardisia curvula voucher KS0404MT01 rbcL	atpB-rbcL
 406716943	JN253130.1	693367	Ardisia elliptica	Ardisia elliptica voucher KS0403MT04 rbcL	atpB-rbcL
 406716964	JN253151.1	276775	Ardisia japonica	Ardisia japonica voucher KS0412MT03 rbcL	atpB-rbcL
 406716977	JN253164.1	1082643	Ardisia lindleyana	Ardisia lindleyana voucher KS0418MT02 rbcL	atpB-rbcL
 406716961	JN253148.1	1073918	Ardisia polycephala	Ardisia polycephala voucher KS0411MT01 rbcL	atpB-rbcL
 406716970	JN253157.1	587403	Ardisia pusilla	Ardisia pusilla voucher KS0415MT04 rbcL	atpB-rbcL

 Serach string: ^[^\t]+\t([^\t]+)\t[^\t]+\t([^\t]+)\t.*
 Replace string: s/\1/\2(\1)/

  as a sed script to do this
  s/^[^\t]\+\t\([^\t]\+\)\t\([^\t]\+\)\t.*/s\/\1\/\2(\1)\//

**Assignment [#ja42730c]
-To the analyses of Gunnera by Bayesian methods, add another partition, ITS, using the data you have.  Apply the appropriate model  you inferred using jModeltest in the input file.  Run the Bayesian analyses as was done in the class.
-Materials to submit by e-mail to T. Kajita.
--1. Data file in nexus format (with mrbayes block)
--2. Concensus tree file
-Due date: 20 February 2014