Overview of the source code

OpenSPIM's software is embedded into µManager and Fiji.

Our modifications are maintained on GitHub. The additional vendor libraries are maintained in our fork of µManager's 3rdpartypublic repository of binary libraries and documentation.

= Overview of the OpenSPIM software =

OpenSPIM's additions and enhancements to µManager are divided into three parts:


 * additional hardware drivers
 * some plugins (mainly the GUI, but also time-lapse acqusition)
 * some cleanups

Additional hardware drivers
We added an OpenSPIM driver (called DeviceAdapter by µManager). This driver is written in C++, like all DeviceAdapters in µManager and lives in the DeviceAdapters/OpenSPIM/ subdirectory. It implements an XY stage, the Z stage and another stage for the rotation device (called twister by Picard systems).

Our dc1394 driver adaptation for 32-bit Windows has been merged upstream and integrated into the default Windows 32-bit build.

OpenSPIM plugins
The majority of the OpenSPIM software is implemented as the OpenSPIM plugin for µManager. It is written in Java and lives in the plugins/SPIMAcquisition/ subdirectory.

Included is a hack that allows us to intercept user input to µManager's live window so that holding down the Alt key and moving the mouse horizontally will rotate the sample -- if the rotation axis has been calibrated properly, the plugin will compensate X and Z so that the rotation is in effect around the center of the field of view rather than the physical rotational axis.

Due to µManager's incomprehensible decision to switch its acquisition engine -- a rather central and important component -- away from Java in favor of the rather obscure lange Clojure, thereby precluding virtually all biologists and even the vast majority of software developers, we had to reinvent the acquisition engine.

Simply reusing the default acquisition engine is not possible since the SPIM principle calls for an *additional* coordinate measured in degrees, not micrometers. Our acquisition source code lives in the spim.progacq package of the SPIMAcquisition plugin.