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