Version History

Build Manager

1.3.1

4/15/2016

Added

  • Support for Digital Micrograph 4 file format (DM4). Allows importing from many SEM microscopes.
  • Add locked/unlocked and optimized/unoptimized indicators to mosaic reports
  • Color code rows in mosaic report if an optimized tileset exists

Fixed

  • Imported images from Syncroscan had colorspace problems
  • Notes are copied into the VikingXML again
  • Do not exclude input directories that have a power of 2 in the name
  • Rounding errors when comparing old/new gamma values that forced unnecessary rebuilds
  • Crash on import when non-numeric attributes appeared in idoc files
  • Infinite loop when searching for imageset levels that did not exist
  • Do not add duplicate autolevelhint node to 16-bit raw data.

1.3.0

1.3.0 is not compatible with volumes built with earlier versions. If you have data you do not want to reimport contact me about migrating it to 1.3.0. The migration has been done but requires some supervision.

New

  • ir-refine-translate has been replaced with a python implementation. This appears to solve tiles that were misplaced in mosaics when stage position was very incorrect

  • Contrast settings can be set manually when importing 16bpp images

  • When performing import, save progress incrementally in case of crash

  • Added -Sections flag to CreateBlobFilter

  • Regenerate .stos files if the input images have changed

  • Save meta-data when we generate a new level for an image on the fly

  • Added SetMosaicLock pipeline to lock .mosaic transforms. This prevents regeneration which could break existing annotations.

  • Added ListFilterContrast pipeline to print the contrast settings used for filters.

  • Added pipelines for marking damaged sections. Damaged sections are not used for slice-to-slice registration.
    • ListDamagedSections
    • MarkSectionsDamaged
    • MarkSectionsUnamaged
  • Added -Shape parameter to AssembleTileset pipeline allowing different tile sizes. 256x256 is the default.

Changed

  • Removed the -volume flag. The volume path is now the first argument to the nornir-build command.
  • Do not set build process to low priority unless specified on command line. Low priority has a huge performance cost.
  • Importers are now pipelines. They have specific names for the type of data to import.
  • Wait for pools to complete before executing next pipeline stage
  • Added options to generate histograms asynchronously
  • Refactored idoc import code
  • Write errors that occur during ir-blob to the log window
  • Test setup is now cached in the TESTOUTPUT directory. The cache should be cleared before running tests after relevant changes.

Fixed

  • Remove generated Prune.mosaic file if it is older than the prune data it is generated from
  • Masks were entirely missed in slice-to-slice registration. Masks are now properly included and propogated. Removed parameter from ‘-UseMasks’ flag
  • Do not crash if the same level is passed to CreatePyramid functions twice in a list
  • Number imported tiles from IDOC’s starting with 0. This matches SerialEM’s numbering

1.2.4

Added compatability with 1.2.4 version of nornir_imageregistration package

1.2.3

A bugfix release

Fixes

  • In manual .stos files, replace the image paths with pointers to the images from image nodes for the appropriate filter. Useful in cases where sections are re-ordered or other images were used for manual registration.

Tweak

  • Don’t build an empty imageset for a filter if there is no data to populate the imageset and we ask for images
  • Added cleanup function to Cleanup pipeline to remove empty imagesets

1.2.2

A bugfix release

New

  • Added .cmd files to scripts directory for upgrading and uninstalling all nornir packages.
  • Included build scripts now update title of console window with name of active pipeline
  • Fixed several cases where slice-to-slice alignment pipeline was not updating correctly due to upstream changes
  • Fixed several cases where slice-to-slice alignment pipeline was updating needlessly
  • Added more thorough test cases to ensure manual slice-to-slice transformation patches correctly trigger downstream updates

Fixes

  • Image report generator no longer crashes if an image does not require downsampling
  • Image reports code no longer fails when using .svg formats

1.2.1

