README.md 3.69 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# FSL conda package infrastructure


_This documentation is a work in progress_


This repository hosts information and documentation regarding the FSL conda package infrastructure. 

This `README` file contains a general overview. More detailed information on different topics can be found in the folowing files:

 - [`official_fsl_installations.md`](official_fsl_installations.md): Details on "official"/full conda-based FSL installations.
 - [`local_development.md`](local_development.md): Setting up an FSL development environment on your own machine.
 - [`fsl_conda_recipes.md`](fsl_conda_recipes.md): Details and examples regarding FSL conda recipes.


## Overview

FSL is installed using the [**conda**](https://conda.io/) package and environment management system. Each FSL project is built as a conda package, and published to an internally hosted conda channel.

Prior to FSL 6.1.0, FSL was released and installed as a monolithic archive file, containing most FSL tools, and a separate conda environment called "`fslpython`", configured after the archive file was installed. Some of the reasons for transitioning to a purely conda-based release model are as follows:

 - Simplify FSL installation procedure
 - Reduce the size of `$FSLDIR`
 - Allow "minimal" FSL installations, with only the utilities that are required
 - Improve support for container-based FSL installations
 - Simplify cross-platform management of external dependencies (e.g. VTK, OpenBLAS)


## Official FSL installations


Each official FSL release is defined by a conda [`environment.yml` specification](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually). This specification contains a list of all of the packages, including their versions, to be installed.

The official fsl/installer> script performs the following tasks:

1. Downloads a `miniconda` installer.
2. Installs a base `miniconda` environment into `$FSLDIR/../.fslconda/` (where `$FSLDIR` defaults to `/usr/local/fsl/`, or is explicitly specified by the user).
3. Creates a child conda environment at `$FSLDIR`.
4. Installs all FSL packages into the `$FSLDIR` conda environment.


## Partial FSL installations


Users may choose to install specific FSL packages by installing the desired FSL packages directly from the FSL conda channel into their own conda environment.


## FSL conda packages

All FSL projects and their dependencies are published as conda packages, either in the internal FMRIB conda channel, or on https://anaconda.org, in one of the `conda-forge` or `defaults` channels.

All FSL projects, and any dependencies which are not available on https://anaconda.org, are built according to a conda "recipe", which describes how the project can be built as a conda package. All FSL conda recipes are hosted as git repositories on the FMRIB gitlab server, under the `fsl/conda/` group.

To clarify, each FSL project, and internally managed dependency, comprises **two** git repositories:

* The project repository contains the project source code/resources, and is typically hosted at `https://git.fmrib.ox.ac.uk/fsl/<project>`<sup>*</sup>
* The recipe repository contains a conda recipe for the project, and is typically hosted at `https://git.fmrib.ox.ac.uk/fsl/conda/fsl-<project>`.


> <sup>*</sup> Some FSL projects and dependencies are hosted externally, such as [MSM](https://github.com/ecr05/MSM_HOCR) and [oxford_asl](https://github.com/ibme-qubic/oxford_asl/). The conda recipes for these projects are, however, hosted internally in the `fsl/conda/` gitlab group.


FSL conda packages are built automatically using Gitlab CI - the CI infrastructure for automatically building conda packages is hosted in the fsl/fsl-ci-rules> repository.



Paul McCarthy's avatar
Paul McCarthy committed
67