What can you find in BrainVISA ?¶
BrainVISA provides a complete, modular, infrastructure for neuroimaging software. It helps organizing heterogeneous software and data and provides a common general graphical interface for users.
BrainVISA is thus a set of tools rather than a single software.
Axon is the name of the software which runs when you use the brainvisa command. The latter is still named brainvisa for historical reasons. It is a central software in the BrainVISA environment.
BrainVISA components include several aspects:
- Unified graphical interface to data processing
- Data organization as directory trees with database indexing and querying
- Portfolio of applicative toolboxes ready for use
- Software glue for various neuroimaging processing software, including tools developed by the team labs contributing to BrainVISA, and external software
- Interactive 3D visualization for all kind of neuroimaging data, supporting a wide range of data file formats: Anatomist: Data visualization and library of high-level neuroimaging graphical components
- Multiprocessor computing infrastructure, allowing distributed computing both on a local computer or a remote computing resource (cluster)
- Software integration tools allowing to develop or interface new processing tools
- Software packaging and distribution tools allowing users to easily download, install and use various toolboxes
- Lower-level neuroimaging software libraries (AIMS) useable as building blocks for new processing tools
Axon provides a graphical user environment, and integrates the different tools and data to make them available for end users.
Unified graphical interface to data processing¶
Axon organizes processing tools and provides a unified graphical user interface for them.
This user interfaces are automatically generated by Axon from processes parameters characteristics.
However custom user interfaces are also possible and used in some applications, such as Morphologist UI.
Data is kept in organized directories, and referenced in databases. Files organization can be described to adapt a particular schema, for instance to allow reusing data from external sofftware such as Freesurfer or SPM. Databasing allows to query and filter data to be processed, and to generate processed file names.
In addition to files organization, Axon offers a way of automatically handling the complex problem of coordinates systems used by various data.
See The documentation for more details.
Different software can be interfaced with BrainVISA and Axon, even when they are using different languages and different conventions, coordinates systems, data organization...
Several BrainVISA toolboxes are already interfacing some popular software from the neuroimaging community, at least part of their tools: FreeSurfer, SPM, FSL... Other tools and software may be interfaced the same way via extensions.
Many software libraries are directly useable from BrainVISA toolboxes and processing tools, amongst which several external Python language libraries which prove very useful for the neuroimaging community: for instance Numpy, Scipy, Matplotlib, and many others.
Visualization and interactive edition of data is integrated in Axon user interface, via the eye and pencil icons close to data parameters in processing interfaces.
Axon provides facilities to customize and write new specialized visualization tools. Most of them make use of Anatomist: Data visualization and library of high-level neuroimaging graphical components. Visualization can be adapted to specific needs for specific data, and complete 3D scenes can be built and triggered by a simple click.
Moreover coordinates systems are transparently and automatically managed by the combination of Axon databasing and Anatomist visualization capabilities.
Processing control infrastructure¶
Axon provides a processing pipeline management infrastructure: processes are organized with dependencies, allowing parallel execution.
Parallel or distributed execution may be performed either locally (on a mutiprocessor machine for instance), or remotely on a computing cluster. Distributed processing is managed via Soma-Workflow. This software library handles jobs dependencies and distribution, and interfaces in a transparent way remote computing clusters using various batch systems, or a local machine.
Integrate your tools¶
BrainVISA is designed to be customizable and extensible. User-defined research tools can be easily added either for personal convenience, for sharing research tools in a lab, or to distribute finalized toolboxed to the community.
All infrastructure software is free and works on Linux, Mac OS and Windows. Some additional toolboxes may contain non-free code and/or be limited to fewer platforms, but are out of topic here.
Several levels of integration may be reached.
- Adding personal processes to your BrainVISA
- Designing toolboxes
- Developing image analysis algorithms
- Providing custom interactive visualization
- Distributing tools to the community
The levels correspond to different layers of the infrastructure, which may be schematically represented this way:
More details may be found in the following sections, which may become very technical.
- An overview of the different programming tools
- Sources forge and repositories
- The build system
- The packaging and installation system
- Projects sources table
BrainVISA is a modular environment. It is possible to install, use, and build on a subset of the tools. Of course there are dependencies between elements but large parts are optional.
For instance we can cite a few typical use cases:
Adding personal processes to your BrainVISA¶
Adding processes may be done easily using a standard binary installation of BrainVISA: no need to access the source code of projects and to compile anything.
Processes may be added in a personal directory which is seen as a regular toolbox. Thus adding a personal process is just a matter of adding a Python script file in this processes directory.
Toolboxes are a set of organized Axon processes, and may also contain types and files oprganization definitions, and documentation. They are also described in the Programming course slides.
Developing image analysis algorithms¶
BrainVISA provides image analysis libraries, which are mostly focused on anatomical MRI processing but may be used in various applications. They handle various types of data used in the field of neuroimaging, and unserstand a rather large set of file formats. These are the AIMS libraries. They include a set of C++ language libraries, some Python language bindings which make them scriptable in an easy way, and executable programs which may be direcly called by users or by scripts.
Programming in C++ allows lower-level, optimized image processing algorithms to be written. However this is at the cost of requiring compilation. As the libraries are not available as binary installable files on every system, developing for compilation generally requires to compile the AIMS libraries from sources. Thus you will have to look at the sources repository section and the build system section.
Providing custom interactive visualization¶
Visualization in BrainVISA can be provided via Axon through viewer processes. Most of them are making use of Anatomist for its interactive 3D capabilities, and its easy scripting facilities: PyAnatomist for scripting in Python language.
Distributing tools to the community¶
Tools based on BrainVISA development libraries can be freely distributed to the community. Distribution may be done via software packages which can be installed on top of existing BrainVISA installations, just as in the download section.
From version 4.5, BrainVISA is installed via a modular installer tool, similar to what is commonly found to manage software packages in a Linux distribution, but which works on all supported architectures (Linux, Mac, Windows), and allowing local installations: not needed administrator priviledges, and multiple versions of BrainVISA may be installed independently in different user directories.
It is possible to build custom packages in custom repositories, which can be added to the installer.
Details are available in the Packaging and installation system section.
Toolboxes developers have some degrees of freedom on the licenses under which they can distribute their software. There are a few limitations, however:
Python graphical interfaces are GPL (CeCILL-v2): these graphical parts are built using PyQt, which is bound to GPL, and thus require all software built on them to be also distributed under a GPL-compatible licence. This applies to all Axon processes, which may appear in the brainvisa GUI.
But lower-level processing tools do not normally require such graphical interface, so are not bound to a specific license. Toolbox designers are thus free to choose the distribution license they prefer, provided their toolbox is separated in two distinct parts: the processing part (non-GUI, any license may be chosen), and the Axon part (GPL or CeCILL-v2).
Anatomist also has Qt user interface, but is globally built in C++ so does not have a strong dependency on PyQt: Anatomist is distributed under the CeCILL-B license (BSD-like). It has plugins in Python language, which may make use of PyQt however.
PyAnatomist, and python plugins, are using PyQt, so is distributed under the CeCILL-v2 (GPL-compatible) license. Custom anatomist plugins in Python must thus follow this licensing policy.
Technical developers section¶
BrainVISA main software and programming libraries¶
All of the software here is free and portable on Linux, Mac and Windows. Some additional toolboxes may contain non-free code and/or be limited to fewer platforms, but are not listed here.
|Axon, conductor software:|
the “brainvisa” program and libraries, pipelining infrastructure, databasing, and graphical interface. Language: Python
|Anatomist 3D interactive visualization:|
|Distributed processing: Soma-Workflow:|
|AIMS image processing:|
General python tools.
|CAPSUL pipelining system:|
meant to replace the one currently in Axon. Language: Python
Sources forge and repositories¶
The main repository is on https://bioproj.extra.cea.fr/neurosvn/brainvisa/, and the web interface: https://bioproj.extra.cea.fr/redmine/projects/brainvisa which provides a forge and issue tracking system.
The server here is operated by the CEA institution, and has access rules that we cannot decide to change: it requires a login and password, which is somewhat annoying for open-source software.
However there is a “public” login/password to access the open-source code for reading:
login: brainvisa password: Soma2009
So it is normally possible to access the repository using this kind of link:
Projects are mainly in C++ and Python language. As BrainVISA is modular, it is made of multiple projects, which are separated by scope, aim, maintainers, language, and licence. To build the whole thing, we needed a tool to build an aggregation of the various projects. This tool is based on CMake but needed a higher-level tool to glue the various projects. This is the role of the brainvisa-cmake project of BrainVisa, and its main program, bv_maker.
Instructions on how to use it are available on the sources server web interface:
The building tools integrate software source repositories management, configuration, building, documentation generation, automatic testing, and software packaging. They thus allow to be used as a complete integrated development process.
As an example we have them running automatically every night on 7 different systems (Windows, Mac, and a set of Linux variants, including both virtual and physical machines). Problems are notified to the maintainers.
Packaging and installation system¶
The packaging / installation software is documented here: BrainVISA Installer.
It allows to generate a packages repository, and the installer program available in the download section.
Other BrainVISA libraries¶
- Brainvisa-cmake: build system
- Morphoplogist CAPSUL processes APIs: Morphologist processes constituting the main Morphologist pipeline have been converted to the new CAPSUL API.