Source code for ptr.prm
"""Pointing Request Message module."""
from .agm import AGMResults, agm_simulation
from .element import XML, Element
from .metadata import Comment, ElementMetadata
from .timeline import Timeline
[docs]class PointingRequestMessage(Timeline):
"""Pointing Request Message element.
Parameters
----------
*blocks: ObsBlock, optional
Block element(s).
header: str, ptr.Element or list, optional
Header comments.
description: str or list, optional
Message top comment description.
seg_name: str, optional
Segment name attribute.
seg_metadata: str or list, optional
Segment metadata comments.
frame: str, optional
Timeline reference frame (default: 'SC').
**attrs:
Timeline attributes keywords.
Warning
-------
Only 1 segment is accepted for PTR.
Support for PTS is out of scope for now.
"""
def __init__(self, *blocks, header=None, description=None,
seg_name=None, seg_metadata=None, frame='SC', **attrs):
super().__init__(*blocks, frame=frame, description=description, **attrs)
self.header = Element('header')
self.add_header(header)
self.seg_name = seg_name
self.seg_metadata = seg_metadata
@property
def xml(self):
"""PRM XML representation."""
prm = XML.createElement('prm')
# Add header only if present
if self.header:
prm.appendChild(self.header.xml)
# Wrap prm > body > segment > data > timeline
body = Element('body').xml
seg = ElementMetadata('segment',
name=self.seg_name, metadata=self.seg_metadata).xml
data = Element('data').xml
timeline = super().xml
data.appendChild(timeline)
seg.appendChild(data)
body.appendChild(seg)
prm.appendChild(body)
return prm
[docs] def simulate(self, metakernel, agm_endpoint, cache=True) -> AGMResults:
"""Simulate Pointing Request with the Attitude Generator Module.
Parameters
----------
metakernel: str
Baseline metakernel for AGM input
agm_endpoint: str
AGM endpoint.
cache: bool, optional
Use cache the response if present locally.
Returns
-------
AGMResults
AGM simulation results. If the simulation succeeded, the resulting CK
can be loading into spiceypy.
"""
return agm_simulation(metakernel, str(self), agm_endpoint, cache=cache)