Skip to content

SVOM

SVOM parsers cover GRM, ECLAIRs, MXT, and generic retraction VOEvent notices. Retractions are detected from the notice payload and parsed into their own model.

The exact GCN topics covered by the parsers are:

  • gcn.notices.svom.voevent.grm
  • gcn.notices.svom.voevent.eclairs
  • gcn.notices.svom.voevent.mxt

Classes

SvomEclairs

Bases: BaseModel

Parsed SVOM ECLAIRs VOEvent notice (N1e).

Covers all ECLAIRs notice types: wake-up (202), catalog trigger (203), slewing (204), and not-slewing (205). The specific notice type is identified by packet_type.

Attributes:

Name Type Description
author_contact_name str

Contact name of the notice author.

author_email str

Email address of the notice author.

alert_datetime Annotated[datetime, ISO8601]

UTC datetime when the notice was issued (ISO-8601).

ivorn str

Raw VOEvent IVORN identifying this notice instance.

packet_type SvomPacket

ECLAIRs notice type identifier.

pkt_ser_num int

Serial number for this packet type.

instrument str

Instrument involved ("ECLAIRs").

notice_level str

SVOM notice level ("N1e").

burst_id str

Identifier of the alert sequence (sbYYMMDDnn).

snr Annotated[float, sigma]

Signal-to-noise ratio in the reconstructed ECLAIRs image (sigma).

timescale Annotated[float, s]

Time window in which the burst was detected (s).

time_window_start Annotated[datetime, ISO8601]

Start time of the detection time window (ISO-8601).

time_window_end Annotated[datetime, ISO8601]

End time of the detection time window (ISO-8601).

lower_energy_bound Annotated[int, keV]

Lower energy bound of the detection range (keV).

upper_energy_bound Annotated[int, keV]

Upper energy bound of the detection range (keV).

trigger_type str

Type of trigger ("CRT" for count-rate trigger or "IMT" for image trigger).

galactic_lon Annotated[float, deg]

Galactic longitude of the target (deg).

galactic_lat Annotated[float, deg]

Galactic latitude of the target (deg).

moon_angle Annotated[float, deg]

Angular distance between the target and the Moon (deg).

sun_angle Annotated[float, deg]

Angular distance between the target and the Sun (deg).

slew_status str

Slew status of the SVOM platform.

attitude_ra Annotated[float, deg]

Platform attitude Right Ascension (deg).

attitude_dec Annotated[float, deg]

Platform attitude Declination (deg).

attitude_roll Annotated[float, deg]

Platform attitude Roll angle (deg).

sat_longitude Annotated[float | None, deg]

Satellite geodetic longitude (deg).

sat_latitude Annotated[float | None, deg]

Satellite geodetic latitude (deg).

sat_altitude Annotated[float | None, km]

Satellite altitude (km).

burst_datetime Annotated[datetime, ISO8601]

UTC time of the trigger event (ISO-8601).

ra Annotated[float, deg]

Right Ascension of the detection (deg).

dec Annotated[float, deg]

Declination of the detection (deg).

error_radius Annotated[float, deg]

R90 uncertainty radius of the localisation (deg).

description str | None

Description of the notice.

reference_uri str | None

URL to the ECLAIRs instrument description.

alert_seq_t0 Annotated[datetime | None, ISO8601]

Time of the alert sequence T0 (ISO-8601). None for basic wake-up and catalog notices.

onboard_catalog_id int | None

Identifier of the source in the ECLAIRs on-board catalogue. None for non-catalog notices.

source_name str | None

Name of the source in the ECLAIRs on-board catalogue. None for non-catalog notices.

followups tuple[str, ...]

IVORNs of previously published notices for the same event.