New

  • Many optimizations
  • Improved the histogram generation to show the actual cutoff values for a section and not percentages when a manual value is not specified.
  • Profile data is saved for tests if the PROFILE environment variable is set
  • Faster parsing of pipelines via use of cElementTree package
  • Multithreading pool is used when adding stos transforms
  • Added support for manual folder in stosbrute folders. This allows users to bypass the expensive automatic initial alignment step if a manual registration is known.
  • Report web pages now can be renamed to prevent overwriting the default ImageReport.html page

Fixes

  • Take image downsample into account before regenerating images warped into the volume. Previously downsampled images were always regenerated even when current
  • Logging level set correctly. Normal runs only display warnings or higher level entries to the console
  • Sections without a log file now have reports generated correctly
  • Fixed exception thrown when image dimensions could not be read and compared because a file could not be read
  • Filter locks for all filters in a channel are released when contrast or prune thresholds are manually adjusted. Allowing the filters to regenerate with the updated values
  • debug flag was always active during builds
  • Check the timestamp on the first tile of every pyramid level to ensure they regenerate if they are outdated.
  • Histograms are correctly refreshed when they are out of date.

1.2.0

  • The command line has been rewritten to use subcommands. The -pipeline and -import arguments are no longer used. In the near future the -volume command may be removed. Users should now specify the pipeline name after nornir-build:
  • Revamped the generation of slice-to-slice registration maps. New sections are detected and holes are skipped
  • Bug fixes related to case-sensitive filter names

1.2.1

New

  • Many optimizations
  • Improved the histogram generation to show the actual cutoff values for a section and not percentages when a manual value is not specified.
  • Profile data is saved for tests if the PROFILE environment variable is set
  • Faster parsing of pipelines via use of cElementTree package
  • Multithreading pool is used when adding stos transforms
  • Added support for manual folder in stosbrute folders. This allows users to bypass the expensive automatic initial alignment step if a manual registration is known.
  • Report web pages now can be renamed to prevent overwriting the default ImageReport.html page

Fixes

  • Take image downsample into account before regenerating images warped into the volume. Previously downsampled images were always regenerated even when current
  • Logging level set correctly. Normal runs only display warnings or higher level entries to the console
  • Sections without a log file now have reports generated correctly
  • Fixed exception thrown when image dimensions could not be read and compared because a file could not be read
  • Filter locks for all filters in a channel are released when contrast or prune thresholds are manually adjusted. Allowing the filters to regenerate with the updated values
  • debug flag was always active during builds
  • Check the timestamp on the first tile of every pyramid level to ensure they regenerate if they are outdated.
  • Histograms are correctly refreshed when they are out of date.

1.2.0

  • The command line has been rewritten to use subcommands. The -pipeline and -import arguments are no longer used. In the near future the -volume command may be removed. Users should now specify the pipeline name after nornir-build:
  • Revamped the generation of slice-to-slice registration maps. New sections are detected and holes are skipped
  • Bug fixes related to case-sensitive filter names

1.1.5

Fixes

  • Duplicate histogram nodes could be created if changing the prune threshold did not change the tiles present in the mosaic. Contrast settings could be applied incorrectly to the duplicate and ignored.

1.1.2

New

  • SetPruneCutoff pipeline to save users from editting volumedata.xml files deep in volume
  • SetContrast pipeline to save users from editting volumedata.xml files deep in volume
  • CreateVikingXML calls added to TEMBuild and TEMAlign scripts
  • Histogram images now show manual contrast settings

Fixes

  • CreateVikingXML no longer requires volume related parameters. Allows unregistered mosaic sets to be published to Viking.
  • Histogram image updates if contrast parameters editted

1.1.1

  • Fixed boundary of volume not refreshing when stos registrations changed
  • Add .idoc data to SerialEM volume reports

1.1.0

  • Initial release

Image Registration

1.3.1

Fixed

  • Fixed issue where image scale factor in translation alignment was being used as minimum image overlap instead
  • Removed crash from FileNotFoundError exception. It does not exist in Python 2.7.
  • Support for histogram numpy images
  • Fixed very rare error where a subregion in translation alignment was a single pixel which broke statistics. These regions are now ignored
  • Force rectangle to use float64 numpy arrays. Fixed issue where integer arrays were passed and then used without conversion.
  • Fixed a bug where a non-existent center section was requested to be the center in the registration tree.

