Project

General

Profile

Install EMAN2 » History » Version 52

Neil Voss, 08/14/2012 12:27 PM

1 1 Neil Voss
h1. Install EMAN2/SPARX
2
3
It is best to install EMAN2/SPARX from source, so that do not have conflicts with having two different versions of python on your system. Binaries of EMAN2/SPARX all come with their own python pre-installed.
4 2 Neil Voss
5 6 Neil Voss
This documentation assumes you are using CentOS 6 (written as of CentOS 6.2)
6
7
h2. Install require pre-packages for EMAN2 compiling
8
9 27 Neil Voss
h3. yum based packages
10
11 7 Neil Voss
* Make sure EPEL is install, if not go here: [[Download additional Software (CentOS Specific)]]
12
* Use yum to install devel libraries:
13
<pre>
14 10 Neil Voss
sudo yum install fftw-devel gsl-devel boost-python numpy \
15 12 Neil Voss
 PyQt4-devel cmake ipython hdf5-devel libtiff-devel libpng-devel \
16 8 Neil Voss
 PyOpenGL ftgl-devel db4-devel python-argparse openmpi-devel
17 1 Neil Voss
</pre>
18 27 Neil Voss
19
h3. bsddb3
20
21
Additionally you need to install the python-bsddb3 library (not available via YUM). I just use the pypi easy_installer, yum will never know.
22 26 Neil Voss
<pre>
23 1 Neil Voss
sudo easy_install bsddb3
24
</pre>
25 27 Neil Voss
26 3 Neil Voss
h2. Download the source
27
28
# To download the source code go to the link:
29
#* http://blake.bcm.edu/emanwiki/EMAN2
30 17 Neil Voss
# Click on *"Current stable version - direct link"*
31 3 Neil Voss
# Go under the heading "Source" at bottom of page
32
# Click to download the *eman-source-2.xx.tar.gz* file (as of August 2012, 2.xx is 2.06)
33
34
h2. Work with the source
35
36
# go to the directory with the source code
37
# extract the archive:
38
<pre>
39 4 Neil Voss
tar zxvf eman-source-2.06.tar.gz
40 1 Neil Voss
</pre>
41 15 Neil Voss
# go into directory
42
<pre>cd EMAN2/src/build</pre>
43 19 Neil Voss
# start configure script:
44 11 Neil Voss
<pre>cmake ../eman2/</pre>
45 15 Neil Voss
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
46 18 Neil Voss
# start compiling:
47
<pre>make</pre>
48 3 Neil Voss
# install to directory:
49 23 Neil Voss
<pre>sudo make install</pre>
50
51
h2. Set environmental variables
52
53
h3. bash
54
55
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
56 24 Neil Voss
57
<pre>
58
export EMAN2DIR=/usr/local/EMAN2
59
export PATH=${EMAN2DIR}/bin:${PATH}
60 23 Neil Voss
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
61
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
62
</pre>
63 16 Neil Voss
64 51 Neil Voss
h3. c shell
65
66
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
67
68
<pre>
69
setenv EMAN2DIR /usr/local/EMAN2
70
setenv PATH ${EMAN2DIR}/bin:${PATH}
71
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
72
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
73
</pre>
74
75
76 50 Neil Voss
h2. Install MyMPI
77 42 Neil Voss
78
* Download source: 
79 45 Neil Voss
<pre>wget -O pydusa-1.15-sparx.tgz \
80
 'http://sparx-em.org/sparxwiki/MPI-installation?action=AttachFile&do=get&target=pydusa-1.15-sparx.tgz'</pre>
81 42 Neil Voss
* Extract:
82
<pre>tar zxvf pydusa-1.15-sparx.tgz</pre>
83
* go into directory
84
<pre>cd pydusa-1.15-sparx</pre>
85 34 Neil Voss
<pre>nano configure</pre>
86 1 Neil Voss
<pre>
87
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
88
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
89
</pre><pre>
90
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
91
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
92 46 Neil Voss
</pre>
93
* Configure:
94
<pre>
95
setenv MPIROOT /usr/lib64/openmpi
96
setenv MPIINC /usr/include/openmpi-x86_64
97
setenv MPILIB ${MPIROOT}/lib
98
setenv MPIBIN ${MPIROOT}/bin
99 1 Neil Voss
./configure
100
</pre>
101
<pre>
102
export MPIROOT=/usr/lib64/openmpi
103
export MPIINC=/usr/include/openmpi-x86_64
104
export MPILIB=${MPIROOT}/lib
105 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
106 46 Neil Voss
./configure
107
</pre>
108
* compile the source:
109
<pre>make</pre>
110
* copy the mpi.so to site-packages with a different name:
111
<pre>
112 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
113 52 Neil Voss
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
114 1 Neil Voss
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
115
</pre>
116 47 Neil Voss
* create a wrapper around the wrapper:
117 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
118
<pre>
119
import ctypes
120
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
121
from mympi.mpi import *
122
</pre>
123 50 Neil Voss
This needs to be done to avoid the error:
124
<pre>
125
python: symbol lookup error: 
126
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
127
    undefined symbol: mca_base_param_reg_int
128
</pre>
129 1 Neil Voss
130
* test 1: 
131
<pre>
132
python -c 'import mpi'
133
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
134
</pre>
135
136 50 Neil Voss
* test 2: 
137
<pre>sxisac.py start.hdf</pre>
138
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
139 42 Neil Voss
140 50 Neil Voss
h2. Test to see if code works
141
142
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
143
144
<pre>
145
cd EMAN2/test/rt
146
./rt.py
147
</pre>
148
149
h2. Install MyMPI for MPI functions
150
151
see http://sparx-em.org/sparxwiki/MPI-installation
152
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
153
154
This fixes this problem:
155
<pre>
156
    from mpi import mpi_init
157
ImportError: No module named mpi
158
</pre>
159
160
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.
161 34 Neil Voss
162 9 Neil Voss
h2. Documentation
163 3 Neil Voss
164 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
165 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
166 31 Neil Voss
167 2 Neil Voss
______
168
169
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
170 1 Neil Voss
171
______