Source code in gcn_parser/svom/svom_eclairs.py
class SvomEclairs(BaseModel):
    """Parsed SVOM ECLAIRs VOEvent notice (N1e).

    Covers all ECLAIRs notice types: wake-up (202), catalog trigger (203),
    slewing (204), and not-slewing (205). The specific notice type is
    identified by ``packet_type``.

    Attributes:
        author_contact_name: Contact name of the notice author.
        author_email: Email address of the notice author.
        alert_datetime: UTC datetime when the notice was issued (ISO-8601).
        ivorn: Raw VOEvent IVORN identifying this notice instance.
        packet_type: ECLAIRs notice type identifier.
        pkt_ser_num: Serial number for this packet type.
        instrument: Instrument involved (``"ECLAIRs"``).
        notice_level: SVOM notice level (``"N1e"``).
        burst_id: Identifier of the alert sequence (``sbYYMMDDnn``).
        snr: Signal-to-noise ratio in the reconstructed ECLAIRs image (sigma).
        timescale: Time window in which the burst was detected (s).
        time_window_start: Start time of the detection time window (ISO-8601).
        time_window_end: End time of the detection time window (ISO-8601).
        lower_energy_bound: Lower energy bound of the detection range (keV).
        upper_energy_bound: Upper energy bound of the detection range (keV).
        trigger_type: Type of trigger (``"CRT"`` for count-rate trigger or
            ``"IMT"`` for image trigger).
        galactic_lon: Galactic longitude of the target (deg).
        galactic_lat: Galactic latitude of the target (deg).
        moon_angle: Angular distance between the target and the Moon (deg).
        sun_angle: Angular distance between the target and the Sun (deg).
        slew_status: Slew status of the SVOM platform.
        attitude_ra: Platform attitude Right Ascension (deg).
        attitude_dec: Platform attitude Declination (deg).
        attitude_roll: Platform attitude Roll angle (deg).
        sat_longitude: Satellite geodetic longitude (deg).
        sat_latitude: Satellite geodetic latitude (deg).
        sat_altitude: Satellite altitude (km).
        burst_datetime: UTC time of the trigger event (ISO-8601).
        ra: Right Ascension of the detection (deg).
        dec: Declination of the detection (deg).
        error_radius: R90 uncertainty radius of the localisation (deg).
        description: Description of the notice.
        reference_uri: URL to the ECLAIRs instrument description.
        alert_seq_t0: Time of the alert sequence T0 (ISO-8601). ``None`` for
            basic wake-up and catalog notices.
        onboard_catalog_id: Identifier of the source in the ECLAIRs on-board
            catalogue. ``None`` for non-catalog notices.
        source_name: Name of the source in the ECLAIRs on-board catalogue.
            ``None`` for non-catalog notices.
        followups: IVORNs of previously published notices for the same event.

    """

    author_contact_name: str
    author_email: str
    alert_datetime: Annotated[datetime, "ISO8601"]
    ivorn: str
    packet_type: SvomPacket
    pkt_ser_num: int
    instrument: str
    notice_level: str
    burst_id: str
    snr: Annotated[float, "sigma"]
    timescale: Annotated[float, "s"]
    time_window_start: Annotated[datetime, "ISO8601"]
    time_window_end: Annotated[datetime, "ISO8601"]
    lower_energy_bound: Annotated[int, "keV"]
    upper_energy_bound: Annotated[int, "keV"]
    trigger_type: str
    galactic_lon: Annotated[float, "deg"]
    galactic_lat: Annotated[float, "deg"]
    moon_angle: Annotated[float, "deg"]
    sun_angle: Annotated[float, "deg"]
    slew_status: str
    attitude_ra: Annotated[float, "deg"]
    attitude_dec: Annotated[float, "deg"]
    attitude_roll: Annotated[float, "deg"]
    sat_longitude: Annotated[float | None, "deg"]
    sat_latitude: Annotated[float | None, "deg"]
    sat_altitude: Annotated[float | None, "km"]
    burst_datetime: Annotated[datetime, "ISO8601"]
    ra: Annotated[float, "deg"]
    dec: Annotated[float, "deg"]
    error_radius: Annotated[float, "deg"]
    description: str | None
    reference_uri: str | None
    alert_seq_t0: Annotated[datetime | None, "ISO8601"] = None
    onboard_catalog_id: int | None = None
    source_name: str | None = None
    followups: tuple[str, ...] = ()

SvomGrm

Bases: BaseModel

Parsed SVOM GRM trigger notice (N1g, Packet_Type=201).

Issued when at least 2 out of the 3 Gamma-Ray Detectors (GRDs) are triggered. If only 2 GRDs trigger, only the trigger time is provided and no localisation or target fields are available (ra, dec, error_radius, galactic targets are None). With all 3 GRDs, localisation is provided but the error radius is set to -1 (not computable on-board).

Attributes:

Name Type Description
author_contact_name str

Contact name of the notice author.

author_email str

Email address of the notice author.

alert_datetime Annotated[datetime, ISO8601]

UTC datetime when the notice was issued (ISO-8601).

ivorn str

Raw VOEvent IVORN identifying this notice instance.

packet_type SvomPacket

GCN packet type identifier (201 for GRM trigger).

pkt_ser_num int

Serial number for this packet type.

instrument str

Instrument involved ("GRM").

notice_level str

SVOM notice level ("N1g").

burst_id str

Identifier of the alert sequence (sbYYMMDDnn).

alert_seq_t0 Annotated[datetime | None, ISO8601]

Time of the alert sequence T0 (ISO-8601).

snr Annotated[float, sigma]

Signal-to-noise ratio of the detection (sigma).

