Survey Plans¶
Survey plans store and organize any inofrmation regarding the survey
strategy and the telescope. The minimum required information is a set
of lists for the pointings, which needs to contain the times, filters,
coordinates (RA and Dec, both in degress), and skynoise values. The
definition of skynoise is the same as for sncosmo.realize_lcs,
which is used to generate the lightcurves.
import simsurvey
obs = {'time': [56176.19, 56188.254, 56207.172],
'band': ['desg', 'desr', 'desi'],
'skynoise': [1261.0, 1261.0, 1261.0],
'ra': [269.8, 269.8, 269.8],
'dec': [40.5, 40.5, 40.5]}
plan = simsurvey.SurveyPlan(time=obs['time'],
band=obs['band'],
ra=obs['ra'],
dec=obs['dec'],
skynoise=obs['skynoise'])
Note that each pair of RA and Dec will be treated separately for determining which transients are within the field of view for this pointing. Thus this is only a good option for quick simulations of a short observation run. Recurring pointings should best be assign field numbers (see below), even if the simulated survey does not have a pre-defined field grid.
Using a Field Grid¶
Instead of passing the individual coordinates for each observation, a set of fields can be defined. Using such a field grid, will allow simsurvey to check only once, which simulated transient will be observed when pointing the telescope at a given set of coordinates. In addition to RA and Dec, a field ID number can be listed. Otherwise the fields will be numbered started with 0.
obs = {'time': [56176.19, 56188.254, 56207.172],
'band': ['desg', 'desr', 'desi'],
'skynoise': [1261.0, 1261.0, 1261.0],
'field': [725, 725, 725]}
fields = {'ra': [269.8, 278.4],
'dec': [40.5, 40.5],
'field_id': [725, 726]}
plan = simsurvey.SurveyPlan(time=obs['time'],
band=obs['band'],
obs_field=obs['field'],
skynoise=obs['skynoise'],
fields=fields)
Changing the Field of View and Adding Comments¶
By default field of view is set such that it encompasses the whole
field of view of ZTF. When simulation another survey the size of the
field of view can be changed using the width and height
arguments. For matching which simulated transients are observed, a
rectangle with the given width and height (centered on the
coordinates) will be projected onto the sky.
For a more realistic simulation, the layout of the camera,
e.g. individual CCD chips or their read-out channels, can also be
passed to the SurveyPlan. For this a list of focal plane
coordinates relative to the field center needs to be provided, with
each entry containing four sets of coordinates in degrees. The order
of these coordinates does not matter; they will be sorted in order to
form a concave quadrilateral. The field will be numbered starting
with 0. Unlike the fields, this numbering can currently not be
changed.
To reflect that each CCD will produce a separate image, which may have a different depth, the list of observations can also be provided for individual CCDs. In this case, not all CCDs need to have information for each observation (e.g. because reference images were only completed for some of the CCDs on a specific field).
Lastly each observation can be given a comment, which allows the user to pass additional information, e.g. which subsurvey of a larger survey the observation was taken for.
obs = {'time': [56176.19, 56176.19, 56188.254, 56188.254, 56207.172, 56207.172],
'band': ['desg', 'desg', 'desr', 'desr', 'desi', 'desi'],
'skynoise': [1261.0, 1444.0, 1261.0, 1444.0, 1261.0, 1444.0],
'field': [725, 725, 725, 725, 725, 725],
'ccd': [0, 1, 0, 1, 0, 1],
'comments': ['all-sky', 'all-sky', 'all-sky', 'all-sky', 'i-band', 'i-band']}
fields = {'ra': [269.8, 278.4],
'dec': [40.5, 40.5],
'field_id': [725, 726]}
ccds = np.array([[[-1., -1.], [-0.1, -1.], [-0.1, -0.1], [-1, -0.1]],
[[0.1, -1.], [1., -1.], [1., -0.1], [0.1, -0.1]],
[[-1., 0.1], [-0.1, 0.1], [-0.1, 1.], [-1, 1.]],
[[0.1, 0.1], [1., 0.1], [1., 1.], [0.1, 1.]]]
plan = simsurvey.SurveyPlan(time=obs['time'],
band=obs['band'],
obs_field=obs['field'],
obs_ccd=obs['ccd'],
skynoise=obs['skynoise'],
comments=obs['comments'],
fields=fields,
ccds=ccds)