PixInsight 1.8.8-10 Released

Juan Conejero

PixInsight Staff
Staff member
Hi all,

I am glad to announce a new version of PixInsight: 1.8.8-10. This release provides important new features and improvements on all platforms.

Installation packages for PixInsight 1.8.8-10 are now available to all licensed users for Linux, macOS and Windows:

https://pixinsight.com/dist/

As happens with all updates to the PixInsight core application, this version cannot be downloaded as an application update. You have to install version 1.8.8-10 manually:
  • Linux: The installation packages are xz-compressed tar archives (.tar.xz). To install one of these archives, just extract its full contents on any directory, preferably on one located under your home directory. Then become root and run the installer program from a terminal. Normally you should just type "yes" and press Enter to accept the default settings. Say './installer --help' for detailed information on command-line arguments.

  • macOS: If you have a previous version of PixInsight already installed, you must uninstall it by moving the /Applications/PixInsight folder to trash (also known as bin on macOS 10.15 and later). Run the .pkg installation package and follow the instructions. All our macOS installation packages are digitally signed with our corporate Apple developer certificate and have been notarized by Apple.

  • Windows: If you have a previous version of PixInsight already installed, please uninstall it using Add or Remove Programs. Then run the installation package for version 1.8.8-10 and follow the instructions. All executable files in the PixInsight distribution for Windows, as well as our installation packages, have been signed with our corporate Extended Validation (EV) code signing certificate.
If you have version 1.8.6, 1.8.7, or any 1.8.8-x version already installed, this new version does not require a license reactivation. If you are still using a 1.8.5 version or older, see the official 1.8.6 version announcement for a detailed description of our new licensing system. See also FAQ 2.10 for additional information on license reactivations.


Main Improvements

This version is an important release focused on performance and stability improvements, paving the way towards PixInsight 1.8.9. Version 1.8.8-10 fixes all confirmed bugs since the previous 1.8.8-9 release and provides some relevant new features and improvements. A partial list follows with the most important changes.


New Image Weighting Algorithms

PixInsight 1.8.8-10 comes with two new image weighting methods:
  • A new weighting method based on signal estimation with PSF photometry, available in two variants: PSF Signal and PSF Power. This method is robust and accurate, and is the new default option in the ImageIntegration process. The old noise evaluation weighting method has been deprecated and removed.

  • An improved version of the SNRWeight method.
Both methods are now tightly integrated in our preprocessing pipeline, including the following processes: ImageCalibration, Debayer, SubframeSelector, ImageIntegration, and DrizzleIntegration. This means that you don't have to do anything to enable them by default, and both work in a completely automated and transparent way without requiring adjustment of additional parameters in most cases. They are fast and have a small impact in terms of computational work.

Here is an example with the new version of the SubframeSelector tool, which now includes automatic altitude and azimuth measurements:

SS-1.jpg


This is a quality test data set kindly provided by Adam Block. Note the strong correlation between PSF signal weight (blue line graph) and altitude above the horizon (dotted gray line graph) on the screenshot above.

SS-2.jpg


Despite being about 7 degrees lower over the horizon, frame #56 (void circle) has a much higher PSF signal weight than #55 (circle with red cross). Why? Because the latter was exposed through considerable haze, besides having large tracking errors, as can be seen on the screenshot above (click on the image to enlarge). This is just an example of the efficiency and robustness of the new PSF photometry weighting methods.

Technical Description

PSF Signal Weight is a conceptually simple image weighting method based on PSF photometry. We begin by detecting stars in the image. This first step is critical because we want to detect stars, not extended objects or potential bright artifacts such as uncorrected hot pixels, cosmics, etc. We already have this task well implemented in our code base. The second step is fitting a point spread function to each detected star. We have a state-of-the-art implementation of PSF fitting based on the Levenberg-Marquardt algorithm. Now for each detected and successfully fitted star compute a weighted mean signal estimate:

svg.image

where
svg.image
is the star detection region,
svg.image
represents a pair of coordinates within
svg.image
,
svg.image
is a pixel sample value,
svg.image
is the local background estimate, and
svg.image
is the fitted point spread function normalized to unit amplitude and evaluated at
svg.image
. The resulting image weight is:

svg.image