timescale Annotated[float, s]

Time window in which the burst was detected (s).

time_window_start Annotated[datetime, ISO8601]

Start time of the detection time window (ISO-8601).

time_window_end Annotated[datetime, ISO8601]

End time of the detection time window (ISO-8601).

lower_energy_bound Annotated[float, keV]

Lower energy bound of the detection range (keV).

upper_energy_bound Annotated[float, keV]

Upper energy bound of the detection range (keV).

triggered_grds str

Trigger status of the 3 GRDs (e.g. "111", "110", "101", "011"). Each digit corresponds to one GRD; 1 means triggered, 0 means not.

galactic_lon Annotated[float | None, deg]

Galactic longitude of the target (deg). None when only 2 GRDs trigger.

galactic_lat Annotated[float | None, deg]

Galactic latitude of the target (deg). None when only 2 GRDs trigger.

moon_angle Annotated[float | None, deg]

Angular distance between the target and the Moon (deg). None when only 2 GRDs trigger.

sun_angle Annotated[float | None, deg]

Angular distance between the target and the Sun (deg). None when only 2 GRDs trigger.

attitude_ra Annotated[float, deg]

Platform attitude Right Ascension (deg).

attitude_dec Annotated[float, deg]

Platform attitude Declination (deg).

attitude_roll Annotated[float, deg]

Platform attitude Roll angle (deg).

sat_longitude Annotated[float, deg]

Satellite geodetic longitude (deg).

sat_latitude Annotated[float, deg]

Satellite geodetic latitude (deg).

sat_altitude Annotated[float, km]

Satellite altitude (km).

burst_datetime Annotated[datetime, ISO8601]

UTC time of the trigger event (ISO-8601).

ra Annotated[float | None, deg]

Right Ascension of the detection (deg). None when only 2 GRDs trigger.

dec Annotated[float | None, deg]

Declination of the detection (deg). None when only 2 GRDs trigger.

error_radius Annotated[float | None, deg]

R90 uncertainty radius (deg). Set to -1 when all 3 GRDs trigger but no error can be computed; None when only 2 GRDs trigger.

description str

Description of the notice.

reference_uri str

URL to the GRM instrument description.

Source code in gcn_parser/svom/svom_grm.py
class SvomGrm(BaseModel):
    """Parsed SVOM GRM trigger notice (N1g, Packet_Type=201).

    Issued when at least 2 out of the 3 Gamma-Ray Detectors (GRDs) are
    triggered. If only 2 GRDs trigger, only the trigger time is provided
    and no localisation or target fields are available (ra, dec,
    error_radius, galactic targets are ``None``). With all 3 GRDs,
    localisation is provided but the error radius is set to -1 (not
    computable on-board).

    Attributes:
        author_contact_name: Contact name of the notice author.
        author_email: Email address of the notice author.
        alert_datetime: UTC datetime when the notice was issued (ISO-8601).
        ivorn: Raw VOEvent IVORN identifying this notice instance.
        packet_type: GCN packet type identifier (201 for GRM trigger).
        pkt_ser_num: Serial number for this packet type.
        instrument: Instrument involved (``"GRM"``).
        notice_level: SVOM notice level (``"N1g"``).
        burst_id: Identifier of the alert sequence (``sbYYMMDDnn``).
        alert_seq_t0: Time of the alert sequence T0 (ISO-8601).
        snr: Signal-to-noise ratio of the detection (sigma).
        timescale: Time window in which the burst was detected (s).
        time_window_start: Start time of the detection time window (ISO-8601).
        time_window_end: End time of the detection time window (ISO-8601).
        lower_energy_bound: Lower energy bound of the detection range (keV).
        upper_energy_bound: Upper energy bound of the detection range (keV).
        triggered_grds: Trigger status of the 3 GRDs (e.g. ``"111"``,
            ``"110"``, ``"101"``, ``"011"``). Each digit corresponds to one
            GRD; 1 means triggered, 0 means not.
        galactic_lon: Galactic longitude of the target (deg). ``None`` when
            only 2 GRDs trigger.
        galactic_lat: Galactic latitude of the target (deg). ``None`` when
            only 2 GRDs trigger.
        moon_angle: Angular distance between the target and the Moon (deg).
            ``None`` when only 2 GRDs trigger.
        sun_angle: Angular distance between the target and the Sun (deg).
            ``None`` when only 2 GRDs trigger.
        attitude_ra: Platform attitude Right Ascension (deg).
        attitude_dec: Platform attitude Declination (deg).
        attitude_roll: Platform attitude Roll angle (deg).
        sat_longitude: Satellite geodetic longitude (deg).
        sat_latitude: Satellite geodetic latitude (deg).
        sat_altitude: Satellite altitude (km).
        burst_datetime: UTC time of the trigger event (ISO-8601).
        ra: Right Ascension of the detection (deg). ``None`` when only 2
            GRDs trigger.
        dec: Declination of the detection (deg). ``None`` when only 2 GRDs
            trigger.
        error_radius: R90 uncertainty radius (deg). Set to -1 when all 3
            GRDs trigger but no error can be computed; ``None`` when only 2
            GRDs trigger.
        description: Description of the notice.
        reference_uri: URL to the GRM instrument description.

    """

    author_contact_name: str
    author_email: str
    alert_datetime: Annotated[datetime, "ISO8601"]
    ivorn: str
    packet_type: SvomPacket
    pkt_ser_num: int
    instrument: str
    notice_level: str
    burst_id: str
    alert_seq_t0: Annotated[datetime | None, "ISO8601"] = None
    snr: Annotated[float, "sigma"]
    timescale: Annotated[float, "s"]
    time_window_start: Annotated[datetime, "ISO8601"]
    time_window_end: Annotated[datetime, "ISO8601"]
    lower_energy_bound: Annotated[float, "keV"]
    upper_energy_bound: Annotated[float, "keV"]
    triggered_grds: str
    galactic_lon: Annotated[float | None, "deg"] = None
    galactic_lat: Annotated[float | None, "deg"] = None
    moon_angle: Annotated[float | None, "deg"] = None
    sun_angle: Annotated[float | None, "deg"] = None
    attitude_ra: Annotated[float, "deg"]
    attitude_dec: Annotated[float, "deg"]
    attitude_roll: Annotated[float, "deg"]
    sat_longitude: Annotated[float, "deg"]
    sat_latitude: Annotated[float, "deg"]
    sat_altitude: Annotated[float, "km"]
    burst_datetime: Annotated[datetime, "ISO8601"]
    ra: Annotated[float | None, "deg"] = None
    dec: Annotated[float | None, "deg"] = None
    error_radius: Annotated[float | None, "deg"] = None
    description: str
    reference_uri: str

