Skip to main content

planobs

Toolset for planning and triggering observations with ZTF. GCN parsing is currently only implemented for IceCube alerts.

It checks if the object is observable with a maximum airmass on a given date, plots the airmass vs. time, computes two optimal (minimal airmass at night) observations of 300s in g- and r and generate the ZTF field plots for all fields having a reference. There is also the option to create a longer (multiday) observation plan.

CI Coverage Status PyPI version DOI

Requirements

ztfquery for checking if fields have a reference.

planobs requires Python 3.10.

Installation

Using Pip: pip install planobs.

Otherwise, you can clone the repository: git clone https://github.com/simeonreusch/planobs, followed by poetry install This also gives you access to the Slackbot.

Note for ARM-based macs: The install of fiona might fail if you do not have gdal installed. In that case, consider using a conda and running conda install -c conda-forge gdal before running poetry install.

General usage

from planobs.plan import PlanObservation

name = "testalert" # Name of the alert object
date = "2020-05-05" #This is optional, defaults to today
ra = 133.7
dec = 13.37

plan = PlanObservation(name=name, date=date, ra=ra, dec=dec)
plan.plot_target() # Plots the observing conditions
plan.request_ztf_fields() # Checks in which ZTF fields this 
# object is observable and generates plots for them.

The observation plot and the ZTF field plots will be located in the current directory/[name]

Note: Checking if fields have references requires ztfquery, which needs IPAC credentials.

Usage for IceCube alerts

from planobs.plan import PlanObservation

name = "IC201007A" # Name of the alert object
date = "2020-10-08" #This is optional, defaults to today

# No RA and Dec values are given, because we set alertsource to icecube, which leads to automatic GCN parsing.

plan = PlanObservation(name=name, date=date, alertsource="icecube")
plan.plot_target() # Plots the observing conditions.
plan.request_ztf_fields() # Checks which ZTF fields cover the target (and have references).
print(plan.recommended_field) # This give you the field with the most overlap.

Triggering ZTF

planobs can be used to schedule ToO observations with ZTF. This is done through API calls to the Kowalski system, managed by the Kowalski Python API penquins.

To use this functionality, you must first configure the connection details. You need both an API token, and to know the address of the Kowalski host address. You can then set these as environment variables:

export KOWALSKI_HOST=something
export KOWALSKI_API_TOKEN=somethingelse

You can then import the Queue class for querying, submitting and deleting ToO triggers:

Querying

from planobs.api import Queue

q = Queue(user="yourname")

existing_too_requests = get_too_queues(names_only=True)
print(existing_too_requests)

Submitting

from planobs.api import Queue, get_too_queues
from planobs.models import TooTarget

trigger_name = "ToO_IC220513A_test"

# Instantiate the API connection
q = Queue(user="yourname")

# Add a trigger to the internal submission queue. Filter ID is 1 for r-, 2 for g- and 3 for i-band. Exposure time is given in seconds.
q.add_trigger_to_queue(
    trigger_name=trigger_name,
    validity_window_start_mjd=59719.309333333334,
    targets=[
        TooTarget(
            field_id=427,
            filter_id=1,
            exposure_time=300,
        )
    ],
)

q.submit_queue()

# Now we verify that our trigger has been successfully submitted
existing_too_requests = get_too_queues(names_only=True)
print(existing_too_requests)
assert trigger_name in existing_too_requests

Deleting

from planobs.api import Queue

q = Queue(user="yourname")

trigger_name = "ToO_IC220513A_test"

res = q.delete_trigger(trigger_name=trigger_name)

Citing the code

If you use this code, please cite it! A DOI is provided by Zenodo, which can reference both the code repository and specific releases:

DOI

Contributors

Metadata

Release files for planobs 0.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for planobs 0.7.3
File Size Uploaded Provenance Actions
planobs-0.7.3.tar.gz 17.9 MB Without provenance Details for planobs-0.7.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for planobs 0.7.3
File Interpreter ABI Platform Actions
planobs-0.7.3-py3-none-any.whl Python 3 none any Details for planobs-0.7.3-py3-none-any.whl

Total release size: 36.4 MB

Release files / planobs-0.7.3.tar.gz

Download URL planobs-0.7.3.tar.gz
Size 17.9 MB
Tags Source
SHA-256 checksum
How to use checksums
1d05d297ec1593536faf610557eba0db7c67196c1849d613b553d66f969eb111
BLAKE2b-256 checksum
How to use checksums
46954ce8f8a316f03ca8303a8288ab12e926fa3184f9e2062ee94d0938a827ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.4 Linux/5.15.0-1041-azure

Release files / planobs-0.7.3-py3-none-any.whl

Download URL planobs-0.7.3-py3-none-any.whl
Size 18.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
32697e91269de6bd59d61e5a4fcb913d5fc3afd6f96d95f506098701dc5f2ef4
BLAKE2b-256 checksum
How to use checksums
a126386a0023ad0e3ede8ac257421933edbd615c865cabba4c8433c5309255b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.4 Linux/5.15.0-1041-azure

Security for planobs 0.7.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page