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:
- ephfile
str
, optional Planetary ephemerides file for Oorb (i.e. de430 or de405). Default $OORB_DATA/de430.dat ($OORB_DATA = $OORB_DIR/data).
- ephfile
Methods Summary
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:
- oorbElem
np.ndarray
The orbital elements in OpenOrb format.
- oorbElem
- Returns:
- new_orbits
pd.DataFrame
A DataFrame with the appropriate subset of columns relating to orbital elements.
- new_orbits
- convert_orbit_format(orb_format='CAR')¶
Convert orbital elements from the format in orbitObj into ‘format’.
- Parameters:
- format
str
, optional Format to convert orbital elements into.
- format
- 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:
- ephtimes
np.ndarray
Ephemeris times in oorb format (see self.convertTimes)
- obscode
int
orstr
, optional The observatory code for ephemeris generation. Default=807 (Cerro Tololo).
- by_object
bool
, optional If True (default), resulting converted ephemerides are grouped by object. If False, resulting converted ephemerides are grouped by time.
- eph_mode
str
, optional Dynamical model to use for ephemeris generation - nbody or 2body. Accepts ‘nbody’, ‘2body’, ‘N’ or ‘2’. Default nbody.
- eph_type
str
, optional Generate full (more data) ephemerides or basic (less data) ephemerides. Default basic.
- ephtimes
- Returns:
- ephemerides
np.ndarray
The ephemeris values, organized as chosen by the user.
- ephemerides
- propagate_orbits(new_epoch, eph_mode='nbody')¶
Propagate orbits from self.orbits.epoch to new epoch (MJD TT).
- Parameters:
- new_epoch
float
MJD TT time for new epoch.
- 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_obj
rubin_sim.moving_objects.Orbits
The orbits to use to generate ephemerides.
- orbit_obj