SvomMxt

Bases: BaseModel

Parsed SVOM MXT notice.

Covers both packet-209 initial notices and packet-210 update notices. The raw VOEvent identity is preserved in ivorn.

Attributes:

Name Type Description
author_contact_name str

Contact name of the notice author.

author_email str

Email address of the notice author.

alert_datetime Annotated[datetime, ISO8601]

UTC datetime when the notice was issued (ISO-8601).

ivorn str

Raw VOEvent IVORN identifying this notice instance.

packet_type SvomPacket

MXT notice type identifier: 209 for the first detection, 210 when the detection quality factor improves.

pkt_ser_num int

Serial number for this packet type.

instrument str

Instrument involved ("MXT").

notice_level str

SVOM notice level ("N2m").

burst_id str

Identifier of the alert sequence (sbYYMMDDnn).

alert_seq_t0 Annotated[datetime | None, ISO8601]

Time of the alert sequence T0 (ISO-8601). None when absent from the notice.

snr Annotated[float, sigma]

Signal-to-noise ratio of the MXT detection (sigma), saturating at 255.

mean_flux float

Mean flux of the detected source (erg.cm^-2.s^-1).

flux_error float

Mean flux error of the detection (erg.cm^-2.s^-1).

within_eclairs_r90 bool

Whether the MXT source is compatible with the ECLAIRs R90 localisation.

eclairs_angle Annotated[float, arcmin]

Angular distance between the MXT and ECLAIRs localisations (arcmin).

galactic_lon Annotated[float, deg]

Galactic longitude of the target (deg).

galactic_lat Annotated[float, deg]

Galactic latitude of the target (deg).

moon_angle Annotated[float, deg]

Angular distance between the target and the Moon (deg).

sun_angle Annotated[float, deg]

Angular distance between the target and the Sun (deg).

use_vt_attitude bool

Whether the platform is in high-stability mode using VT attitude instead of the platform star tracker.

attitude_ra Annotated[float, deg]

Platform attitude Right Ascension (deg).

attitude_dec Annotated[float, deg]

Platform attitude Declination (deg).

attitude_roll Annotated[float, deg]

Platform attitude Roll angle (deg).

sat_longitude Annotated[float, deg]

Satellite geodetic longitude (deg).

sat_latitude Annotated[float, deg]

Satellite geodetic latitude (deg).

sat_altitude Annotated[float, km]

Satellite altitude (km).

burst_datetime Annotated[datetime, ISO8601]

UTC time of the MXT detection event (ISO-8601).

ra Annotated[float, deg]

Right Ascension of the MXT localisation (deg).

