Change Log#

All notable changes to this project will be documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


Release 1.1.0 - 2023/09/01#


  • The package is now available on conda-forge (!48).

  • Add as_dict=True optional in Events find()/before()/after()/between() methods to enforce EventsDict type return (!50).

  • New .phases and .timeline events properties to TourConfig object when a compatible fk events is loaded in the pool (!53).

  • Allow events based trajectory from TourConfig object when an mission fk event kernel is loaded (!53).

  • Use mission fk events to retrieve the TourConfig flybys names and trajectories (!53).

  • Wildcard string (*) and character (%) are now supported in SpicePool query (!53).

  • Allow ax.scatter() plot on trajectory objects (!54).

  • New ax.set_view() to projection map to zoom on a given area (!54).

  • New utc_range(), utc_ranges() and utc_range() functions (!54).

  • New dist() math function to compte the distane between two vectors (!54).

  • New au_ticks to represent long distance plots (!54).

  • TourConfig/MetaKernel/SpicePool now supported ~ tilde character as user home directory (!55).

  • New n_threads keyword on MetaKernel object to change the number of parallel download threads (!55).

  • New Trajectory.new_traj(spacecraft=..., instrument=..., target=...) to change target/spacecraft/instrument parameters and create a new Trajectory object (!56).

  • New TourConfig.new_tour(spacecraft=..., instrument=..., target=...) to change target/spacecraft/instrument parameters and create a new TourConfig object (!56).

  • Add Trajectory.target_size, Trajectory.quaternions properties and Trajectory.distance_to(), Trajectory.ets_at(), Trajectory.utc_at(), Trajectory.angular_size(), Trajectory.angle_between(), Trajectory.station_azel() and Trajectory.target_separation() methods (!56).

  • Add azel() (azimuth/elevation), target_position(), angular_size() and statation_azel(), quaternions() and target_separation() methods to the SPICE toolbox (!56).

  • New jd() decimal Julian Date function to the SPICE datetime module (!56).

  • Add SpiceFrame reference object for SPICE frames (!56).

  • Add .summary and .details properties and HTML representation to SpicePool and MetaKernel objects (!56).

  • Add .gaps() method to TourConfig and SpicePool to extract coverage gaps intervals (!56).

  • Add .brief() method to SpicePool similar to NAIF brief utility (!56).

  • Add hash() method to SpiceRef objects (!56).

  • New file_size() miscalenious helper to compute file(s) size (!56).


  • now returns the kernels temporal windows in a dict to keep track of the references and the kernels (!56).

  • SpicePool.coverage() is now computed per references and not globally to be consistent with NAIF brief utility (!56).

  • Trajectory.attitude now returns the C-matrix and not the transpose of the C-matrix (!56).

  • Change of target or observer in a Trajectory object now clear its cache properties (!56).

  • SpiceBody, SpiceSpacecraft and SpiceInstrument now returns a SpiceFrame instead of a str (!56).

  • Flyby are now defined with an alt_min threshold of 150,000 km by default, instead of 25,000 km previously (!53).

  • New ax.set_xlim() and ax.set_ylim() now rescale the ticks grid (!54).

  • km_ticks now supports a larger number of digits before using exposant notation (!54).

  • Upgrade JUICE documentation examples to CReMA 5.1 (150lb 23.1, v422) trajectory (!53).

  • Replace Bézier curves control points by regular polygons in equirectangular map projection (!54).

  • Improve SPICE toolbox computation speed by +10% on average (!56).

  • Colorize Ganymede and Callisto maps with Björn Jónsson maps (!57).

  • Update bump2version configuration (!58).

  • Bump poetry min requirement to 1.4 (!58).


  • groundtrack_velocity() formula was incorrect previously and is now fixed (!56).

  • Offset Jupiter map by 180° to be consistent with the other planning tools (!49).

  • EventsDict input with duplicated keys (!50).

  • Fallback ESA metakernel local cache (with a warning message) when the user is offline or if ESA API is not available (!51).

  • Single Event object now supports single time keyword input (!53).

  • PATH_VALUES test values with more than 80 characters (!51).

  • SpicePool item getter can now have more than 1,000 elements (!53).

  • ESA API tag with short name now return the latest tag when multiple tag were available (!53).

  • TourConfig now raises an error if the stop time provided is before the start time in a slice (!54).

  • TourConfig now supports numpy array input (!54).

  • angle calculation can now handle null-vector calculations (!54).

  • ax.text() is now correctly projected on the map an clipped by default if outside the area of interest (!54).

  • Disable default multi-threads download on Windows system (!55).

  • MetaKernel escape \ character is now supported in Windows content (!55).

  • SpiceInstrument can now be queried from SpiceSpacecraft.instr() with their full name (!56).

  • Fix ax.twin_colorbar() issue with ticks outside the viewing window (!56).

  • Post migration minor fixes (!47).


  • Deprecate traj['TARGET'], traj['SPACECRAFT'] and traj['INSTRUMENT'] syntax in favor of traj.new_traj() explicit method (!56).

  • Deprecate traj['SUN'] and traj['SS'] syntax in favor of or traj.sun_pos (!56).

  • Rename Trajectory.sc_attitude property to Trajectory.attitude (!56).


  • SPICE limb_ip_pt() method was removed in favor of SPICE native tangpt method (!56).

  • Unnamed ROI no longer have a default 'Unnamed' value (!54).

  • Remove __getitem()__ method to MaskedTrajectory and SegmentedTrajectory objects (!56).

  • Drop support for Python 3.8 following NEP29. Default min version 3.9 (!52).

  • Remove announcement on the homepage (!58).

