Project

General

Profile

Install EMAN2 » History » Version 51

Neil Voss, 08/14/2012 11:09 AM

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
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
114
</pre>
115 47 Neil Voss
* create a wrapper around the wrapper:
116 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
117
<pre>
118
import ctypes
119
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
120
from mympi.mpi import *
121
</pre>
122 50 Neil Voss
This needs to be done to avoid the error:
123
<pre>
124
python: symbol lookup error: 
125
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
126
    undefined symbol: mca_base_param_reg_int
127
</pre>
128 1 Neil Voss
129
* test 1: 
130
<pre>
131
python -c 'import mpi'
132
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
133
</pre>
134
135 50 Neil Voss
* test 2: 
136
<pre>sxisac.py start.hdf</pre>
137
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
138 42 Neil Voss
139 50 Neil Voss
h2. Test to see if code works
140
141
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
142
143
<pre>
144
cd EMAN2/test/rt
145
./rt.py
146
</pre>
147
148
h2. Install MyMPI for MPI functions
149
150
see http://sparx-em.org/sparxwiki/MPI-installation
151
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
152
153
This fixes this problem:
154
<pre>
155
    from mpi import mpi_init
156
ImportError: No module named mpi
157
</pre>
158
159
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.
160 34 Neil Voss
161 9 Neil Voss
h2. Documentation
162 3 Neil Voss
163 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
164 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
165 31 Neil Voss
166 2 Neil Voss
______
167
168
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
169 1 Neil Voss
170
______