curryer.kernels.ephemeris ========================= .. py:module:: curryer.kernels.ephemeris .. autoapi-nested-parse:: ephemeris @author: Brandon Stone Attributes ---------- .. autoapisummary:: curryer.kernels.ephemeris.logger curryer.kernels.ephemeris.PROPERTIES_TO_WRITER Classes ------- .. autoapisummary:: curryer.kernels.ephemeris.EphemerisTypes curryer.kernels.ephemeris.EphemerisInputDataTypes curryer.kernels.ephemeris.EphemerisWriterTimeTypes curryer.kernels.ephemeris.AbstractEphemerisProperties curryer.kernels.ephemeris.EphemerisStateProperties curryer.kernels.ephemeris.EphemerisTLEProperties curryer.kernels.ephemeris.AbstractEphemerisWriter curryer.kernels.ephemeris.EphemerisStateWriter curryer.kernels.ephemeris.EphemerisTLEWriter Module Contents --------------- .. py:data:: logger .. py:class:: EphemerisTypes(*args, **kwds) Bases: :py:obj:`enum.Enum` Ephemeris kernel types. .. py:attribute:: INTERP_LAGRANGE_EVEN :value: 8 .. py:attribute:: INTERP_LAGRANGE_UNEVEN :value: 9 .. py:attribute:: INTERP_HERMITE_EVEN :value: 12 .. py:attribute:: INTERP_HERMITE_UNEVEN :value: 13 .. py:attribute:: TLE :value: 10 .. py:class:: EphemerisInputDataTypes(*args, **kwds) Bases: :py:obj:`enum.Enum` Ephemeris input data types. .. py:attribute:: STATES :value: 'STATES' .. py:attribute:: TLE_ELEMENTS :value: 'TL_ELEMENTS' .. py:class:: EphemerisWriterTimeTypes(*args, **kwds) Bases: :py:obj:`enum.Enum` Ephemeris writer time types. .. py:attribute:: UTC :value: 'UTC' .. py:attribute:: ET :value: 'ETSECONDS' .. py:class:: AbstractEphemerisProperties Bases: :py:obj:`curryer.kernels.classes.AbstractKernelProperties` Ephemeris kernel common properties. .. py:attribute:: SUPPORTED_INPUT_DATA_TYPES :type: ClassVar :value: None .. py:attribute:: input_data_type :type: str :value: None .. py:attribute:: input_center :type: str :value: None .. py:attribute:: input_frame :type: str :value: None .. py:attribute:: spk_type :type: str :value: None .. py:attribute:: leapsecond_kernel :type: str :value: None .. py:attribute:: planet_kernels :type: list[str] :value: None .. py:method:: __post_init__() .. py:method:: to_dict() Convert the properties class to a dict for creating kernels. .. py:class:: EphemerisStateProperties Bases: :py:obj:`AbstractEphemerisProperties` Ephemeris state kernel properties. .. py:attribute:: SUPPORTED_INPUT_DATA_TYPES :type: ClassVar .. py:attribute:: input_body :type: str :value: None .. py:attribute:: input_data_type :type: str :value: 'STATES' .. py:attribute:: input_data_units :type: dict[str, str] .. py:attribute:: input_time_type :type: str :value: 'ugps' .. py:attribute:: input_time_columns :type: list[str] :value: ['ugps'] .. py:attribute:: input_data_columns :type: list[str] :value: ['position_x', 'position_y', 'position_z', 'velocity_x', 'velocity_y', 'velocity_z'] .. py:attribute:: spk_type :type: str :value: 'INTERP_HERMITE_UNEVEN' .. py:attribute:: polynom_degree :type: int :value: 3 .. py:attribute:: frame_kernel :type: str :value: None .. py:attribute:: writer_ignore_lines :type: int :value: 1 .. py:attribute:: writer_lines_per_record :type: int :value: 1 .. py:attribute:: writer_data_delimiter :type: str :value: ',' .. py:attribute:: writer_data_order :type: str :value: 'epoch x y z vx vy vz' .. py:attribute:: writer_time_type :type: str :value: 'UTC' .. py:method:: __post_init__() .. py:method:: to_dict() Convert the properties class to a dict for creating kernels. .. py:class:: EphemerisTLEProperties Bases: :py:obj:`AbstractEphemerisProperties` Ephemeris state kernel properties. .. py:attribute:: SUPPORTED_INPUT_DATA_TYPES :type: ClassVar .. py:attribute:: input_tle :type: int :value: None .. py:attribute:: input_body :type: str :value: None .. py:attribute:: input_data_type :type: str :value: 'TLE_ELEMENTS' .. py:attribute:: spk_type :type: str :value: 'TLE' .. py:attribute:: tle_start_pad :type: str :value: '12 hours' .. py:attribute:: tle_stop_pad :type: str :value: '12 hours' .. py:method:: to_dict() Convert the properties class to a dict for creating kernels. .. py:class:: AbstractEphemerisWriter(properties: AbstractKernelProperties, bin_dir: str = None, parent_dir: str = None) Bases: :py:obj:`curryer.kernels.classes.AbstractKernelWriter` Create or append to a SPICE ephemeris (SPK) kernel. .. rubric:: Notes Kernel configuration arguments set by this class: - LEAPSECONDS_FILE : __init__, `accessor.properties.spice.kernels` - PCK_FILE : __init__, `accessor.properties.spice.kernels` .. py:attribute:: KTYPE :value: 'spk' .. py:attribute:: FILE_EXT :value: '.bsp' .. py:method:: prepare_input_data(input_data: pandas.DataFrame) -> list[pandas.DataFrame] :abstractmethod: Prepare an accessor that will provide input data for the kernel. .. py:method:: write_input_data(fobj_or_str, accessor) :abstractmethod: Write input data. .. py:method:: _write_kernel(setup_file, input_file, kernel_file, append=False) Setup the command to create an "SPK" kernel using the external tool "mkspk". :param setup_file: Setup file containing kernel creation properties (see "mkspk"). :type setup_file: str :param input_file: Input data file to create kernel from. :type input_file: str :param kernel_file: Kernel filename to create. :type kernel_file: str :param append: Append data to an existing kernel (if exists). Default=False :type append: bool, optional :returns: List of subprocess commands and arguments. :rtype: list of str .. py:class:: EphemerisStateWriter(properties: EphemerisStateProperties, **kwargs) Bases: :py:obj:`AbstractEphemerisWriter` Create or append to a SPICE ephemeris (SPK) kernel using table-like input data sets (e.g. database or CSV file). .. rubric:: Notes Kernel configuration arguments set by this class: - OBJECT_NAME : __init__, `accessor.properties.spice.name` # TODO: Update - LEAPSECONDS_FILE : __init__, `accessor.properties.spice.kernels` - PCK_FILE : __init__, `accessor.properties.spice.kernels` - IGNORE_FIRST_LINE : __init__ - LINES_PER_RECORD : __init__ - DATA_DELIMITER : __init__ - DATA_ORDER : prepare_input, time position velocity - TIME_WRAPPER : prepare_input, UTC string .. py:attribute:: properties .. py:method:: prepare_input_data(input_data: pandas.DataFrame) -> list[pandas.DataFrame] Prepare an accessor that will provide input data for the kernel. .. py:method:: write_input_data(fobj_or_str, input_data: pandas.DataFrame) Write input data. .. py:class:: EphemerisTLEWriter(properties: EphemerisTLEProperties, **kwargs) Bases: :py:obj:`AbstractEphemerisWriter` Create or append to a SPICE ephemeris (SPK) kernel using TLE. .. rubric:: Notes Kernel configuration arguments set by this class: - LEAPSECONDS_FILE : __init__, `accessor.properties.spice.kernels` - PCK_FILE : __init__, `accessor.properties.spice.kernels` .. py:attribute:: properties .. py:method:: prepare_input_data(input_data: pandas.DataFrame) -> list[pandas.DataFrame] Prepare an accessor that will provide input data for the kernel. .. py:method:: write_input_data(fobj_or_str, input_data: pandas.DataFrame) Write input data. .. py:data:: PROPERTIES_TO_WRITER