where
svg.image
and
svg.image
are clipping indexes calculated with a special iterative sigma clipping procedure,
svg.image
is a PSF mean signal estimate, and
svg.image
is an estimate of the standard deviation of the noise, computed for the entire image with the MRS algorithm using 4 wavelet layers. The correct balance between the statistical properties of robustness and efficiency is crucially important here, hence we are using a carefully implemented trimmed mean instead of the mean (efficient but non-robust) or the median (robust but inefficient).

The PSF Power Weight variant is as follows. For each successfully fitted PSF compute a mean weighted squared signal estimate:

svg.image

then the PSF power weight is given by:
svg.image

The results achieved with these weighting methods are remarkably reliable and consistent in all of our tests. PSF Signal is now the default weighting algorithm in ImageIntegration. PSF Signal and PSF Power are directly available in SubframeSelector as new PSFSignalWeight and PSFPowerWeight variables.

These methods implement image weights as direct estimates of the signal-to-noise ratio. As is well known, there are two main interpretations of SNR:
  1. As the ratio of the expected signal power and the variance of the noise, or mean-squared signal-to-noise ratio. This is the classical concept, compatible with e.g. Gonzalez/Woods, Digital Image Processing. A robust approach to this interpretation is now implemented as the PSF Power weighting method.

  2. As the ratio of the mean signal and the standard deviation of the noise. A robust approach to this interpretation is now implemented as the PSF Signal weighting method.
Option 1 is the concept of SNR normally used in most engineering applications, and the only one that we have had until now. Option 2 is equally valid in my opinion, although of course both are mutually incompatible in terms of the interpretation of the data being measured. We now have both available with the same robust and efficient implementation.

Three very important properties of the new weighting methods must be pointed out:
  • Both methods work directly on calibrated raw data before any interpolation. This is true for monochrome CCD/CMOS data and CFA mosaiced data.

  • The new methods don't depend on a reference image. Actually, the concept of reference image no longer exists in the ImageIntegration process for image weighting.

  • The new methods generate universally comparable weights. This means that, in principle and without the influence of other external factors, one can compare weights calculated for different data sets.

The improved SNR Weight method shows a nice example of the robustness versus efficiency problem in statistics. This algorithm is the classical formulation of SNR as a ratio of powers (option 1 described above):
svg.image

where
svg.image
is an estimate of statistical variability for the image and
svg.image
is an estimate of the standard deviation of the noise. This formulation actually represents a scaled version of the inverse noise variance weighting method. Since the inverse variance weighted average is a maximum likelihood estimator of deterministic signal, this method can theoretically yield the highest possible SNR improvement in the integrated result. The standard deviation of the noise can be evaluated without problems with the MRS algorithm, which is remarkably robust. However, a meaningful estimate of dispersion for the image is problematic in this context because we need a highly efficient estimator, which excludes robust scale estimators. This poses a very hard problem. Basically, we have tested all known estimators of statistical scale and none works for this task except—of course, what else—the old and so often disdained standard deviation. The reason is that any attempt to reject outliers beyond a delicate limit damages the efficiency of the estimator, which leads to a completely meaningless result. This is precisely what was happening with the—now deprecated and completely removed—old noise evaluation weighting method in previous versions of PixInsight. In the new implementation I have designed a special method to evaluate the standard deviation of the image in three successive iterations, with decreasing tolerances based on the previous estimates. This is a sort of self-stabilizing estimator that performs a slight but sufficient rejection of outliers without damaging efficiency. In addition, the estimator is bilateral, which means that dispersion is evaluated separately for pixels below and above the median. This makes it even more efficient for asymmetrical distributions (graphically: asymmetrical histogram peaks). Despite these efforts, this method is sensitive to large outliers, such as plane trails and similar artifacts, which inevitably degrade its performance to extents proportional to the amount of outlier pixels.

This technical description, extended to include some important algorithmic and implementation details, along with interesting examples showing the performance of the new weighting methods with real data, will be included in an announcement post on the Release Information forum board, as well as in a dedicated software tutorial that I am preparing.

Acknowledgments

Thanks to John Murphy and Adam Block for exposing the problems and deficiencies of the old noise evaluation weighting method, and for pushing me to solve them with a completely new implementation.


Embedded Processing Histories in XISF Files

As the title says, now you can save the processes applied to an image in an XISF file. When the XISF file is opened, the stored processing history is loaded automatically and is available as the image's initial state on History Explorer. This provides basically the same functionality as if you'd save a process icons file with the complete processing applied to the image, but the process instances are embedded in the same XISF file instead of a separate .xpsm file. In other words, images know how they have been processed and can remember it.

