The "Soma" (formerly "Cartograph") project 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 GPL public licence. 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 and Epydoc automatic documentation software.
The aimsalgo project has now been open-sourced in version 3.1.
| project: | language: | description: |
|---|---|---|
| aimsalgo | C++ | Image processing algorithms layer based on aimsdata, now open-source since version 3.1. |
| aimsdata | C++ | Data types, IO system, miscelaneous manipulation and basic algorithms on: 4D volumes, meshes, textures, "buckets" (voxels lists), graphs, ... |
| anatomist | C++ | Visualization: display layers on Aims objects, 3D rendering, GUI, ... |
| brainvisa | Python | Processing and pipelining infrastructure, GUI, database |
| brainrat-gpl | Python | Toolbox BrainVISA dedicated to ex-vivo 3D reconstruction and analysis. |
| cartobase | C++ | 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++ |
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 | SHFJ layer on top of ecat |
| fff | C/Python/Matlab | Math, stats, registration, functional imaging applications |
| graph | C++ | Graphs and trees |
| neurospy | C/Python | Functional processing toolbox: fff (fMRI) and HRF port to brainvisa |
| pyaims | C++/Python | AIMS API bindings for Python |
| pyaimsalgo | C++/Python | Python bindings for AIMS algorithms (still beginning) |
| pyanatomist | C++/Python | Anatomist API bindings for Python |
| shared | Shared data that are needed by several projects | |
| soma | Python | 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 is also the new generic name for all the core public libraries released in our packages: it will include aims, aimsalgo, and all needed parts (graph, cartodata). |
| util | sh and Python scripts | Compilation tools |
| vidaIO | C | 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.
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 of our software using various gcc 3.x and 4.x versions:
As we could not manage with the standard building tools ("./configure; make; make install"), as we usually do, we have made our own building tools... They consist in three python programs: build-config, configure and maker.
build-config is the only tool that you need to know about to be able to compile: the two other tools are called by build-config, they must reside within the PATH directories search list but you don't call them directly.
The use of the compilation tools is documented in a dedicated chapter of this documentation. Try the quick start instructions first if you like.