Instructions from before the change to Anaconda are here, but they likely will not work with current versions of the source.
WARNING: As of Dec 4, 2019 we have started the transition from Python 2 to Python 3. The "master" branch of EMAN2/SPHIRE/SPARX will not be fully functional until we complete the final stage of the transition. This warning will be removed at that time. You have 2 choices:
Building EMAN2/SPARX/SPHIRE from Source
The EMAN2 source lives on GitHub, downloading the source is part of the instructions below. Do not download it yet!
These are the standard instructions for establishing a build and runtime environment for EMAN2/SPARX/SPHIRE on Linux and Mac. While the instructions look long, in reality it should only take 10-15 minutes to complete the entire process (with a decent network connection). This build uses Anaconda/Miniconda for a working environment and most of the dependencies. Anaconda has become ubiquitous for Python and R-based scientific computing and education over the last decade. While it may be possible to build the system without using Anaconda, we do not recommend doing this, and cannot provide support for a non-Anaconda approach. If you follow the instructions below, you should have a painless source build very quickly.
Building on Windows is so complicated that we cannot provide generic instructions at this point in time.
Note that even with a source build it may be difficult to get this working on systems with very old operating system installs. We normally try to support OS versions as much as 5-7 years old. Please report any problems.
GPU Support (Linux Only!)
For features which support the GPU, please complete the standard source install instructions below, then follow the GPU instructions from the binary installation page.
Building and Installing EMAN2/SPHIRE/SPARX
Anaconda comes in two flavors Anaconda which is a full featured system with many libraries and capabilities built in, and Miniconda which is a stripped down version of the system. Both systems are the same, it is just a question of which packages come preinstalled. These instructions are based on the smaller Miniconda install. You may also have success with Anaconda, but a better approach may be to install Miniconda, then add in any extra packages you actually need.
We make use of the environment system in Anaconda to isolate EMAN2 dependencies from other Anaconda packages you may have installed. If you need to install other packages you wish to use in concert with EMAN2, you will need to install them within the EMAN2 environment. Be warned that sometimes installing another package may trigger a version change in one of EMAN2's dependencies, which may or may not be a problem, depending on which dependency it is. We strongly suggest getting the base EMAN2 installed and working first, before trying to install any additional packages within the same Anaconda environment.
Initial Setup and Build (one time)
- Remove/deactivate other Anaconda installs. If you do not have Anaconda/Miniconda (or another copy of EMAN2/SPARX/SPHIRE) already installed in your account, skip to step 2. If you DO have Anaconda or Miniconda installed in your account, you must insure that any existing install you have is not active in your shell (not in PATH, no LD_LIBRARY_PATH or PYTHONPATH set). While it may also be possible to set up an environment for EMAN2 in your existing Anaconda install, you will need to know what you're doing, and adapt these instructions to your situation.
1 echo $PATH 2 # make sure no Anaconda/Miniconda/EMAN2 entries 3 echo $LD_LIBRARY_PATH 4 echo $PYTHONPATH 5 # ideally, both return nothing. If it set to something it is possible that it may interfere with Anaconda 6 # strongly suggest at least during the install, ''unset'' both of these. After installation you can test 7 # to see if they cause any issues 8
and follow the prompts. When you see Do you wish the installer to initialize Miniconda3 by running conda init?, say no, then move on to the next step.
Initialize conda for shell interaction. These instructions will depend on what shell you use. The default on most systems is bash. If you use a different shell ( tsch, zsh, ... ), you will need to take this into account:
1 # for bash-like shells, such as bash and zsh 2 source <miniconda-path>/etc/profile.d/conda.sh 3 4 # for csh-like shells, such as csh and tcsh: 5 source <miniconda-path>/etc/profile.d/conda.csh 6 7 # <shell-name> is bash, fish, powershell, tcsh, xonsh or zsh 8 conda init <shell-name> 9 10 # we suggest the following, meaning you will need to use ''conda activate'' after logging in before using EMAN2 11 conda config --set auto_activate_base False
As it says after you run this command, you will need to close and reopen your shell/terminal for it to take effect. This command modified your shell initialization so the conda activate command can be used properly. For more information on conda-init and activation, see Environment Activation.
MacOS Users (bash only)
On MacOS, this modifies ~/.bash_profile. If you have a ~/.profile startup file, creation of ~/.bash_profile will prevent ~/.profile from being read. A simple solution is to source .profile within .bash_profile.
For differences between login- and non-login shells and order of reading the startup files on Mac OSX, see, https://www.anintegratedworld.com/basics-of-osx-bashrc-v-profile-v-bash_profile/.
- Configure conda.
Create a new environment with EMAN2 dependencies. eman2 below is the name of the environment. You may make this whatever you like, as long as you remember to use the same name when doing conda activate. Note that this name will appear as part of your prompt when activated, so you may want to keep it short.
1 conda create -n eman2 eman-deps=16.1 cmake=3.14 boost=1.66 -c cryoem -c defaults -c conda-forge
Get EMAN code from GitHub:cryoem/eman2.
Create a build directory (out-of-source builds are recommended).
Activate your environment. If you used a different name above, use it here too.
Checkout source code and pull from the remote.
If you use cmake-gui, since conda is not in PATH anymore, cmake will fail to find the environment directory. In that case set CONDA_PREFIX to your conda environment directory manually.
If you use ccmake, you may get an error related to OpenGL. If this happens try quitting ccmake and running it again.
- Make sure to delete any cmake variables that cmake already found, variables like *_LIBRARY or similar, *_INCLUDE_PATH or similar, CONDA_EXECUTABLE, CMAKE_INSTALL_PREFIX and any variables that are expected to contain conda environment related values.
- Configure and generate in cmake.
- You may also wish to run
Python 3 Environment
To setup a python 3 environment with all the proper dependencies, create and activate a conda environment with the following commands.
1 conda create -n py3 eman-deps=18.1 cmake=3.14 boost=1.66 -c cryoem -c defaults -c conda-forge
You can replace "py3" with another name for the environment.
If you are in the "base" environment, activate your new environment with python 3.
1 conda activate py3
If you are in your "eman2" environment, first deactivate it, then activate "py3".
EMAN Daily Development
When you start a new shell, these are the steps you will need to take before running EMAN2 programs or compiling the system:
Activate your environment. If you used a different name above, use it here too.
Update. Periodically you should update your source using standard git techniques. If you are not modifying EMAN, just compiling from source, you just need to periodically:
Other Environments. To switch to another conda environment (stop working with EMAN2), first deactivate your current environment.
1 conda deactivate
The approach above will install EMAN with a precompiled version of OpenMPI, which may or may not work with the batch queuing system on your cluster. If it does not work, the symptom will be that MPI parallel jobs will use only a single node, no matter how many you have allocated in your job. If this happens please see the linux cluster installations on the binary install page. Those instructions should also work with either of the source-based installations below.