University of Iowa Cassini Ephemeris Tool

UiowaEphTool provides trajectories for the Cassini, Galileo, Ulysses, Voyager 1 and Voyager 2 spacecraft — as well as planets and moons seen as observers of each other — in different coordinate systems. Its integration into Speasy makes it easy to get any available trajectory for any time range.

Basics: Getting data from UiowaEphTool module

All the trajectories available are discoverable using speasy dynamic inventory, they are organized by origin/coordinate system/object:

>>> import speasy as spz
>>> trajectories = spz.inventories.tree.uiowaephtool.Trajectories
>>> cassini_traj=spz.get_data(trajectories.Callisto.Co_rotational.Cassini, "2010-01-02", "2010-01-03")
>>> cassini_traj
<speasy.products.variable.SpeasyVariable object at ...>
>>> cassini_traj.shape
(1440, 3)
>>> cassini_traj.columns
['X', 'Y', 'Z']

Coordinate systems

Here the coordinate system is the middle level of the inventory tree rather than an argument, so you select it by browsing to it, and the systems on offer depend on the origin body:

>>> sorted(k for k in trajectories.Callisto.__dict__ if not k.startswith(('_', 'spz')))
['Co_rotational', 'Ecliptic', 'Equatorial', 'Geographic', 'Id', 'Radius']

Id and Radius in the listing above are body properties, not coordinate systems. The table below is generated from Speasy’s own inventory-building code every time these docs are built (there’s no external server to query here, unlike CDPP 3DView — the body/coordinate-system list is defined directly in speasy.data_providers.uiowa_eph_tool), so it always matches what the installed version actually offers:

Generated from the current Speasy inventory when these docs were built, on 2026-09-18 16:06 UTC. Run the same introspection yourself (sorted(k for k in trajectories.<Body>.__dict__ if not k.startswith(('_', 'spz'))), minus Id/Radius) to check any single body.

Body

Coordinate systems

Anthe

Co_rotational, Ecliptic, Equatorial, Geographic

Callisto

Co_rotational, Ecliptic, Equatorial, Geographic

Dione

Co_rotational, Ecliptic, Equatorial, Geographic

Earth

Ecliptic, Equatorial, Geographic

Enceladus

Co_rotational, Ecliptic, Equatorial, Geographic

Europa

Co_rotational, Ecliptic, Equatorial, Geographic

Ganymede

Co_rotational, Ecliptic, Equatorial, Geographic

Helene

Co_rotational, Ecliptic, Equatorial, Geographic

Hyperion

Co_rotational, Ecliptic, Equatorial, Geographic

Iapetus

Co_rotational, Ecliptic, Equatorial, Geographic

Io

Co_rotational, Ecliptic, Equatorial, Geographic

Jupiter

Ecliptic, Equatorial, Geographic

Methone

Co_rotational, Ecliptic, Equatorial, Geographic

Mimas

Co_rotational, Ecliptic, Equatorial, Geographic

Pallene

Co_rotational, Ecliptic, Equatorial, Geographic

Phoebe

Co_rotational, Ecliptic, Equatorial, Geographic

Rhea

Co_rotational, Ecliptic, Equatorial, Geographic

Saturn_baricentric

Ecliptic, Equatorial, Geographic, KSM

Saturn_geocentric

Ecliptic, Equatorial, Geographic, KSM

Sun

Ecliptic, Equatorial

Telesto

Co_rotational, Ecliptic, Equatorial, Geographic

Tethys

Co_rotational, Ecliptic, Equatorial, Geographic

Titan

Co_rotational, Ecliptic, Equatorial, Geographic

Venus

Ecliptic, Equatorial, Geographic

What you get back

Every request returns a SpeasyVariable with three columns (X, Y, Z) at a fixed one-minute cadence — the interval Speasy requests from the tool.

Warning

Positions are not always in km: depending on the origin body they may be expressed in origin-body radii (e.g. Rs for Saturn, where 1 Rs = 60268 km). Always check var.meta['UNITS']; when the unit is a body radius, the conversion factor is in var.meta['ORIGIN_RADIUS'] (the origin body’s radius in km).

Other useful metadata keys on the returned variable: COORDINATE_SYSTEM, ORIGIN, OBSERVER, and FILE_HEADER (the raw header of the file returned by the server).

Note

Requests shorter than one day are padded to one day before being sent (matching Speasy’s own one-day local cache granularity for this provider), then trimmed back to exactly the range you asked for. This is not a server requirement — the tool accepts much shorter windows on its own.