Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Juan Conejero

Pages: [1] 2 3 ... 26
1
Announcements / PixInsight 1.8.6.1473 Released
« on: 2019 May 14 14:07:34 »
Hi all,

I am glad to announce a new version of PixInsight: 1.8.6.1473 for Linux, macOS, and Windows. This is an update/bugfix release. It solves most confirmed bugs discovered since the previous 1.8.6.1457 release and provides important new features, which I'll describe succinctly in this document.


Installation

As most new versions of the PixInsight core application, this one is not available as an automatic update. You have to uninstall the previous version, be it 1.8.6 or an older one, then download and install the new version manually. Of course, if you have already activated version 1.8.6 on your computer, no additional license activation will be required.


Bug Fixes

Version 1.8.6.1473 solves the following problems detected since the initial 1.8.6 version:

All platforms: All bug fixes in the previous 1.8.6.1457 version are included.

All platforms: All bug fixes in the previous 1.8.6.1448 version are included.

All platforms: Fixed a bug where a shaded (minimized) image window was unshaded spontaneously when the active window was closed. See the original bug report.

All platforms: File items were not being sorted correctly by file name in multiplatform file dialogs (non-native dialogs). This has been fixed. See the original bug report.

All platforms: FITS files with EXTNAME keywords in the first HDU were causing a crash upon file opening. This is now fixed. See forum bug reports here and here.

All platforms: The CometAlignment process was generating spurious data in areas uncovered by geometric transformations during alignment. This is now fixed thanks to a contribution by Franchesco Meschia.

All platforms: Fixed incorrectly elided text in the first column of a file list when more than 1000 files are included. This problem was affecting tools such as ImageCalibration, ImageIntegration, StarAlignment, SubframeSelector, etc., that is, all interfaces with files lists.

All platforms: Fixed a weird interaction between the Real-Time Preview window and the SampleFormatConversion process when a preview of the target image was selected on the R-T window. See the original bug report by Enzo de Bernardini.

All platforms: The ImageIntegration tool was not generating valid XPIXSZ, YPIXSZ, XBINNING and YBINNING FITS keywords in integrated images. These keywords are now generated correctly if the corresponding values are consistent for the entire set of input images.

All platforms: Fixed wrongly scaled icons on high-dpi screens in some dialogs of the update system.

Windows: The '--opengl=raster' command-line argument was not working correctly, potentially leading to crash upon startup. This is now fixed.


New Features

New version 5.3 of the ImageSolver script. This version implements a new local distortion modeling algorithm based on thin plate splines and shape-preserving surface simplifiers. This algorithm provides unprecedented accuracy in our astrometric solutions. I have written a dedicated tutorial which describes and tests the implemented algorithm with examples, usage recommendations, and a formal description.

New version 2.0 of the AnnotateImage script. The new version implements automatic annotation of planets and asteroids, with the implementation of state-of-the-art solar system ephemerides and position reduction algorithms. The new tutorial on ImageSolver includes some nice and interesting examples.

Fully functional Chromium-based web browser component, with multiple browser windows and file downloading support. There is a new Window > Web Browser Windows main menu item to control creation and selection of new web browser instances. There is also a new View > Downloads main menu item where you can control the list of downloaded files, which is persistent across core application executions.

PixInsight will now use the dedicated graphics card instead of the integrated card on machines with dual graphics on Windows (Nvidia Optimus or AMD Enduro). This should fix most graphics instability problems reported on these machines, mostly laptops, caused by incompatibilities with integrated Intel HD graphics drivers. Note that this won't work if you have created a profile for the application to use the integrated chipset.

New core JavaScript objects for data modeling and representation: GridInterpolation, PointGridInterpolation, ShepardInterpolation, SurfaceSimplifier. These objects are the JavaScript counterparts of their corresponding native PCL/C++ implementations.

Improved core JavaScript objects: New methods ImageWindow.celestialToImage(), ImageWindow.imageToCelestial(), ImageWindow.copyAstrometricSolution() and ImageWindow.astrometricSolutionSummary(). The SurfaceSpline.evaluate( Array ) method is now fully parallelized.

Support for the nonstandard FITS keywords BAYERPAT, XBAYROFF and YBAYROFF in the Debayer tool, for automatic Bayer pattern detection in FITS files.

ImageIntegration generates metadata for geodetic observer coordinates and acquisition time with LONG-OBS, LAT-OBS, ALT-OBS and DATE-OBS FITS keywords generated by averaging the corresponding keyword values found in the input data set. This facilitates astrometric solution of integrated images.

The Resources main menu is now dynamic and configurable. It is populated automatically upon startup with items read from the 'PixInsight/etc/startup/resources.xmnu' distribution file. Online resources are now opened on new integrated browser windows by default.

Source code syntax highlighting rules are now dynamic and configurable. Reserved words for different languages are now loaded from plain text files included in the 'PixInsight/rsc/shglt' distribution folder.

New command-line arguments. These new arguments control some advanced functions of the integrated web browser component. Excerpted from the command line help text:

         --accelerated-2d-canvas
         --no-accelerated-2d-canvas

               Enables and disables, respectively, the use of OpenGL framebuffers for
               HTML5 2D canvas in the integrated Chromium browser component. Implicitly
               forced to disabled state when --opengl=raster or --opengl=software are
               specified. Enabled by default otherwise.

         --webgl
         --no-webgl

               Enables and disables, respectively, support for HTML 5 WebGL in the
               integrated Chromium browser component. Implicitly forced to disabled
               state when --opengl=raster or --opengl=software are specified. Enabled
               by default otherwise.


New Preferences > Directories and Network > Proxy URL preferences setting. This is the proxy host that will be used for core network operations, with optional user authentication. This option only applies to core network operations, such as files downloaded with the File > Open Location menu command, the open terminal command, and the update system, among others. It does not apply to the integrated web browser component.

New Preferences > Main Window / Startup > Private web browsing mode preferences setting. Enable this option to keep normally persistent data in volatile memory when using the integrated web browser component, leaving no trace on disk. This includes cookies, the HTTP cache (documents, images, etc), and the browsing history.

Delta T database updated with the latest data available from IERS Rapid Service/Prediction Center online files, as of 2019 April 29. Delta T is the difference in seconds between the TT (Terrestrial Time) and UT1 timescales for a given date. It is an essential observational quantity for ephemeris calculations and reduction of astronomical positions.

CIP-ITRS database updated with the latest data available from IERS Rapid Service/Prediction Center online files, as of 2019 April 29. This database provides the coordinates of the Celestial Intermediate Pole (CIP) referred to the International Terrestrial Reference System (ITRS). These coordinates are necessary to account for polar motion in calculation of topocentric coordinates of solar system objects.


Breaking Changes

The macOS version of PixInsight requires now macOS 10.12 Sierra or later. OS X 10.11 El Capitan is no longer supported.

A new File > Quit (Ctrl+Q) main menu item replaces File > Exit (Ctrl+X) on Linux and Windows. This will prevent some issues with the Ctrl+X keyboard accelerator, which is the standard key combination for the 'Cut' command used in several components, such as Script Editor. In addition, the new File > Quit command on Linux and Windows is consistent with the macOS version of PixInsight.


Known Problems

All platforms. There is a confirmed complex bug involving the PixelMath and Statistics tools that I have not fixed yet. This problem has implications at a structural level within the PixInsight core application, which I need to study in detail. I'll try to solve this bug as soon as possible, but be aware that it is still present in this new version.

Windows. The Export as PDF feature of the integrated web browser component does not work on Windows. I'll try to fix this in a future release.

Windows. On machines where the only graphics card available is an integrated Intel HD graphics GPU, you may experience screen rendering problems and some instabilities on Windows. Unfortunately, the OpenGL implementation provided by some Intel HD graphics drivers on Windows is not fully compatible with PixInsight.

macOS. The macOS 10.14.4 update has changed 'something' in its OpenGL implementation that causes problems with Qt-based applications, such as PixInsight. The issues can be annoying but mostly not very important, including some problems while dragging items (such as clicking on a view selector and dragging) and unresponsive file items on the File Explorer window. Hopefully the just-released 10.14.5 update should fix these problems.

___________________

Thank you for your support and attention. Enjoy!

2
Hi all,

We are currently implementing new features in our plate solving and annotation scripts, and lack the necessary real-world data to test them thoroughly. We'd appreciate if you could provide us with images suitable for testing these features. We need images that comply with the following requisites:

- Required: Acquisition time metadata. We need to know the date the image was acquired, accurate to within one minute if possible in the case of inner planets (see below), or to within one hour or so for the rest of objects. For example, if your image has been acquired in FITS format and has a valid DATE-OBS header keyword generated by your acquisition software, that would be ideal.

- Required: Images with planets and/or asteroids. The new features that we are testing involve calculation of high-accuracy solar system ephemerides, which we must test against real data. We need images with:

- One or more of: Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto.

- One or more of the 343 most massive asteroids included in DE430's numerical integration—see the list attached to this post as a plain text file, which you can open in PixInsight's Script Editor. For example, if you have images covering relatively large areas of the Ecliptic, the probability that you have recorded one of these asteroids is high. In such case, even if you don't know whether you have one of these asteroids in the image or not, you can send it to us if it complies with the rest of requirements.

- Geodetic coordinates of the observer. It would be great if you could provide at least the approximate longitude and latitude (also height if possible) of the location where the image was acquired.

- Linear images. To perform the accurate plate solving and measurement tasks that we need to test the new features, we need unstretched (linear) images. We cannot perform valid PSF measurements on stretched images.

Thank you so much in advance!

4
Announcements / Open-Source Repositories Moved to GitLab
« on: 2019 February 20 04:26:02 »
Hi all,

Today we have moved our open-source Git repositories to GitLab:


The old GitHub repositories will still be available for a limited time, but no pull requests will be accepted from GitHub anymore. The migration to GitLab was planned since October 2018, but postponed until completing the PixInsight 1.8.6 release.

