Recent Changes - Search:


This is the old Camino website, please visit our new page to download the code and get the latest documentation.



UCL Home

edit SideBar


Camino Development

This page contains information for anyone looking to develop Camino, either for their own use or by contributing to the main code base.

Camino code organization

  See also: Camino Code Organization

The Camino code is written in Java, and organized into packages by theme.

The user-accessible executables (mostly bash shell scripts) live in the camino/bin/ directory.


You can build the Javadoc documentation with

make docs

The executables in the camino/bin directory are bash shell scripts. Usually these are just wrappers for a single Java application, sometimes (eg analyzedti) they wrap more complex functionality.

Each Camino command is accompanied by a man page. The man pages live in man/man1, and are written in NROFF format.

Some commands output usage if run without arguments - this inconsistency needs to be fixed.

Tutorials and website

To add a new tutorial to the website, you need first off all to log in to the wiki with the edit username and password. Email the camino developers list if you don't have it. To create a new tutorial, copy the URL from an existing tutorial, eg:

and change the name (last part of the URL after the last ".") to something appropriate, for example:

The wiki will tell you that page doesn't exist, but ask if you want to create it. Say yes and you can add content.

To add files or images to the tutorial, the easiest way is to upload them through the wiki. Add ?action=upload to the end of the page you want to add the file or image to, eg:

Browse for the file you want to upload and click Upload. Note that is should appear in the directory /cs/research/medic/common0/paramedic/www/htdocs/camino/pmwiki/uploads; you may have to give this write permission: chmod 777 /cs/research/medic/common0/paramedic/www/htdocs/camino/pmwiki/uploads, and for security reset the permission afterwards: chmod 755 /cs/research/medic/common0/paramedic/www/htdocs/camino/pmwiki/uploads.

To link to the file in your tutorial, use the syntax:

[[(Attach:)ActiveAxG140_PM.scheme1 | ActiveAxG140_PM.scheme1]]

or to display an image:


File formats

  See also: Camino File Formats

The file formats are documented in the man page of the various programs. Generally, output is raw binary, voxel-ordered data, without headers or file name dependence, to facilitate streaming and parallelization. Conversion to standard file formats (VTK, NIfTI, etc) is provided through specific converter programs.


 See also: Camino Tests

There are two levels of testing, unit tests for individual classes and methods inside the code, and application tests that are calls to the Camino commands. All of these tests live in the camino/test directory.

Unit tests

The unit tests are written in the JUnit test framework. They are not compiled by default, compile them using the makefile in camino/test. Then execute


You can test particular packages by specifying the package name as an option, eg

./ -numerics

Application tests

The application tests are in the file camino/test/ScriptTest. It basically runs various Camino commands and outputs results as text to stdout, or diffs against a known result. This makes it easy to write tests but makes the results machine dependent. The main purpose of these tests is for regression testing - making sure that new features don't alter existing results unexpectedly.

Because of the machine dependence of the results, it's necessary to generate results on a clean copy of the code before making local modifications. To do this, cd to camino/ and run

test/ScriptTest > ScriptTest.out.mymachine

Then make your changes and run ScriptTest again, capturing stdout to a new file as above. Then diff the output from your modified code against ScriptTest.out.mymachine.

Wish list for Camino V3

  • Tests that work consistently across platforms
  • Tractography tests check image similarity between threshold rather than reporting diffs
  • Consistent command line interface - usage, command args
  • More tractography options
  • Complete Matlab interface
  • Nifti support
  • XML VTK support
Edit - History - Print - Recent Changes - Search
Page last modified on May 23, 2011, at 05:37 PM