Project

General

Profile

Install EMAN2 » History » Version 75

Neil Voss, 02/12/2016 01:38 PM

1 1 Neil Voss
h1. Install EMAN2/SPARX
2
3 53 Amber Herold
*Before you begin:*
4 55 Amber Herold
Please note that Appion 2.2, Appion 2.2-redux and any earlier releases do not include any features that require EMAN2/SPARX to be installed. Appion 3.0, the development trunk and future releases will require this software.
5 69 Neil Voss
This documentation assumes you are using CentOS 6 (written as of CentOS 6.5)
6
It is best to install EMAN2/SPARX from source to get MPI working on a cluster or to avoid conflicts with having two different versions of python on your system. Binaries of EMAN2/SPARX all come with their own python pre-installed.
7 6 Neil Voss
8
9 55 Amber Herold
h2. Install pre-requisite packages for EMAN2 compiling
10 6 Neil Voss
11 27 Neil Voss
h3. yum based packages
12
13 7 Neil Voss
* Make sure EPEL is install, if not go here: [[Download additional Software (CentOS Specific)]]
14
* Use yum to install devel libraries:
15
<pre>
16 67 Neil Voss
sudo yum install fftw-devel gsl-devel boost-python numpy libjpeg-devel \
17 75 Neil Voss
 PyQt4-devel cmake ipython hdf5-devel libtiff-devel libpng-devel \
18
 PyOpenGL db4-devel python-argparse openmpi-devel python-pip