1.3.0

New

  • The original ir-refine-translate code from SCI has been replaced with a Python implementation. This appears to solve problems where tiles in mosaics were occasionally out of position
  • Richer API for Rectangles. Added functions to change the area but keep the same center, safe rounding to an integer that does not decrease the overall area,
  • Added a crude measure (Difference of overlapping regions) of mosaic quality
  • One can include titles in the ShowGrayscale function now

Fixed

  • Close pools more agressively. The extra threads multiprocessing pools spawn have a measurable performance cost, at least when running in low priority mode
  • Do not crash when a file is missing if we are checking a list of tiles and transforms for the most common scalar.
  • Adding stos transforms no longer removes masks from the .stos file.
  • .stos file object’s mask FullPath functions no longer crash if passed None. Instead masks are properly cleared now.
  • .stos file can read mask paths correctly from .stos files, was reading the header line as a mask name before.
  • If all pixels are masked then do not try to calculate statistics for unmasked pixels.
  • Fixed mask generation in RandomNoiseMask
  • Fixed crash when MostCommonScalar function encounters a missing image file
  • AddStosTransforms was not passing masks along to the new .stos transform
  • We now raise a value error when a random noise mask does contain any unmasked pixels to generate statistics from.
  • Fixed output of unmapped pixels when warped image call is mapping a single image and not a list of images.
  • Fixed script generation on install. Scripts for individual operations such as assemble should appear now. More testing required here.
  • Fixes for the use of memory mapped files. These are still disabled in production.
  • Fix for crop image when the cropped image is entirely outside the boundaries of the input array.

Changed

  • Show grayscale layout and title improvements
  • ExtractRegion removed and replaced with faster, simpler CropImage function. Now raises DeprecationWarning.
  • Deleted unused functions
  • Rectangle object now always stores bounds internally as a numpy array
  • OnTransformChanged does not fire on a thread unless there are multiple listeners. Performance improvement
  • Numpy floating point issues not raise an exception instead of a warning message. Now using: numpy.seterr(all=’raise’)

1.2.4

Fixed

  • Support for translating tiles in a mosaic based on stage position
  • Bug fixes

1.2.3

New

  • Support JPEG2000 and memory mapped numpy arrays as image output formats
  • Use a generator to iterate through tiles pulled from a larger image.
  • Some significant memory footprint reductions for assemble and transformation functions

Fixed

  • Do not throw an exception when asking a .stos file for the full path to a mask that it doesn not have. Return None instead.

1.2.2

Minor optimization and function used in the new tile web server

New

  • Added a function to cut image into tiles
  • Added a resize image function
  • Reduced memory footprint of assemble somewhat.

1.2.1

New

  • Many optimizations to assembling images
  • Tests will be profiled if the PROFILE environment variable is set

1.2.0

New

  • Added bounding box to spatial
  • Python 3 support
  • Better documentation for assemble parameters.
  • Added bounding box structure to spatial module

Fixed

  • The output buffer in assemble is now the correct size. Previously a larger buffer was allocated and cropped.

1.1.7

New

  • RegistrationTree supports missing centers by finding the nearest section to the requested center

1.1.3

New

  • Add flag to StosBrute to allow execution on cluster
  • AssembleTiles method allows specifying a subregion to assemble
  • ShowGrayscale function displays multiple images on a 2D grid for a more optimal use of screen real estate
  • Added Spatial package which includes enums for standard indexing of nornir spatial arrays. For example iArea.width is the index to use to obtain the width from a size tuple

Changed

  • Bounds functions now follow the (MinY MinX MaxY MaxX) convention consistent with numpy image array indexing
  • Alignment record now uses the standard (Y,X) indexing of the other image_registration packages.
  • Removed many uses of ImageMagick identify to obtain image size and replaced with Pillow calls

Fixed

  • Image padding was making images larger than they had to be. This fix should increase registration speed

1.1.0

  • Initial release