RELIONのMacへの導入

提供: Eospedia
移動: 案内検索

XQuartz のインストール

"http://www.xquartz.org/"からファイルをダウンロードし、インストールします。
2016/04/13日現在のバージョンは、XQuartz-2.7.8です。

Apple/Command Line Tools のインストール

"https://developer.apple.com/downloads/"からファイルをダウンロードし、インストールします。
ダウンロードにはApple IDが必要です。
今回は、Mac OSX El Capitant 10.11.4のために、Command Line Tools (OS X 10.11) for Xcode 7.3を使用しました。

GFortranのインストール

Open MPIのインストールには、GFortranが必要です。
Macには、デフォルトではGFortranが入っていないようなので、入れる必要があります。
今回は、Homebrewを使い、gcc-4.9と一緒にgfortran-4.9をインストールします。

$ brew install homebrew/version/gcc49 --with-fortran

"gfortran"で実行できるように、リンクをはります。

$ sudo ln -sf /usr/local/bin/gfortran-4.9 /usr/bin/gfortran

インストールできているか確認します。

$ gfortran -v

バージョン情報が表示されば、無事、インストール完了です。

Open MPI のインストール

"https://www.open-mpi.org/software/ompi/v1.10/"からファイルをダウンロードし、解凍します。
2016/04/13日現在、openmpi-1.10.21が最新版です。
Open MPIをインストールします。

$ cd openmpi-1.10.2
$ ./configure --prefix=/usr/local/openmpi-1.10-2
$ make && make check && sudo make install

次に、環境設定を行います。
.bash_profileに以下を追加しておきましょう。

export PATH=/usr/local/openmpi-1.10.2/bin:$PATH
export LD_RIBRARY_PATH=/usr/local/openmpi-1.10.2/lib:$LD_LIBRARY_PATH
export MANPATH=/usr/local/openmpi-1.10.2/share/man:$MANPATH
export MAC_OSX=1   ・・・この行は、次のRelionインストールのため

Open MPIが動くかどうか、テストします。

$ cd examples
$ make
$ mpirun -np 2 ./connectivity_c

結果、

Connectivity test on 2 processes PASSED.

と出力されるはずです。

Relion のインストール

"http://www2.mrc-lmb.cam.ac.uk/groups/scheres/download_relion.html"からファイルをダウンロードします。
名前、所属、メールアドレスの記入が必要です。
2016/04/13日現在のバージョンは、relion-1.4です。
ファイルを解凍します。
とにかく、インストールしてみましょう。

./INSTALL.sh -j 4

"-j"オプションは、コンパイル時に並列に扱われるスレッド数を表しています。
エラーが出た場合は、下記の方法で解決してください。
そして、もう一度インストールを試みましょう。

./INSTALL.sh -j 4

エラーが出なければ、無事、インストール完了です。
最後に環境設定を行います。

export LD_LIBRARY_PATH=/***/relion-1.4/lib:$LD_LIBRARY_PATH
export PATH=/***/relion-1.4/bin:$PATH
export RELION_QSUB_TEMPLATE="/***/relion-1.4/bin/qsub.csh"

"***"には、relion-1.4までのパスを書き込んでください。

$relion

でRelionが起動するはずです。


fltk-1.3.0のエラー

その1

fl_line_style.cxx:47:13 error: elaborated type refers to a typedef
static enum CGLineCap fl_quartz_line_cap_ = kCGLineCapButt;

のうよなエラーが出た場合、fl_line_style.cxx内を書き換えます。
relion-1.4/external/fltk-1.3.0/src/の下にfl_line_style.cxxが存在するので、以下のように4つの行を編集します。

-static enum CGLineCap fl_quartz_line_cap_ = kCGLineCapButt;
+static CGLineCap fl_quartz_line_cap_ = kCGLineCapButt;
-static enum CGLineJoin fl_quartz_line_join_ = kCGLineJoinMiter;
+static CGLineJoin fl_quartz_line_join_ = kCGLineJoinMiter;
-  static enum CGLineCap Cap[4] = { kCGLineCapButt, kCGLineCapButt,
+  static CGLineCap Cap[4] = { kCGLineCapButt, kCGLineCapButt,
-  static enum CGLineJoin Join[4] = { kCGLineJoinMiter, kCGLineJoinMiter,
+  static CGLineJoin Join[4] = { kCGLineJoinMiter, kCGLineJoinMiter,

ファイル内の4つの"enum"を消すことになります。
また、fltk-1.3.0.tar.gzを別の名前、例えば、fltk-1.3.0.tar.gz.orgなどに変更しておきます。
(fltk-1.3.0.tar.gzの削除/名前変更をしないと、relionをインストールする度に、fl_line_style.cxxが前のファイルに書き換えられてしまいます。)

その2

./FL_Type.h:48:21: error: friend declaration specifying a default argument must be a definition
  frind FL_Widget *make_type_browser(int,int,int,int,const char *l=0);

のうよなエラーが出た場合、Fl_Type.h内を書き換えます。
relion-1.4/external/fltk-1.3.0/fluid/の下にFl_Type.hが存在するので、以下のように1行を編集します。

-  frind FL_Widget *make_type_browser(int,int,int,int,const char *l=0);
+  frind FL_Widget *make_type_browser(int,int,int,int,const char *);

relion-1.4のエラー

src/mpi.cpp:98:30: error: cannot initialize a parameter of type 'int (*(*)())' with an lvalue of type 'int'
            report_MPI_ERROR(result);

のうよなエラーが出た場合、mpi.h内を書き換えます。
relion-1.4/src/の下にmpi.hが存在するので、以下のように1行を編集します。

-  void report_MPI_ERROR(int errno);
+  void report_MPI_ERROR(int _errno);