There are new items on the XISF Options dialog and the Preferences tool to control this feature:

xisf-options-dialog.png
preferences.png


Here is an example of initial state for an image saved with embedded processing history:

history-explorer.jpg



New NetworkService Module

NetworkService implements an asynchronous, network-based, distributed client-server task processing system that can be controlled and monitored through interprocess communication (IPC) messages. This module is at the heart of our AstroBin+PixInsight collaboration and other similar projects that are being developed now, where PixInsight runs in a completely automated way as an on-demand service. Now we have released the generic NetworkService module as an open-source product, and have included it in the official PixInsight distribution, available to developers on the PixInsight/PCL platform.

network-service.png


NetworkService's general workflow is as follows:
  • A new task request is generated somewhere and stored in a task requests database, which is publicly accessible on the Internet through a task provider URL.
  • NetworkService is running somewhere on PixInsight and checking the task provider URL periodically.
  • If a new task request is available, NetworkService retrieves it (with secure authentication) and executes the specified task.
  • When NetworkService completes the task, it sends the corresponding data and notification to a callback URL (which was specified in the task request).
This system is simple, flexible and secure. There can be an unlimited number of running NetworkService instances distributed all over the world and executing tasks that are being generated anywhere, at any time. The details of the NetworkService protocol and its requirements will be described in a document that we are preparing for release. The entire process is very easy to control with scripts written in shell, Python, JavaScript, etc.


PCL Development Files Available on the Standard PixInsight Distribution

In preparation for important new features that will be implemented in future versions (such as an embedded C++ compiler and a hybrid JavaScript/C++ runtime), critical parts of our PixInsight Class Library (PCL) development framework are now included in the standard distribution of PixInsight on all supported platforms.

PCL-distro.png


This will simplify the development of new PixInsight modules because all required header and source files are now available within the local PixInsight installation, subject to automatic updates as new features and bug fixes are being released.


Other Important Improvements and Bug Fixes
  • The Windows version of PixInsight is now a long path aware application. This means that file and directory paths are no longer limited to 260 characters.

  • The number of file reading and writing threads is now 8 by default. We are no longer optimized for obsolete rotational disks. We now offer a reasonable default number of I/O threads for SSD devices. However, please note that the optimal number of I/O threads depends on a variety of hardware and software related factors, and must be found through benchmarks. For fast NVMe devices on systems with 32 or more logical processors, 16 or 24 I/O threads can be a good starting point.

  • StarAlignment: Improved local distortion correction thanks to a redesigned implementation of the surface spline interpolation C++ classes, including new radial basis functions and improved quadtree-based recursive surface splines.

  • WeightedBatchPreprocessing script version 2.3.0, with support of the new PSF photometry weighting method and other improvements and new features — the list is too long to include it here, so stay tuned for a dedicated announcement post.

  • PhotometricMosaic script version 3.4.0, with important improvements and new features. See the complete description here.

  • NormalizeScaleGradient script version 1.4.3.

  • AnnotateImage script version 2.2.2: Many small bug fixes, improved coordinate labels with superscript 'hms' units, new Milliquas catalog (Million Quasars Catalog). All of these improvements have been developed in the context of our AstroBin+PixInsight collaboration.

  • ImageSolver script version 5.6.2: Fixed a rare loop stalling condition in the surface simplifier algorithm. Also from our AstroBin+PixInsight collaboration.

  • CatalogStarGenerator script version 2.1.6 with improved graphical interface and automation capabilities. Again, an improvement implemented to support our AstroBin+PixInsight collaboration.

  • Fixed a serious performance regression caused by the suppression of the dark frame optimization window parameter of ImageCalibration. The dark frame optimization algorithm is now based on variance minimization instead of noise evaluation. It is now much faster and more accurate.

  • Text on message boxes is no longer entirely written with a bold font on macOS.

  • Official Windows 11 support.

  • Official macOS 12 Monterey support.

Updated Support Libraries
  • Little CMS Engine (LCMS) version 2.12.

  • cURL version 7.79.1.

  • LibTIFF version 4.3.0, released April 2021.

  • CFITSTIO version 4.0.0, released May 2021.

  • Dygraphs version 2.1.0.

  • Qt version 5.15.7 LTS on Linux and Windows. Unfortunately, the macOS version uses Qt 5.15.6 LTS because of unexpected/undocumented changes introduced in macOS 12 Monterey.

  • Apple Clang version 13.0.0 with the macOS 12 SDK used for all macOS development.

  • Microsoft Visual Studio 2019 version 16.11.6 used for all Windows development.