Release 1.0.0 - 2022/12/21#


  • TourConfig now supports .env file to locate the mission kernels directories (!45).

  • New print_kernels_dir() function to print the kernels directories available (!45).

  • New IPython/Jupyter %load_ext planetary_coverage magic function (!45).

  • TourConfig, Trajectory and MetaKernel objects can now be used to load the SPICE pool directly with the load_kernels() method (!41).

  • Event, EventWindow, EventsList and EventsDict objects can be trimmed with time boundary conditions (!43).

  • Mission orbital files (.orb) can now be loaded with read_events() (!43).

  • SpiceRef objects have a new .frame property to query the associated reference frame when available (!42).

  • New planetographic() and ocentric2ographic() helper function to compute planetographic coordinates from cartesian and planetocentric coordinates (!44).

  • New west longitude ticks representation (ax.set_lon_ticks('west')) and secondary axis ticks display (ax.set_lon_ticks(secondary=True) and ax.set_lat_ticks(secondary=True)) (!44).


  • PNG representation of all the planetary maps (!44).

  • SpiceRef objects now expose .encode() function (!44).


  • Rename package from moon-coverage to planetary-coverage (!46).

  • Move the documentation from to (!46).

  • Move the source code from to (!46).

  • Move the notebook examples from to (!46).

  • ESA Metakernel are now cached in ~/.planetary-coverage (!46).

  • no longer support Matplotlib axes input to use build-in projection system (!44).


  • Change of ESA SPICE bitbucket url API endpoint (!42).

  • datetime() parser now support NaT / N/A values. (!43).

  • Path projection with crossing the pole on the edge of equirectangular maps (!44).

  • Solar longitude now supports SpiceBody objects input (!44).

  • Authors affiliations (!46).


  • Old depreciations (!46).