19 1 Neil Voss
</pre>
20 27 Neil Voss
21
22 3 Neil Voss
h2. Download the source
23
24
# To download the source code go to the link:
25
#* http://blake.bcm.edu/emanwiki/EMAN2
26 56 Amber Herold
# Click on *"Main EMAN2 Download Page"*
27 66 Neil Voss
# Click on *"Download EMAN 2"*, whichever is the latest release of EMAN. 
28
# Scroll down to *Source* to download the *eman2.1beta3.source.tar.gz* 
29 3 Neil Voss
30
h2. Work with the source
31
32
# go to the directory with the source code
33
# extract the archive:
34
<pre>
35 71 Neil Voss
tar zxvf eman2.12.source.tar.gz
36 1 Neil Voss
</pre>
37 15 Neil Voss
# go into directory
38
<pre>cd EMAN2/src/build</pre>
39 19 Neil Voss
# start configure script:
40 1 Neil Voss
<pre>cmake ../eman2/</pre>
41 11 Neil Voss
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
42 75 Neil Voss
#* I had to disable ftgl (fonts in OpenGL) to get 2.12 to compile.
43 70 Neil Voss
<pre>
44
-- The C compiler identification is GNU 4.4.7
45
-- The CXX compiler identification is GNU 4.4.7
46
-- Check for working C compiler: /usr/bin/cc
47
-- Check for working C compiler: /usr/bin/cc -- works
48
-- Detecting C compiler ABI info
49
-- Detecting C compiler ABI info - done
50
-- Check for working CXX compiler: /usr/bin/c++
51
-- Check for working CXX compiler: /usr/bin/c++ -- works
52
-- Detecting CXX compiler ABI info
53
-- Detecting CXX compiler ABI info - done
54
-- Looking for fseek64
55
-- Looking for fseek64 - not found
56
-- Looking for fseeko
57
-- Looking for fseeko - found
58
-- Looking for ftell64
59
-- Looking for ftell64 - not found
60
-- Looking for ftello
61
-- Looking for ftello - found
62
-- Configuring done
63
-- Generating done
64
-- Build files have been written to: /emg/sw/EMAN2/src/build
65
</pre>
66 18 Neil Voss
# start compiling:
67
<pre>make</pre>
68 3 Neil Voss
# install to directory:
69 23 Neil Voss
<pre>sudo make install</pre>
70
71
h2. Set environmental variables
72
73
h3. bash
74
75
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
76 24 Neil Voss
77
<pre>
78
export EMAN2DIR=/usr/local/EMAN2
79
export PATH=${EMAN2DIR}/bin:${PATH}
80 23 Neil Voss
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
81
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
82
</pre>
83 16 Neil Voss
84 51 Neil Voss
h3. c shell
85
86
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
87
88
<pre>
89
setenv EMAN2DIR /usr/local/EMAN2
90
setenv PATH ${EMAN2DIR}/bin:${PATH}
91
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
92
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
93
</pre>
94
95
96 50 Neil Voss
h2. Install MyMPI
97 42 Neil Voss
98 63 Amber Herold
* First, add the openmpi module so that MyMPI can find it.
99
<pre>
100
module add openmpi-i386
101
-or-
102
module add openmpi-x86_64
103
</pre>
104
105 42 Neil Voss
* Download source: 
106 61 Amber Herold
From the main software page: http://ncmi.bcm.tmc.edu/ncmi/software/software_details?selected_software=counter_222 scroll to *MPI Support*.
107
Click on *Download MPI Support*
108
Click on *pydusa-1.15es.tgz*
109 42 Neil Voss
* Extract:
110 61 Amber Herold
<pre>tar zxvf pydusa-1.15es.tgz</pre>
111 42 Neil Voss
* go into directory
112 61 Amber Herold
<pre>cd pydusa-1.15es</pre>
113 65 Amber Herold
&nbsp;
114 62 Amber Herold
If you are on a 64bit machine, you may have problems with the code finding the numpy headers:
115 65 Amber Herold
&nbsp;
116 34 Neil Voss
<pre>nano configure</pre>
117 65 Amber Herold
&nbsp;
118 54 Neil Voss
find the line:
119 1 Neil Voss
<pre>
120
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
121
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
122 54 Neil Voss
</pre>
123
and replace it with:
124 65 Amber Herold
&nbsp;
125 54 Neil Voss
<pre>
126 1 Neil Voss
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
127
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
128 46 Neil Voss
</pre>
129
* Configure:
130
<pre>
131
setenv MPIROOT /usr/lib64/openmpi
132
setenv MPIINC /usr/include/openmpi-x86_64
133
setenv MPILIB ${MPIROOT}/lib
134
setenv MPIBIN ${MPIROOT}/bin
135 1 Neil Voss
./configure
136
</pre>
137
<pre>
138
export MPIROOT=/usr/lib64/openmpi
139
export MPIINC=/usr/include/openmpi-x86_64
140
export MPILIB=${MPIROOT}/lib
141 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
142 46 Neil Voss
./configure
143
</pre>
144 64 Amber Herold
Please ensure mpicc was found. If it is not found, a version of MPI will be installed that may cause errors. Look for the following error and correct this issue before moving on:
145
<pre>
146
configure: error: Unable to find mpicc! mpicc location can be specified with --with-mpicc
147
</pre>
148 65 Amber Herold
&nbsp;
149 46 Neil Voss
* compile the source:
150
<pre>make</pre>
151
* copy the mpi.so to site-packages with a different name:
152
<pre>
153 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
154 52 Neil Voss
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
155 1 Neil Voss
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
156
</pre>
157 47 Neil Voss
* create a wrapper around the wrapper:
158 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
159
<pre>
160
import ctypes
161
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
162
from mympi.mpi import *
163
</pre>
164 50 Neil Voss
This needs to be done to avoid the error:
165
<pre>
166
python: symbol lookup error: 
167
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
168
    undefined symbol: mca_base_param_reg_int
169
</pre>
170 1 Neil Voss
171
* test 1: 
172
<pre>
173
python -c 'import mpi'
174
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
175
</pre>
176
177 50 Neil Voss
* test 2: 
178
<pre>sxisac.py start.hdf</pre>
179
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
180 42 Neil Voss
181 50 Neil Voss
h2. Test to see if code works
182
183
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
184
185
<pre>
186
cd EMAN2/test/rt
187
./rt.py
188
</pre>
189
190
h2. Install MyMPI for MPI functions
191
192
see http://sparx-em.org/sparxwiki/MPI-installation
193
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
194
195
This fixes this problem:
196
<pre>
197
    from mpi import mpi_init
198
ImportError: No module named mpi
199
</pre>
200
201
This module was very difficult to get working, it seems to be a poorly supported python wrapper for MPI. So, what we are going to do is compile the module, rename it, and create a wrapper. So, essentially we are creating a wrapper around the wrapper. We can only hope they switch to [http://mpi4py.scipy.org/ mpi4py] in the future.
202 34 Neil Voss
203 9 Neil Voss
h2. Documentation
204 3 Neil Voss
205 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
206 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
207 31 Neil Voss
208 2 Neil Voss
______
209
210
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
211 1 Neil Voss
212
______