What time I have for coding is usually related to one of these projects, or for building research new tools on top of them. Those new tools will be released and described here when they're ready.
Teem: Tools to Process and Visualize Scientific Data and Images
Teem is a coordinated group of C libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be used quickly without having to write any code. Teem is licensed under a weakened LGPL that facilitates dynamic linking.
I have been implementing most of my research in Teem since 2000. A small core of other researchers have been using it for about as long, mainly hackers unhindered by the spotty documentation or lack of a GUI. Teem is part of SCIRun, 3DSlicer, and the NAMIC toolkit.
You can get a source checkout with:
and build with the instructions at Sourceforge.
Libraries of note in Teem include:
- hest: command-line parsing, including the ability to parse user-defined objects via callback
- nrrd: (and the unu command-line tool on top of it) supports operations on N-dimensional raster data (resample, crop, slice, project, histogram, etc.).
- gage: implements the abstraction of a continuous field reconstructed via convolution (including in 4D scale-space)
- pull: feature sampling by particle systems
- tijk, elf: libraries by Thomas Schultz for higher-order tensors and high-angular resolution diffusion imaging, respectively.
I've compiled a list of contributions and improvements sought in Teem, for people with C coding practice and an interest in helping.
Teem supports the NRRD file format storing arrays and their meta-information, and the DWI-MRI/NRRD file format used in NAMIC. The NRRD format is unusual in the amount and of meta-data that may be stored for an array, including a measurement frame field that records the relationship between the coordinate system in which non-scalar quantities like vectors and tensors are represented, and the coordinate system in which the image orientation is represented.
Long-term maintenance of this software depends on funding, and funding depends on being able to document who is using it for what. If any part of Teem (such as unu or Nrrd) has helped in your research, including for simple one-off experiments or mundane data hacking, I would love to know. There are multiple ways of communicating this. In your publications, consider adding a line such as this in the Acknowledgments: "Data processing performed with the unu tool, part of the Teem toolkit available at http://teem.sf.net". Alternatively, please email firstname.lastname@example.org and briefly describe how Teem software has helped in your work. Please also consider joining the teem-users mailing list, the primary forum for feedback, questions, and feature requests.
NrrdIO: I/O functions for NRRD files
NrrdIO is the small subset of Teem required for writing and writing NRRD files, licensed under BSD-style non-reciprocal license. NrrdIO is part of the Insight Toolkit for biomedical image processing. The NrrdIO code is available via:
Diderot is a language in development for doing parallel computing on continuous fields in a portable way. Where possible I try to implement research in Diderot, which leads either to bug fixes in the Diderot compiler, or ideas for language improvement.
The Diderot Examples page at github provides detailed information about building the Diderot compiler, and concrete starting points for writing new Diderot programs.