dec Annotated[float, deg]

Declination of the MXT localisation (deg).

error_radius Annotated[float, deg]

R90 uncertainty radius of the MXT localisation (deg).

description str

Description of the notice.

reference_uri str

URL to the MXT instrument description.

followups tuple[str, ...]

IVORNs of previously published notices for the same event.

Source code in gcn_parser/svom/svom_mxt.py
class SvomMxt(BaseModel):
    """Parsed SVOM MXT notice.

    Covers both packet-209 initial notices and packet-210 update notices.
    The raw VOEvent identity is preserved in ``ivorn``.

    Attributes:
        author_contact_name: Contact name of the notice author.
        author_email: Email address of the notice author.
        alert_datetime: UTC datetime when the notice was issued (ISO-8601).
        ivorn: Raw VOEvent IVORN identifying this notice instance.
        packet_type: MXT notice type identifier: 209 for the first detection,
            210 when the detection quality factor improves.
        pkt_ser_num: Serial number for this packet type.
        instrument: Instrument involved (``"MXT"``).
        notice_level: SVOM notice level (``"N2m"``).
        burst_id: Identifier of the alert sequence (``sbYYMMDDnn``).
        alert_seq_t0: Time of the alert sequence T0 (ISO-8601). ``None``
            when absent from the notice.
        snr: Signal-to-noise ratio of the MXT detection (sigma), saturating
            at 255.
        mean_flux: Mean flux of the detected source (erg.cm^-2.s^-1).
        flux_error: Mean flux error of the detection (erg.cm^-2.s^-1).
        within_eclairs_r90: Whether the MXT source is compatible with the
            ECLAIRs R90 localisation.
        eclairs_angle: Angular distance between the MXT and ECLAIRs
            localisations (arcmin).
        galactic_lon: Galactic longitude of the target (deg).
        galactic_lat: Galactic latitude of the target (deg).
        moon_angle: Angular distance between the target and the Moon (deg).
        sun_angle: Angular distance between the target and the Sun (deg).
        use_vt_attitude: Whether the platform is in high-stability mode using
            VT attitude instead of the platform star tracker.
        attitude_ra: Platform attitude Right Ascension (deg).
        attitude_dec: Platform attitude Declination (deg).
        attitude_roll: Platform attitude Roll angle (deg).
        sat_longitude: Satellite geodetic longitude (deg).
        sat_latitude: Satellite geodetic latitude (deg).
        sat_altitude: Satellite altitude (km).
        burst_datetime: UTC time of the MXT detection event (ISO-8601).
        ra: Right Ascension of the MXT localisation (deg).
        dec: Declination of the MXT localisation (deg).
        error_radius: R90 uncertainty radius of the MXT localisation (deg).
        description: Description of the notice.
        reference_uri: URL to the MXT instrument description.
        followups: IVORNs of previously published notices for the same event.

    """

    author_contact_name: str
    author_email: str
    alert_datetime: Annotated[datetime, "ISO8601"]
    ivorn: str
    packet_type: SvomPacket
    pkt_ser_num: int
    instrument: str
    notice_level: str
    burst_id: str
    alert_seq_t0: Annotated[datetime | None, "ISO8601"] = None
    snr: Annotated[float, "sigma"]
    mean_flux: float
    flux_error: float
    within_eclairs_r90: bool
    eclairs_angle: Annotated[float, "arcmin"]
    galactic_lon: Annotated[float, "deg"]
    galactic_lat: Annotated[float, "deg"]
    moon_angle: Annotated[float, "deg"]
    sun_angle: Annotated[float, "deg"]
    use_vt_attitude: bool
    attitude_ra: Annotated[float, "deg"]
    attitude_dec: Annotated[float, "deg"]
    attitude_roll: Annotated[float, "deg"]
    sat_longitude: Annotated[float, "deg"]
    sat_latitude: Annotated[float, "deg"]
    sat_altitude: Annotated[float, "km"]
    burst_datetime: Annotated[datetime, "ISO8601"]
    ra: Annotated[float, "deg"]
    dec: Annotated[float, "deg"]
    error_radius: Annotated[float, "deg"]
    description: str
    reference_uri: str
    followups: tuple[str, ...]

SvomRetraction

Bases: BaseModel

Parsed generic SVOM packet-219 retraction notice.

Retractions are modeled as their own document shape and preserve the raw cited IVORNs in retractions.

Attributes:

Name Type Description
author_contact_name str

Contact name of the notice author.

author_email str

Email address of the notice author.

alert_datetime Annotated[datetime, ISO8601]

UTC datetime when the retraction notice was issued (ISO-8601).

ivorn str

