SAMP (pyvo.samp)

SAMP, the Simple Application Messaging Protocol, lets you send and receive tables, datasets, or points of interest between various clients on a desktop.

While the main SAMP support still resides in astropy (it might be moved over to pyvo in later versions), there are a few wrapper functions in pyvo that make a few common SAMP tasks simpler or more robust.

Most importantly, pyvo lets you manage the SAMP connection in a context manager, which means you will not have to remember to close your connections to avoid ugly artefacts in the SAMP hub.

In addition, there are convenience functions for sending out data; in all cases, you can pass a client_name to only send a message to the specific client; a simple way to obtain client names is to inspect TOPCAT’s SAMP status if you use TOPCAT’s built-in SAMP hub. If, on the other hand, you pass None as client_name (or omit the parameter), you will send a broadcast.

Sending tables has the additional difficulty over sending other datasets that you will have to make the table data accessible to the receiving client. The solution chosen by pyvo.samp at this time will only work if the sending and receiving applications share a file system. This seems a reasonable expectation and saves a bit of a potential security headache.

Using pyvo.samp, sending an astropy table t to TOPCAT would look like this:

import pyvo

with pyvo.samp.connection(client_name="pyvo magic") as conn:
  pyvo.samp.send_table_to(
    conn,
    t,
    name="my-results",
    client_name="topcat")

Reference/API

pyvo.samp Module

A module with helpers for broadcasting results to samp clients

Functions

find_client_id(conn, name)

returns the SAMP id of the client with samp.name samp_name.

send_table_to(conn, table[, client_name, name])

sends astropy_table via SAMP.

send_product_to(conn, url, mtype[, ...])

sends SAMP messages to load data.

send_spectrum_to(conn, url[, client_name, name])

asks a spectrum client to open a remote spectrum via SAMP.

send_image_to(conn, url[, client_name, name])

asks an image client to open a remote image via SAMP.

accessible_table(table)

a context manager making astropy_table available under a (file) URL for the controlled section.

connection([client_name, description])

a context manager to give the controlled block a SAMP connection.