Recommended Platforms and Supported Operating Systems

The reference implementation of PixInsight, where you may expect the maximum performance and best user experience, is the Linux version. Currently our primary development platforms are:
We strongly recommend running PixInsight on Kubuntu Linux 20.04 LTS with the KDE Plasma desktop environment.

PixInsight 1.8.8-10 for Linux requires GLIBC 2.27 or a newer version.

PixInsight 1.8.8-10 for macOS is only compatible with macOS 10.15 Catalina, 11.x Big Sur, and 12.x Monterey. macOS 10.14 Mojave and older versions are no longer supported. All of our macOS installation packages are digitally signed with our corporate Apple developer certificates and have been notarized by Apple.

PixInsight 1.8.8-10 for Windows is compatible with Windows 10 and Windows 11 exclusively. Windows 8.1, Windows 7 and older versions are not supported. The application might run on Windows 7, but there is no guarantee and please do not report problems on Windows 7 and Windows 8. All of our Windows installation executables have been digitally signed with our corporate extended validation (EV) code signing certificate.


Known Issues

FreeBSD and Linux
  • Recent versions of the KDE Plasma desktop environment include a morphing popups desktop effect that causes problems with recent PixInsight versions. If this effect is enabled, it slows down some dragging operations in the PixInsight core application, such as dragging icons and view selectors. You should disable this effect, which is very easy from KDE's System Settings panel.

  • On recent versions of the KDE Plasma desktop environment, a display tearing prevention option (v-sync) is enabled by default. This option can cause input lag problems, such as slow cursor movement over image windows, with certain hardware configurations. If you experience these problems, this option should be disabled for optimal PixInsight performance:
    • System Settings > Display and Monitor > Tearing prevention: set to 'Never'
    • Click Apply
Linux
  • PixInsight is not compatible with the open-source Nouveau graphics driver. If your distribution is using Nouveau, you must remove it to use the proprietary NVIDIA driver in order to use PixInsight.

macOS
  • On Apple MacBook laptops with dual graphics cards,we recommend disabling the integrated Intel HD graphics adapter before running PixInsight for maximum performance and stability. This can be done very easily:
    • System Preferences > Energy Saver > Automatic graphics switching: disable.
Windows
  • On some laptops with nonstandard screen resolutions, such as the Microsoft Surface, PixInsight cannot find valid screen scaling factors automatically. On these machines, you may have to run the PixInsight core application with the --ui-scaling command-line argument. For example, to apply a UI scaling factor of 2:
C:\Program Files\PixInsight\bin\PixInsight.exe --ui-scaling=2

You only have to do this once, since the scaling factor will be stored in application preferences automatically. Of course, if you already are using a version 1.8.6 or later and the interface looks correct, then you don't need to do this; this is only required for new installations.

All Platforms
  • The StarNet module uses the TensorFlow library, which requires a processor with support of AVX2 and FMA instructions. This excludes very old machines with Intel processors released before 2013 and Apple machines with M1 processors (because the Rosetta emulator on macOS Big Sur does not support AVX2 instructions). The macOS installation package for version 1.8.8-10 includes a post-install script that will delete the StarNet module automatically when the host machine runs an ARM processor, so there should be no problems on Apple Silicon computers.

    If you are using a vintage pre-2013 Intel processor, or if the StarNet module has not been deleted automatically on your M1 machine for some odd reason, PixInsight 1.8.8-10 won't work as it is installed by default. However, this problem is very easy to fix: just remove the StarNet module. Do the following:
Linux
Enter the following command from a terminal:​
sudo rm /opt/PixInsight/bin/StarNet-pxm.so
macOS
Remove the following file:​
/Applications/PixInsight/bin/StarNet-pxm.dylib
Windows
Remove the following file:​
C:\Program Files\PixInsight\bin\StarNet-pxm.dll
In all cases you need administrative privileges to remove the required file, which you also need to install PixInsight. After this simple action, PixInsight will run without problems on your old machine.​


——————————————————————————

Thank you for your attention and support.
 
Last edited:
Juan you are the BEST. The new image weighting system sounds amazing, can't wait to play with it. Thank you for continuing to put your brilliance to work for us!
 