Raw VOEvent IVORN identifying this retraction notice instance.

packet_type SvomPacket

SVOM retraction notice type identifier (219).

pkt_ser_num int

Serial number for this packet type.

instrument str

Instrument associated with the retracted alert sequence.

notice_level str

SVOM notice level for the retraction.

burst_id str

Identifier of the alert sequence (sbYYMMDDnn).

alert_seq_t0 Annotated[datetime | None, ISO8601]

Time of the alert sequence T0 (ISO-8601). None when absent from the notice.

snr Annotated[float, sigma]

Signal-to-noise ratio of the original detection (sigma).

timescale Annotated[float, s]

Time window in which the original burst was detected (s).

time_window_start Annotated[datetime, ISO8601]

Start time of the original detection time window (ISO-8601).

time_window_end Annotated[datetime, ISO8601]

End time of the original detection time window (ISO-8601).

lower_energy_bound Annotated[int, keV]

Lower energy bound of the original detection range (keV).

upper_energy_bound Annotated[int, keV]

Upper energy bound of the original detection range (keV).

trigger_type str | None

Type of original ECLAIRs trigger, when present.

galactic_lon Annotated[float | None, deg]

Galactic longitude of the retracted target (deg). None when absent from the notice.

galactic_lat Annotated[float | None, deg]

Galactic latitude of the retracted target (deg). None when absent from the notice.

moon_angle Annotated[float | None, deg]

Angular distance between the target and the Moon (deg). None when absent from the notice.

sun_angle Annotated[float | None, deg]

Angular distance between the target and the Sun (deg). None when absent from the notice.

slew_status str | None

Slew status of the SVOM platform, when present.

attitude_ra Annotated[float, deg]

Platform attitude Right Ascension (deg).

attitude_dec Annotated[float, deg]

Platform attitude Declination (deg).

attitude_roll Annotated[float, deg]

Platform attitude Roll angle (deg).

sat_longitude Annotated[float | None, deg]

Satellite geodetic longitude (deg). None when absent from the notice.

sat_latitude Annotated[float | None, deg]

Satellite geodetic latitude (deg). None when absent from the notice.

sat_altitude Annotated[float | None, km]

Satellite altitude (km). None when absent from the notice.

burst_datetime Annotated[datetime, ISO8601]

UTC time of the original trigger event (ISO-8601).

ra Annotated[float | None, deg]

Right Ascension of the retracted localisation (deg). None when no localisation is provided.

dec Annotated[float | None, deg]

Declination of the retracted localisation (deg). None when no localisation is provided.

error_radius Annotated[float | None, deg]

R90 uncertainty radius of the retracted localisation (deg). None when no localisation is provided.

description str | None

Human-readable reason for the retraction.

reference_uri str | None

URL to the instrument description. None when the retraction notice does not include a reference.

retractions tuple[str, ...]

IVORNs of previously published notices retracted by this notice.

