executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
coordinates-and-timeParse solar times, build SunPy coordinate frames, transform observer-aware coordinates, and propagate solar features safely.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this route when a user needs to normalize solar observation times, describe a
solar or observer-centered position, convert between SunPy/Astropy frames, query
deterministic solar-system geometry, or move a solar-surface feature with a
specified rotation model. The deliverable is normally an astropy.time.Time, a
sunpy.time.TimeRange, an astropy.coordinates.SkyCoord, or a reproducible
array of those objects.
Start with the SunPy router when the request also needs map
construction/plotting, Fido search/fetch, or TimeSeries analysis. Those are
separate routes; this skill can consume a map's already-built
coordinate_frame but does not create or plot maps.
| User intent | Start here | Primary result |
|---|---|---|
| Parse a FITS/solar timestamp or compare intervals | time workflow | Time or TimeRange |
| Make a coordinate from angles, pixels-as-angles, or Cartesian data | frame construction | unit-aware SkyCoord |
| Convert HPC/HGS/HGC/HCC or an Astropy frame | transformation workflow | transformed SkyCoord |
| Obtain Earth/planet geometry or solar orientation | ephemeris workflow | observer coordinate or solar quantity |
| Use a map WCS as a coordinate frame | WCS boundary | frame/WCS conversion only |
| Track a feature over time or apply differential rotation | propagation workflow | rotated coordinate(s) |
| Use mission SPICE kernels | Read optional backends first | explicitly optional, kernel-dependent |
sunpy.time.parse_time before
comparing, adding durations, or putting it in a frame. Preserve the intended
scale (utc, tai, etc.) and use an explicit format= for numeric epochs.obstime to every observer-dependent frame. Attach observer as a
known body string (for example, "earth") only when the time is known, or as
a fully defined Heliographic Stonyhurst coordinate for a spacecraft or
precise location.SkyCoord or a frame. Keep rsun explicit when comparing data products that
use different solar radii.make_3d() assumes the solar surface; off-limb
geometry needs a documented PlanarScreen or SphericalScreen assumption..transform_to(destination_frame). For observer changes,
make both source and destination observers/times explicit. Do not call the
low-level functions in sunpy.coordinates._transformations directly.obstime, observer, component units,
shape, finiteness, and (when meaningful) a round trip. A changed longitude
after changing obstime is normally frame evolution, not motion of the
object; use a propagation context or RotatedSunFrame when physical solar
rotation is intended.Map header creation, pixel/WCS plotting, and reprojection belong to the maps
route; Fido and remote data acquisition belong to data access; TimeSeries
index/data operations belong to the TimeSeries route. SPICE kernels and
get_horizons_coord() are documentation-only here because they require
external kernels or a network service. Magnetic frames may require a valid
observation time and use the packaged IGRF data; they are not a substitute for
mission-specific magnetic-field models.