Project

General

Profile

Install EMAN2 » History » Version 50

Neil Voss, 08/14/2012 11:02 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 50 Neil Voss
h2. Install MyMPI
65 42 Neil Voss
66
* Download source: 
67 45 Neil Voss
<pre>wget -O pydusa-1.15-sparx.tgz \
68
 'http://sparx-em.org/sparxwiki/MPI-installation?action=AttachFile&do=get&target=pydusa-1.15-sparx.tgz'</pre>
69 42 Neil Voss
* Extract:
70
<pre>tar zxvf pydusa-1.15-sparx.tgz</pre>
71
* go into directory
72
<pre>cd pydusa-1.15-sparx</pre>
73 34 Neil Voss
<pre>nano configure</pre>
74 1 Neil Voss
<pre>
75
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
76
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
77
</pre><pre>
78
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
79
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
80 46 Neil Voss
</pre>
81
* Configure:
82
<pre>
83
setenv MPIROOT /usr/lib64/openmpi
84
setenv MPIINC /usr/include/openmpi-x86_64
85
setenv MPILIB ${MPIROOT}/lib
86
setenv MPIBIN ${MPIROOT}/bin
87 1 Neil Voss
./configure
88
</pre>
89
<pre>
90
export MPIROOT=/usr/lib64/openmpi
91
export MPIINC=/usr/include/openmpi-x86_64
92
export MPILIB=${MPIROOT}/lib
93 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
94 46 Neil Voss
./configure
95
</pre>
96
* compile the source:
97
<pre>make</pre>
98
* copy the mpi.so to site-packages with a different name:
99
<pre>
100 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
101
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
102
</pre>
103 47 Neil Voss
* create a wrapper around the wrapper:
104 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
105
<pre>
106
import ctypes
107
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
108
from mympi.mpi import *
109
</pre>
110 50 Neil Voss
This needs to be done to avoid the error:
111
<pre>
112
python: symbol lookup error: 
113
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
114
    undefined symbol: mca_base_param_reg_int
115
</pre>
116 1 Neil Voss
117
* test 1: 
118
<pre>
119
python -c 'import mpi'
120
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
121
</pre>
122
123 50 Neil Voss
* test 2: 
124
<pre>sxisac.py start.hdf</pre>
125
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
126 42 Neil Voss
127 50 Neil Voss
h2. Test to see if code works
128
129
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
130
131
<pre>
132
cd EMAN2/test/rt
133
./rt.py
134
</pre>
135
136
h2. Install MyMPI for MPI functions
137
138
see http://sparx-em.org/sparxwiki/MPI-installation
139
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
140
141
This fixes this problem:
142
<pre>
143
    from mpi import mpi_init
144
ImportError: No module named mpi
145
</pre>
146
147
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.
148 34 Neil Voss
149 9 Neil Voss
h2. Documentation
150 3 Neil Voss
151 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
152 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
153 31 Neil Voss
154 2 Neil Voss
______
155
156
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
157 1 Neil Voss
158
______