ESA metakernels / CReMA#

Consolidated Report on Mission Analysis (CReMA) are ESA mission metakernels containing different orbital and trajectory scenarios. They can be found in the kernels/mk/ folder in each SPICE release. A plain-text summary is also available on ESA-Cosmos website.

This collection of metakernels is considered to be the canonic setup required to compute the different orbital tour planned for the mission. It is not mandatory to use them, but they constitute an excellent starting point for the beginner user.

The moon-coverage tool provide a collection of shortcuts to pull any CReMA (from any given release) and all its associated kernels directly from ESA archive.

JUICE mission CReMAs#

For JUICE, we can list all the CReMAs available in the latest release, very easily:

from moon_coverage import JUICE_CREMAS

JUICE_CREMAS
<JuiceCremaCollection> Latest version: v300_20220310_001 | 13 metakernels are available:
 - juice_crema_5_0b23_1.tm
 - juice_crema_5_0.tm
 - juice_crema_4_2b22_1_cruise.tm
 - juice_crema_4_2b22_1.tm
 - juice_crema_4_2_N56_Pp5_Q19.tm
 - juice_crema_4_2_N56_Pn5_Q19.tm
 - juice_crema_4_2_N54_Pp5_Q19.tm
 - juice_crema_4_2.tm
 - juice_crema_4_0b.tm
 - juice_crema_3_2_gan_N56_Pp5_Q19.tm
 - juice_crema_3_2.tm
 - juice_crema_3_1.tm
 - juice_crema_3_0.tm 

As we can see, the tool automatically query the online ESA archive to get the latest tag publicly published (here v291_20211210_001) and pull the list of all the CReMAs available in that release.

The list metakernels is available with the mks property:

JUICE_CREMAS.mks
['juice_crema_5_0b23_1.tm',
 'juice_crema_5_0.tm',
 'juice_crema_4_2b22_1_cruise.tm',
 'juice_crema_4_2b22_1.tm',
 'juice_crema_4_2_N56_Pp5_Q19.tm',
 'juice_crema_4_2_N56_Pn5_Q19.tm',
 'juice_crema_4_2_N54_Pp5_Q19.tm',
 'juice_crema_4_2.tm',
 'juice_crema_4_0b.tm',
 'juice_crema_3_2_gan_N56_Pp5_Q19.tm',
 'juice_crema_3_2.tm',
 'juice_crema_3_1.tm',
 'juice_crema_3_0.tm']

as well as the name of the mission:

JUICE_CREMAS.mission
'juice'

and the generic DOI associated with this kernels dataset:

JUICE_CREMAS.doi
'10.5270/esa-ybmj68p'

You can also check if a known metakernel filename is in the latest release:

'juice_crema_5_0.tm' in JUICE_CREMAS
True
'juice_crema_6_0.tm' in JUICE_CREMAS
False

All the previous releases are available with the versions property:

JUICE_CREMAS.versions
['v300_20220310_001',
 'v292_20220120_001',
 'v291_20211210_001',
 'v290_20210624_001',
 'v282_20210505_001',
 'v281_20210330_001',
 'v280_20210216_001',
 'v271_20201210_001',
 'v270_20201113_001',
 'v250_20200505_001',
 'v260_20200720_001',
 'v240_20200304_001',
 'v240_20200304',
 'v232_20191217_001',
 'v231_20191118_001',
 'v230_20191118_001',
 'v220_20191031_001',
 'v210_20181016_001',
 'v200_20181011_001',
 'v160_20180216_001']

and if you need to list the metakernels available for an older version, you only have to do:

Tip

You don’t need to provide the full release id, usually the version number is sufficient.

JUICE_CREMAS.version('v160')
['juice_crema_3_2_ops.tm',
 'juice_crema_3_1_soc_ops_study_ops.tm',
 'juice_crema_3_1_ops.tm',
 'juice_crema_3_0_ops.tm',
 'juice_crema_2_0_ops.tm']

When you know which metakernel you want to work with, you can request it by with its name:

JUICE_CREMAS['juice_crema_5_0.tm']
PosixPath('~/.moon-coverage-esa-crema/juice/v291_20211210_001/juice_crema_5_0.tm')

You will get pathlib.Path object pointing to its location on your disk (cached in your home folder). If the file is missing locally, it will be downloaded automatically from the ESA archive.

Tip

To query a metakernel, you can use its full name or you can use these kind of shortcuts:

>>> JUICE_CREMAS[5.0]
PosixPath('.../v291_20211210_001/juice_crema_5_0.tm')

>>> JUICE_CREMAS['4.2b22.1 (cruise only)']
PosixPath('.../v291_20211210_001/juice_crema_4_2b22_1_cruise.tm')

>>> JUICE_CREMAS['3_2 gan N56 Pp5 Q19']
PosixPath('.../v291_20211210_001/juice_crema_3_2_gan_N56_Pp5_Q19.tm')

These keys follow the same pattern as the one listed on ESA-Cosmos SPICE page.

Hint

The locally cached metakernel files are sorted by mission and releases. If you need to use a specific version of a CReMA, you can add a second argument with its version number:

>>> JUICE_CREMAS['3.2 ops', 'v160']
PosixPath('~/.moon-coverage-esa-crema/juice/v160_20180216_001/juice_crema_3_2_ops.tm')

Similarly to the version() function, you don’t need to provide the full release id, the version is usually enough.

If no explicit version is provided, the tool will search for the latest release available and use that as a default version argument.

Finally, you can consume these metakernels files very easily with the MetaKernel object:

from moon_coverage import MetaKernel

MetaKernel(JUICE_CREMAS['5.0', 'v291'], kernels='/data/kernels')

Other ESA missions#

The current setup is optimized for the JUICE mission but could be easily extended to other ESA mission. If you want to use the moon-coverage tool for another mission, for which the kernels are publicly available on the ESA-SPICE bitbucket, you can defined a new collection of ESA CReMAs like this:

from moon_coverage.esa import EsaCremasCollection

EsaCremasCollection('BEPICOLOMBO')
<BepicolomboCremaCollection> Latest version: v300_20220418_001 | 4 metakernels are available:
 - bc_plan_v300_20220418_001.tm
 - bc_plan.tm
 - bc_ops_v300_20220418_001.tm
 - bc_ops.tm