If you are one of our collaborators, or if you want to collaborate with us from now on, please create a GitLab account (it's free) if you don't already have one, then join us by letting me know your GitLab user name.

If you have contributed code to PixInsight, better use the same user name as on GitHub, so your commits can be associated with your new GitLab account. If you were following some of our repositories on GitHub, please follow them also on GitLab.

Thank you for your attention.

5
Announcements / Avast and AVG antivirus false positives
« on: 2019 January 27 12:44:28 »
We have recent reports that Windows users trying to install the latest version 1.8.6.1457 of PixInsight receive virus detection alerts with the Avast and AVG antivirus applications.

We run enterprise level virus protection solutions on all of our development and testing Windows machines. Currently we use McAfee Internet Security and McAfee LiveSafe. In addition, all of our installer packages, as well as all executable and .dll files included in these packages, are digitally signed with our Extended Validation (EV) code signing certificate. Changing any of these files in any way should of course invalidate the signatures.

So the chances are extremely low of a virus infecting our installer packages. For that to have happened, there would have to be a virus present on your system when you were downloading our installer, so that the virus could infect our files. You can always check if an installer package is valid by comparing the SHA-1 checksum computed for your downloaded file with the checksum published on our Software Distribution system. For your convenience, the SHA-1 checksums for the current 1.8.6.1457 packages are the following:

PI-windows-x64-01.08.06.1457-20190122-t.exe     5e445749306bafe717ca667b2c8dbcbfd83c3e8c
PI-windows-x64-01.08.06.1457-20190122-c.exe     4f6b780c05daea7c046c56106ea097bbe285c3dd
PI-macosx-x64-01.08.06.1457-20190122-t.pkg      1fbe90db4fbe9f2ea77c2c33cdcf846064659077
PI-macosx-x64-01.08.06.1457-20190122-c.pkg      754c7904bc4090030d8ad2aedcbee2475f341ca4
PI-linux-x64-01.08.06.1457-20190122-t.tar.gz    427533fab7c955c89f9139c25dfd06372ac14e1f
PI-linux-x64-01.08.06.1457-20190122-c.tar.gz    2c0620c00a8dae84f791424a8a3ac951ecb4818d


So these are just false positives. I encourage you to check the installer packages with a more reliable virus protection software.

6
Along with integrated solar system ephemerides, the PixInsight 1.8.6 platform includes new functionalities for the reduction of positions of solar system bodies and stars. In this document I am going to describe the JavaScript implementation at a basic level, sufficient for the practical calculation of astrometric, proper and apparent positions, among others. These reduced positions can be used for a variety of powerful applications, such as high-precision astrometry, drawing annotations on plate solved images, solar system simulations, and generation of high-level ephemerides such as occultations of stars by asteroids and the Moon, just to name a few.

The JavaScript implementation, available through the PJSR runtime in the PixInsight core application, uses the PCL/C++ implementation as its back end. For information on the entire functionality available with detailed descriptions of the implemented algorithms, see the corresponding sections of the official PCL documentation:

C++ documentation for the integrated solar system ephemerides system.

C++ documentation for the Position class.



StarPosition

This object is a simple structure to define positional data of a star. Positions and proper motions must be referred to ICRS/J2000.0. If out-of-range coordinates are specified, their values will be constrained to their proper ranges: right ascension to [0°,360°) and declination to [-90°,+90°].

   Number StarPosition.alpha

ICRS right ascension in degrees. Zero if not specified.

   Number StarPosition.delta

ICRS declination in degrees. Zero if not specified.

   Date StarPosition.epoch

Epoch of catalog coordinates. The fundamental J2000.0 epoch will be assumed if not specified.

   Number StarPosition.muAlpha

Proper motion in right ascension, in milliarcseconds per year, multiplied by the cosine of the declination. Zero if not specified.

   Number StarPosition.muDelta

Proper motion in declination, in mas/year. Zero if not specified.

   Number StarPosition.parallax

Parallax in arcseconds. Zero if not specified.

   Number StarPosition.radialVelocity

Radial velocity in km/s, positive away from Earth. Zero if not specified.



ObserverPosition

Geodetic coordinates of a terrestrial observer.

This structure provides the data necessary to calculate topocentric places of solar system bodies and stars. Typically, the values used should be WGS84 coordinates (for example, as distributed by GPS) or ITRF coordinates—both systems close together at the level of a few centimeters.

Geographic longitudes grow eastward, so longitudes are positive to the east and negative to the west of the central meridian. For ease of calculation, the ObserverPosition.longitude property converts assigned longitudes to the [0°,360°) range.

If out-of-range coordinates are specified, their values will be constrained to their proper ranges: longitude to [0°,360°), and latitude to [-90°,+90°].

   Boolean ObserverPosition.cioBased

Whether to compute CIO-based positions (if true) or equinox-based positions (if false). False by default, that is, equinox-based topocentric coordinates are computed by default.

   Number ObserverPosition.equatorialRadius

Equatorial radius of the reference spheroid in meters. By default this property is the IAU 2009/2012 equatorial radius of Earth: 6,378,136.6 m.

   Number ObserverPosition.flattening

Flattening of the reference spheroid. The default value is the IERS 2010 flattening of Earth: 1/298.25642.

   Number ObserverPosition.height

Geodetic height in meters. Zero by default.

   Number ObserverPosition.latitude

Geodetic latitude in degrees. Zero if not specified.

   Number ObserverPosition.longitude

Geodetic longitude in degrees. Zero if not specified.

   Vector ObserverPosition.regionalCenter

Geocentric rectangular coordinates of the center of the regional spheroid, in meters. A zero 3-D vector (that is, the geocenter) by default.



Position

This object implements algorithms for reduction of positions of solar system bodies and stars. It allows for calculation of geometric, astrometric, proper, apparent and intermediate places, including geocentric and topocentric coordinates.

The implemented vector astrometry and ephemeris calculation algorithms are rigorous and compliant with current IAU and IERS resolutions. Both equinox-based and CIO-based paradigms have been implemented for calculation of positions that depend on Earth's rotation. The apparent and intermediate places include the following corrections:

  • Light-travel time for solar system bodies.
  • Space motion for stars, including parallax, radial velocity and proper motions, with corrections for the relativistic Doppler effect that takes into account the change in light-travel time for stars.
  • Relativistic deflection of light due to solar gravitation.
  • Aberration of light, relativistic model.
  • Frame bias, precession and nutation. (equinox-based and CIO-based).
  • Accurate topocentric places with polar motion corrections.

Vector components are expressed in astronomical units (au) for stars and all solar system bodies except the Moon, for which positions are given in kilometers.

As of writing this document (January 2019), the IAU 2006/2000A precession-nutation theory is implemented (adjusted model with corrections to nutation angles, IAU 2006/2000AR). The standard fundamental ephemerides are JPL's DE438/LE438.

Constructor

   new Position( Date t[, String timescale="TT"] )
   new Position( String isoTime[, String timescale="TT"] )
   new Position( Number jd1[, Number jd2=0[, String timescale="TT"]] )


Constructs a new object for reduction of positions at the specified time point, which can be provided as a Date object, as an ISO 8601 date/time string, or as a Julian date with one or two components, JD=jd1+jd2. The timescale argument can be one of the following:

TTTerrestrial Time. This is the default timescale.
TDBBarycentric Dynamical Time.
TephEphemeris time, as defined by JPL DE/LE numerical integrations. For all purposes, this is equivalent to TDB.
UTCCoordinated Universal Time.
TAIAtomic International Time.
UT1Universal Time.
UTUniversal Time (same as UT1).

Properties

   ObserverPosition Position.observer

This property defines the geodetic positional and reference data necessary for calculation of topocentric positions of solar system objects and stars.

By default, an instance of the Position object calculates geocentric coordinates. After assigning a value to this property, subsequently calculated geometric, proper, astrometric, apparent and intermediate places will be topocentric, that is, will be referred to the location of the observer with respect to the center of the Earth.

By assigning a value to this property, all previously computed positional data will be erased with the exception of fundamental ephemerides and existing bias-precession-nutation matrices, which can always be preserved.

The ObserverPosition.cioBased property of the assigned object selects the celestial system and paradigm to be used in the calculation of positions that depend on Earth's rotation. If the cioBased property is true, equinox-based places cannot be calculated, and any of the apparent() methods will throw an exception if called. Conversely, if cioBased is false, CIO-based places cannot be calculated and no call to an intermediate() method will be allowed.

If polar motion corrections are enabled, the position of the Celestial Intermediate Pole (CIP) with respect to the ITRS is interpolated from the global CIP_ITRS database, if it provides data for the current time of calculation. In such case, polar motion is taken into account in the calculation of the observer's geocentric position and velocity. For the geocentric velocity a standard constant value for the rotation rate of the Earth is used; the velocity component due to precession and nutation is not taken into account since its effect is negligible. See the polarMotionEnabled property for more information and additional references.

   Boolean Position.polarMotionEnabled

This property is true if topocentric places take into account polar motion corrections to compute the geocentric position and velocity of the observer. This involves calculation of CIP (Celestial Intermediate Pole) coordinates with respect to the ITRS, as well as access to a database of CIP/ITRS positions, which is part of the official PixInsight distribution and is updated regularly as new observational data become available.

Polar motion introduces changes at the mas level for calculation of topocentric coordinates of the Moon. For the rest of objects, the effect of polar motion corrections is completely negligible. For topocentric positions of the Moon, polar motion can be necessary to achieve the highest accuracy, but in such case one may also have to take into account a regional geoid referred to the Earth's reference ellipsoid. See the ObserverPosition object.

   Number Position.epsA

Mean obliquity of the ecliptic, in radians.

Methods

   Vector Position.apparent( EphemerisHandle H )

Computes the apparent place of a solar system body. The returned vector is the apparent place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Light-travel time.
  • Relativistic deflection of light due to solar gravitation (except for the Sun, the Moon, and any object closer from Earth than the Sun at the time of observation.
  • Aberration of light, including relativistic terms.
  • Frame bias, precession and nutation. The origin of right ascension is the true equinox of date.

   Vector Position.apparent( StarPosition S )

Computes the apparent place of a star. The returned vector is the apparent place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Space motion, including parallax, radial velocity and proper motions, with corrections for the relativistic Doppler effect.
  • Relativistic deflection of light due to solar gravitation.
  • Aberration of light, including relativistic terms.
  • Frame bias, precession and nutation. The origin of right ascension is the true equinox of date.

   Number|null Position.apparentVisualMagnitude( EphemerisHandle H )

Returns the observed visual magnitude of a solar system body.

For objects with known H and G values (absolute magnitude and slope parameters, respectively; see EphemerisHandle.H and EphemerisHandle.G), the apparent visual magnitude is calculated applying the algorithm for minor planets described in Bowell et al. (1989). See also The Explanatory Supplement, Section 10.4.3.

For Mercury, Venus, Mars, Jupiter, Saturn and Neptune, we apply the equations described in the following paper:


For Saturn, we compute the apparent visual magnitude taking into account the planet's rings.

For Uranus, Pluto and the Galilean satellites of Jupiter, data from various sources are taken from Table 10.6 of the Explanatory Supplement.

If the required data are not available, or if no algorithm is known for the calculation of the apparent visual magnitude of the specified object, this method returns null.

A null value is also returned when the phase angle of the object at the time of calculation is beyond the limits of the set of observations used to generate the underlying models. For Mercury, apparent magnitudes are only calculated for phase angles 2° ? i ? 170°. For Venus, the magnitude is only calculated for 0° < i ? 163°.7. The valid range for Mars is i ? 50°.

See also Position.canComputeApparentVisualMagnitude()

   Vector Position.astrometric( EphemerisHandle H )

Computes the astrometric place of a solar system body. The returned vector is the astrometric place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Light-travel time.
  • Relativistic deflection of light due to solar gravitation (except for the Sun, the Moon, and any object closer from Earth than the Sun at the time of observation).

An astrometric place does not include annual aberration, nutation and precession corrections. Hence it is referred to an 'hybrid' reference system, but similar to GCRS J2000.0.

   Vector Position.astrometric( StarPosition S )

Computes the astrometric place of a star. The returned vector is the astrometric place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Space motion, including parallax, radial velocity and proper motions, with corrections for the relativistic Doppler effect.
  • Relativistic deflection of light due to solar gravitation.

An astrometric place does not include annual aberration, nutation and precession corrections. Hence it is referred to an 'hybrid' reference system, but similar to GCRS J2000.0.

   Boolean Position.canComputeApparentVisualMagnitude( EphemerisHandle H )

Returns true only if the apparent visual magnitude of the object represented by the specified handle H can be calculated with the current implementation, at the calculation time defined by this Position object.

Currently apparent visual magnitudes can be calculated for the following solar system bodies:

  • Objects providing valid H and G parameters (absolute magnitude and slope coefficient). This is true for most asteroids included in standard XEPH files.
  • Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto.
  • The four Galilean satellites of Jupiter: Io, Europa, Ganymede and Callisto.

   Vector Position.geometric( EphemerisHandle H )

Computes the geometric position of a solar system body. The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the instant of calculation defined by this object in the TT timescale, accounting for light-travel time, for the body defined by the specified ephemeris handle H.

The implemented reduction algorithm includes just the correction for light-travel time, but no corrections for light deflection, annual aberration, nutation, or precession. The position so calculated allows to plot the specified body directly on an existing sky chart referred to GCRS/J2000.0. Note however, that for generation of new graphical representations for a given date using star catalog data, astrometric or proper places should be used instead.

   Vector Position.geometric( StarPosition S )

Computes the geometric position of a star. The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the instant of calculation defined by this object in the TT timescale, for the positional star data defined by the specified object S.

The implemented reduction algorithm includes just the corrections for space motion: parallax, radial velocity and proper motions, when the corresponding data items are nonzero in the specified object S. The space motion vector includes terms to account for the relativistic Doppler effect.

   void Position.initCIOBasedParameters()

Calculates all parameters and data structures necessary for CIO-based reduction of positions. This method starts by calling initEquinoxBasedParameters(), so it implicitly calculates all equinox-based parameters. Then it calculates the CIO-based combined bias-precession-nutation matrix.

Since all of these items depend exclusively on time, they are computed only once in the first call to this function, and subsequent calls will have no effect.

Normally, you don't have to call this function directly because it is invoked automatically when necessary by the different position reduction routines.

   void Position.initEquinoxBasedParameters()

Calculates all parameters and data structures necessary for equinox-based reduction of positions. This method calculates the following structures:

  • Precession+bias angles, IAU 2006 precession model, Fukushima-Williams parameterization.
  • Mean obliquity of the ecliptic, IAU 2006 precession model.
  • Nutation angles, IAU 2006/2000AR nutation model.
  • Combined bias-precession-nutation matrix, equinox-based.
  • Position of the Celestial Intermediate Pole (CIP).
  • Celestial Intermediate Origin (CIO) locator.
  • Equation of the origins (EO).
  • Earth rotation angle (ERA) for the UT1 time of calculation.
  • Greenwich Apparent Sidereal Time (GAST), IAU 2006.

Since all of these items depend exclusively on time, they are computed only once in the first call to this function, and subsequent calls will have no effect.

Normally, you don't have to call this function directly because it is invoked automatically when necessary by the different position reduction routines.

   Vector Position.intermediate( EphemerisHandle H )

Computes the intermediate place of a solar system body. The returned vector is the intermediate place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Light-travel time.
  • Relativistic deflection of light due to solar gravitation (except for the Sun, the Moon, and any object closer from Earth than the Sun at the time of observation.
  • Aberration of light, including relativistic terms.
  • Frame bias, precession and nutation. The origin of right ascension is the Celestial Intermediate Origin (CIO), following the IAU recommendations since January 2003.

   Vector Position.intermediate( StarPosition S )

Computes the intermediate place of a star. The returned vector is the intermediate place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale.  The implemented reduction algorithm includes the following corrections:

  • Space motion, including parallax, radial velocity and proper motions, with corrections for the relativistic Doppler effect.
  • Relativistic deflection of light due to solar gravitation.
  • Aberration of light, including relativistic terms.
  • Frame bias, precession and nutation. The origin of right ascension is the Celestial Intermediate Origin (CIO), following the IAU recommendations since January 2003.

   Array Position.nutationAngles()

Returns the nutation angles in radians as an Array object P, where P[0] is the nutation in longitude and P[1] is the nutation in obliquity. This method calls initEquinoxBasedParameters() to ensure that all data required for equinox-based reduction of positions is available.

   Vector Position.proper( EphemerisHandle H )

Computes the proper place of a solar system body. The returned vector is the proper place of the object defined by the specified ephemeris handle H in geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Light-travel time.
  • Relativistic deflection of light due to solar gravitation (except for the Sun, the Moon, and any object closer from Earth than the Sun at the time of observation.
  • Aberration of light, including relativistic terms.

A proper place does not include nutation and precession corrections, hence it is referred to the reference coordinate system: GCRS J2000.0.

   Vector Position.proper( StarPosition S )

Computes the proper place of a star. The returned vector is the proper place calculated for the positional star data defined by the specified object S. Its components are geocentric or topocentric rectangular equatorial coordinates, calculated for the instant defined by this object in the TT timescale. The implemented reduction algorithm includes the following corrections:

  • Space motion, including parallax, radial velocity and proper motions, with corrections for the relativistic Doppler effect.
  • Relativistic deflection of light due to solar gravitation.
  • Aberration of light, including relativistic terms.

A proper place does not include nutation and precession corrections, hence it is referred to the reference coordinate system: GCRS J2000.0.

   Vector Position.true( EphemerisHandle H )

Computes the true position of a solar system body. The components of the returned vector are the geocentric or topocentric rectangular equatorial coordinates for the calculation instant defined by this object in the TT timescale, without accounting for light-travel time, for the body defined by the specified ephemeris handle H.

This function calls Position.geometric( EphemerisHandle ) internally to compute, if necessary, the geometric position with correction for light time, that is, no separate calculation routine is implemented for true positions. The returned vector is only useful to compute the true geocentric or topocentric distance, and for verification purposes.

   Vector Position.true( StarPosition S )

Computes the geometric position of a star. This function has been implemented for completeness. It is a synonym for Position.geometric( StarPosition ). There are no known 'true' positions of stars, since their light-travel time is implicitly included in the space motion equations.

   Number Position.trueDistance( EphemerisHandle H )

Computes the true distance of a solar system body. The true distance is the actual distance from the body to the observer, geocentric or topocentric, at the instant of calculation. This excludes the light-travel time correction.

   Number Position.trueDistance( StarPosition S )

Computes the true distance of a star. The returned value is just the norm of the geometric position vector, that is:

   Position.geometric( S ).l2norm()

This should be an actual distance in au only for stars with known parallaxes. For stars where the parallax is unknown or undefined, this value is meaningless because in such cases position vectors are unit vectors, whose components are also known as direction cosines.

Static Methods

   Vector Position.equatorialToEcliptic( Vector r, Number eps )

Conversion from rectangular equatorial to rectangular ecliptic coordinates. r is a vector of rectangular equatorial coordinates. eps is the oliquity of the ecliptic in radians.

Returns a vector whose components are the rectangular ecliptic coordinates corresponding to the specified equatorial position r at the epoch where the specified obliquity has been calculated.

   Vector Position.equatorialToEcliptic( Vector r, Number se, Number ce )

This method is identical to the previous one, namely Position.equatorialToEcliptic( Vector, Number ), but the obliquity of the ecliptic is specified by its sine se and cosine ce.

   Vector Position.icrsEquatorialToGalactic( Vector r )

Conversion from ICRS rectangular equatorial to rectangular galactic coordinates. r is a vector of rectangular equatorial coordinates in the ICRS. Returns a vector whose components are the calculated rectangular galactic coordinates.

In this routine we adopt the proposed ICRS coordinates of the galactic pole in:

  • Jia-Cheng Liu, Zi Zhu, and Hong Zhang, Reconsidering the galactic coordinate system, Astronomy & Astrophysics manuscript no. AA2010, October 26, 2018.

The applied conventional definitions are as follows. The ICRS equatorial coordinates of the zero point of galactic coordinates are:

alpha = 17h45m40s.0400
delta = –29°00'28".138

The equatorial coordinates of the galactic pole, coherent with the ICRS, are:

alphap = 12h51m36s.7151981
deltap = +27°06'11".193172

Note that these definitions are not consistent with the conventional values currently accepted by the IAU. The current (as of October 2018) galactic coordinate system was defined by the IAU in 1959 in the FK4 B1950.0 reference system.

7
One of the most important new features in PixInsight 1.8.6 is the integration of a standardized system for calculation of ephemerides of solar system bodies. In this document I am going to describe the fundamentals of this implementation and how it can be exploited from the core JavaScript engine (PJSR) at a basic level. The C++ implementation, which is now part of the PixInsight Class Library (PCL), is very similar—is it actually the back end of the JavaScript implementation—and is already described in the official PCL documentation.

The PJSR front end of the integrated ephemerides system consists of a set of files and JavaScript objects that I'll describe briefly below.



EphemerisFile

This object provides access to ephemerides of solar system bodies stored in XEPH (Extensible Ephemeris Data format) files. On the PixInsight/PCL platform, XEPH is the standard file format for serialization and storage of ephemerides data. An XEPH file is similar to a monolithic XISF file: it consists of an XML file header document followed by a series of binary data blocks, where ephemerides data are stored as Chebyshev polynomial expansions. The XEPH header defines, along with ancillary data and properties describing the objects for which ephemerides can be calculated, a special file index for fast access to the Chebyshev coefficients required to compute ephemerides within a given time span.

XEPH files allow for calculation of rectangular coordinates (with the EphemerisHandle object, which I'll describe later) referred to the axes of the International Celestial Reference System (ICRS/J2000.0). Positions are given in au and velocities in au/day for all solar system objects, except planetocentric coordinates of natural satellites, including the geocentric Moon, for which positions and velocities are given in kilometers and km/day, respectively. Angles (nutations and librations) are given in radians, and time differences (such as TT-TDB), in seconds.

An XEPH file storing up-to-date JPL DE/LE ephemeris data is now part of all standard PixInsight distributions. As of writing this document, the standard XEPH file provides the complete JPL DE438/LE438 ephemerides.

In the following sections I'll describe just a few properties of the EphemerisFile object, which are the minimal set of elements required for a basic application. For a complete and detailed description of all properties and methods available for this object, see the corresponding documentation for the C++/PCL implementation.


Object Identifiers and Names

In an XEPH file, objects can be referenced in two ways:

  • By identifier. An object identifier is a short ASCII string, typically with three or four characters, which is treated as a case-sensitive string.

  • By name (optional, not always available). An object's name is an arbitrary Unicode string, normally the readable name of an object, treated as a case-insensitive string.
   
For example, all of 'Ju', 'Jupiter', 'jupiter' and 'JUPITER' refer to Jupiter in a standard XEPH file storing fundamental JPL DE/LE ephemerides. In this example, 'Ju' is a case-sensitive object identifier, thus 'ju' and 'JU' are not valid. 'SSB' is the special identifier reserved for the solar system barycenter.


Ephemeris Time Span

Each XEPH file provides ephemerides for a limited time span, which can be retrieved with the following properties:

   Date EphemerisFile.startTime

Starting point of the time span covered by the ephemerides file, or the earliest time point for which ephemerides can be calculated.

   Date EphemerisFile.endTime

Ending point of the time span covered by the ephemerides file, or the latest time point for which ephemerides can be calculated.


Retrieving the Set of Objects Available

To know the set of objects available in an XEPH file, one should use the following property:

   Array EphemerisFile.objects

The value of this property is an array where each element is an array A with the following elements:

A[0] : Object identifier
A[1] : Center identifier
A[2] : Object name (can be empty)

For example, one of the arrays in the value of this property for the standard fundamental ephemerides file is ["Ju","SSB","Jupiter"], which tells us that Jupiter (identifier 'Ju' and name 'Jupiter') is available for calculation of barycentric (origin='SSB') rectangular ICRS coordinates.


Standard Ephemeris Files

The following static properties of the EphemerisFile object provide access to essential XEPH files that should be available in every PixInsight 1.8.6 installation. There are more ephemeris files and databases in the integrated ephemerides system, but I'll describe here just the files necessary for practical ephemerides calculations.

   EphemerisFile EphemerisFile.fundamentalEphemerides

The global fundamental ephemerides file currently defined by the running PixInsight platform. Under normal working conditions, the returned object provides ephemeris data for at least the following objects:

IdentifierNameDescription
MeMercuryMercury's barycenter
VeVenusVenus' barycenter
EMBEarth-Moon barycenter
MaMarsMars' barycenter
JuJupiterJupiter's barycenter
SaSaturnSaturn's barycenter
UrUranusUranus' barycenter
NeNeptuneNeptune's barycenter
PlPlutoPluto's barycenter
MnMoonMoon's geometric center with respect to Earth's center.
SnSunSun's geometric center
EaEarthEarth's geometric center

With the only exception of the Moon ("Mn" identifier), ephemeris data for all of the objects above are provided relative to the solar system barycenter ("SSB" identifier). Additional items may also be available, depending on specific file versions and compilations:

IdentifierDescription
LbrLunar librations (Euler angles) in radians
NutNutation angles in radians
TT_TDBTT-TDB difference at the geocenter in seconds.

As of writing this document, the standard fundamental ephemerides file provides JPL's DE438/LE438 ephemerides, but nutations, librations and time differences are not included.

   EphemerisFile EphemerisFile.asteroidEphemerides

The global asteroid ephemerides file currently defined by the running PixInsight platform. Under normal working conditions, the returned object provides ephemeris data for a set of asteroids with relevant masses. In a standard asteroid ephemeris file, object identifiers are asteroid numbers and object names are asteroid designations; for example:

IdentifierName
1Ceres
2Pallas
3Juno
4Vesta
5Astraea
......
702Alauda
703Noemi
704Interamnia
......

Asteroid ephemeris data are provided relative to the solar system barycenter ("SSB" identifier), with position and velocity coordinates coherent with global fundamental ephemerides. As of writing this document, the standard asteroid ephemerides file provides the complete set of 343 asteroids used for the numerical integration of DE430 ephemerides, with barycentric coordinates calculated to be coherent with DE438.



EphemerisHandle

This object provides access to ephemeris data for a specific object available in an XEPH file. It can perform basic ephemeris calculations, including state vectors and its first derivatives, such as position and velocity vectors, and performs all the low-level file search, seek and read operations transparently and efficiently. This object is the JavaScript version of the C++ implementation in the pcl::EphemerisFile::Handle subclass.

Data stored in an XEPH ephemeris file generates rectangular coordinates referred to the axes of the International Celestial Reference System (ICRS/J2000.0). Positions are given in au and velocities in au/day for all solar system objects, except planetocentric coordinates of natural satellites, including the geocentric Moon, for which positions and velocities are given in kilometers and km/day, respectively. When available, angles (nutations and librations) are given in radians, and time differences (such as TT-TDB) in seconds.

For practical ephemeris calculations, the EphemerisHandle object is normally not used directly to compute celestial coordinates. The Position object, which I'll describe in a second article dedicated to reduction of astronomical positions, is much more efficient and versatile for calculation of places of solar system bodies and stars, including astrometric, proper and apparent positions, among others. The state vectors computed directly with EphemerisHandle are more appropriate for low-level applications, such as generation of ephemerides by numerical integration. These are more advanced topics that should be covered in separate documents.


Constructor

   new EphemerisHandle( EphemerisFile parent, String object, String origin )

Constructs a new EphemerisHandle object for calculation of state vectors for the specified object, with the specified origin of rectangular coordinates, with data retrieved from the specified parent ephemerides file. object and origin can be object identifiers or names, although the use of identifiers is recommended for robustness.


State Vectors

   Vector EphemerisHandle.stateVector( Date )
   Vector EphemerisHandle.stateVector( String isoTime )
   Vector EphemerisHandle.stateVector( Number jd1[, Number jd2=0] )


This method computes a state vector (typically a position vector) for the specified time point in the Barycentric Dynamical Time (TDB) timescale. The calculation time can be specified as a Date object, as an ISO 8601 date/time string representation, or as a Julian date, which can be specified as one or two components, JD=jd1+jd2 ( (specifying a JD as two components greatly improves the accuracy of time representation by increasing the effective bit length used to store time points).

The components of returned position vectors are ICRS rectangular equatorial coordinates in au, except planetocentric coordinates of natural satellites (including the geocentric Moon), for which positions are provided in km. Angles are provided in radians. TT-TDB differences are provided in seconds.

   Array EphemerisHandle.stateVectors( Date )
   Array EphemerisHandle.stateVectors( String isoTime )
   Array EphemerisHandle.stateVectors( Number jd1[, Number jd2=0] )


Computes state vectors (typically position and velocity vectors) for the specified time point in the Barycentric Dynamical Time (TDB) timescale. The calculation time can be specified as in the above stateVector() method.

The returned object is an Array with two elements, where the first element is the function value as a Vector object, and the second element is the first derivative, also as a Vector object. The components of returned position and velocity vectors are ICRS rectangular equatorial coordinates in au and au/day, respectively, except planetocentric coordinates of natural satellites (including the geocentric Moon), for which positions and velocities are provided in km and km/day, respectively. Angles and their variations are provided in radians and radians/day. TT-TDB differences and their variations are provided in seconds and seconds/day.


Asteroid Photometric and Diameter Data

   Number|null EphemerisHandle.H
   Number|null EphemerisHandle.G


These properties return the absolute magnitude and slope parameter, respectively, for the body represented by this EphemerisHandle object. These properties are only available for asteroids. If the corresponding data are unavailable in the parent ephemeris file, the value of each of these properties is null.

H is the visual magnitude of the object as seen at 1 au of the Earth, 1 au from the Sun, and with a phase angle of 0 degrees. G, the slope parameter, is used to compute phase angle corrections. For a detailed description and the algorithm for calculation of asteroid visual magnitudes, see:

  • E. Bowell et al., Asteroids II, R. P. Binzel et al. (eds.), The University of Arizona Press, Tucson, 1989, pp. 549-554.

  • Urban, Sean E., Kenneth Seidelmann, P., ed. (2013), The Explanatory Supplement to the Astronomical Almanac, 3rd Edition, Section 10.4.3.

The Position JavaScript object (which I describe in a separate document) provides implementations of the rigorous algorithms for calculation of visual magnitudes of planets and asteroids.

   Number|null EphemerisHandle.B_V

Johnson B-V color index in magnitudes. If the corresponding data are unavailable in the parent ephemeris file, the value of this property is null.

   Number|null EphemerisHandle.D

Diameter in km. When available, this is normally an IRAS asteroid diameter. If the corresponding data are unavailable in the parent ephemeris file, the value of this property is null.

8
As I described in the official announcement, PixInsight 1.8.6 ships with fully operational interprocess communication (IPC) functionality. Basically, this means that there can be several instances of the PixInsight core application running simultaneously on the same machine, and that all of them can send and receive messages and share data with each other. Although this feature may seem relatively 'simple', if you think on the kinds of things that can be done this way you'll realize that IPC extends PixInsight's flexibility, applicability and processing force enormously.

To demonstrate how IPC works in PixInsight 1.8.6, consider the following scripts:

sender.js
Code: [Select]
function main()
{
   console.abortEnabled = true;
   console.show();
   console.writeln( "<end><cbr><br>Sending messages ... " );

   for ( let count = 0; ; ++count )
   {
      processEvents();
      if ( console.abortRequested )
         break;

      if ( CoreApplication.isInstanceRunning( 2 ) )
         CoreApplication.sendMessage( 2, format( "Message %d", count ) );

      msleep( 100 );
   }

   console.writeln( "<end><cbr>end." );
}

main();


listener.js
Code: [Select]
function main()
{
   console.abortEnabled = true;
   console.show();
   console.writeln( "<end><cbr><br>Receiving messages ... " );

   let listener = new MessageListener;
   listener.onMessage = function( instance, uniqueId, message )
   {
      console.writeln( format( "<end><cbr>Received message from application instance %d with uuid = %s: %s", instance, uniqueId, message ) );
   };

   for ( ;; )
   {
      processEvents();
      if ( console.abortRequested )
         break;
      msleep( 10 );
   }

   listener.enabled = false;
   listener.onMessage = null;
   console.writeln( "<end><cbr>end." );

   console.writeln( format( "%u pending message(s).", CoreApplication.numberOfPendingMessages ) );
   CoreApplication.processPendingMessages();
}

main();

Copy and paste them in two new JavaScript documents (for example, using PixInsight's Script Editor) and save them as sender.js and listener.js, respectively. Now run a first instance of PixInsight in the usual way. Open Script Editor and load sender.js. Open the Process Console window and enter the following command to launch a second instance of PixInsight:

j CoreApplication.launchInstance( 2 )

Once launched, go to the second instance and load listener.js in Script Editor. Run it by pressing F9 (Ctrl+R on macOS). Go to the first instance and run sender.js in the same way. Go to the second instance and look at the console. As you'll see, the application instance #2 is receiving messages sent by the first instance and showing message data on the console. To stop the scripts, press Esc or click the Pause/Abort buttons. Now if you want to test IPC further, you can launch a third, fourth, ... application instance and run sender.js on each of them. Up to 255 instances of the PixInsight core application are supported.

These simple scripts let you grasp the significance of IPC in PixInsight. For example, a typical scenario could be an image acquisition procedure with asynchronous processing:

- Application instance #1 acquires a new image and writes it as a new file, then sends an IPC message to instance #2 with the corresponding file path.

- Application instance #2 receives the IPC message, loads the file, processes the image, and writes the processed image as a new file.

To sophisticate this example further, with a bit of additional work two or more application instances could be waiting for new images and processing them concurrently as soon as they are acquired. This parallel producer/consumer implementation would require just a simple protocol to differentiate busy and idle application states. Easy, clean, and extremely powerful!

The IPC functionality is available in the JavaScript runtime. As you can see in the scripts above, the key objects are CoreApplication and MessageListener. Both objects are very easy to use. Each IPC message transports a plain text payload, which can be received, along with a unique message identifier and the number of the sending instance (>= 1), in the onMessage event handler of a MessageListener (or derived from) object.

Each running application instance allocates an IPC segment, which is a block of contiguous memory dedicated to receive IPC messages. By default, IPC segments provide just 64 KiB of RAM. The maximum length of a message payload is smaller than that, about 60 KiB. This is indeed small, but ensures that we cannot have problems on machines with limited resources or custom configurations imposing strict limits to IPC resources. This default maximum message length is sufficient to send, for example, a file path, or other typical control messages. If a particular application of IPC requires more memory, the core application can be launched with two new command-line arguments:

--ipc-segment-size=<size>

      Set the size in bytes of the inter-process communication (IPC) segment. The
      valid range is [64KiB,1GiB]. The default IPC segment size is 64 KiB.

--ipc-index-length=<n>

      <n> is the length of the IPC message index. The minimum length is 16 and the
      maximum cannot exceed 1/4 of the IPC segment size. The default IPC message
      index length is 16.


The IPC message index is a dynamic data structure, allocated within the IPC segment, that allows receiving concurrent messages from more than one sender application. The default index length of 16 nodes is more than sufficient for most practical purposes.

_________________

Right now I cannot disclose more specific information, but successful experiments have already been done with new hardware control tools based on the new IPC functionality, and the results are promising. I hope more developers will find new opportunities of creativity thanks to this feature.

9
Release Information / New in PixInsight 1.8.6: Bundled Projects
« on: 2019 January 23 13:05:49 »
Since version 1.8.6.1457 of the PixInsight core application, PixInsight projects can be generated in two flavors: as bundled projects—which is now the default option—, and unbundled projects, or the traditional way.

Bundled projects can change the way you work with projects in PixInsight drastically, hopefully as an important improvement to make your projects more robust and easier to use and maintain. Let's see what bundled projects are and how they are used on different platforms.


Unbundled PixInsight Projects

We'll start with what you already know: unbundled projects consist of an XML project file (.xosm filename suffix) and an associated project data folder (.data suffix), both with the same file name. To work with one of these projects, you just have to concentrate on the XML file: for example, double-click the .xosm file, and the project in question will be opened and loaded in PixInsight, which will detect and manage the associated .data folder automatically and transparently. This works, and all PixInsight users are indeed accustomed to work this way (especially because no other option has been available so far ;) ), but has an important drawback: When you copy or move a project, you should not forget to copy and move both the .xosm file and the .data folder—if you forget one of them, your copied or moved project won't be usable anymore. This can lead to, and actually leads to with relative frequency, important data loses due to simple mistakes.


Bundled PixInsight Projects

A bundled PixInsight project is just a directory (or folder) on which the project's .xosm file and its associated .data directory are stored, along with some additional metadata items. To identify and manage them on all supported platforms, bundled PixInsight projects must carry the .pxiproject filename suffix. The good thing about a bundled project is that it can be handled as a single filesystem item, thus avoiding the possibility to lose one of its components by mistake. For example, to copy a bundled project, you just have to select and drag the bundle as if it were a regular file. Below you can see the icon that identifies PixInsight bundled projects on all platforms.


Now the problem is, given that PixInsight is a multiplatform application, how can we achieve a consistent behavior with respect to bundled projects on Linux/FreeBSD, macOS, and Windows? More specifically, we need to create the illusion that a project's bundle directory is a single .pxiproject file. Well, actually, this is an ideal goal that can only be achieved completely on macOS, but only partially on Linux/FreeBSD and Windows.

So the question is, how are bundled projects seen and managed on each supported platform?


macOS

In my opinion, one of the most brilliant characteristics of the macOS operating system (besides the fact that it is UNIX under the hood), is its native implementation of application bundles and document packages. A bundle or package in macOS is just a directory that can be seen and used as a regular file. Applications declare packages as their supported document types, with specific filename suffixes and file icons. This simple filesystem abstraction is one of the facts that makes macOS so easy-to-use and powerful. For example, application bundles have the .app suffix, and Final Cut Pro X libraries are packages with the .fcpbundle suffix. In the same way, bundled PixInsight projects are document packages with the .pxiproject suffix on macOS. Just that simple. So all macOS PixInsight users should be very happy because their projects can now be packages that can be used and managed exactly as regular files, both inside and outside the PixInsight core application.


A bundled PixInsight project selected on Finder (macOS 14.2 Mojave).


X11 Desktops (Linux and FreeBSD) and Windows

Beyond the macOS world a directory is always a directory. That's it. There is no (reasonable, portable) way we can convince a desktop file manager, such as KDE's Dolphin, GNOME's Files, or Windows Explorer, to treat a directory as a single opaque filesystem element, that is, as a regular file.

Outside the PixInsight core application, the status of bundled projects is as follows on Linux and Windows:

- On desktop file managers, if you press Enter with a .pxiproject directory selected, or double-click it, you'll simply navigate within the directory, but the project won't be opened with PixInsight. You can then double-click the .xosm file to open the bundled project.

- You can drag a .pxiproject folder directly to PixInsight's workspace to open the bundled project.

- On Windows, .pxiproject folders will show a custom icon (see above). This is achieved by generating special metadata items automatically (a desktop.ini file, a bundle.ico file, and special system attributes applied to the folder).

- On the KDE desktop, both 4.x and 5.x versions, all .pxiproject directories will show a custom icon (see above). This is achieved by generating a special .directory file automatically, which KDE detects and interprets transparently. Simple and efficient.


Bundled PixInsight projects shown on KDE's Dolphin file manager (Fedora 29 / KDE Plasma).

- On other Linux desktops, including GNOME, .pxiproject directories don't have custom icons, unfortunately. Either the required process to assign custom directory icons is too cumbersome and/or platform-dependent, or it simply doesn't exist. I'll try to improve this as possible in future versions.

Inside the PixInsight core application, as you surely have figured out, our goal of having a complete filesystem abstraction for bundled projects has been achieved completely on all supported platforms:

- On the File Explorer window, you can double-click a .pxiproject folder, or press Enter when it is selected, or drag it to the workspace, to open the bundled project. File Explorer also shows a project thumbnail image and project metadata when you select a .pxiproject package.


Bundled PixInsight projects shown on PixInsight's File Explorer (Fedora 29 / KDE Plasma).

- When you select the File > Load Project option from the main menu (or press Ctrl+J) on Linux and Windows, a special, non-native file dialog opens where you can open .pxiproject folders as packages, that is, just as regular files (double click, Enter, the Open button, etc). On macOS, native file dialogs support document packages directly.


Bundled PixInsight projects shown on PixInsight's Load PixInsight Project dialog (Fedora 29 / KDE Plasma).

- On the Save PixInsight Project dialog (File > Save Project, or Shift+Ctrl/Cmd+J), you can choose to save either a bundled or an unbundled project. Again, for bundled projects a special non-native dialog is used to integrate .pxiproject packages with the filesystem on Linux and Windows, while the normal native dialog is used on macOS. The required metadata items will be generated on the bundle directory on all platforms to support all platforms; that is, for example, a .pxiproject package generated on macOS will show its custom icon when copied to Linux/KDE.

- If you execute the PixInsight core application from a command line, you can specify a .pxiproject package to open it, just as a normal file.

- The open command can also be used from the Process Console window to open .pxiproject packages.


Bottom Line

The current implementation of bundled projects in PixInsight is only 'perfect' on macOS, since this is the only operating system where the native desktop provides support for the document package abstraction. However, the implementation on X11 (especially on KDE) and Windows desktops is quite satisfactory and fully functional inside the PixInsight core application.

Bundled projects are intended to be a practical, efficient, multiplatform solution to an important problem in PixInsight. There are other possible solutions that I have considered (such as compressed files), but they involve performance penalties and degrade the user's experience on macOS, where packages are the ideal implementation. In addition, the fact that a bundled project is just a directory makes it fully compatible with the unbundled paradigm, that is, you can always open the contained .xosm file on Linux and Windows. I hope you'll find bundled projects to be a useful and robust feature for your next image processing works in PixInsight.

10
Announcements / PixInsight 1.8.6.1457 Released
« on: 2019 January 23 03:46:43 »
Installation packages for a new version of PixInsight are now available to all users: 1.8.6.1457 for Linux, macOS and Windows. This is a bugfix/update release. It solves all confirmed bugs discovered since the initial 1.8.6 release and provides important new features, which I'll describe succinctly in this document.


Installation

As most new versions of the PixInsight core application, this one is not available as an automatic update. You have to uninstall the previous version, be it 1.8.6 or an older one, then download and install the new version manually. Of course, if you have already activated version 1.8.6 on your computer, no additional license activation will be required.


Bug Fixes

Version 1.8.6.1457 solves the following problems detected since the initial 1.8.6 version:

All platforms: All bug fixes in the previous 1.8.6.1448 version are included.

All platforms: Fixed a regression in core screen rendering routines that was causing sporadic segmentation faults, especially with relatively large images (16 Mpx and larger).

All platforms: Fixed a regression in core screen rendering routines that was causing sporadic segmentation faults with masked images.

All platforms: A rare race condition in the core event loop was causing sporadic segmentation faults when changing the current workspace by clicking on a workspace selector (the small square gray icons on the bottom tool bar). This has been fixed.

All platforms: When the on profile mismatch policy is convert to the default profile (as defined in global color management preferences), images with mismatched ICC profiles were not being converted to the default profile, that is, the policy was not being applied. This is actually an old bug that was introduced as a regression in one of the latest 1.8.5 versions, and had passed unnoticed. See the original bug report.

All platforms: Loading CFA raw frames with the new RAW module was leading to excessive memory consumption (2-4 times more memory than what is strictly necessary, depending on RAW settings). This is now fixed.

All platforms: White balance settings were not being applied to raw CFA frames loaded with the new RAW module. This works now as expected for all raw frames, included Bayer and XTrans CFA patterns. See the original bug report.

All platforms: The HistogramTransformation tool was causing a segmentation fault under very special conditions (the HT tool is open with track view enabled on a hidden workspace with an active grayscale image, then the workspace in question is activated, a different color image is selected by the user, and this causes HT to segfault). This obscure bug has not been reported by users. We have discovered and fixed it during the intensive stress tests we have applied to version 1.8.6.

All platforms: Project files opened from the File Explorer window, or with the open command from the console, were not being added to the list of recently opened project files (File > Open Recent > Project Files). This is now fixed.

Windows: The SubframeSelector tool was crashing the WebView control included in its Measurements window quite frequently on Windows (more or less frequently depending on graphics drivers). As a result, no more graphics could be generated after the crash unless the core application was restarted. Actually, the same potential problem was present on all platforms, but its incidence was very small on Linux and macOS. This bug has been reported in multiple occasions. With the changes I have implemented in this version, this problem should not happen anymore under normal working conditions.

macOS: Script windows and other dialog windows were not resizable when they should. This is now fixed. See the original bug report.

macOS: Top-level tool windows were being maximized spontaneously by the Cocoa window manager (NSWindow class), especially when changing the current workspace, and when windows were minimized and then restored immediately. This should not happen anymore with the changes I have implemented in this version.


New Features

Bundled projects. Projects can now be generated packed into single folders with the .pxiproject suffix. This integrates naturally with macOS (where document packages are supported natively), and also integrates well on Windows and Linux with the KDE desktop environment. This is a very important new feature requiring a thorough description, which I'll post on the release information forum board.


Screen rendering routines are now faster, especially for representation of reduced images (zoom ratios 1:2 and smaller). This is an initial improvement that will be followed by additional, more significant ones in the next version. These improvements are necessary to support the new mosaic generation tool, where we'll have to work fluently with very large images (for example, mosaics of several Giga pixels in 32-bit floating point format).

Screen rendering performance measurements, which I need to evaluate the changes described in the preceding paragraph. You'll find them on the View Explorer window, in the render-rates section (read the tooltips for more information). Again, this requires a separate description on the release information board.


New functionality implemented in the RAW module. Improved memory management. White balancing and wavelet denoising options are now fully functional for raw CFA data.

New command-line arguments. These new arguments facilitate installation on machines with nonstandard screen resolutions (mainly laptops and virtual machines) where automatic UI scaling factors cannot be calculated reliably. Excerpted from the command line help text:

         --ui-scaling=<n>|auto

               Set the core UI scaling factor to <n> in the range [1,4], or allow the
               core application to calculate a suitable scaling factor automatically.
               The specified value or setting will persist in application preferences.

         --ui-font-resolution=<n>

               Set the core font resolution to <n> in the range [10,1000] dpi. The
               specified value will persist in application preferences. The default
               font resolution is 100 dpi.
         


Command-line arguments enhanced to control the integrated web browser. In particular, the following command-line arguments provide more control on GPU usage for the Chromium-based browser component (Process Explorer, graphs on SubframeSelector and PhotometricColortCalibration, etc):

         --opengl=<impl>

               Forces the use of a particular OpenGL implementation. This option can be
               useful to troubleshoot OpenGL problems, especially on Windows platforms.
               The <impl> argument value must be one of:

               raster         Use pure raster surfaces on all top-level windows. This
                              option effectively disables the use of OpenGL hardware
                              acceleration in the entire PixInsight platform. GPU
                              acceleration will be also disabled in the integrated
                              Chromium browser component.

               software       Use a platform-dependent, software-based OpenGL 2.1 or
                              higher implementation. GPU acceleration will be also
                              disabled in the integrated Chromium browser component.

               ES             Use an OpenGL ES 2.0 or higher implementation distributed
                              with the core application on Windows. This option has no
                              effect on other platforms.

               desktop        Force the use of desktop OpenGL hardware acceleration,
                              even if the host graphics driver/adapter has been
                              blacklisted, even if the host graphics hardware is known
                              to be buggy or crash-prone.
         


Hopefully, the --opengl=raster option will now solve most issues caused by bad graphics drivers on Windows, although really bad drivers may continue causing some problems. Problems caused by misbehaving 'utility' applications, poor virus protection programs and wrong/buggy Windows updates cannot be solved this way, though.

Improved X11 installer program, which generates now much better MIME descriptions for file type associations and installs scalable application and file type icons (SVG format). The installer also inserts the PixInsight application in the Astronomy, Science/Math and Graphics standard application categories (previously only in Graphics).

Improved multiplatform directory selection dialogs. The non-native directory selection dialog can now remember its window size and side bar selections, just as regular file selection dialogs.

Delta T database updated with the latest data available from IERS Rapid Service/Prediction Center online files, as of 2019 January 19. Delta T is the difference in seconds between the TT (Terrestrial Time) and UT1 timescales for a given date. It is an essential observational quantity for ephemeris calculations and reduction of astronomical positions.

CIP-ITRS database  updated with the latest data available from IERS Rapid Service/Prediction Center online files, as of 2019 January 19. This database provides the coordinates of the Celestial Intermediate Pole (CIP) referred to the International Terrestrial Reference System (ITRS). These coordinates are necessary to account for polar motion in calculation of topocentric coordinates of solar system objects. These corrections are only relevant for objects very close to Earth, including calculation of high-precision topocentric coordinates of the Moon (to milliarcsecond accuracy).


Breaking Changes

All Linux and macOS versions of PixInsight require now support for SSE4.1 instructions. SSE4.1 is supported on Intel Core 2 (Penryn), Intel Core i7 (Nehalem), Intel Atom (Silvermont core), AMD Bulldozer, AMD Jaguar, and later processors. Some 2007 or 2008 machines could have processors without SSE4.1 support. 2006 and earlier CPUs won't support PixInsight 1.8.6. This mainly affects vintage AMD-based machines on Linux. This should have no repercussion on macOS.

Asynchronous exceptions on Windows are now reported exclusively on the console window, just as happens on Linux and macOS. This should make sporadic system exceptions less intrusive on Windows.

Script Editor: The Home and End keys behave now as a developer expects on macOS. The default behavior of these keys on macOS platforms, that is, move the cursor to the beginning and end of the document, respectively, is simply useless. Home and End work now just the same on macOS as on Linux and Windows, that is, move to the beginning and end of the current line, including smart Home functionality.


___________________

As always, thank you for your support and patience while I work to solve problems, some of them critical. Enjoy!

11
Announcements / RAW support module updated to LibRaw version 0.19.2
« on: 2018 December 26 13:16:47 »
I have just released an update for PixInsight 1.8.6 on Linux, macOS and Windows with a new version of the RAW format support module. The new RAW module integrates LibRaw stable version 0.19.2, which has been released two days ago. See the official announcement on LibRaw's website for detailed information:

https://www.libraw.org/news/libraw-0-19-2-release

Note that this version fixes just a few bugs and security issues; it doesn't add support for new camera models. However, the latest Nikon Z6 and Z7, among other new camera models, were already supported in the previous version and are of course supported in this one too. Please let me know if you encounter problems decoding raw images acquired with these camera models.


12
Announcements / PixInsight 1.8.6.1448 Released
« on: 2018 December 19 13:51:20 »
I have just uploaded installation packages for a new version of PixInsight: 1.8.6.1448 for Linux, macOS and Windows.

Installation

As all new versions of the PixInsight core application, this one is not available as an automatic update. You have to uninstall the previous version (be it 1.8.6 or an older one) and install the new version manually. Of course, if you have already activated the initial 1.8.6 version on your computer, no additional license activation will be required.

Changes in this Version

Build 1448 is a bugfix release providing the following modifications to the initial 1.8.6.1447 version:

All platforms: When a system temporary folder has been selected for storage of swap image files (such as /tmp on Linux or %USERPROFILE%\AppData\Local\Temp on Windows), a warning message is shown upon application startup. This message is to inform the user about the risk of potential deletion of active image swap files as a result of system policies for automatic removal of temporary files. This warning message can be dismissed and disabled by means of a don't show again check box.

macOs: Instead of a system temporary folder, a system cache folder is selected by default for storage of image swap files. Files stored in system cache folders are never deleted automatically, which prevents issues such as those reported in this forum thread. This change was intended to be included in the initial 1.8.6 release, but I forgot to copy the corresponding modifications to the code selected for the final builds.

macOS: This version opts out of Mojave's dark mode, which we still don't support correctly, by means of a special keyword included in the Info.plist configuration file. If you are interested in the details, see the corresponding Apple's documentation. This change should fix the issues reported by some users with the dark mode enabled in their macOS 10.14 installations.

macOS: The Ephemerides script was failing with a weird 'out of memory' error when calculation of topocentric coordinates was selected. This has been fixed.

Windows: I have included a required DLL file that was missing in the initial 1.8.6 release: opengl32sw.dll. Although this file should not be used under normal working conditions, it may be necessary in cases where the OpenGL implementation provided by the Windows desktop is defective or nonfunctional. Unfortunately, this happens with relative frequency on Windows 7, especially on poorly maintained machines, and even on Windows 10 as a result of wrong video drivers.

I hope you enjoy this version. Thank you for your patience and support, and please let me know if you encounter further problems.

13
Announcements / PixInsight 1.8.6 Ripley Released
« on: 2018 December 16 07:48:11 »
I am happy to announce that PixInsight 1.8.6 has just been released. This is a very important release with many new features and performance improvements, with a strong focus on stability and compatibility, and a much increased potential for future development.

Installation packages are now available to all licensed users for Linux, macOS and Windows on our software distribution system:

https://pixinsight.com/dist/


New Licensing System

Version 1.8.6 of PixInsight requires a license reactivation for all commercial and trial users, on all platforms. Sorry in advance for this inconvenience.

As most of you know, the trial version 1.8.5 of PixInsight was hacked past May. While analyzing the hack, I discovered several weak points in our security system that I have tried to remove in version 1.8.6. We have now a much stronger encryption and a more sophisticated and secure license validation procedure.

Unfortunately, the new security system requires a completely different license file encryption, which means that all existing license files won't work with version 1.8.6 of PixInsight, and hence a license reactivation is unavoidable.

I have redesigned the license activation dialog to make things easier to everybody, including the possibility to request new license activation codes directly, without having to visit our website. I hope these changes will facilitate the transition to the new licensing system.

     

To reactivate your license, it is necessary that you can receive notification email messages sent by our server. Please make sure that the email address that you have associated with your license is valid, that your email client application does not reject our messages as spam, and that your email provider does not block our messages.

License files are now generated in more discrete and secure locations on all platforms:

- On Linux and FreeBSD, on a $HOME/.PixInsight hidden directory.

- On macOS, on $HOME/Library/PixInsight

- On Windows, on %UserProfile%\AppData\Roaming\Pleiades

Previously license files were generated directly on the user's home directory. For many years I have been receiving complaints about this because of obvious security and privacy concerns, which I have tried to address in this version.


New Features

Like all major PixInsight releases, PixInsight 1.8.6 also includes many new features. Let's have a look at some of the most important ones.


Astrometry Integration

Astrometry is now fully integrated in the PixInsight platform, including the PixInsight core application. When you open an image with valid astrometric metadata (consisting of a valid set of WCS keywords and optional image properties), the application will generate an astrometric solution automatically and will show celestial coordinates on the readout preview, which opens when you click on an image in readout mode.

     

You can configure these readouts to show equatorial, ecliptic and ICRS galactic coordinates, among other options. You have these options available in the readout menu.


Astrometry integration goes much deeper than simply showing coordinates on the screen. Astrometric solutions are now treated just as other ancillary data associated with images, such as ICC profiles or display functions for example, and hence are directly available to all running tools and scripts. All of this has been possible thanks to the contributions made by Andrés del Pozo to our C++/PCL development platform.


Integrated Ephemerides System

State-of-the-art ephemerides of the solar system are now available in all PixInsight distributions, with implementations in the C++ and JavaScript development frameworks. This includes the integration of fundamental ephemerides from JPL, IMCCE and other sources, and current IAU precession-nutation theories, among other fundamental resources. This initial 1.8.6 version of PixInsight includes JPL's DE/LE 438 planetary and lunar ephemerides, JPL ephemerides for the 343 most massive asteroids, and the IAU 2006/2000A precession-nutation theory.


Algorithms for Reduction of Positions

Rigorous implementations (at the sub-milliarcsecond level) of algorithms for reduction of positions of solar system bodies and stars are now available, with C++ and JavaScript implementations. This is a necessary step forward to open the PixInsight platform to astronomical applications beyond astrophotography, such as high-precision astrometry for example.


Interprocess Communication

Basically, the new interprocess communication (IPC) functionality means that there can be several instances of the PixInsight core application running simultaneously on the same machine (up to 255), and that all of them can send and receive messages and share data with each other. IPC is only available in the JavaScript runtime for now. Just to name a simple, yet extremely powerful application, you can be running a script on the first instance of PixInsight, which generates data such as disk files (for example, images acquired with a digital camera) that a second instance can load and process simultaneously. Interprocess communication also allows sending commands to a running PixInsight core application, which a script can listen, receive and execute. This means that PixInsight can now work as a server, for example through a remote SSH connection. The new IPC feature extends PixInsight's flexibility, applicability and processing force enormously, as will be demonstrated by upcoming new tools.


Improved Robustness to Critical Errors

The Linux and macOS versions of the PixInsight core application (and the FreeBSD version when released) are now much more robust and tolerant to critical exceptions and synchronous signals, thanks to significant changes in the internal system exception handling routines. Basically, if a SIGSEGV, SIGBUS or SIGFPE signal (among others) is generated within Qt code, from a 3rd party library, or from an installed module, the PixInsight core application will be able to handle it 'graciously' without a fatal crash in almost all cases. Being a modular platform, this improvement is particularly important for PixInsight. Of course, this has limitations, and may fail when the code involved is left in an unstable state after the exception is thrown (these things happen). At the very least, the application should be able to let you exit in a controlled way in most of these situations.


Improved DynamicPSF Tool

For images with valid astrometric solutions, DynamicPSF now calculates equatorial coordinates for each star centroid automatically. In addition, a new goodness-of-fit estimator has been implemented, which is more accurate and robust than previous versions.


Of course, equatorial coordinates are accessible from the JavaScript runtime (as new read-only properties of the DynamicPSF object) and exported to text files in CSV format.


New RAW Module

The new RAW module for support of digital camera raw formats is based on LibRaw (latest stable 0.19.1 release). This replaces the old DSLR_RAW module, which was based on dcraw. The use of LibRaw ensures that we'll continue supporting virtually every digital camera in the market, including the latest models from Canon, Nikon, Sony, etc., in the foreseeable future by means of new PixInsight versions and updates.


X-Trans Support

The new RAW module and Debayer tool provide full support for X-Trans raw frames throughout the entire preprocessing pipeline. Images acquired with X-Trans sensors are now first-class citizens in PixInsight, from image calibration to drizzle integration.


New SubframeSelector Tool

The new SubframeSelector tool by Cameron Leger (revised, improved version) is now part of the official distribution. This tool, based on Mike Schuster's original work, is a high-performance data analysis tool and an essential element of any serious image preprocessing work in PixInsight.



LocalFuzzyHistogramHyperbolization

The latest version of the LocalFuzzyHistogramHyperbolization script by Frank Weidenbusch has been included in this release. This script is an excellent implementation of an advanced image processing algorithm for histogram manipulation, with outstanding and highly controllable results.


New Ephemerides Script

This script is an exhaustive test bed for the new integrated ephemerides system. This new script calculates positional ephemerides for the main planets plus the dwarf planet Pluto, the 343 most massive asteroids, and any star available through the online Simbad TAP service. It calculates geocentric or topocentric, spherical or rectangular, true, geometric, astrometric, proper, apparent or intermediate places, and presents the result as a plain text document that can be saved as a new file. The implemented algorithms are rigorous and generate positional data accurate at the sub-milliarcsecond level, only limited in practice by the quality of the underlying solar system theories and source star data.



Quick Search Boxes

New quick search boxes have been implemented in the Process Explorer and Object Explorer windows. These boxes are helpful to quickly locate a process or script by typing a few characters. Just click on the search box, start writing the name of a process or script you want to use, and the autocompletion feature will find it for you. Then press Enter to locate it on the process tree, and press Enter again to execute it.



New Core JavaScript Objects

The following core JavaScript objects have been created in this version: CoreApplication, MessageListener (IPC support), EphemerisFile, EphemerisHandle (solar system ephemerides), ObserverPosition, StarPosition, Position (reduction of positions of solar system bodies and stars). Most of these objects are the JavaScript counterparts of their corresponding C++ classes available in the PCL framework.


Updated Support Libraries

The Linux and Windows versions of the PixInsight core application have been built with the latest Qt 5.12.0 LTS release (long-term support release). The macOS version still uses Qt 5.11.3 because of some regressions in Qt 5.12.0 for macOS, which we hope to overcome during the next months.

This version also includes the latest versions of third-party support libraries including the LittleCMS engine, cURL, LibTIFF, JPEGLib, CFITSIO, etc.


Updated Operating System Support

Version 1.8.6 of PixInsight supports out-of-the-box the latest Linux distributions, such as Fedora 29 and Ubuntu 18. The macOS version supports Mac OS X 10.11, macOS 10.12, 10.13 and 10.14 Mojave (Mac OS X 10.10 no longer supported). The Windows version has been tested on Windows 10 Creators Update.


Bug Fixes

Long-standing, severe interface issues on macOS have been fixed. The new macOS version of PixInsight allows you to work normally with icons and drag/drop items, just as on Linux and Windows. Finally, all confirmed bugs, compatibility and performance issues have been fixed on all platforms.


Known Issues

* No FreeBSD version for now. Sadly, once more I have been unable to build this version on FreeBSD. The only problem is Qt, and specifically the QtWebEngine module, which cannot be built on this platform. Of course, I keep trying, and I hope to be able to release a 1.8.6 version for FreeBSD in the coming months. Unfortunately, the only Qt 5 version that worked on FreeBSD, Qt 5.9, has been replaced with newer but completely useless 5.10 and 5.11 versions in the ports collection.

* Documentation. Most of the documentation I wrote for complex tools such as StarAlignment, ImageIntegration, DynamicPSF, etc, no longer corresponds to the current development state of these tools. There are other tools, such as LocalNormalization and DrizzleIntegration, that really need good documentation to be used properly. Finally, we have no reference documentation for the core JavaScript runtime. This is a huge amount of work that must be done, and in almost all cases this is my sole responsibility. I'll try to work to improve this as I can.


Acknowledgments

This release would not be possible without the help and support of a group of friend users and developers, who not only have helped me in testing and evaluating this new version, but have been supporting my work on PixInsight, in some cases for many years. I want to make special mention of the following people (in alphabetical order): Enzo De Bernardini, Warren Keller, Klaus Kretzschmar, Cameron Leger, Harry Page, Vicent Peris, Rob Pfile, Andres del Pozo, Bob Rieger, Niall J. Saunders, Mike Schuster, Mark Shelley, Mike Smythers, Rick Stevenson, Thomas Stibor, Alejandro Tombolini, Georg Viehoever, and Frank Weidenbusch.

Also a big thanks to Peter Polakovic and Rumen Bogdanovski, the core developers of the INDIGO initiative, for their invaluable help with the ongoing implementation of INDIGO support in our INDIClient module, developed by Klaus Kretzschmar. INDIGO is a crucial element in the future of astronomical instrumentation; for sure we'll see great new development projects in PixInsight around INDIGO in the coming months thanks to this collaboration.


In Memoriam

Finally, I cannot end this announcement letter without a very special mention to Sander Pool, who passed away on January of this year. A highly respected member of the astronomy community, a great supporter of PixInsight since the beginning, a great friend of all of us here and on many public forums, a bright person, always ready to help. We miss you, friend.

======

As any new version of PixInsight, this one has been made to increase your enjoyment of astronomy. So please enjoy it!

Happy Holidays and a wonderful new year 2019 to everybody!

14
Announcements / A programming genius
« on: 2018 May 04 01:27:57 »
Ladies and gentlemen, today I want to introduce you to someone very special: Dario Z*****c, also known as E3ddy, a programming genius who has achieved a remarkable worldwide hit: For the first time, PixInsight can be used freely without a license:

https://www.youtube.com/watch?v=7isFF5Du_qk

Please, round of applause for this great creator and entrepreneur who has managed to change the landscape of astronomical image processing forever.

Seriously now, is this what we want? Do we really think that a project like PixInsight can exist and be actively developed without some economical compensation? Beyond monetary considerations, and irrespective of the quality and usefulness of the software, do you think that a single developer, who invests his life in a project like this, does not deserve some more respect?

If the astrophotography community wants software like PixInsight to stay alive, activities and attitudes like this one should be rejected and cornered with clarity and strength. At this moment I am forced to redesign and rewrite a large part of our license management system so that this attack does not continue harming us in future versions, at least for a while. This involves investing a great deal of time and effort, and it is tremendously discouraging for me because all that effort and time are not useful at all. Nothing of this is going to make PixInsight better. It will only serve to demoralize me and will make users have to wait more for nothing. So we will all lose. Is this really what we want?

Thank you for your time.

15
Announcements / New RAW Module - Ready for Testing
« on: 2018 February 05 08:42:20 »
Hi all,

Today I have released a first version of the new RAW PixInsight module. RAW implements support for digital camera raw formats based on the LibRaw open-source library. RAW replaces the old DSLR_RAW module, which was based on a custom adaptation of the (now discontinued) dcraw program by Dave Coffin. The use of LibRaw provides us with new demosaicing methods, interesting post-processing features, such as new noise reduction algorithms, and the guarantee that we'll support the latest camera models now and in the foreseeable future.

Availability of the RAW module

The new module is stable and has been thoroughly tested. However, since this module provides critical functionality, and given the complexity and difficulty to test it on a large amount of different raw formats, I prefer to have it extensively tested in real-world scenarios before releasing it as an official update. For this reason you have to use our development update repository to install it. Do the following:

1. In PixInsight, select RESOURCES > Updates > Manage Repositories from the main menu.

2. On the Manage Update Repositories dialog box, click the Add button.

3. This will show the Add PixInsight Repository dialog. Copy and paste the following in the URL field:

https://pixinsight.com/update-devel/

4. Click the OK button on the Add PixInsight Repository dialog.

5. Click OK on the Manage Update Repositories dialog.

6. From the main menu, select RESOURCES > Updates > Check for Updates.

7. A new update with the RAW module should appear. Accept the update, then exit PixInsight to install it, and wait for the application to restart, as usual.

This update will replace the old DSLR_RAW module with the new RAW module. You'll get full support for the latest camera models, such as the Canon EOS-1D X Mark II, EOS 5D Mark IV, Fujifilm X-T20, etc., and added features for management of raw images.

Here is a screenshot of the RAW Format Preferences dialog box, showing all features available in the new module:


New Demosaicing Algorithms

Besides the superpixel, half-size, bilinear, VNG, PPG and AHD demosaicing methods, which were already available in the old DSLR_RAW module, the new RAW module introduces the following demosaicing algorithms:

* DCB demosaicing algorithm by Jacek Gozdz.

* DHT demosaicing algorithm by Anton Petrusevich.

* Modified AHD demosaicing algorithm (AAHD) by Anton Petrusevich.

I suggest you review the In-Depth Demosaicing Algorithm Analysis article on LibRaw's website. Keep in mind that not all algorithms available in LibRaw have been included in the new RAW module. Unfortunately, I cannot include algorithm implementations released under the GPL license, since GPL (any version) forbids inclusion in proprietary applications, even when the relevant parts of the application using those implementations are released as open-source products (as is the case with the RAW module).

From the tests I have done, I have to say that the new algorithms, especially DCB, are great for daylight images. However, my personal view is that VNG remains the best option for underexposed data, including deep-sky astronomical images. I'd love to know your opinions and personal experiences in this regard.

FBDD Noise Reduction

After quite a few years in this image processing business, I don't get impressed easily. But I have to say that the FBDD noise reduction algorithm, by Jacek Gozdz, has been a nice surprise. I am still asking myself how on earth I didn't discover it before. This algorithm is simply fantastic to remove small-scale bright artifacts from mosaiced data without altering significant image structures. In the following example you can see how efficient FBDD noise reduction is to suppress hot pixels in an uncalibrated raw frame acquired with a Canon EOS 450D camera:


I still have to figure out how FBDD can be optimally integrated with our image preprocessing pipelines. For now, this noise reduction algorithm is available for postprocessing (demosaicing) of raw frames, and is enabled by default (with three FBDD iterations). The good news is that this algorithm works on mosaiced data, that is, before interpolation of CFA frames. This opens the door to integrating FBDD in the complete preprocessing flow, all the way from calibration up to drizzle integration. More news on this topic soon.

X-Trans Sensor support

The new RAW module fully supports Fujifilm X-Trans CFA frames. See how the X-Trans CFA pattern can now be loaded as pure raw data (in raw RGB mode in this example):


This means that once you install the new RAW module, X-Trans raw data can be calibrated. However, for a complete support of X-Trans CFA frames, we need to implement X-Trans CFA interpolation in the Debayer module (which, by the way, should not be called Debayer anymore after such update), so the StarAlignment and ImageIntegration tools can work to register and integrate the demosaiced data, respectively. The DrizzleIntegration module requires no change at all, since it is already able to work with X-Trans CFA patterns (with arbitrary mosaic patterns, actually). I will be working on this very soon.

Open-Source Module

As promised, the new RAW module has been released as an open-source product under PCL license. The entire source code is now available at our official GitHub repositories:

https://github.com/PixInsight/PCL/tree/master/src/modules/file-formats/RAW

A custom adaptation of LibRaw is also part of our PCL development framework:

https://github.com/PixInsight/PCL/tree/master/src/3rdparty/libraw


That's all for now. The RAW module, along with an updated Debayer tool with X-Trans support, will be included in the next version of PixInsight, which will be released soon for all platforms, including FreeBSD ;) I really need to know how the new RAW module works in the real world, so *please* let me know anything you find out as soon as possible, be it positive or not. Enjoy!

Pages: [1] 2 3 ... 26