Release notes

Version 3.4 (June 30, 2023)

  • Matplotlib functionality changed by restricting the use of changing attributes directly. Several methods changed or disappeared

  • Changed installation, now using pip

maputils.py

  • Replaced functions for type conversion like np.int() by int()

  • Removed dependency of interpolation module, Now using the SciPy version

  • Updated ffmpeg parameters. Removed bitrate. Added frame rate for input, separated from frame rate of output video.

  • Solved problem with splitscreen(). Data needed to be set with setter.

  • Added remove() method for Pixellabels object

  • Made removeLinesandTextfromframe() method that avoids changing Axes attributes directly

  • from matplotlib.cbook import report_memory does not work anymore. Now in try/except to support older versions.

  • Created a remove() method for contours

  • Created a remove() method for pixellabels objects

mplutil.py

  • Changed how to get a colormap, now following the current Matplotlib suggestions

  • Disabled functionality for KeyPressFilter.allowed and replaced it by its rcParams equivalent

  • Extra Axes obects for labeling are now created with inset_axes() and now they stay in phase with the parent Axes after resizing so that a callback to the ‘onresize()’ is not needed anymore. Code is therefore a bit cleaner and plotting a bit faster.

  • We removed the option to draw a colorbar using Matplotlib’s AxesDivider class because this changes the size of the original Axes object and as a result other Axes for overlays were not resized properly. Now every colorbar gets its own Axes. We added code to create a proper default size and position for a colorbar but with respect to the original Axes which keeps its dimensions.

wcsgrat.py

  • from matplotlib.mathtext import Char does not work anymore. It was needed to properly align labels using HMS formatting. It was changed to a fifferent alignment (base) and a calculation of a default location in y.

celestial.py

  • Replaced numpy.int() etc. by int() etc.

examples

  • All the examples in the tar file were tested for Python 3.10, Matplotlib 3.7.0 and Numpy 1.23.5 provided by the Anaconda distribution 03-2023 and initially compiled on Linux Rocky 9.

Version 3.0 (Aug 10, 2019)

  • Migrated all code to Python 3

  • Code adapted for use with latest versions of NumPy, Matplotlib, Cython etc.

Version 2.3 (Mar 31, 2015)

  • WCSLIB:

    • changed to version 4.24

  • Module wcs:

    • added option to create a ‘minimal’ Projection object when a full object cannot be created due to errors in the FITS header.

  • Module maputils:

    • added Astropy support.

    • various improvements and extensions.

  • Module mplutil:

    • added sunbow color maps.

    • in class AxesCallback use weak references to Axes objects.

  • Bug fixes; dependency on obsolete matplotlib.nxutils eliminated.

Version 2.2 (Apr 19, 2012)

  • Class maputils.FITSimage:

    • Method header2classic() returns a tuple with three elements. The last one used to be a boolean but it is now a list with FITS keywords that have been changed.

  • Class rulers.Ruler:

    • now supports rulers specified by a start position, a size and an angle w.r.t. the North.

    • new method set_title() for labeling a ruler.

  • Module mplutil:

    • new class CanvasCallback.

    • work-around to add support for resize events to matplotlib’s Qt4Agg backend.

    • work-around for matplotlib’s (>=1.1.0) changed callback registry.

  • WCSLIB:

    • changed to version 4.13.4

    • use WCSLIB’s new error diagnostics system

  • New module kmpfit:

    • provides new class Fitter for solving least-squares problem using the Levenberg-Marquardt technique. It is based on the implementation in C of Craig Markwardt’s MPFIT routines.

  • Documentation:

    • several improvements.