Release 0.12.0 - 2022/10/31#


  • Migrate package setup configuration to pyproject.toml (!34).

  • New read_events() generic events file reader for all ESA mission (.csv/.evf/.itl) files (!36).

  • New events.EvfEventFile was introduced to read .evf files (!35).

  • New events.ItlEventFile was introduced to read .itl files (!36).

  • New .add_kernel() method on TourConfig and Trajectory to append new kernel(s) to the pool (!37).

  • New kernel-download/mk-download command line interfaces are available to simplify kernel downloads (#53 and !37).

  • Kernel(s) in TourConfig can be appended with python set() or generator (!37).

  • New ESA_MK metakernel collection, shortcuts and MK_IDENTIFIER pattern that are compatible with TourConfig (!39).

  • New support for optional juice extra dependencies with esa-ptr module (!40).

  • Tests and support on python new version 3.11 (!39).


  • TourConfig default mk is no longer related to JUICE CReMA 5.0 and set to None (!37).

  • SpicePool coverage windows are now evaluated per-file and not per-window (!34).

  • Upgrade JUICE documentation examples to CReMA 5.1 (150lb, v400) trajectory (!38).

  • Local installation and development now requires Poetry > 1.1 (!34).

  • Package dependencies were updated and are now unpinned but tracked in poetry.lock (!34).

  • Move the source files into an isolated src/ folder (!34).

  • Replace docs and examples JUICE events resources from FTP to HTTPS (!37).


  • FovsCollection color getter (#43).

  • Improve Trajectory attribute error message in Map display (!31).

  • Downloads in metakernel with duplicated kernels (#51 and !37).

  • Change test coverage reporting configuration for Gitlab CI (!33).

  • Kernel data with = sign in string value and empty assignation can now be parsed with get_data() (!38).

  • pathlib.Path and += assignation symbol can be used in kernel format_data() (!38).

  • Fix ESA metakernels listing in uppercase (#38).


  • ESA_CREMAS and EsaCremasCollection are depreciated. UseESA_MK and EsaMetakernels instead (!39).

  • esa.EsaMissionPhases, esa.EsaMissionTimeline and esa.EsaMissionEvents are depreciated. Use read_events instead (!36).

  • events.EventFile is depreciated. Use events.CsvEventFile instead (!35).


  • setup.cfg, and were removed as part of the Poetry transition (!34).

Release 0.11.0 - 2022/04/21#


  • Trajectory segments and ROIs intersections can be exported as a .json, .csv files for the JUICE timeline tool and .evf files for MAPPS (!20).

  • New pixel_scale parameter to InstrumentTrajectory objects, ifov property to SpiceInstrument objects and m_s_ticks ticks (!27).

  • ROIsCollection can be imported from a .kml and .kmz files with KmlROIsCollection (!29).

  • New JUPITER, MERCURY basemaps and MAPS registry (#28 and !22).

  • Add sorted_datetimes() in moon_coverage.spice toolbox (!20).

  • twin_colorbar() now accept custom ticks provided by the user (!27).

  • New datetime formatter into ISO with a trailing Z and to MAPPS datetime (!20).

  • Pytest and code coverage now are reported in merge-requests (!23).


  • m_pix_ticks is now automatically scaled to take km values as inputs (!27).

  • Performance improvement: ESA metakernels listing is performed only when a given version is provided (!23).

  • New documentation entry point: instead of the The old URL now redirects to the new one (!17).

  • Upgrade packages dependencies (!18, !19 and !21).

  • Switch to SPICE N67 toolkit (#17) thanks to spiceypy 5.0.0 (!21).

  • Enable multi-core download for the missing kernels in a metakernel (!25).

  • 100% code coverage is required in Gitlab CI to pass the test (!23).

  • Documentation gallery was updated to fix Bepi metakernel version and EnVision default metakernel (!23 and !25).

  • ReadTheDocs configuration is now hosted in the project itself and python build version is 3.8 (!23).


  • Instrument SPICE calculation for the local illumination is now performed on the spacecraft frame and not the instrument frame (!26).

  • Stephan2021ROIsCollection latitude and longitude are now centered on their bounding boxes (!15).

  • Spacecraft with a <SPACE> in their name can now be used with environment variables (!16).

  • Metakernels without explicit remote urls were not raising MissingKernelsRemote error (!24).

  • Datetime parser now supports ISO string with trailing Z, native datetime.datetime and numpy.datetime64 inputs as well as MAPPS datetime with _ separator (!20).

  • Propagate ROI and ROIsCollection styles to their patch (!29).

  • ROIsCollection now supports point intersection with tuple and list and str attribute inputs (!29).

  • Update Ganymede default basemap reference (#33).

  • ESA API requests now load all the results and not only the first 25 (!23).

  • Reduce ReadTheDocs build time by fetching the kernels from ESA FTP endpoint (!23, !25 and !28).


  • Drop support for Python 3.7 (following NEP 29 depreciation policy, see !21).

Release 0.10.0 - 2022/01/14#


  • MaskedTrajectory can now be iterated over each of it segments (as a SegmentedSpacecraftTrajectory and SegmentedInstrumentTrajectory).

  • The EventsFile can be filtered by any regex key, support indexing and comparisons with date strings. Auto-completion was also enable for Jupyter and IPython environments (!8).

  • TourConfig now support kernels custom remote location: remote_kernels='https://remote.location.tld/' (!10).

  • New ticks sub-module to enable better axis value representation. It includes a new date_ticks for compressed date formatter on temporal axes, m_pix_ticks and km_pix_ticks for the instrument pixel scale. It also support basic mathematical operations to scale and offset the values.

  • New twin_colorbar on projected maps (e.g. for instrument pixel scale on top of the spacecraft altitude).

  • New HTML formatter for displaying tables (with or without header) (!9).

  • Stephan ROIs now have a bibliographic reference (!13).

  • Code blocks in the docs now have a copy button (only the input code are put in the clipboard, the input prompt and output are discarded).

  • Support for python 3.10, upgrade dependencies versions and fix numpy warnings.

  • The README and the documentation now have details about how to report feedback, contribute to the source code and cite this packages (!14).


  • TourConfig and Trajectory objects can take an EventsFile/EventsDict as a direct time inputs.

  • Event objects are now represented as HTML tables in Jupyter notebooks (!9).

  • Stephan ROIs default colors were changed to match the one in the paper (!13).

  • Sphinx documentation theme is now sphinx-book.

  • Improve CI configuration by disabling some tests for merge request in draft mode (with a title starting with Draft:).

  • On January 2022, the University of Nantes was renamed Nantes University and the Laboratoire de Planétologie et Géodynamique was renamed Laboratoire de Planétologie et Géosciences (!12).

  • JUICE logo was updated (!12).


  • MaskedTrajectory can now switch observer and target property (a new trajectory is created with the same mask).

  • Events in EventsFile can be selected with a slice now and are now hashable.

  • Trajectory intersection with ROIs now corresponds to the new ROIs keys.

  • Improve tests performance by closing temporary figures and reducing the number of max points in the trajectory.

  • DataLabs OSError: Invalid cross-device link is now fixed.

  • Metakernel with multiple remotes in their headers is now supported (!11).

  • Workaround for out-of-range NAIF codes for JUICE PEP instruments (see #12 and !7).

  • Workaround for documentation multiple files warning (see MyST-NB #363).


  • Examples notebook were moved to the moon-coverage notebooks repository (!10).

  • All the .rst files in the documentation were removed in favor of .md and jupytext files.

  • Remove all the static output images from the docs (they are created by the sphinx during the build process).

  • Drop support for 3.6. Now the default testing python version is 3.8.

  • Docker configuration is now hosted in its own repository.

Release 0.9.0 - 2021/09/22#


  • New SpiceAbCorr class, with key checker and light time/distance corrections.

  • New (meta)kernel parser and data export formatter (with datetime support).

  • New meta-kernel class (spice.MetaKernel), with better kernel folder substitution, and custom remote support. It is fully compatible with input value (loaded as an updated temporary file and not as a list of kernels).

  • The kernel value can be loaded directly from the SpicePool or from the SpiceRef objects.

  • If a ESA metakernel is loaded into the pool, its SKD version is available as an attribute SpicePool.skd_version.

  • Query CReMA SKD version from ESA Cosmos API repository (for the latest version, a specific version or all versions).

  • Query/download CReMA metakernels from ESA Cosmos API repository (for the latest version, a specific version or all versions)

  • EsaCremasCollection that support version specific metakernel (#5).

  • New version argument in TourConfig for known metakernel available in ESA_CREMAS (see #5).

  • TourConfig, Trajectory and et now accept heterogenous list of time, slice, list and tuple. The results is always a flat array.

  • The TourConfig and Trajectory are now hashable (based on their required kernels). This value is compared with the SpicePool already load to avoid to purge the Pool if the kernels content did not changed. It also support @check_kernels decorator to ensure that the calculation is performed on the right set of kernel if multiple TourConfig/Trajectory are defined. If the kernels in the Pool have changed, the Pool will be purged and reloaded with the right kernels.

  • New EsaMissionEvents / EsaMissionPhases / EsaMissionTimeline / EventFile parser to load a collection of events from a .csv file. These events can be used directly with TourConfig to select an event or a temporal window or with TourConfig.flyby to select one or more flybys. They can also be used to filter a trajectory, include and exclude a temporal event window or list of events when the trajectory is initialized or latter on.

  • New datetime parser for any SPICE string input.

  • New timedelta event step parser and enable temporal operations on Event and EventWindow objects.

  • Flyby object have new viewing angle at CA shortcuts (inc_ca, emi_ca and phase_ca).

  • InstrumentTrajectory.fovs property now return a FovsCollection object that allow to colorize the trajectory properties directly on the projected FOVs. It also works for MaskedInstrumentTrajectory objects. An optional sort argument is also available to sort the FOV footprints by a Trajectory property before being displayed on the map.

  • New standalone colorbar on projected axis.

  • New DepreciationHelper to report the function/dict/class replaced that will be discarded in the future.

  • The video of the presentation of the tool at the 5th Planetary Data Workshop (June 2021) was added to the documentation home page.


  • Trajectory now have ets_target_center and ets_surface_intersect ephemeris times. They are computed based on the aberration correction provided and are respectively propagated to local_time/illum_angles and sun_pos/solar_longitude/true_anomaly SPICE computations.

  • SPICE aberration correction can be provided at the TourConfig level and is propagated down to the Trajectory and Flyby. It is also preserved during the observer and the target switch.

  • When a Flyby is defined, a new alt_min can be provided (25,000 km by default). This property is propagated to TourConfig and Trajectory flybys attribute. A get_flybys() function was also added with an explicit user-defined alt_min (see docs).

  • MaskedTrajectory is now based on the observer property (MaskedSpacecraftTrajectory/MaskedInstrumentTrajectory).

  • The Tour Configuration and ESA CReMA documentation now include details about the CReMA versioning.

  • The default Callisto and Ganymede ROIs collections were updated after the 1st review of K. Stephan et al. 2021 (PSS). Some key were changed, edited or removed. These changes are not yet propagated to the kernels (juice_roi_v??.[tf|tpc|bsp])

  • The SPICE kernel documentation was reformated to include the new kernel_parser and format_data functions from the spice sub-module, as well as the new MetaKernel behavior.

  • Upgrade Europa map with colors (created by Björn Jónsson).


  • The tour.flyby now return a InstrumentFlyby if an instrument was provided to the TourConfig.

  • Fix multiline and continuation marker in kernel parser.

  • SpicePool can now be compared with its the kernel pool hash based on the kernels loaded (individually or/and from a MetaKernel).

  • TourConfig kernels content is now versioned based on its hash (see note above).

  • Trajectory objects can now have single numpy datetime64 inputs.

  • EventFile only send a warning if an event start time is missing.

  • et_ca_range now accepted numpy datetime64 input.

  • Kernel parser can now read float with D engineering notation.

  • Link to the example notebook viewer in homepage README.

  • Upgrade Europa map with colors (created by Björn Jónsson).

  • Open files is now enforce to utf-8 (as a pylint requirement).

  • The Dockerfile is now build from the source and not from the main branch (useful for merge requests).

  • The required dependencies are now explicitly defined in to ensure a better reproducibility of the results.

  • Duplicate Gitlab pipelines on merge requests.


  • update-juice-crema cli entry points (no longer required).

  • Move esa crema folder from package level to user home .moon-coverage-esa-crema folder.

  • autoload_kernels was removed from TourConfig attributes. Now the pool is always loaded when a tour is created.

  • moon_coverage.kernels sub-module was completely removed in favor of the new variants in moon_coverage.spice.kernel and moon_coverage.spice.metakernel.

  • MaskedTrajectory was removed in flavor of MaskedSpacecraftTrajectory and MaskedInstrumentTrajectory.


  • CReMACollection, CReMAMetaKernel, JUICE_CReMA and CReMAs no longer works and were replaced by EsaCremasCollection, spice.MetaKernel JUICE_CREMAS and ESA_CREMAS respectively.

  • debug_esa_crema is replaced by debug_esa_api.

Release 0.8.0 - 2021/05/18#


  • Trajectory objects now have a boresight pointing ra/dec (J2000) attributes based on the ck pointing data, a surface intersect, local illumination conditions and a slant distance.

  • SpiceFieldOfView class with boresight, bounds, shape, frame and rays attributes (with 2D and 3D visualizations).

  • SpiceInstrument extended from SpiceViewOfView as a SpiceRef object.

  • SpiceSpacecraft has SpiceInstrument list (loaded from the pool with a valid FOV) and a frame and boresight attributes (by default the boresight is set at (0, 0, 1) but can be overridden at runtime, see fix below). Both of them are defined as SpiceObserver instances.

  • Spice ray intersection on body surface with a single or multiple time(s) or ray(s) and the field of view contour.

  • The InstrumentTrajectory can represent the instrument FOV on the surface directly (with a matplotlib.collections.PathCollection).

  • Compute Spacecraft and instrument clock ticks from UTC time inputs.

  • Convert vector in J2000 frame to RA/DEC coordinates.

  • New limb impact parameter point calculation (for now only limited to abcorr='None') and can be used directly with the intersect_pt SPICE helper.

  • New rotation matrix around an axis and vector rejection helpers.

  • Add a class renamed decoration DepreciationWarning.

  • A warning was added to the docs to highlight the fact that SPICE calculation are performed with the abcorr='NONE' flag.

  • New Ganymede basemap from Kersten et al. 2021 - PSS (submitted).

  • Add Kernel management and setup section on the documentation homepage.

  • The repo is now backup in Software Heritage for long term preservation, the badge was added to the (CI web-hooked on tagged version).


  • Trajectory and Flyby are automatically promoted to SpacecraftTrajectory/InstrumentTrajectory and SpacecraftFlyby/InstrumentFlyby objects based on the selected observer class.

  • Trajectory observer and target can be changed after the TourConfig.

  • TourConfig now have a instrument optional argument that can be use to load directly a specific instrument.

  • SpiceRef on the Sun, a Planet or a Satellite now return a SpiceBody object, a spacecraft id will return a SpiceSpacecraft and an instrument will return SpiceInstrument (promotions).

  • Input type on SPICE toolbox functions can now be checked and automatically converted.

  • Propagate label in Patch and PatchCollection projections.

  • Update moon-coverage logo for a new isometric and animated version.


  • SpiceRef with int input is now recomputed the body name (is also support SpiceRef inputs).

  • SPICE Toolbox now support NaN inputs.

  • Add a default null label attribute to the ROI objects.

  • Add a legend handler to PatchCollection objects.

  • Add legend handles to Stephan2020ROIsCollection categories.

  • Enforce PEP8 naming convention, no print function and import sorting.

  • Manual spacecraft pointing when no instrument kernel is available (see the HGA example in the docs)


  • SPICEPool and SPICERef were renamed as SpicePool and SpiceRef.

  • Discard IAU_* frame attribute from SPICERef in favor of centered frame attribute.

Release 0.7.0 - 2021/04/06#


  • Trajectory range can now be selected on the full metakernel coverage (see docs).

  • New Flyby object as an advance Trajectory object centered around the CA point with an irregular distribution of temporal points.

  • New background maps for the Earth, the Moon and Venus.

  • Convertor from ET from and to Barycentric Dynamical Time (TDB).

  • SPICEPool now provide windows and coverage ranges for a body or a collection of bodies.

  • TourConfig no longer require to have a start or a stop time (use coverage from the pool minus 1 ms overlap).

  • Multi temporal sequence can now be used with et_ranges.

  • Temporal sequence et_ca_ranger around a closest approach, for a flyby trajectory.

  • Add custom temporal unit to utc conversion (ms by default).


  • Most of the main entry from the esa, maps, rois, spice and trajectory sub-module are now accessible directly at the module root level.

  • Convert to UTC now always return a numpy.datetime64 value.

  • Empty MaskedTrajectory now have NaT (not-a-time) attribute, instead of None.

  • Update CReMA list to add 4.2b22.1 (cruise only) in tests.

  • Upgrade tests to naif0012.tls leapsecond file.


  • Map plot on a single couple of values.

  • Round ET converted value at 1e-3 to match UTC ms precision.

  • In some rare cases, the endpoint in et_range was not discarded with endpoint=False.


  • TrajectoryConfig was replace in favor of TourConfig, it will be discarded on the next major release. For now only a depreciation warning is send to the user.

Release 0.6.3 - 2021/03/29#


  • Send a Warning to the user if the trajectory have more than 1,000,000 points.

  • GanymedeROIs and CallistoROIs now have a target attribute by default.

  • MaskedTrajectory now have opportunity windows.

  • Basics projection plots unit tests.

  • Radius shortcuts to SPICERef objects.


  • The intersection between a Trajectory and a ROI or a ROIsCollection now take into account the target attribute when it is provided.

  • The projection of a Trajectory, a ROI or a ROIsCollection on a Map is only possible if their respective target names are consistent.

  • Enable Trajectory ets input as slice.

  • Masked trajectory UTC times are now in numpy.datetime64 not str.

  • Allow color bar optional output in color line.

  • ESA CReMA key is now unsensitive to . and _ changes in its keys.


  • Convert to ET from numpy.datetime64 input.

  • Callisto ROI 4_1_02 min longitude.


  • ProjTransform in ProjAxes (not used).

Release 0.6.2 - 2021/03/23#


  • Docker tests are now perform on the source version (not on the latest published version).


  • Missing Patch and Collection getter on alpha, linewidth, linestyle and zorder for the ROI and ROIsCollection.


  • Use default branch in ReadTheDocs hook (default is latest). This should fix the build on tagged commits.

Release 0.6.1 - 2021/03/23#


  • Line color now supports any keywords arguments to its LineCollection.

  • Map project PathPatch and PatchCollection now conserve the alpha, linewidth, linestyle and zorder parameters.


  • Image logos in the README is now pointing to the absolute URL on ReadTheDocs.

  • Missing url attribute for the homepage description in pip.

  • Ignore RunTimeError from numpy in equirectangular projection.

  • Gitlab-CI rules for PyPI auto-deploy.

Release 0.6.0 - 2021/03/19#


  • Major SPICE calculation helpers (utc datetimes, sub-observer position and speed, local time, solar illumination and viewing angles, sub-solar position, solar zenith angle, local normal vector, true anomaly, seasonal solar longitude and groundtrack velocity). All these function are already fully tested.

  • The Trajectory data can now be represented on the projected map as color lines.

  • Intersection between Trajectories and ROIs is now tests and documented.

  • SPICERef objects now have a parent, radii and mu properties.

  • Vector scalar projection and rejection helpers.

  • UnitFormatter can add a unit to the ticks.

  • A CHANGELOG is now available to track the changes through the past and future versions.

  • LPG/CNRS/Univ-Nantes/ESA/JUICE logos is the README and the docs.

  • Console script to update the JUICE CReMA list update-juice-crema.

  • Docker config to deploy the module on a JupyterLab instance.


  • Vectorized SPICE reclat and radians to degrees functions.

  • When the kernels directory not found, an explicit KernelsDirectoryNotFoundError is throw.

  • The projection (equirectangular for now) can have values attached to their position when converted to (x, y).

  • Update the notebook and the documentation with examples of SPICE calculation and their representation on the map.

  • Simplify Trajectory SPICE mocks.

  • Module upgrade is now explicitly described in the docs.

  • The LICENSE affiliation header was updated.

  • The module source-code homepage was moved to ESA JUICE Gitlab instance (used for PyPI and ReadTheDocs).

  • Bump2version configuration now update the CHANGELOG based on the new version.

  • Build deploy are only available when env variables are setup.


  • The Univ-Nantes source-code homepage. It will be discarded soon.


  • SPICERef description of IAU_FRAME as fixed frame (and not as inertial).

  • Inversion between the target and the observer in SPICE spkezr function (for stellar aberration corrections).

  • Gitlab CI stages rules and deployment trigger.

  • PyPI broken link.

  • Broken pylint command in README.

Release 0.5.0 - 2021/02/16#


  • Direct projection of the Trajectory on the moons background.

  • Projection in map coordinates before plotting the data and improve np.ndarray data projection.

  • Logical operator (& and ^) on the Trajectory and ROIs intersections.

  • Custom logger and debugger with tuneable verbose levels.

  • Segmentation miscellaneous helper for the trajectory arrays.

  • Trajectory notebook example to illustration the basic behavior of the module.

  • Trajectory documentation and examples.

  • Logo and favicon are not used in the docs.

  • The documentation is now deploy on ReadTheDocs and triggered by a hook during the CI.


  • Now the intersection operator between a Trajectory and a ROI(s) is not a bijection.

  • Regroup all the logger/debugger in a single sub-module.

  • Rewrite cache_property decorator tu support the logger, parents invalidation and garbage collection.

  • Project status is now in Beta.

  • The main contact information is now project dependant (not developer dependant).

  • DataLab URL now points to

  • The module version is now tracked in the docs as well (with bump2version).

  • SPICE documentation (references, time convertor and time ranger).

  • Explicit docker build during the CI.


  • Sphinx build on CI (now performed by ReadTheDocs).


  • By-pass the key formatting for the Trajectory points in Stephan ROIs.

  • SPICEPool error message.

  • Projection tests coverage

Release 0.4.0 - 2021/02/19#


  • SPICE utc to et convertor on list and arrays.

  • Time ephemeris range with human readable time steps.

  • A SPICEPool handler can now provide feedback of the kernels loaded in the pool (with a logger).

  • TrajConfig helper will loaded the kernels setup and create the Trajectory objects.

  • SPICERef object can be used to provide name and NAIF id as string and integer.

  • Sub-observer position on any Trajectory.

  • GeoJsonROI documentation and example.


  • Isolate the JUICE_CReMA from the CReMA definition.

  • Allow failure on pypi deploy during the CD.

  • Pytest CI output are now colored.

Release 0.3.0 - 2021/02/04#


  • GeoJsonROI object that behave like regular ROI but loaded from a .geojson file (with its properties).

  • Enable projection on polygon with holes.

  • Miscellaneous helper on list index search from the right.

  • README now have badges.

  • README to (to be displayed on pypi) as well as project urls.


  • New description of the pip install method.


  • Twine pypi variable naming error.

Release 0.2.1 - 2021/01/21#


  • PYPI deploy token variable invalid name.

  • Force UT-8 encoding in CReMA loader.

Release 0.2.0 - 2021/01/21#

This module is completely rebuild from the original moon-coverage-tool developed by R. Robidel in 2019/2020, which latest version is labeled v0.1.1.


  • Kernel, MetaKernels and CReMA objects to manipulate the kernels files.

  • Map object to quickly load the Jovian background maps.

  • Miscellaneous helpers on vector calculations with arrays, haversine distance and great circle calculations.

  • Add a basic Equirectangular projection with anti-meridian and polar wrapper that works matplotlib on Path object and collections, with planetary coordinates ticks.

  • Region of Interest (ROI) object and collection now describe interesting area on the moon surface.

  • ROIs collection based on K. Stephan 2020 PSS paper for Callisto and Ganymede are included in the module itself.

  • Downloader wget helper.


  • Module bundled with a full test suite with coverage and sphinx documentation.


  • False Easting in Equirectangular projection.