Skip to content

Developer notes

Rob Campbell edited this page Mar 1, 2017 · 9 revisions

Overall processing pipeline

Each sample is contained in its own directory. Before processing, the directory structure should look like this:

sampleDir/
sampleDir/acquisitionSettingsFile
sampleDir/rawData/chan1/...
sampleDir/rawData/chan2/...
sampleDir/rawData/chanN/...

The key principle of StitchIt is that the raw data are left untouched but are loaded using the tileLoad function which is able to apply corrections and transformations on the fly. The sequence of operations that produces stitched images is as follows:

  • generateTileIndex determines the location of each tile in the final 3-D stack.
  • preProcessTiles calculates things such as the average tile for background image subtraction and other statistics. An average image is calculated for each section, optical section, channel, and odd/even row in the tile pattern (these latter can be optionally averaged together). Calculating the average on a per-section basis allows the process to be conducted incrementally during acquisition at the expense of a small increase in the size of the raw data directory.
  • collateAverageImages produces grand average images over all sections and saves these.
  • The tileLoad function can be used to load individual tiles or all tiles from a single optical plane.
  • stitchSection uses tileLoad to load an optical plane into RAM then it assembles that optical plane into a stitched section. This is saved to a directory called stitchedImages_100/chanN. (The "_100" indicates full-sized, 100%, images).

Stub functions and working with different microscopes

StitchIt is designed to be able to cope with different microscope systems. As a result, certain functions are abstract. e.g. if you run tileLoad, a stub function in code/utils is run. This determines which imaging system is being used and then calls a system-specific version of tileLoad based on this. If you modify these system-specific files (e.g. to fix bugs or add features) you will usually have to run clear classes before your changes come into effect.

See the user manual

The information in the user manual is slowly migrating here. But you still need to check out the manual.

Clone this wiki locally