#floatcontents
 * ROSETTAをインストールしてみる &Vine5; [#q11a5f1e]
 #anno1(2011-05-27:作成)
 #anno1(2012-01-27:更新)
 とりあえず今話題のROSETTAをインストールしてみました。さほど難しくはないのですが、ビルドに30分ほど時間がかかりました。~
 現在試行錯誤中なので間違っているところがあればコメント下さい。
 
 ** ファイルの入手 [#bf988e83]
 [[ROSETTAのライセンス申請ページ(Univ. of Washington内)>http://depts.washington.edu/uwc4c/express-licenses/assets/rosetta/]]よりライセンス申請をします。アカデミックフリーで、登録してしばらくすると取得先とパスワードが記されたメールが届きますので、それに従ってダウンロードしましょう。~
 全部含まれるアーカイブで600MB程あります。2012年1月の時点で3.3が最新ですがインストール方法は3.2と同様です。
 
 ** ファイルの展開 [#a93fb87c]
 アーカイブを展開して、その中のソースアーカイブを展開します。ここでは/usr/local以下にインストールすることにします。
  # cd /usr/local
  # mkdir rosetta-3.2.1
  # cd rosetta-3.2.1
  # tar zxvf rosetta3.2.1_bundles.tgz <- このアーカイブにsourceアーカイブなどが含まれています
  # tar zxvf rosetta3.2.1_source.tgz
  # tar zxvf rosetta3.2.1_database.tgz
  # tar zxvf rosetta3.2.1_fragments.tgz
 &color(red){''databaseおよびfragmentsのアーカイブを展開し忘れると、mr_rosetta実行時にエラーが出て止まるので注意!''};
 
 ** aptでインストール [#xacca312]
 - scons
 
 ** Intel Compilerを使う際の準備 [#db1088f3]
 Intel Compilerでビルドする際、私の環境では以下のエラーが出てビルドできなかったので対処しました。~
 GNUコンパイラの場合は特に問題がなかったように思います(最後までは確認してませんが)。
 
 - Intel Compilerのicpcおよびiccがnot foundエラー
 - 最後のライブラリリンク時にlibstdc++がリンクされない
 
 これらに対処するために以下のようにしました。少々強引なので他に方法があるかもしれません。SConsに詳しい方アドバイスください&smile;。~
 Intel Compilerは11.1を使いました。12.0でもビルドできました。
 
 *** Intel Compilerが見つからない [#p8a9e5e1]
 私の環境では環境変数が引き継がれないらしくicpcが見つからないというエラーが出ました。
  scons: Building targets ...
  icpc -o build/src/release/linux/2.6/32/x86/icc/apps/public/AbinitioRelax.o -c -Wp64 -wd279 -ip -O3 -Qoption,c,-ip_ninl_max_stats=500 -Qoption,c,-ip_ninl_max_total_stats=5000 -DNDEBUG -Isrc -Iexternal/include -Isrc/platform/linux/32/icc -Isrc/platform/linux/32 -Isrc/platform/linux -Iexternal/boost_1_38_0 -I/usr/local/include -I/usr/include src/apps/public/AbinitioRelax.cc
  sh: icpc: command not found
  scons: *** [build/src/release/linux/2.6/32/x86/icc/apps/public/AbinitioRelax.o] Error 127
  scons: building terminated because of errors.
 
 解決するためにダミーのicpcとiccを作成しました。
 - 参考記事 -- [[3.2 and Intel Compilers 12.0>http://www.rosettacommons.org/node/2266]]
 
 :/usr/local/bin/icpcを作成|
  #!/bin/bash
  source /opt/intel/Compiler/11.1/046/bin/iccvars.sh ia32
  icpc "$@"
 
 :/usr/local/bin/iccを作成|
  #!/bin/bash
  source /opt/intel/Compiler/11.1/046/bin/iccvars.sh ia32
  icc "$@"
 
 これによりicpcおよびiccが呼ばれたときにiccvarsを読み込み、環境変数を強制的に通します。iccvars.shのディレクトリはIntel Compilerのバージョンに合わせてください。なお作成したファイルは実行属性を付けておきます。
 
 *** libstdc++がリンクされない [#ic0b4138]
 ビルドツールのSConsは依存関係を解決してくれるということなのですが、私の環境では、最後のリンク時にlibstdc++が指定されないらしく、以下のようなエラーが出ました。
  build/src/release/linux/2.6/32/x86/icc/apps/public/rosettaDNA/rosettaDNA.o: In function `main':
  src/apps/public/rosettaDNA/rosettaDNA.cc:(.text+0x50): undefined reference to `operator new(unsigned int)'
  src/apps/public/rosettaDNA/rosettaDNA.cc:(.text+0x6f): undefined reference to `std::allocator<char>::allocator()'
  ...(以下略)
 この問題を修正するためにリンクライブラリにlstdc++を明示しました。次の"libsvml.so not found"も確認して下さい。
 
 :rosetta_source/tools/build/basic.settingsの修正|
     616     "icc, linux" : {
     617         "appends" : {
     618             "flags" : {
     619                 "cc"        : [ "std=c99" ],
     620                 "warn"      : [ "Wp64", "wd279" ],
     621                 # "warn"      : [ "wd383,869,981,1505,1572" ]
  &color(,yellow){   622                 "link"      : [ "lsvml"&color(red){'', "lstdc++"''}; ],  <-- このように''lstdc++''を追加};
     623             },
     624         },
 
 環境によってはここで示した修正は不要かもしれません。
 
 *** libsvml.so not found [#n69c973e]
 cshの環境で、bash環境にIntel Compilerの設定をしていない場合、PHENIXのmr_rosetta実行中に以下のエラーが出ることがあります。
  relax.linuxiccrelease: error while loading shared libraries: libsvml.so: cannot open shared object file: No such file or directory
 PHENIXがmr_rosetta実行中にbashを新たに立ち上げる際に環境変数が引き継がれないことが問題だと思われます。これによりIntel Compilerのライブラリパスが指定されずにlibsvmlが見つからないようです。これを解消するには、.bashrcにIntel Compilerの設定を適切に行うか、上でも修正したbasic.settingsを修正してIntel Compilerのライブラリが静的リンクされるようにします。
 :rosetta_source/tools/build/basic.settingsの修正|
  622                 "link"      : [ &color(red){''"static-intel", "lstdc++"''}; ],
 このようにlsvmlの箇所をstatic-intelに変更することで回避できます。なお&color(red){''lsvmlを残したままだと結局共有リンクになってしまい、解決できないので注意!''};
 
 ** ビルド [#cd1f28dd]
 ソースディレクトリ(rosetta_source)に入りビルドします。~
 :Intel Compilerを使う|
  # cd /usr/local/rosetta-3.2.1/rosetta_source
  # scons bin cxx=icc mode=release -j5 <-- プロセッサ数+1ぐらいで並列に処理
 だいたい30分ほど(Core2 Quad Q9650)でビルドが完了します。
 
 :GNUコンパイラを使う|
  # cd /usr/local/rosetta-3.2.1/rosetta_source
  # scons bin mode=release -j5
 
 ** ビルド後の設定 [#o3dc9458]
 環境によるかもしれませんが、なぜかrosetta以下のディレクトリのパーミッションが744になっているため、他のユーザーからアクセスできません。一括して変更します。
  # cd /usr/local/rosetta-3.2.1
  # chown -R root:root ./
  # find ./ -type d -exec chmod 755 {} \;
 これで所有者がroot:rootおよびディレクトリへの適切なパーミッションが設定されました。
 
 *** テストスイートのビルド(optional) [#o82970d8]
 続いてテストスイートをビルドします。~
 3.2.1ではテストスイートのdevelディレクトリがありません。ファイルの修正が必要になります。
 - testフォルダのdevel.test.settingsを削除
 - 以下のファイルの''#include <devel/init.hh>''の行を削除
 -- test/numeric/interpolation/spline/Bicubic_spline.cxxtest.hh
 -- test/numeric/interpolation/spline/Cubic_spline.cxxtest.hh
 
 ソースディレクトリ中で本体をビルドした際とオプションを合わせてください。例えば上でIntel Compilerを使っていれば、
  % scons cxx=icc mode=release cat=test
 となります。gccでしかビルドは成功してません…~
 ビルド成功後は
  % python test/run.py --mode=release
 でテストが実行できます。
 
 ** PHENIXから使う [#l51de668]
 #anno2(2012-01-27 : 作成)
 ROSETTA単体での使い方がイマイチよくわからなかったので、PHENIXから使用します。~
 1.7.3あたりからmr_rosettaのGUIが追加されていますのでROSETTAを使う場合は最新版を使いましょう。
 
 *** 設定 [#r017a08b]
 ROSETTAの位置を指定します。.bashrcまたは.cshrcあたりに環境変数を設定します。
 :.cshrc|
  setenv PHENIX_ROSETTA_PATH /usr/local/rosetta-3.2.1
 :.bashrc|
  export PHENIX_ROSETTA_PATH=/usr/local/rosetta-3.2.1
 
 以上の設定ができればPHENIXから[Molecular Replacement]->[MR Rosetta]が使えるはずです。
 
 ** コメント [#vf52280d]
 - 3.3ではsconsのインストールは必要ないようです。 -- すー &new{2012-02-08 (水) 09:59:47};
 -- 情報ありがとうございます。私は3.3もsconsでビルドしましたが、バイナリ版があるってことですか? -- どぶお &new{2012-02-09 (木) 17:32:25};
 
 #comment