scipion logo

Scipion configuration

In Scipion3 configuration step is optional. Without a configuration file, scipion and the plugins will run with default values and what is available in the system (usually what is exposed with PATH and LD_LIBRARY_PATH).

If you want to know what are the default values type:

scipion3 printenv

If default values do not work for you, you are going to need a config file. Such cases include customising installation of some binaries (xmipp, relion), using a specific MPI or CUDA version or telling a plugin to use a specific binary version.

A special case is when you install Scipion3 on a cluster. For this you are going to need a host file.

Running scipion3 config

Below is the command used to generate config files or analyze them if you already have them.

scipion3 config

The configuration files generated with this command are in one location:

  • <your-scipion-home>/config contains configuration files for this Scipion installation, which will be applied to everyone using it. There are three files stored here:

    • scipion.conf with general variables to run scipion, install and use external libraries, etc. Also, all plugin-defined variables will be added for those plugins already installed.

    • hosts.conf with the host configuration. You can find more about it on the host configuration page.

    • protocols.conf with the protocols tree definition.

  • ~/.config/scipion/scipion.conf will be read if present but Scipion3 will never generate this file. This could be useful if you want to overwrite global Scipion3 configuration.

For example, below is an excerpt of config/scipion.conf adapted for Ubuntu:

SCIPION_LOG = ~/ScipionUserData/logs/scipion.log

CCP4_HOME = %(EM_ROOT)s/ccp4-7.0.056
CHIMERA_HOME = %(EM_ROOT)s/chimerax-1.0
CISTEM_HOME = %(EM_ROOT)s/cistem-1.0.0-beta

Notice that in the excerpt above, CCP4_HOME, CHIMERA_HOME and CISTEM_HOME are set to a certain path, determining a certain version. On the other hand, the variables that are not defined here will remain by default and a plugin update will eventually update them. Check also how to link existing software.


scipion3 config -p pluginPackage

to see the plugin-variables associated to a certain plugin. Note that pluginPackage is the package name of the plugin, check the plugin’s packages list (e.g. xmipp3 is the package name for the scipion-em-xmipp plugin)

Once config/scipion.conf is edited, run scipion3 config again to make some checks.

If you have configuration files from previous installations, you may want to use this instead (consider to make a backup of your config files before):

scipion3 config --overwrite

Check also the Xmipp documentation on the configuration.

Showing the config files

If you want to show the config files in your system’s default editor just type:

scipion3 config --show

GPU variables

Scipion itself is not compiling/running anything on GPU but it can provide some configuration to its plugins and their binaries. Scipion is always passing the PATH and the LD_LIBRARY_PATH present during the Scipion launching time. However, a certain CUDA toolkit can be set at config/scipion.conf.

For instance,

CUDA_BIN = /usr/local/cuda-10.1/bin
CUDA_LIB = /usr/local/cuda-10.1/lib64

where CUDA_BIN is intended only for compiling purposes (it should contain the nvcc compiler) and CUDA_LIB will be added to the LD_LIBRARY_PATH.

In addition, plugins can define its own CUDA config variables in order to be able to use a different CUDA toolkit from one plugin to the other. Then, one can set some of the following config variables at config/scipion.conf

XMIPP_CUDA_BIN = None  # Only for compiling purposes (overrides CUDA_BIN)
XMIPP_CUDA_LIB = None  # Fill to override scipion CUDA_LIB
RELION_CUDA_BIN = None  # Only for compiling purposes (overrides CUDA_BIN)
RELION_CUDA_LIB = None  # Fill to override scipion CUDA_LIB
GAUTOMATCH_CUDA_LIB = None  # Fill to override scipion CUDA_LIB
GCTF_CUDA_LIB = None  # Fill to override scipion CUDA_LIB
MOTIONCOR2_CUDA_LIB = None  # Fill to override scipion CUDA_LIB

Check also the Xmipp-CUDA documentation.

MPI variables

Scipion uses Python threads to launch different steps in parallel. However, Scipion can provide MPI configuration to its plugins and their binaries/compilations by setting the following variables in the config/scipion.conf

MPI_BINDIR = /usr/lib64/mpi/gcc/openmpi/bin
MPI_LIBDIR = /usr/lib64/mpi/gcc/openmpi/lib
MPI_INCLUDE = /usr/lib64/mpi/gcc/openmpi/include

Check also the Xmipp-MPI documentation.

Cluster users, please see host configuration page for more details.

JAVA variables

Scipion uses ShowJ from Xmipp for visualization proposes and ShowJ is coded in Java. For that, java command must be visible to launch ShowJ and visualize viewers. In addition, Xmipp will look for java libs during compilation to be able to generate the ShowJ programs.

You can set a certain java toolkit with the following config variables in config/scipion.conf

JAVA_HOME = /usr/lib/jvm/java-*  # Fill * with your java version
JNI_CPPPATH = %(JAVA_HOME)s/include:%(JAVA_HOME)s/include/linux

Check also the Xmipp-Java documentation.

OpenCV flag

To install Xmipp without OpenCV and, then skipping the programs using it (Optical Alignment and Volume Enrich), you can set OPENCV to False in scipion.conf:

OPENCV = False

Check also the Xmipp-OpenCV documentation.

Running Scipion in multi-users environment

In the case you want to install Scipion for multiple users, it is convenient to have a single scipion.conf file for all of them. From since scipion3, scipion will not generate a scipion.conf file at $HOME/.config/scipion/scipion.conf, so this is not a problem.

But older installations may have those config files per user and if present, scipion3 will take them into account. If you want to force ignoring the scipion.conf home file you can launch Scipion with the --config </path/to/a/specific/scipion.conf> parameter. This parameter tells Scipion to use a configuration file placed in a specific path and only that one.

NOTE: Scipion3 installer creates a launcher (python script) called scipion3. That file is good place to enforce using a common config file:

Fragment of scipion3 script:

cmd += "python -m scipion --config  <scipion.conf PATH> %s" % " ".join(sys.argv[1:])

To force the config from the console

scipion3 --config <scipion.conf PATH>

Disable local plugins installation:

Python’s installation engine fallsback to a local/write access forlder if the default destination is protected. Therefore a user could end up installing/updating plugins there. On unix systems it is $HOME/.local/lib/pythonX.Y/site-packages. If you set PYTHONUSERBASE( = $HOME/.local) environment variable to a protected folder or the same your installation points to, you can prevent user to update install any plugin.

To know where is you can run scipion3 python -m site –user-base

If you have problems compiling Scipion, see Troubleshooting page.