Project

General

Profile

Install EMAN2 » History » Version 72

Neil Voss, 02/12/2016 01:10 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 68 Neil Voss
 PyQt4-devel cmake ipython hdf5-devel libtiff-devel libpng-devel libdb-devel \
18
 PyOpenGL ftgl-devel db4-devel python-argparse openmpi-devel python-pip
19 1 Neil Voss
</pre>
20 27 Neil Voss
21 72 Neil Voss
<!--
22 27 Neil Voss
h3. bsddb3
23
24
Additionally you need to install the python-bsddb3 library (not available via YUM). I just use the pypi easy_installer, yum will never know.
25 26 Neil Voss
<pre>
26 70 Neil Voss
sudo pip install bsddb3
27 1 Neil Voss
</pre>
28 72 Neil Voss
-->
29 27 Neil Voss
30 3 Neil Voss
h2. Download the source
31
32
# To download the source code go to the link:
33
#* http://blake.bcm.edu/emanwiki/EMAN2
34 56 Amber Herold
# Click on *"Main EMAN2 Download Page"*
35 66 Neil Voss
# Click on *"Download EMAN 2"*, whichever is the latest release of EMAN. 
36
# Scroll down to *Source* to download the *eman2.1beta3.source.tar.gz* 
37 3 Neil Voss
38
h2. Work with the source
39
40
# go to the directory with the source code
41
# extract the archive:
42
<pre>
43 71 Neil Voss
tar zxvf eman2.12.source.tar.gz
44 1 Neil Voss
</pre>
45 15 Neil Voss
# go into directory
46
<pre>cd EMAN2/src/build</pre>
47 19 Neil Voss
# start configure script:
48 11 Neil Voss
<pre>cmake ../eman2/</pre>
49 1 Neil Voss
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
50 70 Neil Voss
<pre>
51
-- The C compiler identification is GNU 4.4.7
52
-- The CXX compiler identification is GNU 4.4.7
53
-- Check for working C compiler: /usr/bin/cc
54
-- Check for working C compiler: /usr/bin/cc -- works
55
-- Detecting C compiler ABI info
56
-- Detecting C compiler ABI info - done
57
-- Check for working CXX compiler: /usr/bin/c++
58
-- Check for working CXX compiler: /usr/bin/c++ -- works
59
-- Detecting CXX compiler ABI info
60
-- Detecting CXX compiler ABI info - done
61
-- Looking for fseek64
62
-- Looking for fseek64 - not found
63
-- Looking for fseeko
64
-- Looking for fseeko - found
65
-- Looking for ftell64
66
-- Looking for ftell64 - not found
67
-- Looking for ftello
68
-- Looking for ftello - found
69
-- Configuring done
70
-- Generating done
71
-- Build files have been written to: /emg/sw/EMAN2/src/build
72
</pre>
73 18 Neil Voss
# start compiling:
74
<pre>make</pre>
75 3 Neil Voss
# install to directory:
76 23 Neil Voss
<pre>sudo make install</pre>
77
78
h2. Set environmental variables
79
80
h3. bash
81
82
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
83 24 Neil Voss
84
<pre>
85
export EMAN2DIR=/usr/local/EMAN2
86
export PATH=${EMAN2DIR}/bin:${PATH}
87 23 Neil Voss
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
88
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
89
</pre>
90 16 Neil Voss
91 51 Neil Voss
h3. c shell
92
93
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
94
95
<pre>
96
setenv EMAN2DIR /usr/local/EMAN2
97
setenv PATH ${EMAN2DIR}/bin:${PATH}
98
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
99
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
100
</pre>
101
102
103 50 Neil Voss
h2. Install MyMPI
104 42 Neil Voss
105 63 Amber Herold
* First, add the openmpi module so that MyMPI can find it.
106
<pre>
107
module add openmpi-i386
108
-or-
109
module add openmpi-x86_64
110
</pre>
111
112 42 Neil Voss
* Download source: 
113 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*.
114
Click on *Download MPI Support*
115
Click on *pydusa-1.15es.tgz*
116 42 Neil Voss
* Extract:
117 61 Amber Herold
<pre>tar zxvf pydusa-1.15es.tgz</pre>
118 42 Neil Voss
* go into directory
119 61 Amber Herold
<pre>cd pydusa-1.15es</pre>
120 65 Amber Herold
&nbsp;
121 62 Amber Herold
If you are on a 64bit machine, you may have problems with the code finding the numpy headers:
122 65 Amber Herold
&nbsp;
123 34 Neil Voss
<pre>nano configure</pre>
124 65 Amber Herold
&nbsp;
125 54 Neil Voss
find the line:
126 1 Neil Voss
<pre>
127
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
128
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
129 54 Neil Voss
</pre>
130
and replace it with:
131 65 Amber Herold
&nbsp;
132 54 Neil Voss
<pre>
133 1 Neil Voss
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
134
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
135 46 Neil Voss
</pre>
136
* Configure:
137
<pre>
138
setenv MPIROOT /usr/lib64/openmpi
139
setenv MPIINC /usr/include/openmpi-x86_64
140
setenv MPILIB ${MPIROOT}/lib
141
setenv MPIBIN ${MPIROOT}/bin
142 1 Neil Voss
./configure
143
</pre>
144
<pre>
145
export MPIROOT=/usr/lib64/openmpi
146
export MPIINC=/usr/include/openmpi-x86_64
147
export MPILIB=${MPIROOT}/lib
148 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
149 46 Neil Voss
./configure
150
</pre>
151 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:
152
<pre>
153
configure: error: Unable to find mpicc! mpicc location can be specified with --with-mpicc
154
</pre>
155 65 Amber Herold
&nbsp;
156 46 Neil Voss
* compile the source:
157
<pre>make</pre>
158
* copy the mpi.so to site-packages with a different name:
159
<pre>
160 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
161 52 Neil Voss
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
162 1 Neil Voss
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
163
</pre>
164 47 Neil Voss
* create a wrapper around the wrapper:
165 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
166
<pre>
167
import ctypes
168
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
169
from mympi.mpi import *
170
</pre>
171 50 Neil Voss
This needs to be done to avoid the error:
172
<pre>
173
python: symbol lookup error: 
174
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
175
    undefined symbol: mca_base_param_reg_int
176
</pre>
177 1 Neil Voss
178
* test 1: 
179
<pre>
180
python -c 'import mpi'
181
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
182
</pre>
183
184 50 Neil Voss
* test 2: 
185
<pre>sxisac.py start.hdf</pre>
186
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
187 42 Neil Voss
188 50 Neil Voss
h2. Test to see if code works
189
190
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
191
192
<pre>
193
cd EMAN2/test/rt
194
./rt.py
195
</pre>
196
197
h2. Install MyMPI for MPI functions
198
199
see http://sparx-em.org/sparxwiki/MPI-installation
200
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
201
202
This fixes this problem:
203
<pre>
204
    from mpi import mpi_init
205
ImportError: No module named mpi
206
</pre>
207
208
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.
209 34 Neil Voss
210 9 Neil Voss
h2. Documentation
211 3 Neil Voss
212 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
213 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
214 31 Neil Voss
215 2 Neil Voss
______
216
217
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
218 1 Neil Voss
219
______