Source code in gcn_parser/svom/svom_retraction.py
class SvomRetraction(BaseModel):
    """Parsed generic SVOM packet-219 retraction notice.

    Retractions are modeled as their own document shape and preserve the raw
    cited IVORNs in ``retractions``.

    Attributes:
        author_contact_name: Contact name of the notice author.
        author_email: Email address of the notice author.
        alert_datetime: UTC datetime when the retraction notice was issued
            (ISO-8601).
        ivorn: Raw VOEvent IVORN identifying this retraction notice instance.
        packet_type: SVOM retraction notice type identifier (219).
        pkt_ser_num: Serial number for this packet type.
        instrument: Instrument associated with the retracted alert sequence.
        notice_level: SVOM notice level for the retraction.
        burst_id: Identifier of the alert sequence (``sbYYMMDDnn``).
        alert_seq_t0: Time of the alert sequence T0 (ISO-8601). ``None``
            when absent from the notice.
        snr: Signal-to-noise ratio of the original detection (sigma).
        timescale: Time window in which the original burst was detected (s).
        time_window_start: Start time of the original detection time window
            (ISO-8601).
        time_window_end: End time of the original detection time window
            (ISO-8601).
        lower_energy_bound: Lower energy bound of the original detection
            range (keV).
        upper_energy_bound: Upper energy bound of the original detection
            range (keV).
        trigger_type: Type of original ECLAIRs trigger, when present.
        galactic_lon: Galactic longitude of the retracted target (deg).
            ``None`` when absent from the notice.
        galactic_lat: Galactic latitude of the retracted target (deg).
            ``None`` when absent from the notice.
        moon_angle: Angular distance between the target and the Moon (deg).
            ``None`` when absent from the notice.
        sun_angle: Angular distance between the target and the Sun (deg).
            ``None`` when absent from the notice.
        slew_status: Slew status of the SVOM platform, when present.
        attitude_ra: Platform attitude Right Ascension (deg).
        attitude_dec: Platform attitude Declination (deg).
        attitude_roll: Platform attitude Roll angle (deg).
        sat_longitude: Satellite geodetic longitude (deg). ``None`` when
            absent from the notice.
        sat_latitude: Satellite geodetic latitude (deg). ``None`` when absent
            from the notice.
        sat_altitude: Satellite altitude (km). ``None`` when absent from the
            notice.
        burst_datetime: UTC time of the original trigger event (ISO-8601).
        ra: Right Ascension of the retracted localisation (deg). ``None``
            when no localisation is provided.
        dec: Declination of the retracted localisation (deg). ``None`` when
            no localisation is provided.
        error_radius: R90 uncertainty radius of the retracted localisation
            (deg). ``None`` when no localisation is provided.
        description: Human-readable reason for the retraction.
        reference_uri: URL to the instrument description. ``None`` when the
            retraction notice does not include a reference.
        retractions: IVORNs of previously published notices retracted by this
            notice.

    """

    author_contact_name: str
    author_email: str
    alert_datetime: Annotated[datetime, "ISO8601"]
    ivorn: str
    packet_type: SvomPacket
    pkt_ser_num: int
    instrument: str
    notice_level: str
    burst_id: str
    alert_seq_t0: Annotated[datetime | None, "ISO8601"] = None
    snr: Annotated[float, "sigma"]
    timescale: Annotated[float, "s"]
    time_window_start: Annotated[datetime, "ISO8601"]
    time_window_end: Annotated[datetime, "ISO8601"]
    lower_energy_bound: Annotated[int, "keV"]
    upper_energy_bound: Annotated[int, "keV"]
    trigger_type: str | None = None
    galactic_lon: Annotated[float | None, "deg"] = None
    galactic_lat: Annotated[float | None, "deg"] = None
    moon_angle: Annotated[float | None, "deg"] = None
    sun_angle: Annotated[float | None, "deg"] = None
    slew_status: str | None = None
    attitude_ra: Annotated[float, "deg"]
    attitude_dec: Annotated[float, "deg"]
    attitude_roll: Annotated[float, "deg"]
    sat_longitude: Annotated[float | None, "deg"] = None
    sat_latitude: Annotated[float | None, "deg"] = None
    sat_altitude: Annotated[float | None, "km"] = None
    burst_datetime: Annotated[datetime, "ISO8601"]
    ra: Annotated[float | None, "deg"] = None
    dec: Annotated[float | None, "deg"] = None
    error_radius: Annotated[float | None, "deg"] = None
    description: str | None = None
    reference_uri: str | None = None
    retractions: tuple[str, ...]

SvomPacket

Bases: IntEnum

SVOM ECLAIRs notice packet type identifiers.

Source code in gcn_parser/svom/_svom.py
class SvomPacket(IntEnum):
    """SVOM ECLAIRs notice packet type identifiers."""

    GRM_TRIGGER = 201
    ECLAIR_WAKEUP = 202
    ECLAIR_CATALOG = 203
    ECLAIR_SLEWING = 204
    ECLAIR_NOT_SLEWING = 205
    MXT_INITIAL = 209
    MXT_UPDATE = 210
    VT_CANDIDATE = 211
    RETRACTION = 219

Functions

parse_svom_eclairs(value)

Parses an SVOM ECLAIRs VOEvent notice from bytes.

Parameters:

Name Type Description Default
value bytes

Raw XML bytes of the VOEvent notice.

required

Returns:

Type Description
SvomEclairs

Parsed ECLAIRs notice model.

Raises:

Type Description
ParseError

If the XML document cannot be parsed, the Packet_Type is not a known ECLAIRs notice type, or model validation fails.

FieldParseError

If a specific field cannot be extracted from the notice.

Source code in gcn_parser/svom/svom_eclairs.py
def parse_svom_eclairs(value: bytes) -> SvomEclairs:
    """Parses an SVOM ECLAIRs VOEvent notice from bytes.

    Args:
        value: Raw XML bytes of the VOEvent notice.

    Returns:
        Parsed ECLAIRs notice model.

    Raises:
        ParseError: If the XML document cannot be parsed, the
            ``Packet_Type`` is not a known ECLAIRs notice type, or model
            validation fails.
        FieldParseError: If a specific field cannot be extracted from the
            notice.
    """
    return parse_voevent_notice(
        value,
        SvomEclairs,
        "parse_svom_eclairs",
        {
            "VOEvent": _ROOT_RULES,
            "Who": _WHO_RULES,
            "What": _WHAT_RULES,
            "WhereWhen": _WHEREWHEN_RULES,
            "How": _HOW_RULES,
            "Citations": _CITATIONS_RULES,
        },
    )

