Exposures¶
- class daschlab.exposures.Exposures(data=None, masked=False, names=None, dtype=None, meta=None, copy=True, rows=None, copy_indices=True, units=None, descriptions=None, **kwargs)[source]¶
Bases:
TableA table of DASCH exposure information.
An
Exposurestable is a subclass ofastropy.table.Tablecontaining DASCH exposure data and associated exposure-specific methods. You can use all of the usual methods and properties made available by theastropy.table.Tableclass. Items provided by theTableclass are not documented here.You should not construct
Exposuresinstances directly. Instead, obtain the full table using thedaschlab.Session.exposures()method.The actual data contained in these tables — the columns — are documented elsewhere, on the main DASCH website.
See the module-level documentation of the
daschlab.lightcurvesfor a summary of the filtering and subsetting functionality provided by this class.Attributes Summary
An action returning the number of selected rows
An action returning an
Exposurescopy dropping the selected rows; all non-selected rows are retained.An action returning an
Exposurescopy containing only the selected rows.An action returning a boolean array identifying selected rows.
An action modifying the exposure-list in-place, rejecting the selected rows.
An action modifying the exposure-list in-place, rejecting rows not matching the selection.
Methods Summary
candidate_nice_cutouts([source_of_interest, ...])Return a table with information about exposures that might contain "nice" imagery of the target, in some vague sense.
export(path[, format, drop_rejects])Save a copy of this exposure list to a file.
export_cutouts_to_pdf(pdfpath, **kwargs)Export cutouts of the exposures in this list to a PDF file.
Obtain a table summarizing information about the different plate series in the non-rejected rows of the current table.
show(exp_ref)Display the cutout of the specified exposure in the WWT view.
show_extract(exp_ref)Display the catalog extract of the specified exposure in the WWT view.
Plot the observing time coverage of the non-rejected exposures in this list.
Attributes Documentation
- count¶
An action returning the number of selected rows
Unlike many actions, this returns an
int, not a newExposures.
- drop¶
An action returning an
Exposurescopy dropping the selected rows; all non-selected rows are retained.
- match¶
An action returning a boolean array identifying selected rows.
Unlike many actions, this does not return a new
Exposures. It can be used to implement arbitrary boolean logic within the action/selection framework:exp = sess.exposures() subset = exp.keep_only.where( exp.match.series("a") & exp.match.has_imaging() )
- reject¶
An action modifying the exposure-list in-place, rejecting the selected rows.
Usage is as follows:
exp = sess.exposures() # Mark all exposures from meteor telescopes as rejected: exp.reject.meteor(tag="meteor")
The
tagkeyword argument to the selector is mandatory. It specifies a short, arbitrary “tag” documenting the reason for rejection. Each unique tag is associated with a binary bit of the"reject"column, and these bits are logically OR’ed together as rejections are established. The maximum number of distinct rejection tags is 64, since the"reject"column is stored as a 64-bit integer.
- reject_unless¶
An action modifying the exposure-list in-place, rejecting rows not matching the selection.
Usage is as follows:
exp = sess.exposures() # Mark all exposures *not* from narrow-field telescopes as rejected: exp.reject_unless.narrow(tag="lowrez") # This is equivalent to: exp.reject.not_.narrow(tag="lowrez")
The
tagkeyword argument to the selector is mandatory. It specifies a short, arbitrary “tag” documenting the reason for rejection. Each unique tag is associated with a binary bit of the"reject"column, and these bits are logically OR’ed together as rejections are established. The maximum number of distinct rejection tags is 64, since the"reject"column is stored as a 64-bit integer.
Methods Documentation
- candidate_nice_cutouts(source_of_interest=0, limit_cols: bool = True, limit_rows: int | None = 8) daschlab.lightcurves.Lightcurve[source]¶
Return a table with information about exposures that might contain “nice” imagery of the target, in some vague sense.
- Parameters:
- source_of_interestoptional source reference, default
0 A source of interest that will be used to evaluate imaging quality. The lightcurve for this source will be downloaded, with the reference resolved as per the function
daschlab.Session.lightcurve().- limit_colsoptional
bool, defaultTrue If true, drop various columns from the returned table. The preserved columns will be only the ones relevant to inferring the exposure image quality.
- limit_rowsoptional
intor None, default 10 If a positive integer, limit the returned table to only this many rows.
- source_of_interestoptional source reference, default
- Returns:
daschlab.lightcurves.LightcurveThe returned table is actually a
Lightcurvetable, re-sorted and potentially subsetted. The sort order will be in decreasing predicted image quality based on the lightcurve data.
Notes
The primary sort key is based on the limiting magnitude, which is a quantity available even in rows of the lightcurve that do not detect the source of interest. So, this method should be useful even if the source is not easily detected. Other image-quality metadata, however, may be missing, so this method will restrict itself to lightcurve rows with detections if there are a sufficient number of them.
- export(path: str, format: str = 'csv', drop_rejects: bool = True)[source]¶
Save a copy of this exposure list to a file.
- Parameters:
- path
str The path at which the exported exposure list data will be saved.
- format
str, default"csv" The file format in which to save the data. Currently, the only allowed value is
"csv".- drop_rejects
bool, defaultTrue If True, rejected exposures will not appear in the output file at all. Otherwise, they will be included, and there will be a
"reject"column reproducing their rejection status.
- path
Notes
The default
"csv"output format only exports a subset of the table columns known as the “medium” subset. It is defined in the exposure-list table documentation.
- export_cutouts_to_pdf(pdfpath: str, **kwargs)[source]¶
Export cutouts of the exposures in this list to a PDF file.
- Parameters:
- pdf_path
str The path at which the output file will be written. This path is not relative to the
daschlab.Sessionroot.- refcat_stdmag_limitoptional
float If specified, only sources from the reference catalog brigher than the specified
stdmaglimit will be overlaid on the cutouts. Otherwise, all refcat sources are overlaid, including very faint ones and ones withoutstdmagrecords.- no_downloadoptional
bool, default False If set to true, no cutouts will be downloaded. Only cutouts that are already cached locally will be used to construct the PDF.
- pdf_path
Notes
This operation will by default attempt to download a cutout for every exposure with imaging in the list. This can be extremely slow, as well as creating a lot of work for the API server. Only use it for short exposure lists.
The format of the created file needs to be documented.
- series_info() Table[source]¶
Obtain a table summarizing information about the different plate series in the non-rejected rows of the current table.
- Returns:
astropy.table.TableA table of summary information
Notes
Columns in the returned table include:
"series": the plate series in question"count": the number of exposures from the series in self"kind": thedaschlab.series.SeriesKindof this series"plate_scale": the typical plate scale of this series (in arcsec/mm)"aperture": the telescope aperture of this series (in meters)"description": a textual description of this series
The table is sorted by decreasing
"count".
- show(exp_ref: ExposureRow | int) ImageLayer[source]¶
Display the cutout of the specified exposure in the WWT view.
- Parameters:
- exp_ref
ExposureRoworint If this argument is an integer, it is interpreted as the “local ID” of an exposure. Local IDs are assigned in chronological order of observing time, so a value of
0shows the first exposure. This will only work if the selected exposure is scanned and WCS-solved.If this argument is an instance of
ExposureRow, the specified exposure is shown.
- exp_ref
- Returns:
pywwt.layers.ImageLayerThis is the WWT image layer object corresponding to the displayed FITS file. You can use it to programmatically control aspects of how the file is displayed, such as the colormap.
Notes
In order to use this method, you must first have called
daschlab.Session.connect_to_wwt(). If needed, this method will execute an API call and download the cutout to be displayed, which may be slow.
- show_extract(exp_ref: ExposureRow | int) TableLayer[source]¶
Display the catalog extract of the specified exposure in the WWT view.
- Parameters:
- exp_ref
ExposureRoworint If this argument is an integer, it is interpreted as the “local ID” of an exposure. Local IDs are assigned in chronological order of observing time, so a value of
0shows the first exposure. This will only work if the selected exposure is scanned and WCS-solved.If this argument is an instance of
ExposureRow, the specified exposure is shown.
- exp_ref
- Returns:
pywwt.layers.TableLayerThis is the WWT table layer object corresponding to the displayed catalog extract. You can use it to programmatically control aspects of how the data are displayed.
Notes
In order to use this method, you must first have called
daschlab.Session.connect_to_wwt(). If needed, this method will execute an API call and download the data to be displayed, which may be slow.This method is equivalent to calling
sess.extract(exp_ref).show().
- time_coverage() figure[source]¶
Plot the observing time coverage of the non-rejected exposures in this list.
- Returns:
bokeh.plotting.figureA plot.
Notes
The plot is generated by using a Gaussian kernel density estimator to smooth out the exposure observation times.
The function
bokeh.io.show(imported asbokeh.plotting.show) is called on the figure before it is returned, so you don’t need to do that yourself.