Module descriptions
Root package (ephemeris_tools)
ephemeris_tools.angle_utils: Parsing of angle strings (hours, deg, d m s, etc.) for RA/Dec and viewer.ephemeris_tools.config: Path resolution for SPICE_PATH, TEMP_PATH, STARLIST_PATH.ephemeris_tools.constants: NAIF body IDs (planets, sun, moon), spacecraft codes, column IDs.ephemeris_tools.params: Dataclasses (EphemerisParams, etc.) and CLI-based parameter parsing for ephemeris/tracker/viewer.ephemeris_tools.params_env: BuildsEphemerisParams,TrackerParams,ViewerParamsfrom CGI-style environment variables. Re-exported throughparamsfor convenience.ephemeris_tools.record: Formatting of ephemeris table rows (fixed-width columns).ephemeris_tools.input_params: Writing of input parameter blocks to a stream (ephemeris/tracker/viewer).ephemeris_tools.ephemeris: Ephemeris table generation loop; SPICE calls and column output.ephemeris_tools.time_utils: Time string parsing, interval-to-seconds, TAI/day/sec and TDB conversion helpers.ephemeris_tools.stars: Star catalog reader (name, RA, Dec from file).ephemeris_tools.tracker: Moon tracker orchestration; time loop and call into rendering.ephemeris_tools.viewer: Planet viewer orchestration; config, geometry, and call into draw_view.ephemeris_tools.viewer_helpers: Helper functions for viewer: FOV table writing, label formatting, coordinate projection.ephemeris_tools.install_web_tools:install_ephemeris_tools_filesconsole script; copies bundled web/tools files (HTML forms, samples) to a target directory.
CLI (ephemeris_tools.cli)
ephemeris_tools.cli.cgi: CGI-compatible env reading:get_env(),get_key(),get_keys()(sanitized).ephemeris_tools.cli.main: Argument parsers for ephemeris, tracker, viewer; dispatch to ephemeris/tracker/viewer;main()andcli_main().
Planets (ephemeris_tools.planets)
ephemeris_tools.planets.base:MoonSpec,RingSpec,ArcSpec,PlanetConfig.ephemeris_tools.planets.mars,jupiter,saturn,uranus,neptune,pluto: Planet-specific config (planet_id, moons, rings, arcs, starlist).
SPICE (ephemeris_tools.spice)
ephemeris_tools.spice.common: Global state (planet, observer, loaded flags, time shifts);get_state().ephemeris_tools.spice.load:load_spice_files(),load_spacecraft(); reads SPICE_planets.txt / SPICE_spacecraft.txt.ephemeris_tools.spice.observer:set_observer_id(),set_observer_location(),observer_state()(6-vector in J2000).ephemeris_tools.spice.bodmat: Body-fixed rotation matrices (J2000 to body); tipbod and orbit fallback for moons.ephemeris_tools.spice.geometry: Body lat/lon (sub-observer, sub-solar), anti-sun, limb radius, planet ranges, moon tracker offsets.ephemeris_tools.spice.orbits: Observer ring opening (obs_b, obs_long), moon_distances (offsets, limb angle).ephemeris_tools.spice.rings: Ring opening geometry, ring_radec, ansa_radec (with edge-case handling).ephemeris_tools.spice.shifts: Time-shift support for moon orbits;spkapp_shifted().
Rendering (ephemeris_tools.rendering)
ephemeris_tools.rendering.geometry3d: 3D helpers: ellipsoid limb, segment-ellipse intersect, ray-plane intersect, FOV clip.ephemeris_tools.rendering.planet_grid: Planet grid (meridians, latitude circles) in plot coords; limb radius.ephemeris_tools.rendering.euclid: Low-level drawing (bodies, rings, segments) and view state; port of FORTRAN Euclid layer. Submodules:constants,vec_math,ellipse,segment_plane,state,init_geom(euinit, euview, eugeom),body(eubody),ring(euring),star_temp(eustar, eutemp),clear(euclr).ephemeris_tools.rendering.escher: PostScript buffer and mapping (FOV to pixel/line); port of FORTRAN Escher layer. Submodules:constants,state,ps_output(esfile, esdr07, eslwid, etc.),view(esview, esdraw, esdump, esclr).ephemeris_tools.rendering.postscript: PostScript file header/footer and prolog helpers.ephemeris_tools.rendering.draw_tracker: Tracker-specific drawing: time axis, moon positions, tick marks and labels.ephemeris_tools.rendering.draw_view: Viewer-specific drawing: bodies, rings, arcs, stars, labels; calls euclid/escher and planet_grid.