Software and modules

From mn/bio/cees-bioinf
Revision as of 08:42, 23 May 2014 by Alexajo@uio.no (talk | contribs) (Modules)

Jump to: navigation, search

Software installation

Programs that are used by a large number of users at CEES are generally maintained by our IT support, who also creates 'modules' for each program installed in /cluster/software. On abel and the cod nodes, the standard way to use software is then to load them as modules with e.g.

module load samtools

A good explanation on how to use modules can be found here.

Occasionally, however, you might need to use software that is not already available on abel, and that might only be used by you alone, or a small group of researchers. In that case, you may not want to bother IT support with the installation and maintenance of that software, but you could install it yourself in the dedicated directory, /projects/cees/bin/ (see here).

Modules

In order to keep /projects/cees/bin/ as organized as possible, it is recommended that programs are installed in sub-directories according to program name and version number, e.g. in /projects/cees/bin/freebayes/0.9.14/.

If software is installed this way in /projects/cees/bin/, it is still possible (and recommended) to use modules, as these will facilitate the use of the software in SLURM scripts and increase reproducibility. In order to use modules, module files must be written and saved in directory /projects/cees/bin/modules/, again using the the program name as the name of a sub-directory, as in /projects/cees/bin/modules/freebayes/. The module file should be named according to the version number of the program, without file extension. Thus, the file /projects/cees/bin/modules/freebayes/0.9.14 is a module file for the use of version 0.9.14 of the program FreeBayes. The content of the module file links this module with the installed software and is written in a language called TCL. However, commands in the module file are simple to understand, and existing module files can easily be copied and adapted for new module files. For example, the content of module file /projects/cees/bin/modules/freebayes/0.9.14 is as follows:

#%Module

## URL of application homepage.
set appurl     https://github.com/ekg/freebayes/

## Short description of module.
module-whatis "FreeBayes: Bayesian haplotype-based polymorphism discovery and genotyping"

## Commands.
set               root                 /projects/454data/bin/freebayes/0.9.14/
prepend-path      PATH                 $root

Here, the first line

#%Module

is required to make this file interpretable as a module file. All lines starting with ## are comments, and specification of the program URL in

set appurl     https://github.com/ekg/freebayes/

only serves as an information for the user. The command

module-whatis

should be followed with a brief description of the program. The line

set               root                 /projects/454data/bin/freebayes/0.9.14/

defines a variable 'root' as the directory name of the actual software installation in /projects/454data/bin/freebayes/0.9.14/, and with the following command

prepend-path      PATH                 $root

the directory name stored in this variable is added to the PATH variable, which is simply a list of directories, in which the system searches for executables whenever a program is called. Thus, this module file allows that after using

module load freebayes/0.9.14

you can simply type

freebayes

to start FreeBayes.


NOTE see these instructions on how to make sure the module system can find our locally installed modules.

Program version defaults

When multiple versions of the same program are installed, a default version can be specified. For example, there are currently two versions of FreeBayes installed on /projects/cees/bin/freebayes/ (versions 9.9.2 and 0.9.14), and correspondingly, the modules directory /projects/cees/bin/modules/freebayes contains two module files with these version names. In this case, you may want to specify which version should be loaded by default with the following command.

module load freebayes

This can be achieved with a file named '.version' in the same directory as the module files (here: /projects/cees/bin/freebayes/.version). Note that the file name is preceded by a period symbol, which defines this file to be a hidden file that is not shown when directory contents are normally listed with command

ls

To see hidden files in the current directory, you will have to instead use

ls -a

The content of the '.version' file is very simple:

#%Module
set ModulesVersion "0.9.14"

where, again, the first line allows interpretation of this file as a module file, and the second line specifies the version number that is to be used as the default program version.