.. figure:: /docs/images/scipion_logo.gif :width: 250 :alt: scipion logo .. _scipion-configuration: ===================== 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 :ref:`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: * ``/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 :ref:`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: :: [PYWORKFLOW] SCIPION_DOMAIN = pwem SCIPION_FONT_NAME = Helvetica SCIPION_LOG = ~/ScipionUserData/logs/scipion.log SCIPION_NOTIFY = True SCIPION_SOFTWARE = ${SCIPION_HOME}/software (...) [PLUGINS] 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 :ref:`how to link existing software `. Run :: 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 :ref:`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 :ref:`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 JAVA_BINDIR = %(JAVA_HOME)s/bin JAR = %(JAVA_BINDIR)s/jar JAVAC = %(JAVA_BINDIR)s/javac JNI_CPPPATH = %(JAVA_HOME)s/include:%(JAVA_HOME)s/include/linux Check also the `Xmipp-Java 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 `` 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 %s" % " ".join(sys.argv[1:]) (...) To force the config from the console :: scipion3 --config 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 :ref:`Troubleshooting ` page.