Brokers¶
Base Broker Class¶
- tom_alerts.alerts.get_service_classes()¶
Gets the broker classes available to this TOM as specified by
TOM_ALERT_CLASSES
insettings.py
. If none are specified, returns the default set.- Returns:
dict of broker classes, with keys being the name of the broker and values being the broker class
- Return type:
dict
- tom_alerts.alerts.get_service_class(name)¶
Gets the specific broker class for a given broker name.
- Returns:
Broker class
- Return type:
class
- class tom_alerts.alerts.GenericAlert(timestamp: datetime, id: int, name: str, ra: float, dec: float, mag: float, score: float, url: str)¶
dataclass representing an alert in order to display it in the UI.
- to_target()¶
Returns a Target instance for an object defined by an alert, as well as any TargetExtra or additional TargetNames.
- Returns:
representation of object for an alert
- Return type:
Target
- Returns:
dict of extras to be added to the new Target
- Return type:
dict
- Returns:
list of aliases to be added to the new Target
- Return type:
list
- class tom_alerts.alerts.GenericQueryForm(*args, **kwargs)¶
Form class representing the default form for a broker.
- save(query_id=None)¶
Saves the form data in the database as a
BrokerQuery
.- Returns:
BrokerQuery
model representation of the form that was saved to the db- Return type:
BrokerQuery
- class tom_alerts.alerts.GenericBroker¶
The
GenericBroker
provides an interface for implementing a broker module. It contains a number of methods to be implemented, but only the methods decorated with@abstractmethod
are required to be implemented. In order to make use of a broker module, add the path toTOM_ALERT_CLASSES
in yoursettings.py
.For an implementation example, please see https://github.com/TOMToolkit/tom_base/blob/main/tom_alerts/brokers/mars.py
- abstract fetch_alerts(parameters: dict)¶
This method takes in the query parameters needed to filter alerts for a broker and makes the GET query to the broker endpoint.
- Parameters:
parameters (dict) – JSON string of query parameters
- fetch_alert(alert_id)¶
This method takes an alert id and retrieves the specific alert data from the given broker.
- Parameters:
alert_id (str) – Broker-specific id corresponding with the desired alert
- process_reduced_data(target, alert=None)¶
Retrieves and creates records for any reduced data provided by a specific broker. Updates existing data if it has changed.
- Parameters:
target (Target) –
Target
object that was previously created from aBrokerQuery
alertalert (str) – alert data from a particular
BrokerQuery
- to_target(alert)¶
Creates
Target
object from the broker-specific alert data.- Parameters:
alert (str) – alert data from a particular
BrokerQuery
- submit_upstream_alert(target=None, observation_record=None, **kwargs)¶
Submits an alert upstream back to the broker. At least one of a target or an observation record must be provided.
- Parameters:
target (
Target
) –Target
object to be converted to an alert and submitted upstreamobservation_record (
ObservationRecord
) –ObservationRecord
object to be converted to an alert and submitted upstream
- Returns:
True or False depending on success of message submission
- Return type:
bool
- abstract to_generic_alert(alert)¶
This method creates a
GenericAlert
object from the broker-specific alert data for use outside the implementation of theGenericBroker
.- Parameters:
alert (str) – alert data from a particular
BrokerQuery
- fetch_and_save_all(parameters)¶
Gets all alerts using a particular
BrokerQuery
and creates aTarget
from each one.- Parameters:
parameters (str) – JSON string of query parameters
- Returns:
list of
Target
objects- Return type:
list
- get_broker_context_data(*args, **kwargs)¶
Override this method in the subclass to allow the Broker to add additional context data to the View. This method will be called by views.RunQueryView.get_context_data() and the returned dictionary will be added to the View’s context.
ALeRCE¶
- class tom_alerts.brokers.alerce.ALeRCEBroker¶
The
ALeRCEBroker
is the interface to the ALeRCE alert broker.To include the
ALeRCEBroker
in your TOM, add the broker module location to your TOM_ALERT_CLASSES list in yoursettings.py
:TOM_ALERT_CLASSES = [ 'tom_alerts.brokers.alerce.ALeRCEBroker', ... ]
For information regarding the ALeRCE objects and classification, please see http://alerce.science.
- fetch_alerts(parameters)¶
Loop through pages of ALeRCE alerts until we reach the maximum pages requested. This simply concatenates all alerts from n pages into a single iterable to be returned.
- fetch_alert(alert_id)¶
The response for a single alert is as follows:
{ 'oid':'ZTF20acnsdjd', ... 'firstmjd':59149.1119328998, ... }
ANTARES¶
- class tom_alerts.brokers.antares.ANTARESBroker¶
In order to install the Antares Broker plugin, please see these instructions at https://github.com/TOMToolkit/tom_antares.
There is a known compatibility issue with antares-client required for the TOM_Antares Broker. The antares-client requires the librdkafka library to be installed in order to be compatible with Python 3.10. You can learn more about this on the antares-client website (https://nsf-noirlab.gitlab.io/csdc/antares/client/installation.html) .
Fink¶
- class tom_alerts.brokers.fink.FinkBroker¶
In order to install the full plugin, please see the instructions at https://github.com/TOMToolkit/tom_fink.
GAIA¶
- class tom_alerts.brokers.gaia.GaiaBroker¶
The
GaiaBroker
is the interface to the Gaia alert broker.To include the
GaiaBroker
in your TOM, add the broker module location to your TOM_ALERT_CLASSES list in yoursettings.py
:TOM_ALERT_CLASSES = [ 'tom_alerts.brokers.gaia.GaiaBroker', ... ]
For information regarding the Gaia Science Alerts Project, please see http://gsaweb.ast.cam.ac.uk/alerts/about.
- fetch_alerts(parameters)¶
Must return an iterator
Lasair¶
- tom_alerts.brokers.lasair.get_lasair_object(obj)¶
Parse lasair object table
- class tom_alerts.brokers.lasair.LasairBroker¶
The
LasairBroker
is the interface to the Lasair alert broker.To include the
LasairBroker
in your TOM, add the broker module location to your TOM_ALERT_CLASSES list in yoursettings.py
:TOM_ALERT_CLASSES = [ 'tom_alerts.brokers.lasair.LasairBroker', ... ]
Requires a LASAIR[‘api_key’] value in the BROKERS dictionary in your settings.py.
Create an account at https://lasair-ztf.lsst.ac.uk/, log in, and check your profile page for your API token. Add the api key to your settings.py file as follows, storing the token in an environment variable for security:
BROKERS = { 'LASAIR': { 'api_key': os.getenv('LASAIR_API_KEY', ''), }, ... }
For information regarding the query format for Lasair, please see https://lasair.readthedocs.io/en/main/core_functions/rest-api.html#.
Hermes¶
- class tom_alerts.brokers.hermes.HermesBroker¶
In order to install the full plugin, please see the instructions at https://github.com/TOMToolkit/tom_hermes.
Transient Name Server¶
- class tom_alerts.brokers.tns.TNSBroker¶
The
TNSBroker
is the interface to the Transient Name Server. For information regarding the TNS, please see https://www.wis-tns.org/To include the
TNSBroker
in your TOM, add the broker module location to your TOM_ALERT_CLASSES list in yoursettings.py
:TOM_ALERT_CLASSES = [ 'tom_alerts.brokers.tns.TNSBroker', ... ]
Requires the following configuration in settings.py:
BROKERS = { 'TNS': { 'api_key': os.getenv('TNS_API_KEY', 'DO NOT COMMIT API TOKENS TO GIT!'), 'bot_id': os.getenv('TNS_BOT_ID ', 'My TNS Bot ID'), 'bot_name': os.getenv('TNS_BOT_NAME', 'BestTOMBot'), 'tns_base_url': 'https://sandbox.wis-tns.org/api', # Note this is the Sandbox URL 'group_name': os.getenv('TNS_GROUP_NAME', 'BestTOMGroup'), }, }
- classmethod fetch_tns_transients(parameters)¶
- Args:
parameters: dictionary containing days_ago (str), min_date (str) and either:
Right Ascention, declination (can be deg, deg or h:m:s, d:m:s) of the target,
and search radius and search radius unit (“arcmin”, “arcsec”, or “deg”), or - TNS name without the prefix (eg. 2024aa instead of AT2024aa)
- Returns:
json containing response from TNS including TNS name and prefix.
- classmethod get_tns_object_info(parameters)¶
- Args:
parameters: dictionary containing objname field with TNS name without the prefix.
- Returns:
json containing response from TNS including classification and classification reports