All notable changes to this project will be documented here.
The package is now available on
between()methods to enforce
EventsDicttype return (!50).
.timelineevents properties to
TourConfigobject when a compatible
fkevents is loaded in the pool (!53).
Allow events based trajectory from
TourConfigobject when an mission
fkevent kernel is loaded (!53).
fkevents to retrieve the
TourConfigflybys names and trajectories (!53).
Wildcard string (
*) and character (
%) are now supported in
ax.scatter()plot on trajectory objects (!54).
ax.set_view()to projection map to zoom on a given area (!54).
dist()math function to compte the distane between two vectors (!54).
au_ticksto represent long distance plots (!54).
~tilde character as user home directory (!55).
MetaKernelobject to change the number of parallel download threads (!55).
Trajectory.new_traj(spacecraft=..., instrument=..., target=...)to change
instrumentparameters and create a new
TourConfig.new_tour(spacecraft=..., instrument=..., target=...)to change
instrumentparameters and create a new
target_separation()methods to the SPICE toolbox (!56).
jd()decimal Julian Date function to the SPICE datetime module (!56).
SpiceFramereference object for SPICE frames (!56).
.detailsproperties and HTML representation to
SpicePoolto extract coverage gaps intervals (!56).
SpicePoolsimilar to NAIF
file_size()miscalenious helper to compute file(s) size (!56).
SpicePool.windows()now returns the kernels temporal windows in a
dictto keep track of the references and the kernels (!56).
SpicePool.coverage()is now computed per references and not globally to be consistent with NAIF
Trajectory.attitudenow returns the C-matrix and not the transpose of the C-matrix (!56).
Change of target or observer in a
Trajectoryobject now clear its cache properties (!56).
SpiceInstrumentnow returns a
SpiceFrameinstead of a
Flybyare now defined with an
alt_minthreshold of 150,000 km by default, instead of 25,000 km previously (!53).
ax.set_ylim()now rescale the ticks grid (!54).
km_ticksnow 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).
EventsDictinput 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).
Eventobject now supports single
timekeyword input (!53).
PATH_VALUEStest values with more than 80 characters (!51).
SpicePoolitem 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).
TourConfignow raises an error if the stop time provided is before the start time in a slice (!54).
TourConfignow supports numpy array input (!54).
anglecalculation 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).
\character is now supported in Windows content (!55).
SpiceInstrumentcan now be queried from
SpiceSpacecraft.instr()with their full name (!56).
ax.twin_colorbar()issue with ticks outside the viewing window (!56).
Post migration minor fixes (!47).
limb_ip_pt()method was removed in favor of SPICE native
ROIno longer have a default
Drop support for Python 3.8 following NEP29. Default min version 3.9 (!52).
Remove announcement on the homepage (!58).
.envfile to locate the mission kernels directories (!45).
print_kernels_dir()function to print the kernels directories available (!45).
%load_ext planetary_coveragemagic function (!45).
MetaKernelobjects can now be used to load the SPICE pool directly with the
EventsDictobjects can be trimmed with time boundary conditions (!43).
Mission orbital files (
.orb) can now be loaded with
SpiceRefobjects have a new
.frameproperty to query the associated reference frame when available (!42).
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 (
CHARONplanetary maps (!44).
PNG representation of all the planetary maps (!44).
SpiceRefobjects now expose
Rename package from
Move the documentation from
Move the source code from
Move the notebook examples from
ESA Metakernel are now cached in
Map.map()no longer support Matplotlib axes input to use build-in projection system (!44).
Old depreciations (!46).
Migrate package setup configuration to
read_events()generic events file reader for all ESA mission (
.itl) files (!36).
events.EvfEventFilewas introduced to read
events.ItlEventFilewas introduced to read
Trajectoryto append new kernel(s) to the pool (!37).
TourConfigcan be appended with python
ESA_MKmetakernel collection, shortcuts and
MK_IDENTIFIERpattern that are compatible with
New support for optional
juiceextra dependencies with
Tests and support on python new version
mkis no longer related to JUICE CReMA 5.0 and set to
SpicePoolcoverage windows are now evaluated per-file and not per-window (!34).
Upgrade JUICE documentation examples to CReMA 5.1 (150lb, v400) trajectory (!38).
Package dependencies were updated and are now unpinned but tracked in
Move the source files into an isolated
Replace docs and examples JUICE events resources from
FovsCollectioncolor getter (#43).
Trajectoryattribute error message in
Change test coverage reporting configuration for Gitlab CI (!33).
Kernel data with
=sign in string value and empty assignation can now be parsed with
+=assignation symbol can be used in kernel
Fix ESA metakernels listing in uppercase (#38).
MANIFEST.inwere removed as part of the Poetry transition (!34).
ROIsCollectioncan be imported from a
twin_colorbar()now accept custom ticks provided by the user (!27).
New datetime formatter into ISO with a trailing
Zand to MAPPS datetime (!20).
Pytest and code coverage now are reported in merge-requests (!23).
m_pix_ticksis now automatically scaled to take
kmvalues as inputs (!27).
Performance improvement: ESA metakernels listing is performed only when a given version is provided (!23).
New documentation entry point:
moon-coverage.univ-nantes.frinstead of the
moon-coverage.readthedocs.io. The old URL now redirects to the new one (!17).
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).
ReadTheDocs configuration is now hosted in the project itself and python build version is
Instrument SPICE calculation for the local illumination is now performed on the spacecraft frame and not the instrument frame (!26).
Stephan2021ROIsCollectionlatitude 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
Datetime parser now supports ISO string with trailing
numpy.datetime64inputs as well as MAPPS datetime with
ROIsCollectionstyles to their patch (!29).
ROIsCollectionnow supports point intersection with tuple and list and
strattribute inputs (!29).
Update Ganymede default basemap reference (#33).
ESA API requests now load all the results and not only the first 25 (!23).
MaskedTrajectorycan now be iterated over each of it segments (as a
EventsFilecan be filtered by any regex key, support indexing and comparisons with date strings. Auto-completion was also enable for Jupyter and IPython environments (!8).
TourConfignow support kernels custom remote location:
tickssub-module to enable better axis value representation. It includes a new
date_ticksfor compressed date formatter on temporal axes,
km_pix_ticksfor the instrument pixel scale. It also support basic mathematical operations to scale and offset the values.
twin_colorbaron 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
copybutton (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).
Trajectoryobjects can take an
EventsDictas a direct time inputs.
Eventobjects 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
Improve CI configuration by disabling some
testsfor merge request in draft mode (with a title starting with
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).
MaskedTrajectorycan now switch observer and target property (a new trajectory is created with the same mask).
EventsFilecan 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.
OSError: Invalid cross-device linkis now fixed.
Metakernel with multiple remotes in their headers is now supported (!11).
Workaround for documentation
multiple fileswarning (see MyST-NB #363).
.rstfiles in the documentation were removed in favor of
Remove all the static output images from the docs (they are created by the
sphinxduring the build process).
Drop support for
3.6. Now the default testing python version is
Docker configuration is now hosted in its own repository.
SpiceAbCorrclass, 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
SpicePoolor from the
If a ESA metakernel is loaded into the pool, its SKD version is available as an attribute
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)
EsaCremasCollectionthat support version specific metakernel (#5).
TourConfigfor known metakernel available in
etnow accept heterogenous list of time,
tuple. The results is always a flat array.
Trajectoryare 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_kernelsdecorator to ensure that the calculation is performed on the right set of kernel if multiple
Trajectoryare defined. If the kernels in the Pool have changed, the Pool will be purged and reloaded with the right kernels.
EventFileparser to load a collection of events from a
.csvfile. These events can be used directly with
TourConfigto select an event or a temporal window or with
TourConfig.flybyto 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.
datetimeparser for any SPICE string input.
timedeltaevent step parser and enable temporal operations on
Flybyobject have new viewing angle at CA shortcuts (
InstrumentTrajectory.fovsproperty now return a
FovsCollectionobject that allow to colorize the trajectory properties directly on the projected FOVs. It also works for
MaskedInstrumentTrajectoryobjects. An optional
sortargument is also available to sort the FOV footprints by a
Trajectoryproperty before being displayed on the map.
New standalone colorbar on projected axis.
DepreciationHelperto 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.
ets_surface_intersectephemeris times. They are computed based on the aberration correction provided and are respectively propagated to
SPICE aberration correction can be provided at the
TourConfiglevel and is propagated down to the
Flyby. It is also preserved during the
Flybyis defined, a new
alt_mincan be provided (25,000 km by default). This property is propagated to
get_flybys()function was also added with an explicit user-defined
MaskedTrajectoryis now based on the observer property (
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 (
The SPICE kernel documentation was reformated to include the new
format_datafunctions from the
spicesub-module, as well as the new
Upgrade Europa map with colors (created by Björn Jónsson).
tour.flybynow return a
instrumentwas provided to the
Fix multiline and continuation marker in kernel parser.
SpicePoolcan now be compared with its the kernel pool hash based on the kernels loaded (individually or/and from a
TourConfigkernels content is now versioned based on its hash (see note above).
Trajectoryobjects can now have single
EventFileonly send a warning if an event start time is missing.
Kernel parser can now read float with
Link to the example notebook viewer in homepage
Upgrade Europa map with colors (created by Björn Jónsson).
Open files is now enforce to
utf-8(as a pylint requirement).
Dockerfileis now build from the source and not from the main branch (useful for merge requests).
The required dependencies are now explicitly defined in
setup.pyto ensure a better reproducibility of the results.
Duplicate Gitlab pipelines on merge requests.
update-juice-cremacli entry points (no longer required).
Move esa crema folder from package level to user home
autoload_kernelswas removed from
TourConfigattributes. Now the pool is always loaded when a
moon_coverage.kernelssub-module was completely removed in favor of the new variants in
MaskedTrajectorywas removed in flavor of
CReMAsno longer works and were replaced by
debug_esa_cremais replaced by
Trajectoryobjects now have a boresight pointing
ra/dec(J2000) attributes based on the
ckpointing data, a surface intersect, local illumination conditions and a
raysattributes (with 2D and 3D visualizations).
SpiceInstrumentlist (loaded from the pool with a valid FOV) and a
boresightattributes (by default the
boresightis set at
(0, 0, 1)but can be overridden at runtime, see fix below). Both of them are defined as
Spice ray intersection on body surface with a single or multiple time(s) or ray(s) and the field of view contour.
InstrumentTrajectorycan represent the instrument FOV on the surface directly (with a
Compute Spacecraft and instrument clock ticks from UTC time inputs.
Convert vector in
New limb impact parameter point calculation (for now only limited to
abcorr='None') and can be used directly with the
New rotation matrix around an axis and vector rejection helpers.
Add a class renamed decoration
A warning was added to the docs to highlight the fact that SPICE calculation are performed with the
Ganymedebasemap from Kersten et al. 2021 - PSS (submitted).
Kernel management and setupsection on the documentation homepage.
The repo is now backup in Software Heritage for long term preservation, the badge was added to the
README.md(CI web-hooked on tagged version).
Flybyare automatically promoted to
InstrumentFlybyobjects based on the selected observer class.
Trajectoryobserver and target can be changed after the
TourConfignow have a
instrumentoptional argument that can be use to load directly a specific instrument.
SpiceRefon the Sun, a Planet or a Satellite now return a
SpiceBodyobject, a spacecraft id will return a
SpiceSpacecraftand an instrument will return
Input type on SPICE toolbox functions can now be checked and automatically converted.
moon-coveragelogo for a new isometric and animated version.
intinput is now recomputed the body
name(is also support
Add a default null label attribute to the
Add a legend handler to
Add legend handles to
PEP8naming convention, no
Manual spacecraft pointing when no instrument kernel is available (see the HGA example in the docs)
SPICERefwere renamed as
IAU_*frame attribute from
SPICERefin favor of centered
Trajectory range can now be selected on the full metakernel coverage (see docs).
Flybyobject as an advance
Trajectoryobject centered around the CA point with an irregular distribution of temporal points.
New background maps for the Earth, the Moon and Venus.
ETfrom and to Barycentric Dynamical Time (
SPICEPool now provide
coverageranges for a body or a collection of bodies.
TourConfigno longer require to have a
coveragefrom the pool minus
Multi temporal sequence can now be used with
et_ca_rangeraround a closest approach, for a flyby trajectory.
Add custom temporal
Most of the main entry from the
trajectorysub-module are now accessible directly at the module root level.
UTCnow always return a
NaT(not-a-time) attribute, instead of
Update CReMA list to add
4.2b22.1 (cruise only)in tests.
Upgrade tests to
Map plot on a single couple of values.
ETconverted value at 1e-3 to match
In some rare cases, the endpoint in
et_rangewas not discarded with
TrajectoryConfigwas 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.
Warningto the user if the trajectory have more than
CallistoROIsnow have a target attribute by default.
MaskedTrajectorynow have opportunity
Basics projection plots unit tests.
Radius shortcuts to
The intersection between a
ROIsCollectionnow take into account the target attribute when it is provided.
The projection of a
Mapis only possible if their respective target names are consistent.
Masked trajectory UTC times are now in
Allow color bar optional output in color line.
ESA CReMA key is now unsensitive to
_changes in its keys.
Docker tests are now perform on the source version (not on the latest published version).
Use default branch in ReadTheDocs hook (default is latest). This should fix the build on tagged commits.
Line color now supports any keywords arguments to its
PatchCollectionnow conserve the
Image logos in the README is now pointing to the absolute URL on ReadTheDocs.
urlattribute for the homepage description in
RunTimeErrorfrom numpy in equirectangular projection.
Gitlab-CI rules for PyPI auto-deploy.
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.
Trajectorydata can now be represented on the projected map as color lines.
ROIsis now tests and documented.
SPICERefobjects now have a
Vector scalar projection and rejection helpers.
UnitFormattercan 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
Docker config to deploy the module on a JupyterLab instance.
reclatand radians to degrees functions.
When the kernels directory not found, an explicit
The projection (equirectangular for now) can have values attached to their position when converted to
Update the notebook and the documentation with examples of SPICE calculation and their representation on the map.
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.
IAU_FRAMEas fixed frame (and not as inertial).
Inversion between the
spkezrfunction (for stellar aberration corrections).
Gitlab CI stages rules and deployment trigger.
PyPI broken link.
pylintcommand in README.
Direct projection of the
Trajectoryon the moons background.
Projection in map coordinates before plotting the data and improve
Logical operator (
^) on the
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.
Trajectorydocumentation 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
ROI(s) is not a bijection.
Regroup all the logger/debugger in a single sub-module.
cache_propertydecorator tu support the logger, parents invalidation and garbage collection.
Project status is now in
The main contact information is now project dependant (not developer dependant).
DataLab URL now points to
The module version is now tracked in the
docsas well (with bump2version).
SPICE documentation (references, time convertor and time ranger).
Explicit docker build during the CI.
Sphinx build on CI (now performed by
By-pass the key formatting for the
Trajectorypoints in Stephan ROIs.
Projection tests coverage
etconvertor on list and arrays.
Time ephemeris range with human readable time steps.
SPICEPoolhandler can now provide feedback of the kernels loaded in the pool (with a logger).
TrajConfighelper will loaded the kernels setup and create the
SPICERefobject can be used to provide
idas string and integer.
Sub-observer position on any
GeoJsonROIdocumentation and example.
Allow failure on pypi deploy during the CD.
Pytest CI output are now colored.
GeoJsonROIobject that behave like regular
ROIbut loaded from a
.geojsonfile (with its properties).
Enable projection on polygon with holes.
Miscellaneous helper on list index search from the right.
README now have badges.
setup.py(to be displayed on
pypi) as well as project urls.
New description of the
Twine pypi variable naming error.
PYPI deploy token variable invalid name.
Force UT-8 encoding in
This module is completely rebuild from the original
by R. Robidel in 2019/2020, which latest version is labeled
CReMAobjects to manipulate the kernels files.
Mapobject 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
Pathobject 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.
Module bundled with a full test suite with coverage and sphinx documentation.
False Easting in Equirectangular projection.