2007/06/10 (日)
◆ [Software] 同梱ソフトウェアとライセンス - 22:53:16
PAMLはライセンスがよくわからん。FreeBSD Ports Collectionに収録されているので再配布は問題無さそうですが改造版はどうなるんだろうか。PHYLIPも厳密にはフリーソフトウェアではない。ここはひとつ、PHYLIPをやめてPHYMLでNJ系統樹を作るようにしようか。PHYMLをNJ系統樹生成用にしか使わないというのもやや可哀想な話ではあるが、GPLなので再配布や改変に何の問題も無いのは魅力。PAML改造版の方はとりあえず問い合わせるか。
追記 - 23:07:14
dnadistとneighborはPHYMLで置き換え可能だがdnaparsはGPLな代替プログラムが無いんだった・・・。あーそう言えばこいつらを使うことに決めるときにも同じことで悩んだんだった。何やっとるんだか。
◆ [Life] ネコバスに乗るカエル - 13:51:13
あーピンが・・・orz。
◆ [Life] 殿下に拝謁 - 13:48:04
久々に猫殿下に拝謁した。カメラ目線の一枚。
◆ [Software] MrBayesの命令解釈の問題 - 07:05:45
Execute hogehoge; LSet hogehoge; PrSet hogehoge;
と書くと、LSetとPrSetが実行されない!? うーん、困ったもんだ。
Execute hogehoge;
LSet hogehoge;
PrSet hogehoge;
なら問題無く意図した通りに命令が実行される。
追記 - 08:45:44
出力する設定ファイル群ではExecuteを一切用いないように変更。これで問題無し。
◆ [Life] 第五次元更新 - 05:36:57
下記のバイナリを置いておきました。英語版トップページから辿れます。
◆ [Software] Windows上でMrBayesのコマンドヒストリやタブ補完を使えるようにする - 03:22:51
当たり前ですがWindows版のコンパイルにはVisual C++ (無料版でもOK)が必要ですのでご注意。以下はVisual C++による開発環境が導入済みという前提です。CygwinやSFU環境でUNIX版をコンパイルしても同様の機能は得られますが計算速度が遅いのでお薦めしません。
まず、こちらからWindows版のreadlineをダウンロード(cursesは不要)。私はソースを落としました。README.Win32に従って以下のように実行。
unzip readline-4.3-2-src.zip
cd readline-4.3-2\win32
nmake DLL=0 clean all examples
MrBayesのコンパイル準備。
tar xzf mrbayes-3.1.2.tar.gz
cd mrbayes-3.1.2
copy ..\readline-4.3-2\win32\readline-static.lib
md readline
xcopy ..\readline-4.3-2\*.h readline
Makefileは以下の通り。
CC = cl
CFLAGS = /MD /DWIN_VERSION /DUSE_READLINE \
/I. /DREADLINE_STATIC
all: mrbayes.exe
mrbayes.exe: mb.obj bayes.obj command.obj mbmath.obj \
mcmc.obj model.obj plot.obj sump.obj sumt.obj
link /OPT:REF /OUT:mrbayes.exe *.obj \
readline-static.lib user32.lib advapi32.lib
mb.obj: mb.c
bayes.obj: bayes.c
command.obj: command.c
mbmath.obj: mbmath.c
mcmc.obj: mcmc.c
model.obj: model.c
plot.obj: plot.c
sump.obj: sump.c
sumt.obj: sumt.c
また、command.cの7,364行目に
#define strncasecmp _strnicmp
という行を追加する(Windowsではstrncasecmpは使えない)。
以上の準備が終わったらコンパイル。
nmake
これでカーソルキーによるコマンドヒストリとTabキーによるコマンドおよびファイル名の補完が可能なmrbayes.exeができる。超便利。readlineバンザイ。
◆ [Software] MacOS Xにおけるコンソールアプリ版MrBayes(UniversalBinary)のコンパイル - 01:24:22
カレントディレクトリの扱いなどが面倒なので、コンソールアプリ版を作成する。純正配布ファイルではカレントディレクトリがどこになるのかよくわからないが、少なくともファイルがおいてある場所とかではないために角さんの吐き出す設定ファイルがうまく処理できない(角さんの吐く設定ファイルはExecute ../hogehogeする)。また、コマンドヒストリ機能やタブ補完機能も使えず超不便である。そんなわけでコンソールアプリ版を作成するのがオススメ。
まず、OS X付属のncursesとreadlineではエラーになるのでこれらを作成する。[[RingServer http://www.t.ring.gr.jp/archives/GNU/からファイルを落としてきて以下のような感じでコンパイル・インストールする。
tar xzf ncurses-5.6.tar.gz
cd ncurses-5.6
CFLAGS=-isysroot\ /Developer/SDKs/MacOSX10.4u.sdk \
-arch i386 -arch ppc \
CXXFLAGS=$CFLAGS \
./configure --prefix=/usr/local/ppc \
--with-normal --without-shared --without-debug \
--without-cxx --without-cxx-binding
make
sudo make install
cd ..
tar xzf readline-5.2.tar.gz
CFLAGS=-isysroot\ /Developer/SDKs/MacOSX10.4u.sdk \
-arch i386 -arch ppc \
-I/usr/local/fat/include \
CXXFLAGS=$CFLAGS \
LDFLAGS=-L/usr/local/fat/lib \
./configure --prefix=/usr/local/fat \
--enable-static --disable-shared
make
sudo make install
cd ..
次にMrBayesをコンパイルする。PowerPCでAltiVecを、IAでSSE3に最適化するためにPowerPC版とIA版を別々にコンパイルした上でlipoで結合しUniversalBinaryとする。各アーキテクチャ用のMakefileは以下の通り。
Makefile-ppc
18: OPTFLAGS=-O2 -pipe -fomit-frame-pointer \
-frerun-loop-opt -finline-functions -fforce-addr \
-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
-arch ppc -faltivec
22: CC = gcc -I/usr/local/fat/include
52: LIBS += /usr/local/fat/lib/libreadline.a /usr/local/fat/lib/libncurses.a
Makefile-i386
18: OPTFLAGS=-O2 -pipe -fomit-frame-pointer \
-frerun-loop-opt -finline-functions -fforce-addr \
-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
-arch i386 -mfpmath=sse -msse3
22: CC = gcc -I/usr/local/fat/include
52: LIBS += /usr/local/fat/lib/libreadline.a /usr/local/fat/lib/libncurses.a
Makefileができたら以下のように実行。
make -f Makefile-ppc
mv ./mb ./mb-ppc
make -f Makefile-i386
mv ./mb ./mb-i386
lipo -create ./mb-ppc ./mb-i386 -output ./mb