The BrainVISA project (we tried different names for it, "Soma", "Cartograph" but after all BrainVISA is OK to represent the whole environment) includes several C/C++ and Python libraries and commandlines sets, and the two main programs: BrainVISA and Anatomist. You can see it as the whole bundle BrainVisa/Anatomist plus all the programs released in the binary packages.
Some of the algorithms are not open source (yet?) but the core libraries and programs are released under the CeCILL-B or CeCILL v2 public licenses. All components needed for the "environment" part (core libraries, data structures, IO systems, GUI parts including all Anatomist and BrainVISA) are open source.
The different public libraries and projects are listed here, and their API is more or less documented using Doxygen, Sphinx and Epydoc automatic documentation software.
The aimsalgo project has now been open-sourced since version 3.1. Moreover the core libraries which could use a completely free license, that is to say do not depend on GPL code (such as PyQt) have actually moved to CeCILL-B, which is similar to BSD: aims-free (aimsdata, aimsalgo and lower-level libraries, anatomist, soma, brainvisa-cmake and the development tools).
| project: | language: | license: | description: |
|---|---|---|---|
| aimsalgo | C++ | CeCILL-B | Image processing algorithms layer based on aimsdata, now open-source since version 3.1. |
| aimsdata | C++ | CeCILL-B | Data types, IO system, miscelaneous manipulation and basic algorithms on: 4D volumes, meshes, textures, "buckets" (voxels lists), graphs, ... |
| anatomist | C++ | CeCILL-B | Visualization: display layers on Aims objects, 3D rendering, GUI, ... |
| brainvisa | Python | CeCILL v2 | Processing and pipelining infrastructure, GUI, database |
| brainrat-gpl | Python | CeCILL v2 | Toolbox BrainVISA dedicated to ex-vivo 3D reconstruction and analysis. |
| cartobase | C++ | CeCILL-B | Base utility classes and functions: files/streams, smart pointers, exceptions, type identifiers, threads, character strings manipulation, generic object, beginning of new IO system, ... |
| cartodata | C++ | CeCILL-B |
Future base types and "clean" API that will replace those from AimsData: for instance 3D/4D volumes will move from AimsData to carto::Volume. CartoBase and CartoData will be the core of all new development.
|
| datamind | Python/R | ? | stats, data mining. Datamind GUI will still not be released in our distributions in 3.1 packages because it lacks documentation and we don't want to be submerged by questions. But as datamind libraries are now used in other projects, the libraries will be distributed. |
| ecat | C | Ecat format IO library, taken from the University of Louvain with a few fixes added. | |
| ecat+ | C | CeCILL-B | SHFJ layer on top of ecat |
| graph | C++ | CeCILL-B | Graphs and trees |
| fmri | C/Python | CeCILL v2 | Functional processing toolbox: nipy.neurospin (fMRI) and HRF port to brainvisa |
| pyaims | C++/Python | CeCILL-B | AIMS API bindings for Python |
| pyaimsalgo | C++/Python | CeCILL-B | Python bindings for AIMS algorithms (still beginning) |
| pyanatomist | C++/Python | CeCILL v2 | Anatomist API bindings for Python |
| shared | CeCILL-B | Shared data that are needed by several projects | |
| soma | Python | CeCILL-B | Miscelaneous base libraries in python. This project will probably merge with cartobase and its python bindings (part of pyaims) to represent all the low-level or miscelaneous utility libraries in either C++ or python. |
| soma-workflow | Python | CeCILL-B | Workflow engine for distributed execution |
| brainvisa-cmake | CMake and Python tools | CeCILL-B | Compilation tools |
| vidaIO | C | CeCILL-B | Vida format IO library |
The following dependecy graph shows which project library is used by other ones (and so shouled be compiled before). The base, lowest-level, of our libraries is CartoBase, and cartobase itself now relies on two external "standard" freeware libraries: libsigc++ and libxml2. Several other external libraries are used by various packages of our software, mainly for GUI and 3D rendering, and also for some IO formats plugins.
In version 3.2, the projects sources have been reorganized in bigger groups, and separated by license, so you should not deal any longer with low-level projects (cartobase, cartodata, graph, ecat/vidaIO, etc). The larger projects are named aims-free, aims-gpl, anatomist-free, anatomist-gpl, soma, axon (formerly the brainvisa program), brainvisa-share. The aims project tree includes both aims-free and aims-gpl, and similarly, anatomist includes anatomist-free and anatomist-gpl. See the sources repository page for details.
sigc++ libxml2 [boost] netcdf | | / | | | / [blitz++] | | | / / | cartobase / shared [vidaIO] [ecat] [DCMTK] [minc] OpenGL | | | | | | | | | graph cartodata | | [ecat+] | | Qt Python \____|_______|_______|________|_______|_______|______/ \______/ | | | | aimsdata ________________ SIP GSL | / \ \ / | | / ______________aimsalgo Qwt anatomist____ pyaims PyQt fff | neuron / | \____|___| \ | / | | | \ / vip | pyanatomist | neurospy | sigraph | | | nmr \ | | |\____________ [anatomist modules] | | | \ \_________________________| bioprocessing | nuclearprocessing | / \ brainvisa connectomist cortical_surfacePython layers:
soma aimsdata ___ datamind
\ | | \ :
\ | anatomist aimsalgo :
\ | | | | :
pyaims | | sigraph :
| \ | | | :
| pyanatomist | | :
|_______________| | :
| | | :
| pyaimsalgo | :
|____________________| :
| :
pysigraph
[library] are optional parts.pink components are external freeware software.grayed components are "private" (closed-source) projects.
As you see there is a number of different projects with quite complex dependencies... Don't panic, the build system manages all this for you.
Some of our C++ libraries fully use the C++ language, including complex templates, but most C++ compilers are buggy. We experienced bugs on every compiler we tried. Up to now only GNU gcc/g++ compilers could build all sources (with appropriate workarounds from place to place in our sources) without crashing or giving inappropriate errors.
We used to provide here a list of compilers which are known not to work, but as we have not recently tried any other compiler than gcc, we have removed this outdated list.
We have tested and successfully compiled the version 3.1 and 3.2 of our software using various gcc 3.x and 4.x versions:
Our older build tool, build-config, is now obsolete. It has been replaced by a new project, brainvisa-cmake, which is based on the CMake build system.
The use of the compilation tools is documented in a dedicated chapter of this documentation.