Source code for sotodlib.toast.workflows.sim_sources

# Copyright (c) 2023-2023 Simons Observatory.
# Full license can be found in the top level "LICENSE" file.
"""Simulated detector response to point-like sources.

This includes artificial calibration sources (e.g. drone), solar
system objects, and catalogs of point sources.

"""

import numpy as np
from astropy import units as u
import toast
import toast.ops

from .. import ops as so_ops
from .job import workflow_timer


[docs] def setup_simulate_source_signal(operators): """Add commandline args and operators for artifical sources. Args: operators (list): The list of operators to extend. Returns: None """ operators.append(so_ops.SimSource(name="sim_source", enabled=False))
[docs] @workflow_timer def simulate_source_signal(job, otherargs, runargs, data): """Simulate detector response from artificial sources. This uses Az/El detector pointing to observe a terrestrial calibration source (e.g. a drone). Args: job (namespace): The configured operators and templates for this job. otherargs (namespace): Other commandline arguments. runargs (namespace): Job related runtime parameters. data (Data): The data container. Returns: None """ # Configured operators for this job job_ops = job.operators if job_ops.sim_source.enabled: job_ops.sim_source.detector_pointing = job_ops.det_pointing_azel # FIXME: this is not right- the field of view calculation in the # SimSource operator should loop over all observations and get the # maximum extent. # job_ops.sim_source.focalplane = telescope.focalplane raise NotImplementedError("SimSource disabled until FoV fixed.") if job_ops.sim_source.polarization_fraction != 0: job_ops.sim_source.detector_weights = job_ops.weights_azel job_ops.sim_source.apply(data)
[docs] def setup_simulate_sso_signal(operators): """Add commandline args and operators for solar system objects. Args: operators (list): The list of operators to extend. Returns: None """ operators.append(so_ops.SimSSO(name="sim_sso", enabled=False))
[docs] @workflow_timer def simulate_sso_signal(job, otherargs, runargs, data): """Simulate detector response from solar system objects. Args: job (namespace): The configured operators and templates for this job. otherargs (namespace): Other commandline arguments. runargs (namespace): Job related runtime parameters. data (Data): The data container. Returns: None """ # Configured operators for this job job_ops = job.operators if job_ops.sim_sso.enabled: job_ops.sim_sso.detector_pointing = job_ops.det_pointing_azel job_ops.sim_sso.detector_weights = job_ops.weights_azel job_ops.sim_sso.apply(data)
[docs] def setup_simulate_catalog_signal(operators): """Add commandline args and operators for point source catalogs. Args: operators (list): The list of operators to extend. Returns: None """ operators.append(so_ops.SimCatalog(name="sim_catalog", enabled=False))
[docs] @workflow_timer def simulate_catalog_signal(job, otherargs, runargs, data): """Simulate detector response from a point source catalog. Args: job (namespace): The configured operators and templates for this job. otherargs (namespace): Other commandline arguments. runargs (namespace): Job related runtime parameters. data (Data): The data container. Returns: None """ # Configured operators for this job job_ops = job.operators if job_ops.sim_catalog.enabled: job_ops.sim_catalog.detector_pointing = job_ops.det_pointing_radec job_ops.sim_catalog.apply(data)