parse_svom_grm_trigger(value)

Parses an SVOM GRM trigger notice from bytes.

Parameters:

Name Type Description Default
value bytes

Raw XML bytes of the VOEvent notice.

required

Returns:

Type Description
SvomGrm

Parsed GRM trigger notice model.

Raises:

Type Description
ParseError

If the XML document cannot be parsed or model validation fails.

FieldParseError

If a specific field cannot be extracted from the notice.

Source code in gcn_parser/svom/svom_grm.py
def parse_svom_grm_trigger(value: bytes) -> SvomGrm:
    """Parses an SVOM GRM trigger notice from bytes.

    Args:
        value: Raw XML bytes of the VOEvent notice.

    Returns:
        Parsed GRM trigger notice model.

    Raises:
        ParseError: If the XML document cannot be parsed or model validation
            fails.
        FieldParseError: If a specific field cannot be extracted from the
            notice.
    """
    return parse_voevent_notice(
        value,
        SvomGrm,
        "parse_svom_grm_trigger",
        {
            "VOEvent": _ROOT_RULES,
            "Who": _WHO_RULES,
            "What": _WHAT_RULES,
            "WhereWhen": _WHEREWHEN_RULES,
            "How": _HOW_RULES,
        },
    )

parse_svom_mxt(value)

Parses an SVOM MXT notice from bytes.

Parameters:

Name Type Description Default
value bytes

Raw XML bytes of the VOEvent notice.

required

Returns:

Type Description
SvomMxt

Parsed MXT notice model.

Raises:

Type Description
ParseError

If the XML document cannot be parsed or model validation fails.

FieldParseError

If a specific field cannot be extracted from the notice.

Source code in gcn_parser/svom/svom_mxt.py
def parse_svom_mxt(value: bytes) -> SvomMxt:
    """Parses an SVOM MXT notice from bytes.

    Args:
        value: Raw XML bytes of the VOEvent notice.

    Returns:
        Parsed MXT notice model.

    Raises:
        ParseError: If the XML document cannot be parsed or model validation
            fails.
        FieldParseError: If a specific field cannot be extracted from the
            notice.
    """
    return parse_voevent_notice(
        value,
        SvomMxt,
        "parse_svom_mxt",
        {
            "VOEvent": _ROOT_RULES,
            "Who": _WHO_RULES,
            "What": _WHAT_RULES,
            "WhereWhen": _WHEREWHEN_RULES,
            "How": _HOW_RULES,
            "Citations": _CITATIONS_RULES,
        },
    )

parse_svom_retraction(value)

Parses a generic SVOM retraction notice from bytes.

Parameters:

Name Type Description Default
value bytes

Raw XML bytes of the VOEvent notice.

required

Returns:

Type Description
SvomRetraction

Parsed retraction notice model.

Raises:

Type Description
ParseError

If the XML document cannot be parsed or model validation fails.

FieldParseError

If a specific field cannot be extracted from the notice.

Source code in gcn_parser/svom/svom_retraction.py
def parse_svom_retraction(value: bytes) -> SvomRetraction:
    """Parses a generic SVOM retraction notice from bytes.

    Args:
        value: Raw XML bytes of the VOEvent notice.

    Returns:
        Parsed retraction notice model.

    Raises:
        ParseError: If the XML document cannot be parsed or model validation
            fails.
        FieldParseError: If a specific field cannot be extracted from the
            notice.
    """
    return parse_voevent_notice(
        value,
        SvomRetraction,
        "parse_svom_retraction",
        {
            "VOEvent": _ROOT_RULES,
            "Who": _WHO_RULES,
            "What": _WHAT_RULES,
            "WhereWhen": _WHEREWHEN_RULES,
            "How": _HOW_RULES,
            "Citations": _CITATIONS_RULES,
        },
    )

is_svom_retraction(value)

Checks whether the notice is a SVOM retraction.

Parameters:

Name Type Description Default
value bytes

Raw XML bytes of the VOEvent notice.

required

Returns:

Type Description
bool

True if the notice is a SVOM retraction.

Source code in gcn_parser/svom/svom_retraction.py
def is_svom_retraction(value: bytes) -> bool:
    """Checks whether the notice is a SVOM retraction.

    Args:
        value: Raw XML bytes of the VOEvent notice.

    Returns:
        True if the notice is a SVOM retraction.
    """
    root = parse_voevent_root(value, "is_svom_retraction")
    return int(param(root, "Packet_Type")) == SvomPacket.RETRACTION

References