Sadly, 1.8.8-10 quits immediately when launched on my iMac running Mojave. Back to the old version...

1.8.8-9 reinstalled and working fine.
 
Last edited:
Looks like there is an issue with the WBPP

Processing script file: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing.js

*** Error [001]: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing-engine.js, line 3295: ReferenceError: info is not defined

It won't let you add files due to this error.
 
@jtroy the WBPP error could be something saved in your preferences file that's messing things up. WBPP saves a LOT of stuff in there. you can try backing the preferences file up and then launching PI with the control key held down, which will erase the settings and start from scratch. but if you had any other customizations they will be lost.

rob
 
@pfile I don't care about my preference. I wiped them all. No error in the console this time but still can't open any files at all no matter if I use any of the buttons with the WBPP script.
1636760065171.png


Disregard, as soon as I closed the script it errored again


Processing script file: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing.js
*** Error [001]: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing-engine.js, line 3295: ReferenceError: info is not defined
 
Sadly, 1.8.8-10 quits immediately when launched on my iMac running Mojave. Back to the old version...

1.8.8-9 reinstalled and working fine.

Problem confirmed: the new version 1.8.8-10 is no longer compatible with macOS 10.14 Mojave. The minimum required version of macOS is 10.15 Catalina. I am going to update the announcement post.

Sorry, but there is nothing I can do to solve this problem. Either upgrade your machine to macOS 10.15, or use an older version of PixInsight.
 
@pfile I don't care about my preference. I wiped them all. No error in the console this time but still can't open any files at all no matter if I use any of the buttons with the WBPP script.
View attachment 12503

Disregard, as soon as I closed the script it errored again


Processing script file: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing.js
*** Error [001]: C:/Program Files/PixInsight/src/scripts/WeightedBatchPreprocessing/WeightedBatchPreprocessing-engine.js, line 3295: ReferenceError: info is not defined

Bug confirmed, I apologize for this problem and we'll release an update fixing it as soon as possible.

However, this problem only happens when you click the Add Files button. As a simple workaround, please click the Add Bias, Add Darks, Add Flats and Add Lights buttons separately, as appropriate. This will allow you to use WBPP 2.3.0 without issues.
 
Problem confirmed: the new version 1.8.8-10 is no longer compatible with macOS 10.14 Mojave. The minimum required version of macOS is 10.15 Catalina. I am going to update the announcement post.

Sorry, but there is nothing I can do to solve this problem. Either upgrade your machine to macOS 10.15, or use an older version of PixInsight.

i guess i finally have to update from mojave as well. i would have caught this but of course have been on the road during this development cycle.
 
Bug confirmed, I apologize for this problem and we'll release an update fixing it as soon as possible.

However, this problem only happens when you click the Add Files button. As a simple workaround, please click the Add Bias, Add Darks, Add Flats and Add Lights buttons separately, as appropriate. This will allow you to use WBPP 2.3.0 without issues.

Thanks Juan I'll try it out!
 
Hi Juan,

For me it would allow me to load 1 set of files (bias, dark, flat, or lights) using +bias, +dark, etc. I don't use +files at all. Then when I go to add something else they will not load. So not functioning at all. Sorry.

Jason
 
The number of file reading and writing threads is now 8 by default. We are no longer optimized for obsolete rotational disks. We now offer a reasonable default number of I/O threads for SSD devices. However, please note that the optimal number of I/O threads depends on a variety of hardware and software related factors, and must be found through benchmarks. For fast NVMe devices on systems with 32 or more logical processors, 16 or 24 I/O threads can be a good starting point.
If I have swap directories that point to traditional SATA disks, would that negate this benefit? Should I unconfigure the swap directories?
 
thanks for this new version
Unfortunately LinearPatternSubtraction script is not corrected since a long time (6 months)
still error when processing an image.
 
I'll have to stick to my current version of PI on this laptop then (it's running a 2012 based i5). Pity :-(

Juan, I still wish you went the OpenCL way instead of locking people into Nvidia's proprietary CUDA platform. I'd rather a non proprietary based GPU acceleration method that's slower, than being locked into the Nvidia scheme of things.
 
thanks for this new version
Unfortunately LinearPatternSubtraction script is not corrected since a long time (6 months)
still error when processing an image.

how so? I've used LPS consistently for many images without issue over the past 6 months.
 
Back
Top