Notable changes in v2.0.7 since v2.0.6: --------------------------------------- * Fix bug that causes "out of memory" error when when there are no connected components in the first two tiles. Notable changes in v2.0.6 since v2.0.5: --------------------------------------- * Change conditions for breaking out of outermost loop over flow increments in optimizer to avoid possible infinite loop issue. Notable changes in v2.0.5 since v2.0.4: --------------------------------------- * Change definition of connectivity of nodes that are completely separated by masked pixels to fix bugs that could cause crash and/or infinite looping when regions are separated by single row or column of masked pixels. Notable changes in v2.0.4 since v2.0.3: --------------------------------------- * Fixed logic error that would sometimes cause crash in MCF solver when flow went from ground node to lower right corner node. * Untabify source files (whitespace changes only) Notable changes in v2.0.3 since v2.0.2: --------------------------------------- * Fixed limit-checking error that would sometimes cause segmentation fault when width of masked area was only one pixel at right or bottom edges. Notable changes in v2.0.2 since v2.0.1: --------------------------------------- * Fixed indexing error that would sometimes cause segmentation fault when discharging boundary of masked region. Notable changes in v2.0.1 since v2.0.0: --------------------------------------- * Bug fixes affecting externally generated costs read from a file and handling of zero-cost primary and secondary arcs. Notable changes in v2.0 since v1.4.2: ------------------------------------- * The new -S option invokes behavior whereby snaphu will first run in tile mode to produce an unwrapped solution then feed this unwrapped solution back into the cost calculator and optimizer as if an unwrapped phase file were read from the input. This option is equivalent to running snaphu in tile mode, then running snaphu again using the tile-mode output as an unwrapped input file using the -u option. Tile parameters must be specified when using the -S option. * Masking of input pixels is now supported. A typical usage of masking would be in unwrapping repeat-pass interferograms where water areas are expected to have zero correlation; a water mask can be used to exclude such areas in order to reduce the execution time. When computing costs, arcs through masked areas are assumed to have zero cost, so nodes internal to masked areas can be ignored in the solver, thereby reducing the total number of nodes and usually decreasing the solution time. An unwrapped phase output value will still be produced for each masked pixel, but the unwrapped value will not generally be reliable; often it will be whatever value is left from the initialization. The user can indicate masking by setting the magnitudes of the complex values of pixels to be masked to zero in the input file or by specifying a separate binary mask via the new -M option or the new BYTEMASKFILE keyword. See the comments in the template configuration file for the BYTEMASKFILE keyword for a full description of the file format. A fixed number of pixels at each edge of the input file can also be masked via the EDGEMASKTOP, EDGEMASKBOT, EDGEMASKLEFT, and EDGEMASKRIGHT keywords. If masked pixels separate regions of unmasked pixels, the unwrapped phase relationship between the disconnected regions will not generally be reliable, though a solution for each region will still produced (also see the NCONNNODEMIN keyword). * The new -C command-line option takes a string argument that is parsed as a configuration line like one that would be put into a configuration file. The string argument to the -C option may need to be protected from the shell by quotes to preserve whitespace. * The integer types of several internal variables have changed now that 64-bit systems have generally replaced 32-bit systems. The memory footprint of snaphu v2.0 is approximately 20% smaller than that of v1.4.2 when both are compiled as 64 bit binaries on an Intel system. The memory footprint of snaphu v2.0 is similar to (about 2% larger than) that of v1.4.2 when both are compiled as a 32-bit binary, but v2.0 should be less constrained in terms of the input interferogram size. The memory footprint of v2.0 when compiled as a 64-bit binary is about 30% larger than when the same code (v2.0) is compiled as a 32-bit binary, although it is expected that most users will compile snaphu as a 64-bit binary nonetheless given the availability of memory on most systems. * The syntax of the ASSEMBLEONLY keyword and the --assemble command-line option have changed so that they are now boolean flags. The name of the tile directory to assemble is specified through the new keyword TILEDIR or the --tiledir command-line option. Additionally, the new keyword DOTILEMASK allows the user to unwrap only selected tiles for manual experimentation and assembly of tiles. * When unwrapping in tile mode, the default behavior is now to remove temporary tile files rather than to keep them. Users can specify the new -k option on the command line or set the RMTMPTILE keyword to FALSE in a config file to keep temporary tile files. * A warning is now displayed if running in tile mode and the tile overlap is less than a semi-arbitrary constant warning threshold. A suggestion is displayed about increasing overlap or tile size if edge artifacts are present if the overlap is less than the tile size. * Connected components are now supported in tile mode. The connected components are assembled from the connected components of individual tiles and renumbered to be unique, but they will break at tile boundaries. It is possible that a component will not be fully connected in the assembled output if the component was connected only in the tile overlap area that was discarded while assembling the full output. * The connected components output file may be written as either 1-byte unsigned integers or 4-byte (32-bit) unsigned integers via the CONNCOMPOUTTYPE keyword. Using 4-byte values allows more than 255 connected components to be defined, although the default is still to use 1-byte values for backward compatibility. * Support for Lp-norm cost functions has been added. Note, however, that congruence is still enforced, meaning that the unwrapped phase will differ from the wrapped phase by only integer numbers cycles. Therefore, the use of an L2-norm cost functions is not equivalent to least-squares phase unwrapping approaches that do not enforce congruence (as described by Ghiglia and Romero, 1996). * Experimental code for tree pruning has been included. This behavior is controlled by the new NMAJORPRUNE and PRUNECOSTTHRESH keywords. This code has not been well tested and users are advised to use this code with only the lowest of expectations. * The SOURCEMODE keyword and associated functionality have been removed due to changes in the source selection algorithm to allow the unwrapping of multiple regions that are disconnected by masked pixels. * There have been many internal code cleanups that should be transparent to the user. * Several miscellaneous bugs have been fixed and several minor enhancements have been added.