Retrain Parsnip for ZTF. This is achieved by using fpbot forced photometry lightcurves of the Bright Transient Survey. These are augmented (redshifted, noisified and - when possible - K-corrected).
The package is maintained by A. Townsend (HU Berlin) and S. Reusch (DESY).
The following augmentation steps are taken for each parent lightcurve to generate a desired number of children (calculated via weights
):
- draw a new redshift from a cubic distribution with maximum redshift increase
delta_z
- only accept the lightcurve if at least
n_det_threshold
datapoints are above the signal-to-noise thresholdSN_threshold
- if the lightcurve has an existing SNCosmo template, apply a K-correction at that magnitude (if
k_corr=True
) - randomly drop datapoints until
subsampling_rate
is reached - add some scatter to the observed dates (
jd_scatter_sigma
in days) - if
phase_lim=True
, only keep datapoints during a typical duration (depends on the type of source)
delta_z
without loosening the SN_threshold
and n_det_threshold
will result in a large dropout rate, which will ultimately lead to far less lightcurves being generated than initially desired.
from pathlib import Path
from ztfparsnip.create import CreateLightcurves
weights = {"sn_ia": 9400, "tde": 9400, "sn_other": 9400, "agn": 9400, "star": 9400}
if __name__ == "__main__":
sample = CreateLightcurves(
output_format="parsnip",
classkey="simpleclasses",
weights=weights,
train_dir=Path("train"),
plot_dir=Path("plot"),
seed=None,
phase_lim=True,
k_corr=True,
)
sample.select()
sample.create(plot_debug=False)
from ztfparsnip.train import Train
if __name__ == "__main__":
train = Train(classkey="simpleclasses", seed=None)
train.run()
from ztfparsnip.train import Train
if __name__ == "__main__":
train = Train(classkey="simpleclasses", seed=None)
train.classify()