Version 2.1 (Feb 14, 2011)

  • Class wcs.Projection:

    • added attribute category

    • fixed ZPN projection related problem in method mixed()

    • minimal FITS headers are now accepted

    • added support for grid coordinates, i.e., CRPIX-relative pixel coordinates. Methods pixel2grid() and grid2pixel().

    • added method str2pos() for converting positions represented as strings to world- and pixel coordinates.

  • Module maputils:

    • added new class Skypolygon for plotting shapes like ellipses, rectangles and regular polygons. For these shapes angles and distances along a great circle are preserved. This class can be used for example to draw footprints on all-sky plots or a beam to show the resolution of an instrument.

    • improved position information in toolbar. Message format can be changed by user/programmer.

    • support for RGB images. RGB values are displayed in message toolbar.

    • class FITSimage: improved versions of header2classic() and reproject_to() methods; new slice2world() method prints information about slice positions (annotate 2d maps from a 3d data cube).

    • catch error if event.key is None for Caps Lock keys

    • get rid of ‘new’ keyword in histogram

    • blur defaults improved

    • str_header() method was unable to print dictionary (external) headers. Fixed.

  • Module mplutil:

    • work-around for special keys which are defined in matplotlib’s GTKAgg backend but ‘missing’ from the Qt4Agg backend. The following keys are made available: ‘pageup’, ‘pagedown’, ‘left’, ‘right’, ‘up’, ‘down’, ‘home’, ‘end’.

  • Module positions:

    • units 1/… and /… also recognized. Can be used for spectral translations that transform to e.g. AWAV.

    • introduced ‘?’ character as wildcard for units.

    • introduced case insensitive minimal match for ‘UNITS’ as a replacement for header units.

    • all column, row and line numbers now start with 1.

  • Module shapes:

    • messages for toolbar improved.

    • changed conversion routine to support shapes on maps with only one spatial axis (e.g. position-velocity maps).

    • GUI improved.

    • improved writing shape data to file.

    • catch error if event.key is None for Caps Lock keys

    • improved moving objects (from within any point within the ellipse)

    • improved rotation ellipse

    • improved sampling on ellipse

    • added rotation to rectangles

    • changed writing position to terminal with left mouse button to combination of left mouse button and shift key. This prevents interference with module shapes where one drags a shape with the left mouse button.

  • Module wcsgrat:

    • fixed bug with precision in seconds.

    • use positions module to evaluate expressions for startx and starty parameter in Graticule class.

    • use positions module to evaluate expressions for deltax and deltay parameter in Graticule class.

    • introduced a syntax to set labels in LaTeX in exponential format.

    • sexagesimal labeling with h, m, s characters or with superscripts with Boolean parameter texsexa.

    • allow Graticule parameter unitsx and unitsy also to be applied to non-offset axes. (Examples in maputils tutorial).

    • minutes and seconds labeling for negative declinations get ‘-’ sign

    • center of offset axis can be changed with parameter startx, starty and a string as argument.

    • Right Ascension labels in TeX (hms) now have better alignment.

  • New module profiles:

    • added function gauest() for estimating gaussian components in a profile. These estimates can e.g. subsequently be used as initial estimates for a least squares fit.

  • WCSLIB: changed to version 4.7 (from 4.5)

Version 2.0.2 (Sep 16, 2010)

  • Class wcs.Projection:

    • allow for FITS headers that incorrectly represent EQUINOX as a string

    • added support for AIPS keyword VELREF

  • Function mplutil.gipsy_connect() connects GIPSY keyword events to Matplotlib event loop.

  • Added Microsoft Windows support.

Version 2.0.1 (Aug 11, 2010)

  • WCSLIB 4.5 included in distribution so it does not need to be separately installed anymore.

Version 2.0 (Jul 16, 2010)

  • Class wcs.Projection:

    • added method inside().

Version 1.9.2 (Jul 12, 2010)

  • Function wcs.coordmap(): added arguments dst_shape, dst_offset and src_offset.

  • Class wcs.Projection:

    • fixed bug in class WrappedHeader.

    • allow for WSRT files with topocentric frequencies (via class WrappedHeader)

    • added attribute altspecarg.

  • Added modules rulers and shapes.

  • Included SciPy modules filters and interpolation. The latter was slightly modified.

Version 1.9.1 (Feb 25, 2010)

  • Class wcs.Projection:

    • added attribute euler.

    • fixed bug in method mixed()

  • Class mplutil.VariableColormap:

    • added NumPy array as possible source.

    • added method set_length()

Version 1.9 (Jan 16, 2010)

  • First public release.