PyOrbEphemerides

class rubin_sim.moving_objects.PyOrbEphemerides(ephfile=None)

Bases: object

Generate ephemerides and propagate orbits using the python interface to Oorb.

Typical usage: pyephs = PyOrbEphemerides() # Set the orbital parameters, using an lsst.sims.movingObjects.Orbits object pyephs.setOrbits(orbits) # Generate ephemerides at times ‘times’. ephs = pyephs.generateEphemerides(times, timeScale=’UTC’, obscode=’I11’)

This class handles the packing and unpacking of the fortran style arrays that pyoorb uses, to and from more user-friendly pandas arrays.

Parameters:
ephfilestr, optional

Planetary ephemerides file for Oorb (i.e. de430 or de405). Default $OORB_DATA/de430.dat ($OORB_DATA = $OORB_DIR/data).

Methods Summary

convert_from_oorb_elem()

Translate pyoorb-style orbital element array back into dataframe.

convert_orbit_format([orb_format])

Convert orbital elements from the format in orbitObj into 'format'.

generate_ephemerides(times[, time_scale, ...])

Calculate ephemerides for all orbits at times times.

propagate_orbits(new_epoch[, eph_mode])

Propagate orbits from self.orbits.epoch to new epoch (MJD TT).

set_orbits(orbit_obj)

Set the orbits, to be used to generate ephemerides.

Methods Documentation

convert_from_oorb_elem()

Translate pyoorb-style orbital element array back into dataframe.

Parameters:
oorbElemnp.ndarray

The orbital elements in OpenOrb format.

Returns:
new_orbitspd.DataFrame

A DataFrame with the appropriate subset of columns relating to orbital elements.

convert_orbit_format(orb_format='CAR')

Convert orbital elements from the format in orbitObj into ‘format’.

Parameters:
formatstr, optional

Format to convert orbital elements into.

generate_ephemerides(times, time_scale='UTC', obscode='I11', by_object=True, eph_mode='nbody', eph_type='basic')

Calculate ephemerides for all orbits at times times.

This is a public method, wrapping self._convert_times, self._generateOorbEphs and self._convertOorbEphs (which include dealing with oorb-formatting of arrays).

The return ephemerides are in a numpy recarray, with axes - if by_object = True : [ephemeris values][object][@time] (i.e. the ‘ra’ column = 2-d array, where the [0] axis (length) equals the number of eph_times) - if by_object = False : [ephemeris values][time][@object] (i.e. the ‘ra’ column = 2-d arrays, where the [0] axis (length) equals the number of objects)

The ephemeris values returned to the user (== columns of the recarray) are: [‘delta’, ‘ra’, ‘dec’, ‘magV’, ‘time’, ‘dradt’, ‘ddecdt’, ‘phase’, ‘solarelon’, ‘velocity’] where positions/angles are all in degrees, velocities are deg/day, and delta is the distance between the Earth and the object in AU.

Parameters:
ephtimesnp.ndarray

Ephemeris times in oorb format (see self.convertTimes)

obscodeint or str, optional

The observatory code for ephemeris generation. Default=807 (Cerro Tololo).

by_objectbool, optional

If True (default), resulting converted ephemerides are grouped by object. If False, resulting converted ephemerides are grouped by time.

eph_modestr, optional

Dynamical model to use for ephemeris generation - nbody or 2body. Accepts ‘nbody’, ‘2body’, ‘N’ or ‘2’. Default nbody.

eph_typestr, optional

Generate full (more data) ephemerides or basic (less data) ephemerides. Default basic.

Returns:
ephemeridesnp.ndarray

The ephemeris values, organized as chosen by the user.

propagate_orbits(new_epoch, eph_mode='nbody')

Propagate orbits from self.orbits.epoch to new epoch (MJD TT).

Parameters:
new_epochfloat

MJD TT time for new epoch.

set_orbits(orbit_obj)

Set the orbits, to be used to generate ephemerides.

Immediately calls self._convertOorbElem to translate to the ‘packed’ oorb format.

Parameters:
orbit_objrubin_sim.moving_objects.Orbits

The orbits to use to generate ephemerides.