diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51fc4c10d..62e3d9bcc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ repos: args: - "--line-length=100" - repo: https://github.com/asottile/reorder_python_imports - rev: v2.7.1 + rev: v3.0.1 hooks: - id: reorder-python-imports - repo: https://github.com/pycqa/flake8 diff --git a/btk/draw_blends.py b/btk/draw_blends.py index 7830bc86d..9af4be5ec 100644 --- a/btk/draw_blends.py +++ b/btk/draw_blends.py @@ -9,16 +9,16 @@ import galsim import numpy as np from astropy.table import Column +from galcheat.survey import Survey +from galcheat.utilities import mag2counts +from galcheat.utilities import mean_sky_level from tqdm.auto import tqdm from btk import DEFAULT_SEED from btk.create_blend_generator import BlendGenerator from btk.multiprocess import get_current_process from btk.multiprocess import multiprocess -from btk.survey import get_flux -from btk.survey import get_mean_sky_level from btk.survey import make_wcs -from btk.survey import Survey MAX_SEED_INT = 1_000_000_000 @@ -69,7 +69,7 @@ def get_catsim_galaxy(entry, filt, survey, no_disk=False, no_bulge=False, no_agn Galsim galaxy profile """ components = [] - total_flux = get_flux(entry[filt.name + "_ab"], filt, survey) + total_flux = mag2counts(entry[filt.name + "_ab"], survey, filt).to_value("electron") # Calculate the flux of each component in detected electrons. total_fluxnorm = entry["fluxnorm_disk"] + entry["fluxnorm_bulge"] + entry["fluxnorm_agn"] disk_flux = 0.0 if no_disk else entry["fluxnorm_disk"] / total_fluxnorm * total_flux @@ -143,7 +143,8 @@ def __init__( catalog (btk.catalog.Catalog): BTK catalog object from which galaxies are taken. sampling_function (btk.sampling_function.SamplingFunction): BTK sampling function to use. - surveys (list): List of btk Survey objects defining the observing conditions + surveys (list or galcheat.survey.Survey): List of galcheat Survey objects or + single galcheat Survey object. batch_size (int): Number of blends generated per batch stamp_size (float): Size of the stamps, in arcseconds cpus (int): Number of cpus to use; defines the number of minibatches @@ -182,7 +183,7 @@ def __init__( for s in surveys: if not isinstance(s, Survey): raise TypeError( - f"surveys must be a Survey object or an Iterable of Survey objects, but" + f"surveys must be a Survey object or an Iterable of Survey objects, but " f"Iterable contained object of type {type(s)}" ) self.check_compatibility(s) @@ -232,11 +233,12 @@ def __next__(self): wcss = {} for s in self.surveys: - pix_stamp_size = int(self.stamp_size / s.pixel_scale) + pix_stamp_size = int(self.stamp_size / s.pixel_scale.to_value("arcsec")) # make PSF and WCS psf = [] - for filt in s.filters: + for band in s.available_filters: + filt = s.get_filter(band) if callable(filt.psf): generated_psf = filt.psf() # generate the PSF with the provided function if isinstance(generated_psf, galsim.GSObject): @@ -253,7 +255,7 @@ def __next__(self): f"The PSF within filter '{filt.name}' is neither a " f"function nor a galsim object" ) - wcs = make_wcs(s.pixel_scale, (pix_stamp_size, pix_stamp_size)) + wcs = make_wcs(s.pixel_scale.to_value("arcsec"), (pix_stamp_size, pix_stamp_size)) psfs[s.name] = psf wcss[s.name] = wcs @@ -277,8 +279,9 @@ def __next__(self): batch_results = list(chain(*mini_batch_results)) # decide image_shape based on channels_last bool. - option1 = (len(s.filters), pix_stamp_size, pix_stamp_size) - option2 = (pix_stamp_size, pix_stamp_size, len(s.filters)) + n_bands = len(s.available_filters) + option1 = (n_bands, pix_stamp_size, pix_stamp_size) + option2 = (pix_stamp_size, pix_stamp_size, n_bands) image_shape = option1 if not self.channels_last else option2 # organize results. @@ -361,19 +364,19 @@ def render_mini_batch(self, blend_list, psf, wcs, survey, seedseq_minibatch, ext for i, blend in tqdm(enumerate(blend_list), total=len(blend_list), desc=desc): # All bands in same survey have same pixel scale, WCS - pixel_scale = survey.pixel_scale + pixel_scale = survey.pixel_scale.to_value("arcsec") pix_stamp_size = int(self.stamp_size / pixel_scale) x_peak, y_peak = get_center_in_pixels(blend, wcs) blend.add_column(x_peak) blend.add_column(y_peak) - iso_image_multi = np.zeros( - (self.max_number, len(survey.filters), pix_stamp_size, pix_stamp_size) - ) - blend_image_multi = np.zeros((len(survey.filters), pix_stamp_size, pix_stamp_size)) - seedseq_blend = seedseq_minibatch.spawn(len(survey.filters)) - for b, filt in enumerate(survey.filters): + n_bands = len(survey.available_filters) + iso_image_multi = np.zeros((self.max_number, n_bands, pix_stamp_size, pix_stamp_size)) + blend_image_multi = np.zeros((n_bands, pix_stamp_size, pix_stamp_size)) + seedseq_blend = seedseq_minibatch.spawn(n_bands) + for b, name in enumerate(survey.available_filters): + filt = survey.get_filter(name) single_band_output = self.render_blend( blend, psf[b], filt, survey, seedseq_blend[b], extra_data[i] ) @@ -406,8 +409,8 @@ def render_blend(self, blend_catalog, psf, filt, survey, seedseq_blend, extra_da Args: blend_catalog (astropy.table.Table): Catalog with entries corresponding to one blend. psf: Galsim object containing the psf for the given filter - filt (btk.survey.Filter): BTK Filter object - survey (btk.survey.Survey): BTK Survey object + filt (galcheat.filter.Filter): Galcheat Filter object + survey (galcheat.survey.Survey): Galcheat Survey object seedseq_blend (numpy.random.SeedSequence): Seed sequence for the noise generation. extra_data: Special field of shape (n_blend,?), containing additional data for drawing the blend. See render_minibatch @@ -417,11 +420,11 @@ def render_blend(self, blend_catalog, psf, filt, survey, seedseq_blend, extra_da Images of blend and isolated galaxies as `numpy.ndarray`. """ - mean_sky_level = get_mean_sky_level(survey, filt) + sky_level = mean_sky_level(survey, filt).to_value("electron") blend_catalog.add_column( Column(np.zeros(len(blend_catalog)), name="not_drawn_" + filt.name) ) - pix_stamp_size = int(self.stamp_size / survey.pixel_scale) + pix_stamp_size = int(self.stamp_size / survey.pixel_scale.to_value("arcsec")) iso_image = np.zeros((self.max_number, pix_stamp_size, pix_stamp_size)) _blend_image = galsim.Image(np.zeros((pix_stamp_size, pix_stamp_size))) @@ -441,7 +444,7 @@ def render_blend(self, blend_catalog, psf, filt, survey, seedseq_blend, extra_da if self.verbose: print("Background noise added to blend image") generator = galsim.random.BaseDeviate(seed=seedseq_blend.generate_state(1)) - background_noise = galsim.PoissonNoise(rng=generator, sky_level=mean_sky_level) + background_noise = galsim.PoissonNoise(rng=generator, sky_level=sky_level) noise_image = galsim.Image(np.zeros((pix_stamp_size, pix_stamp_size))) noise_image.addNoise(background_noise) _blend_image += noise_image @@ -458,8 +461,8 @@ def render_single(self, entry, filt, psf, survey, extra_data): Args: entry (astropy.table.Table): Line from astropy describing the galaxy to draw - filt (btk.survey.Filter): BTK Filter object corresponding to the band where - the image is drawn ` + filt (galcheat.filter.Filter): Galcheat Filter object corresponding to the band where + the image is drawn. psf: Galsim object containing the PSF relative to the chosen filter survey (btk.survey.Survey): BTK Survey object extra_data: Special field containing extra data for drawing a single galaxy. @@ -490,10 +493,10 @@ def check_compatibility(self, survey): f"The catalog provided is of the wrong type. The types of " f"catalogs available for the {type(self).__name__} are {self.compatible_catalogs}" ) - for f in survey.filters: - if f.name + "_ab" not in self.catalog.table.keys(): + for band in survey.available_filters: + if band + "_ab" not in self.catalog.table.keys(): raise ValueError( - f"The {f.name} filter of the survey {survey.name} " + f"The {band} filter of the survey {survey.name} " f"has no associated magnitude in the given catalog." ) @@ -502,13 +505,13 @@ def render_single(self, entry, filt, psf, survey, extra_data): if self.verbose: print("Draw isolated object") - pix_stamp_size = int(self.stamp_size / survey.pixel_scale) + pix_stamp_size = int(self.stamp_size / survey.pixel_scale.to_value("arcsec")) try: gal = get_catsim_galaxy(entry, filt, survey) gal_conv = galsim.Convolve(gal, psf) gal_conv = gal_conv.shift(entry["ra"], entry["dec"]) return gal_conv.drawImage( - nx=pix_stamp_size, ny=pix_stamp_size, scale=survey.pixel_scale + nx=pix_stamp_size, ny=pix_stamp_size, scale=survey.pixel_scale.to_value("arcsec") ) except SourceNotVisible: @@ -599,10 +602,10 @@ def check_compatibility(self, survey): f"catalogs available for the {type(self).__name__} are {self.compatible_catalogs}" ) if "ref_mag" not in self.catalog.table.keys(): - for f in survey.filters: - if f"{survey.name}_{f.name}" not in self.catalog.table.keys(): + for band in survey.available_filters: + if f"{survey.name}_{band}" not in self.catalog.table.keys(): raise ValueError( - f"The {f.name} filter of the survey {survey.name} " + f"The {band} filter of the survey {survey.name} " f"has no associated magnitude in the given catalog, " f"and the catalog does not contain a 'ref_mag' column" ) @@ -613,19 +616,22 @@ def render_single(self, entry, filt, psf, survey, extra_data): # get galaxy flux try: - gal_flux = get_flux(entry[f"{survey.name}_{filt.name}"], filt, survey) + mag_name = f"{survey.name}_{filt.name}" + gal_flux = mag2counts(entry[mag_name], survey, filt).to_value("electron") except KeyError: - gal_flux = get_flux(entry["ref_mag"], filt, survey) + gal_flux = mag2counts(entry["ref_mag"], survey, filt).to_value("electron") gal = galsim_catalog.makeGalaxy( entry["btk_index"], gal_type=self.gal_type, noise_pad_size=0 ).withFlux(gal_flux) - pix_stamp_size = int(self.stamp_size / survey.pixel_scale) + pix_stamp_size = int(self.stamp_size / survey.pixel_scale.to_value("arcsec")) # Convolve the galaxy with the PSF gal_conv = galsim.Convolve(gal, psf) # Apply the shift gal_conv = gal_conv.shift(entry["ra"], entry["dec"]) - return gal_conv.drawImage(nx=pix_stamp_size, ny=pix_stamp_size, scale=survey.pixel_scale) + return gal_conv.drawImage( + nx=pix_stamp_size, ny=pix_stamp_size, scale=survey.pixel_scale.to_value("arcsec") + ) diff --git a/btk/main.py b/btk/main.py index da841442d..d15303ce6 100644 --- a/btk/main.py +++ b/btk/main.py @@ -7,15 +7,17 @@ from btk.measure import available_measure_functions from btk.measure import MeasureGenerator from btk.metrics import MetricsGenerator -from btk.survey import get_survey_from_cfg +from btk.survey import get_surveys def main(cfg: OmegaConf): """Run BTK from end-to-end using a hydra configuration object.""" - surveys = [get_survey_from_cfg(cfg.surveys[survey_name]) for survey_name in cfg.surveys] + catalog = instantiate(cfg.catalog) + sampling_function = instantiate(cfg.sampling) + surveys = get_surveys(list(cfg.surveys)) # get draw blends generator. - draw_blend_generator = instantiate(cfg.draw_blends, surveys=surveys) + draw_blend_generator = instantiate(cfg.draw_blends, catalog, sampling_function, surveys) # get measure_functions. measure_functions = [] diff --git a/btk/metrics.py b/btk/metrics.py index 651936e20..b57a24ac0 100644 --- a/btk/metrics.py +++ b/btk/metrics.py @@ -60,10 +60,10 @@ import matplotlib.pyplot as plt import numpy as np import skimage.metrics +from galcheat.utilities import mean_sky_level from scipy.optimize import linear_sum_assignment from btk.measure import MeasureGenerator -from btk.survey import get_mean_sky_level from btk.utils import reverse_dictionary_dictionary @@ -747,31 +747,33 @@ def __next__(self): f"number of surveys: {len(surveys)}, instead len is {len(meas_band_num)}" ) metrics_results_f = {} - for i, surv in enumerate(blend_results["isolated_images"].keys()): + for i, surv_name in enumerate(blend_results["isolated_images"].keys()): additional_params = { - "psf": blend_results["psf"][surv], - "pixel_scale": surveys[i].pixel_scale, + "psf": blend_results["psf"][surv_name], + "pixel_scale": surveys[i].pixel_scale.to_value("arcsec"), "meas_band_num": meas_band_num[i], "verbose": self.verbose, } + band_name = surveys[i].available_filters[meas_band_num[i]] + filtr = surveys[i].get_filter(band_name) noise_threshold = self.noise_threshold_factor * np.sqrt( - get_mean_sky_level(surveys[i], surveys[i].filters[meas_band_num[i]]) + mean_sky_level(surveys[i], filtr).to_value("electron") ) target_meas = {} for k in self.target_meas.keys(): target_meas[k] = lambda x: self.target_meas[k](x, additional_params) - metrics_results_f[surv] = compute_metrics( - blend_results["isolated_images"][surv], - blend_results["blend_list"][surv], - measure_results["catalog"][meas_func][surv], - measure_results["segmentation"][meas_func][surv], - measure_results["deblended_images"][meas_func][surv], + metrics_results_f[surv_name] = compute_metrics( + blend_results["isolated_images"][surv_name], + blend_results["blend_list"][surv_name], + measure_results["catalog"][meas_func][surv_name], + measure_results["segmentation"][meas_func][surv_name], + measure_results["deblended_images"][meas_func][surv_name], noise_threshold, meas_band_num[i], target_meas, channels_last=self.measure_generator.channels_last, - save_path=os.path.join(self.save_path, meas_func, surv) + save_path=os.path.join(self.save_path, meas_func, surv_name) if self.save_path is not None else None, f_distance=self.f_distance, @@ -782,12 +784,14 @@ def __next__(self): else: additional_params = { "psf": blend_results["psf"], - "pixel_scale": surveys[0].pixel_scale, + "pixel_scale": surveys[0].pixel_scale.to_value("arcsec"), "meas_band_num": meas_band_num, "verbose": self.verbose, } + band_name = surveys[0].available_filters[meas_band_num] + filtr = surveys[0].get_filter(band_name) noise_threshold = self.noise_threshold_factor * np.sqrt( - get_mean_sky_level(surveys[0], surveys[0].filters[meas_band_num]) + mean_sky_level(surveys[0], filtr).to_value("electron") ) target_meas = {} for k in self.target_meas.keys(): diff --git a/btk/survey.py b/btk/survey.py index ac42881f0..9805df45a 100644 --- a/btk/survey.py +++ b/btk/survey.py @@ -1,145 +1,84 @@ """Contains information for surveys available in BTK.""" import os import random as rd -from collections import namedtuple -from typing import Iterable +from typing import Callable +from typing import List +from typing import Union import astropy.wcs as WCS +import galcheat import galsim import numpy as np from astropy.io import fits -from hydra import compose -from hydra import initialize -from omegaconf import OmegaConf +from galcheat.survey import Survey -Survey = namedtuple( - "Survey", - [ - "name", - "pixel_scale", # arcseconds per pixel - "effective_area", # Effective total light collecting area in square meters [m2] - "mirror_diameter", # in meters [m] - "airmass", # Optical path length through atmosphere relative to zenith path length. - "filters", - "zeropoint_airmass", - ], -) +def get_surveys(names: Union[Survey, List[Survey]], psf_func: Callable = None): + """Return specified surveys from galcheat extended to contain PSF information. -Survey.__doc__ = """ -Class containing the informations relative to a survey. - -Args: - name (str): Name of the survey - pixel_scale (float): Pixel scale of the survey, in arcseconds per pixel - effective_area (float): Effective total light collecting area, in square meters - mirror_diameter (float): Diameter of the primary mirror, in meters - airmass (float): Optical path length through atmosphere relative to zenith path length - filters (list): List of Filter objects corresponding to the filters of this survey - zeropoint_airmass (float) Airmass at which the zeropoint is measured""" - -Filter = namedtuple( - "Filter", - [ - "name", - "psf", # galsim psf model or function to generate it - "sky_brightness", # mags/sq.arcsec - "exp_time", # in seconds [s] - "zeropoint", # in mags - "extinction", # Exponential extinction coefficient for atmospheric absorption. - ], -) - -Filter.__doc__ = """ -Class containing the informations relative to a filter (for a specific survey). - -Args: - name (str): Name of the filter - psf: Contains the PSF information, either as a Galsim object, - or as a function returning a Galsim object - sky_brightness (float): Sky brightness, in mags/sq.arcsec - exp_time (int): Total exposition time, in seconds - zeropoint (float): Magnitude of an object with a measured flux of 1 electron per second - extinction (float): Exponential extinction coefficient for atmospheric absorption""" - - -def get_survey_from_cfg(survey_conf: OmegaConf): - """Creates the corresponding `btk.survey.Survey` object using the information from config file. + This function currently returns a list of galcheat instances if `names` is a list with more + than one element. If `names` is a str or a singleton list then we return a single galcheat + instance. Args: - cfg (OmegaConf): Hydra configuration object corresponding to a single survey. + names (str or list): A single str specifying a survey from conf/surveys or a list with + multiple survey names. + psf_func (function): Python function which takes in two arguments: `survey` and `filter` + that returns a PSF as a galsim object or as a callable with no arguments. + If `None`, the default PSF for the specified survey will be used in each band. Returns: - btk.survey.Survey object. + galcheat.survey.Survey object or list of such objects. """ - OmegaConf.resolve(survey_conf) # in-place - - survey_dict = dict(survey_conf) - filters_dict = dict(survey_dict.pop("filters")) - filter_names = list(filters_dict.keys()) - for key in filter_names: - filter_dict = dict(filters_dict.pop(key)) # need to make it a dict not DictConfig - psf_dict = dict(filter_dict.pop("psf")) - if "type" not in psf_dict: - raise AttributeError( - f"Your configuration for the PSF in filter {key} in survey {survey_dict['name']}" - f"does not have a 'type' field which is required." - ) - if psf_dict["type"] == "default": - psf = get_psf(**psf_dict["params"]) - elif psf_dict["type"] == "galsim": - galsim_dict = dict(psf=psf_dict["params"]) - psf = galsim.config.BuildGSObject(galsim_dict, "psf") - else: - raise NotImplementedError( - f"The 'type' specified for the PSF in filter {key} in " - f"survey {survey_dict['name']} is not implemented." - ) + if isinstance(names, str): + names = [names] + if not isinstance(names, list): + raise TypeError("Argument 'names' of `get_surveys` should be a str or list.") - filter_dict["psf"] = psf - filters_dict[key] = filter_dict - filters = [Filter(**filters_dict[key]) for key in filters_dict] - survey = Survey(**survey_dict, filters=filters) - return survey + # add PSF to filters + surveys = [] + for survey_name in names: + survey = galcheat.get_survey(survey_name) + for band in survey.available_filters: + filtr = survey.get_filter(band) + if psf_func is None: + psf = get_default_psf_with_galcheat_info(survey, filtr) + else: + psf = psf_func(survey, filtr) + filtr.psf = psf + surveys.append(survey) + if len(surveys) == 1: + surveys = surveys[0] + return surveys -def get_surveys(names="Rubin", overrides: Iterable = ()): - """Return specified surveys as `btk.survey.Survey` objects. - NOTE: The surveys currently implemented correspond to config files inside `conf/surveys`. See - the documentation for how to add your own surveys via custom config files. +def get_default_psf_with_galcheat_info( + survey: galcheat.survey.Survey, filtr: galcheat.filter.Filter +): + """Return the default PSF model as a galsim object based on galcheat survey parameters. Args: - names (str or list): A single str specifying a survey from conf/surveys or a list with - multiple survey names. - overrides (Iterable): List or tuple containg overrides for the survey config files. An - example element of overrides could be 'surveys.Rubin.airmass=1.1', i.e. what you would - pass into the CLI in order to customize the surveys used (here specified by `names`). + survey (galcheat.survey.Survey): Survey object from galcheat. + filtr (galcheat.filter.Filter): Filter object from galcheat. Returns: btk.survey.Survey object or list of such objects. """ - if isinstance(names, str): - names = [names] - if not isinstance(names, list): - raise TypeError("Argument 'names' of `get_surveys` should be a str or list.") - overrides = [f"surveys={names}", *overrides] - surveys = [] - with initialize(config_path="../conf"): - cfg = compose("config", overrides=overrides) - for survey_name in cfg.surveys: - survey_conf = cfg.surveys[survey_name] - surveys.append(get_survey_from_cfg(survey_conf)) - if len(surveys) == 1: - return surveys[0] - return surveys + return get_default_psf( + survey.mirror_diameter.to_value("m"), + survey.effective_area.to_value("m2"), + filtr.psf_fwhm.to_value("arcsec"), + filt_wavelength=filtr.effective_wavelength.to_value("angstrom"), + atmospheric_model="Kolmogorov", + ) -def get_psf( +def get_default_psf( mirror_diameter, effective_area, - filt_wavelength, fwhm, + filt_wavelength, atmospheric_model="Kolmogorov", ): """Defines a synthetic galsim PSF model. @@ -149,9 +88,10 @@ def get_psf( Args: mirror_diameter (float): in meters [m] effective_area (float): effective total light collecting area in square meters [m2] - filt_wavelength (string): filter wavelength - fwhm (float): fwhm of the atmospheric component - atmospheric_model (string): type of atmospheric model + filt_wavelength (string): filter wavelength in Angstroms. [Angstrom] + fwhm (float): fwhm of the atmospheric component in arcseconds. [arcsec] + atmospheric_model (string): type of atmospheric model. Current options: + ['Kolmogorov', 'Moffat']. Returns: psf_model: galsim psf model @@ -216,43 +156,12 @@ def get_psf_from_file(psf_dir, survey): raise RuntimeError(f"No psf files found in '{psf_dir}'.") psf_array = fits.getdata(psf_dir + "/" + psf_file) psf_model = galsim.InterpolatedImage( - galsim.Image(psf_array), scale=survey.pixel_scale + galsim.Image(psf_array), scale=survey.pixel_scale.to_value("arcsec") ).withFlux(1.0) return psf_model -def get_flux(ab_magnitude, filt, survey): - """Convert source magnitude to flux. - - The calculation includes the effects of atmospheric extinction. - Credit: WeakLensingDeblending (https://github.com/LSSTDESC/WeakLensingDeblending) - - Args: - ab_magnitude(float): AB magnitude of source. - filt (btk.survey.Filter): BTK Filter object - survey (btk.survey.Survey): BTK Survey object - - Returns: - Flux in detected electrons. - """ - mag = ab_magnitude + filt.extinction * (survey.airmass - survey.zeropoint_airmass) - return filt.exp_time * 10 ** (-0.4 * (mag - filt.zeropoint)) - - -def get_mean_sky_level(survey, filt): - """Computes the mean sky level given to Galsim for noise generation. - - Args: - survey (btk.survey.Survey): BTK Survey object - filt (btk.survey.Filter): BTK Filter object - - Returns: - Corresponding mean sky level - """ - return get_flux(filt.sky_brightness, filt, survey) * survey.pixel_scale**2 - - def make_wcs(pixel_scale, shape, center_pix=None, center_sky=None, projection="TAN"): """Creates WCS for an image. diff --git a/conf/config.yaml b/conf/config.yaml index dd6726afd..e52509652 100644 --- a/conf/config.yaml +++ b/conf/config.yaml @@ -3,8 +3,6 @@ defaults: - catalog: catsim - sampling: default - draw_blends: catsim - - surveys: - - Rubin - override hydra/help: btk_help ### all arguments ### @@ -36,6 +34,9 @@ noise_threshold_factor: 3 distance_threshold_match: 5.0 ### organize arguments ### +surveys: + - "LSST" + measure: measure_functions: ${measure_functions} kwargs: @@ -54,18 +55,3 @@ metrics: paths: root: ${oc.env:BTK_HOME} data: ${paths.root}/data - -### Global values ### - -# Central wavelengths in Angstroms for each filter band, calculated -# from the baseline total filter throughputs tabulated at -# http://dev.lsstcorp.org/cgit/LSST/sims/throughputs.git/snapshot/throughputs-1.2.tar.gz -central_wavelength: - u: 3592.13 - g: 4789.98 - r: 6199.52 - i: 7528.51 - z: 8689.83 - y: 9674.05 - VIS: 7135.0 - f814w: 5000.0 # TODO: placeholder diff --git a/conf/draw_blends/catsim.yaml b/conf/draw_blends/catsim.yaml index 94294e3bc..6b8667ddb 100644 --- a/conf/draw_blends/catsim.yaml +++ b/conf/draw_blends/catsim.yaml @@ -1,7 +1,8 @@ _target_: btk.draw_blends.CatsimGenerator -catalog: ${catalog} -sampling_function: ${sampling} -surveys: Null +_args_: + - ${catalog} + - ${sampling} + - ${surveys} batch_size: ${batch_size} stamp_size: ${stamp_size} cpus: ${cpus} diff --git a/conf/draw_blends/cosmos.yaml b/conf/draw_blends/cosmos.yaml index a063eb8cc..15736d825 100644 --- a/conf/draw_blends/cosmos.yaml +++ b/conf/draw_blends/cosmos.yaml @@ -1,7 +1,8 @@ _target_: btk.draw_blends.CosmosGenerator -catalog: ${catalog} -sampling_function: ${sampling} -surveys: Null +_args_: + - ${catalog} + - ${sampling} + - ${surveys} batch_size: ${batch_size} stamp_size: ${stamp_size} cpus: ${cpus} diff --git a/conf/hydra/help/btk_help.yaml b/conf/hydra/help/btk_help.yaml index 3abe0c360..6742046c7 100644 --- a/conf/hydra/help/btk_help.yaml +++ b/conf/hydra/help/btk_help.yaml @@ -27,7 +27,7 @@ template: |- Assuming that BTK has been pip installed, you can run btk from the command line like e.g. btk sampling=default draw_blends=catsim max_number=3 save_path=/directory/to/save/results cpus=1 - verbose=False surveys=[Rubin,HST] surveys.Rubin.airmass=1.1 + verbose=False surveys=[LSST,COSMOS] surveys.LSST.zeropoint_airmass=1.1 sampling=default catalog.name=catsim use_metrics=['detection', 'segmentation'] (...) You need to create the directory to save results yourself (preferably an empty directory) and specify its absolute path when you run the CLI via the `save_path` parameter. @@ -45,17 +45,17 @@ template: |- a list. (see documentation for more details). * surveys: Name of the survey(s) you want to use, options are - {Rubin, HST, HSC, DES, CFHT, Euclid} and correspond to each of the config files available + {LSST, COSMOS, HSC, DES, CFHT, Euclid} and correspond to each of the config files available in conf/surveys. You can pass in a list of surveys for multi-resolution studies too. For example: - btk surveys=[Rubin,HST] (...) + btk surveys=[LSST,COSMOS] (...) - Assuming that you want to use e.g. the Rubin survey default parameters but with a couple + Assuming that you want to use e.g. the LSST survey default parameters but with a couple of changes, you can modify individual parameters of a given survey directly from the command line: - btk surveys=Rubin surveys.Rubin.airmass=1.1 (...) + btk surveys=LSST surveys.LSST.zeropoint_airmass=1.1 (...) If you want to modify a large number of parameters of a given survey, it might be easier to add your own config file to conf/surveys. See the CLI section of the tutorial for diff --git a/conf/surveys/CFHT.yaml b/conf/surveys/CFHT.yaml deleted file mode 100644 index 58c6eb011..000000000 --- a/conf/surveys/CFHT.yaml +++ /dev/null @@ -1,37 +0,0 @@ -# pixel_scale, sky_brightness: http://www.cfht.hawaii.edu/Instruments/Imaging/Megacam/generalinformation.html -# exp_time, fwhm: https://www.cfht.hawaii.edu/Science/CFHTLS/T0007/CFHTLS_T0007-TechnicalDocumentation.pdf -# zeropoint: http://www1.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/community/CFHTLS-SG/docs/extra/filters.html -CFHT: - name: "CFHT" - pixel_scale: 0.187 - effective_area: 8.022 - mirror_diameter: 3.592 - airmass: 1.2 - zeropoint_airmass: 1.0 - filters: - r: - name: "r" - sky_brightness: 20.8 - exp_time: 2000 - zeropoint: 26.74 - extinction: 0.10 - psf: - type: default - params: - fwhm: 0.71 - mirror_diameter: ${surveys.CFHT.mirror_diameter} - effective_area: ${surveys.CFHT.effective_area} - filt_wavelength: ${central_wavelength.r} - i: - name: "i" - sky_brightness: 20.3 - exp_time: 4300 - zeropoint: 26.22 - extinction: 0.07 - psf: - type: default - params: - fwhm: 0.64 - mirror_diameter: ${surveys.CFHT.mirror_diameter} - effective_area: ${surveys.CFHT.effective_area} - filt_wavelength: ${central_wavelength.i} diff --git a/conf/surveys/DES.yaml b/conf/surveys/DES.yaml deleted file mode 100644 index 551a97101..000000000 --- a/conf/surveys/DES.yaml +++ /dev/null @@ -1,65 +0,0 @@ -# http://www.ctio.noao.edu/noao/content/Basic-Optical-Parameters -# http://www.ctio.noao.edu/noao/content/DECam-What -# sky brightness: http://www.ctio.noao.edu/noao/node/1218 -# fwhm: https://arxiv.org/abs/1407.3801 table 2 -# extinction: https://arxiv.org/abs/1701.00502 table 4 -DES: - name: DES - pixel_scale: 0.263 - effective_area: 10.014 - mirror_diameter: 3.934 - airmass: 1.0 - zeropoint_airmass: 1.3 - filters: - g: - name: "g" - sky_brightness: 22.3 - exp_time: 800 - zeropoint: 26.72 - extinction: 0.17 - psf: - type: default - params: - fwhm: 1.24 - mirror_diameter: ${surveys.DES.mirror_diameter} - effective_area: ${surveys.DES.effective_area} - filt_wavelength: ${central_wavelength.g} - r: - name: "r" - sky_brightness: 21.4 - exp_time: 800 - zeropoint: 26.99 - extinction: 0.09 - psf: - type: default - params: - fwhm: 1.03 - mirror_diameter: ${surveys.DES.mirror_diameter} - effective_area: ${surveys.DES.effective_area} - filt_wavelength: ${central_wavelength.r} - i: - name: "i" - sky_brightness: 20.5 - exp_time: 1000 - zeropoint: 26.86 - extinction: 0.05 - psf: - type: default - params: - fwhm: 0.96 - mirror_diameter: ${surveys.DES.mirror_diameter} - effective_area: ${surveys.DES.effective_area} - filt_wavelength: ${central_wavelength.i} - z: - name: "z" - sky_brightness: 18.7 - exp_time: 800 - zeropoint: 26.58 - extinction: 0.06 - psf: - type: default - params: - fwhm: 1.12 - mirror_diameter: ${surveys.DES.mirror_diameter} - effective_area: ${surveys.DES.effective_area} - filt_wavelength: ${central_wavelength.z} diff --git a/conf/surveys/Euclid.yaml b/conf/surveys/Euclid.yaml deleted file mode 100644 index 4f3e1db64..000000000 --- a/conf/surveys/Euclid.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Euclid definition study report: https://arxiv.org/abs/1110.3193 -# effective_area takes into account 13% obscuration: https://arxiv.org/abs/1608.08603 -# exp_time: https://arxiv.org/abs/1608.08603 -# sky brightness: http://www.mssl.ucl.ac.uk/~smn2/instrument.html -Euclid: - name: "Euclid" - pixel_scale: 0.10 - effective_area: 0.98 - mirror_diameter: 1.2 - airmass: 1.0 - zeropoint_airmass: 1.0 - filters: - VIS: - name: VIS - sky_brightness: 22.3203 - exp_time: 565 - zeropoint: 25.91 - extinction: 0.0 - psf: - type: default - params: - fwhm: 0.16 - mirror_diameter: ${surveys.Euclid.mirror_diameter} # relative interpolation. - effective_area: ${surveys.Euclid.effective_area} - filt_wavelength: ${central_wavelength.VIS} diff --git a/conf/surveys/HSC.yaml b/conf/surveys/HSC.yaml deleted file mode 100644 index c3f3a8048..000000000 --- a/conf/surveys/HSC.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# exp_time and seeing: https://hsc-release.mtk.nao.ac.jp/doc/ -# sky_brightness: https://www.naoj.org/Observing/Instruments/SCam/exptime.html -HSC: - name: HSC - pixel_scale: 0.167 - effective_area: 52.81 - mirror_diameter: 8.2 - airmass: 1.0 - zeropoint_airmass: 1.2 - filters: - g: - name: "g" - sky_brightness: 21.4 - exp_time: 600 - zeropoint: 28.90 - extinction: 0.13 - psf: - type: default - params: - fwhm: 0.77 - mirror_diameter: ${surveys.HSC.mirror_diameter} - effective_area: ${surveys.HSC.effective_area} - filt_wavelength: ${central_wavelength.g} - r: - name: "r" - sky_brightness: 20.6 - exp_time: 600 - zeropoint: 28.86 - extinction: 0.11 - psf: - type: default - params: - fwhm: 0.76 - mirror_diameter: ${surveys.HSC.mirror_diameter} - effective_area: ${surveys.HSC.effective_area} - filt_wavelength: ${central_wavelength.r} - i: - name: "i" - sky_brightness: 19.7 - exp_time: 1200 - zeropoint: 28.61 - extinction: 0.07 - psf: - type: default - params: - fwhm: 0.58 - mirror_diameter: ${surveys.HSC.mirror_diameter} - effective_area: ${surveys.HSC.effective_area} - filt_wavelength: ${central_wavelength.i} - z: - name: "z" - sky_brightness: 18.3 - exp_time: 1200 - zeropoint: 27.68 - extinction: 0.05 - psf: - type: default - params: - fwhm: 0.68 - mirror_diameter: ${surveys.HSC.mirror_diameter} - effective_area: ${surveys.HSC.effective_area} - filt_wavelength: ${central_wavelength.z} - y: - name: "y" - sky_brightness: 17.9 - exp_time: 1200 - zeropoint: 27.33 - extinction: 0.05 - psf: - type: default - params: - fwhm: 0.68 - mirror_diameter: ${surveys.HSC.mirror_diameter} - effective_area: ${surveys.HSC.effective_area} - filt_wavelength: ${central_wavelength.y} diff --git a/conf/surveys/HST.yaml b/conf/surveys/HST.yaml deleted file mode 100644 index 56c678301..000000000 --- a/conf/surveys/HST.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# pixel_scale: https://hst-docs.stsci.edu/acsihb/chapter-3-acs-capabilities-design-and-operations/3-5-acs-quick-reference-guide -# exp_time: https://hst-docs.stsci.edu/acsdhb/chapter-1-acs-overview/1-2-basic-instrument-operations -# fwhm: https://hst-docs.stsci.edu/display/WFC3IHB/6.6+UVIS+Optical+Performance#id-6 -# zeropoint : https://galsim-developers.github.io/GalSim/_build/html/real_gal.html -# .6UVISOpticalPerformance-6.6.1 800nm -HST: - name: "HST_COSMOS" - pixel_scale: 0.03 - effective_area: 1.0 # TODO: placeholder - mirror_diameter: 2.4 - airmass: 0.0 - zeropoint_airmass: 0.0 - filters: - f814w: - name: "f814w" - sky_brightness: 22 - exp_time: 2028 - zeropoint: 25.94 - extinction: 0 - psf: - type: default - params: - fwhm: 0.074 - mirror_diameter: ${surveys.HST.mirror_diameter} - effective_area: ${surveys.HST.effective_area} - filt_wavelength: ${central_wavelength.f814w} diff --git a/conf/surveys/Rubin.yaml b/conf/surveys/Rubin.yaml deleted file mode 100644 index bbda18581..000000000 --- a/conf/surveys/Rubin.yaml +++ /dev/null @@ -1,87 +0,0 @@ -# https://www.lsst.org/about/camera/features -Rubin: - name: "Rubin" - pixel_scale: 0.2 - effective_area: 32.4 - mirror_diameter: 8.36 - airmass: 1.2 - zeropoint_airmass: 1.2 - filters: - u: - name: "u" - sky_brightness: 22.9 - exp_time: 1680 - zeropoint: 26.40 - extinction: 0.451 - psf: - type: default - params: - fwhm: 0.859 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.u} - g: - name: "g" - sky_brightness: 22.3 - exp_time: 2400 - zeropoint: 28.26 - extinction: 0.163 - psf: - type: default - params: - fwhm: 0.814 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.g} - r: - name: "r" - sky_brightness: 21.2 - exp_time: 5520 - zeropoint: 28.10 - extinction: 0.10 - psf: - type: default - params: - fwhm: 0.781 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.r} - i: - name: "i" - sky_brightness: 20.5 - exp_time: 5520 - zeropoint: 27.78 - extinction: 0.07 - psf: - type: default - params: - fwhm: 0.748 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.i} - z: - name: "z" - sky_brightness: 19.6 - exp_time: 4800 - zeropoint: 27.39 - extinction: 0.043 - psf: - type: default - params: - fwhm: 0.725 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.z} - y: - name: "y" - sky_brightness: 18.6 - exp_time: 4800 - zeropoint: 26.56 - extinction: 0.138 - psf: - type: default - params: - fwhm: 0.703 - mirror_diameter: ${surveys.Rubin.mirror_diameter} - effective_area: ${surveys.Rubin.effective_area} - filt_wavelength: ${central_wavelength.y} diff --git a/docs/source/cli.rst b/docs/source/cli.rst index b6144e3f2..928786c54 100644 --- a/docs/source/cli.rst +++ b/docs/source/cli.rst @@ -11,7 +11,7 @@ Assuming that BTK has been pip installed, you can run btk from the command line .. code-block:: - btk sampling=default draw_blends=catsim max_number=3 save_path=/directory/to/save/results cpus=1 verbose=False surveys=[Rubin, HST] surveys.Rubin.airmass=1.1 + btk sampling=default draw_blends=catsim max_number=3 save_path=/directory/to/save/results cpus=1 verbose=False surveys=[LSST, COSMOS] surveys.LSST.zeropoint_airmass=1.1 sampling=default catalog.name=catsim use_metrics=['detection', 'segmentation'] (...) You need to create the directory to save results yourself (preferably an empty directory) and specify its absolute path when you run the CLI via the ``save_path`` argument. @@ -44,9 +44,9 @@ Here is a list of all the options of BTK you can customize directly from the CLI * ``surveys``: Name of the survey(s) you want to use, options are: - - Rubin + - LSST - - HST + - COSMOS - HSC @@ -61,14 +61,14 @@ Here is a list of all the options of BTK you can customize directly from the CLI .. code-block:: - btk surveys=[Rubin,HST] (...) + btk surveys=[LSST,COSMOS] (...) - Assuming that you want to use e.g. the Rubin survey default parameters but some changes you can modify individual parameters of this survey directly from the + Assuming that you want to use e.g. the LSST survey default parameters but some changes you can modify individual parameters of this survey directly from the command line: .. code-block:: - btk surveys=Rubin surveys.Rubin.airmass=1.1 (...) + btk surveys=LSST surveys.LSST.zeropoint_airmass=1.1 (...) If you want to modify a large number of parameters of a given survey, it might be easier to add your own config file to ``conf/surveys``. See below for instructions on how to do this. @@ -124,8 +124,6 @@ needs to be the *unique* name of your survey and the corresponding fields - mirror_diameter - - airmass - - zeropoint_airmass - filters @@ -140,8 +138,6 @@ are required. You should have at least one filter with the fields: - zeropoint - - extinction - - psf The ``psf`` field can be specified with ``type: default`` in which case you need to specify the parameters: diff --git a/docs/source/tutorials.rst b/docs/source/tutorials.rst index 4c02d0b0b..e6290544f 100644 --- a/docs/source/tutorials.rst +++ b/docs/source/tutorials.rst @@ -148,13 +148,13 @@ You may write more complex sampling functions to have more control over how the Survey ....... -The BTK Survey object defines the observing conditions relative to a survey. It is based on the named tuple class, and contains various parameters (eg. pixel scale, effective_area), including a list of Filter objects. The Filter class is also a named tuple, and contains information concerning a specific filter in the survey (eg. exporesure time, psf). Numerous surveys are already implemented in BTK; we will import the Rubin one for this tutorial. +The BTK Survey object defines the observing conditions relative to a survey. It is based on the named tuple class, and contains various parameters (eg. pixel scale, effective_area), including a list of Filter objects. The Filter class is also a named tuple, and contains information concerning a specific filter in the survey (eg. exporesure time, psf). Numerous surveys are already implemented in BTK; we will import the LSST one for this tutorial. .. jupyter-execute:: - Rubin = btk.survey.get_surveys("Rubin") + LSST = btk.survey.get_surveys("LSST") -You may want to define your own survey if you wish to modify some parameters or use a survey which is not implemented in BTK. We advise you to take the code of an existing survey and modify it to your convenience. Here is the one for Rubin: +You may want to define your own survey if you wish to modify some parameters or use a survey which is not implemented in BTK. We advise you to take the code of an existing survey and modify it to your convenience. Here is the one for LSST: .. jupyter-execute:: @@ -169,8 +169,8 @@ You may want to define your own survey if you wish to modify some parameters or "y": 9674.05, } - Rubin = btk.survey.Survey( - "Rubin", + LSST = btk.survey.Survey( + "LSST", pixel_scale=0.2, effective_area=32.4, mirror_diameter=8.36, @@ -270,7 +270,7 @@ The `psf` attribute deserves an additionnal explanation: it corresponds to the P You may want to use a function taking an argument to avoid rewriting the function for each filter; we advise using lambda functions to achieve this, eg ``get_u_psf = lambda: get_custom_psf(u_band_argument)``. -Finally, you can use the default function ``get_psf`` as demonstrated in the Rubin Survey, to get a complex (not random) PSF, or use the function ``get_psf_from_file(psf_dir, pixel_scale)`` to import a PSF from a FITS file (randomly if there are more than one file in the directory provided). For more information on these functions take a look at the API. +Finally, you can use the default function ``get_psf`` as demonstrated in the LSST Survey, to get a complex (not random) PSF, or use the function ``get_psf_from_file(psf_dir, pixel_scale)`` to import a PSF from a FITS file (randomly if there are more than one file in the directory provided). For more information on these functions take a look at the API. Drawing the blends ................... @@ -282,7 +282,7 @@ Now that we have all the objects at our disposal, we can create the DrawBlendsGe draw_generator = btk.draw_blends.CatsimGenerator( catalog, sampling_function, - [Rubin], + [LSST], batch_size=8, stamp_size=stamp_size, cpus=1, @@ -448,7 +448,7 @@ Saving the results can be automatically achieved by providing the save_path argu draw_generator = btk.draw_blends.CatsimGenerator( catalog, sampling_function, - Rubin, + LSST, batch_size=100, stamp_size=stamp_size, cpus=1, @@ -467,7 +467,7 @@ To load the results, you can use the `load_all_results` function ; you need to p :: - blend_results,meas_results,results = btk.utils.load_all_results(save_path,["Rubin"],["sep_measure"],n_batch=100) + blend_results,meas_results,results = btk.utils.load_all_results(save_path,["LSST"],["sep_measure"],n_batch=100) @@ -489,14 +489,14 @@ Let's start with the catalog and sampling function. We use a small sample of the catalog = btk.catalog.CosmosCatalog.from_file(COSMOS_CATALOG_PATHS) sampling_function = btk.sampling_functions.DefaultSampling(stamp_size=stamp_size) -We can now create the corresponding instance of ``DrawBlendsGenerator``. There is an important caveat here: as in the other tutorial, we use the Rubin survey. However, the COSMOS data set only contains images and magnitudes from the f814w band; thus, when simulating images, the same magnitude is used to compute the galaxy fluxes across all bands. The section that follows explains how to get around this issue. +We can now create the corresponding instance of ``DrawBlendsGenerator``. There is an important caveat here: as in the other tutorial, we use the LSST survey. However, the COSMOS data set only contains images and magnitudes from the f814w band; thus, when simulating images, the same magnitude is used to compute the galaxy fluxes across all bands. The section that follows explains how to get around this issue. .. jupyter-execute:: draw_generator = btk.draw_blends.CosmosGenerator( catalog, sampling_function, - btk.survey.get_surveys("Rubin"), + btk.survey.get_surveys("LSST"), batch_size=batch_size, stamp_size=stamp_size, cpus=1, diff --git a/notebooks/00-intro.ipynb b/notebooks/00-intro.ipynb index 068129ccc..b8740ed22 100644 --- a/notebooks/00-intro.ipynb +++ b/notebooks/00-intro.ipynb @@ -228,7 +228,7 @@ "source": [ "## Survey\n", "\n", - "The BTK Survey object defines the observing conditions relative to a survey. It is based on the named tuple class, and contains various parameters (eg. pixel scale, effective_area), including a list of Filter objects. The Filter class is also a named tuple, and contains information concerning a specific filter in the survey (eg. exporesure time, psf). Numerous surveys are already implemented in BTK; we will import the Rubin one for this tutorial." + "The BTK Survey object defines the observing conditions relative to a survey. It is based on the named tuple class, and contains various parameters (eg. pixel scale, effective_area), including a list of Filter objects. The Filter class is also a named tuple, and contains information concerning a specific filter in the survey (eg. exporesure time, psf). Numerous surveys are already implemented in BTK; we will import the LSST one for this tutorial." ] }, { @@ -237,14 +237,14 @@ "metadata": {}, "outputs": [], "source": [ - "Rubin = btk.survey.get_surveys(\"Rubin\")" + "LSST = btk.survey.get_surveys(\"LSST\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You may want to define your own survey if you wish to modify some parameters or use a survey which is not implemented in BTK. We advise you to take the code of an existing survey and modify it to your convenience. Here is the one for Rubin:" + "You may want to define your own survey if you wish to modify some parameters or use a survey which is not implemented in BTK. We advise you to take the code of an existing survey and modify it to your convenience. Here is the one for LSST:" ] }, { @@ -262,8 +262,8 @@ " \"z\": 8689.83,\n", " \"y\": 9674.05,\n", "}\n", - "Rubin = btk.survey.Survey(\n", - " \"Rubin\",\n", + "LSST = btk.survey.Survey(\n", + " \"LSST\",\n", " pixel_scale=0.2,\n", " effective_area=32.4,\n", " mirror_diameter=8.36,\n", @@ -383,7 +383,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, you can use the default function `get_psf` as demonstrated in the Rubin Survey, to get a complex (not random) PSF, or use the function `get_psf_from_file(psf_dir, pixel_scale)` to import a PSF from a FITS file (randomly if there are more than one file in the directory provided)." + "Finally, you can use the default function `get_psf` as demonstrated in the LSST Survey, to get a complex (not random) PSF, or use the function `get_psf_from_file(psf_dir, pixel_scale)` to import a PSF from a FITS file (randomly if there are more than one file in the directory provided)." ] }, { @@ -411,7 +411,7 @@ "draw_generator = btk.draw_blends.CatsimGenerator(\n", " catalog,\n", " sampling_function,\n", - " Rubin,\n", + " LSST,\n", " batch_size=100,\n", " stamp_size=stamp_size,\n", " cpus=1,\n", @@ -447,7 +447,7 @@ "version_minor": 0 }, "text/plain": [ - "Generating blends for Rubin survey: 0%| | 0/100 [00:00=3.7" [package.dependencies] -cached-property = "*" +cached-property = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "astropy" @@ -136,6 +136,21 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "beautifulsoup4" +version = "4.10.0" +description = "Screen-scraping library" +category = "main" +optional = false +python-versions = ">3.0.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "black" version = "22.1.0" @@ -355,7 +370,7 @@ flake8 = ">=3.7" [[package]] name = "fonttools" -version = "4.29.1" +version = "4.31.0" description = "Tools to manipulate font files" category = "main" optional = false @@ -382,6 +397,29 @@ category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "galcheat" +version = "0.1.3.dev53+gbb0c765" +description = "Tiny library of galaxy surveys most useful parameters with units" +category = "main" +optional = false +python-versions = ">=3.7" +develop = false + +[package.dependencies] +astropy = ">=4.3" +pyyaml = ">=5.1" + +[package.extras] +dev = ["pre-commit (>=2.17)", "pytest (>=6.0)", "pytest-cov (>=3.0)", "pytest-astropy-header (>=0.2)"] +scripts = ["speclite (>=0.15)"] + +[package.source] +type = "git" +url = "https://github.com/aboucaud/galcheat" +reference = "bb0c765ef8a130f9112d99580d93adffb2a8af47" +resolved_reference = "bb0c765ef8a130f9112d99580d93adffb2a8af47" + [[package]] name = "galsim" version = "2.3.4" @@ -411,7 +449,7 @@ omegaconf = ">=2.1.0,<2.2.0" [[package]] name = "identify" -version = "2.4.10" +version = "2.4.12" description = "File identification library for Python" category = "dev" optional = false @@ -430,11 +468,11 @@ python-versions = ">=3.5" [[package]] name = "imageio" -version = "2.16.0" +version = "2.16.1" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [package.dependencies] numpy = ">=1.20.0" @@ -463,7 +501,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.11.1" +version = "4.11.3" description = "Read metadata from Python packages" category = "main" optional = false @@ -474,7 +512,7 @@ typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] @@ -503,7 +541,7 @@ python-versions = "*" [[package]] name = "ipykernel" -version = "6.9.1" +version = "6.9.2" description = "IPython Kernel for Jupyter" category = "main" optional = false @@ -516,6 +554,7 @@ ipython = ">=7.23.1" jupyter-client = "<8.0" matplotlib-inline = ">=0.1.0,<0.2.0" nest-asyncio = "*" +psutil = "*" tornado = ">=4.2,<7.0" traitlets = ">=5.1.0,<6.0" @@ -524,7 +563,7 @@ test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "ipyparallel"] [[package]] name = "ipython" -version = "7.31.1" +version = "7.32.0" description = "IPython: Productive Interactive Computing" category = "main" optional = false @@ -564,7 +603,7 @@ python-versions = "*" [[package]] name = "ipywidgets" -version = "7.6.5" +version = "7.7.0" description = "IPython HTML widgets for Jupyter" category = "main" optional = false @@ -577,7 +616,7 @@ ipython-genutils = ">=0.2.0,<0.3.0" jupyterlab-widgets = {version = ">=1.0.0", markers = "python_version >= \"3.6\""} nbformat = ">=4.2.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=3.5.0,<3.6.0" +widgetsnbextension = ">=3.6.0,<3.7.0" [package.extras] test = ["pytest (>=3.6.0)", "pytest-cov", "mock"] @@ -691,7 +730,7 @@ pygments = ">=2.4.1,<3" [[package]] name = "jupyterlab-widgets" -version = "1.0.2" +version = "1.1.0" description = "A JupyterLab extension." category = "main" optional = false @@ -699,12 +738,15 @@ python-versions = ">=3.6" [[package]] name = "kiwisolver" -version = "1.3.2" +version = "1.4.0" description = "A fast implementation of the Cassowary constraint solver" category = "main" optional = false python-versions = ">=3.7" +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [[package]] name = "lsstdesc.coord" version = "1.2.2" @@ -720,7 +762,7 @@ numpy = "*" [[package]] name = "markupsafe" -version = "2.1.0" +version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false @@ -795,7 +837,7 @@ python-versions = "*" [[package]] name = "nbclient" -version = "0.5.11" +version = "0.5.13" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." category = "main" optional = false @@ -805,7 +847,7 @@ python-versions = ">=3.7.0" jupyter-client = ">=6.1.5" nbformat = ">=5.0" nest-asyncio = "*" -traitlets = ">=4.2" +traitlets = ">=5.0.0" [package.extras] sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] @@ -813,13 +855,14 @@ test = ["ipython (<8.0.0)", "ipykernel", "ipywidgets (<8.0.0)", "pytest (>=4.1)" [[package]] name = "nbconvert" -version = "6.4.2" +version = "6.4.4" description = "Converting Jupyter Notebooks" category = "main" optional = false python-versions = ">=3.7" [package.dependencies] +beautifulsoup4 = "*" bleach = "*" defusedxml = "*" entrypoints = ">=0.2.2" @@ -843,21 +886,20 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.1.3" +version = "5.2.0" description = "The Jupyter Notebook format" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [package.dependencies] -ipython-genutils = "*" jsonschema = ">=2.4,<2.5.0 || >2.5.0" jupyter-core = "*" traitlets = ">=4.1" [package.extras] fast = ["fastjsonschema"] -test = ["check-manifest", "fastjsonschema", "testpath", "pytest", "pytest-cov"] +test = ["check-manifest", "fastjsonschema", "testpath", "pytest"] [[package]] name = "nbstripout" @@ -919,7 +961,7 @@ python-versions = "*" [[package]] name = "notebook" -version = "6.4.8" +version = "6.4.10" description = "A web-based notebook environment for interactive computing" category = "main" optional = false @@ -932,7 +974,7 @@ ipython-genutils = "*" jinja2 = "*" jupyter-client = ">=5.3.4" jupyter-core = ">=4.6.1" -nbconvert = "*" +nbconvert = ">=5" nbformat = "*" nest-asyncio = ">=1.5" prometheus-client = "*" @@ -1139,6 +1181,17 @@ python-versions = "*" numpy = "*" scipy = "*" +[[package]] +name = "psutil" +version = "5.9.0" +description = "Cross-platform lib for process and system monitoring in Python." +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] + [[package]] name = "ptyprocess" version = "0.7.0" @@ -1248,11 +1301,11 @@ python-versions = ">=3.7" [[package]] name = "pytest" -version = "7.0.1" +version = "7.1.1" description = "pytest: simple powerful testing with Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} @@ -1304,7 +1357,7 @@ python-versions = "*" [[package]] name = "pywavelets" -version = "1.2.0" +version = "1.3.0" description = "PyWavelets, wavelet transform module" category = "main" optional = false @@ -1323,11 +1376,11 @@ python-versions = "*" [[package]] name = "pywinpty" -version = "2.0.2" +version = "2.0.5" description = "Pseudo terminal support for Windows from Python." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "pyyaml" @@ -1351,14 +1404,14 @@ py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "reorder-python-imports" -version = "2.7.1" +version = "3.0.1" description = "Tool for reordering python imports" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -"aspy.refactor-imports" = ">=2.2.1" +"aspy.refactor-imports" = ">=2.3.0" [[package]] name = "requests" @@ -1483,6 +1536,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "soupsieve" +version = "2.3.1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "sphinx" version = "4.4.0" @@ -1603,7 +1664,7 @@ test = ["pytest"] [[package]] name = "terminado" -version = "0.13.1" +version = "0.13.3" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." category = "main" optional = false @@ -1619,14 +1680,14 @@ test = ["pytest"] [[package]] name = "testpath" -version = "0.5.0" +version = "0.6.0" description = "Test utilities for code working with files and commands" category = "main" optional = false python-versions = ">= 3.5" [package.extras] -test = ["pytest", "pathlib2"] +test = ["pytest"] [[package]] name = "tifffile" @@ -1668,7 +1729,7 @@ python-versions = ">= 3.5" [[package]] name = "tqdm" -version = "4.62.3" +version = "4.63.0" description = "Fast, Extensible Progress Meter" category = "main" optional = false @@ -1711,20 +1772,20 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.8" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] -brotli = ["brotlipy (>=0.6.0)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.13.1" +version = "20.13.3" description = "Virtual Python Environment builder" category = "dev" optional = false @@ -1759,7 +1820,7 @@ python-versions = "*" [[package]] name = "widgetsnbextension" -version = "3.5.2" +version = "3.6.0" description = "IPython HTML widgets for Jupyter" category = "main" optional = false @@ -1786,7 +1847,7 @@ scarlet = ["peigen", "autograd", "pybind11", "proxmin"] [metadata] lock-version = "1.1" python-versions = ">= 3.7.1, < 3.9.0" -content-hash = "3b741e07eb889153af59cf0933b13ec51cd962e956732aff94773fc6d7d21146" +content-hash = "37f82dc52472f7b546e72eb7b3aa55b7d8ca9d4d5418ce8e6dd78527ff98f0d8" [metadata.files] alabaster = [ @@ -1828,8 +1889,8 @@ argon2-cffi-bindings = [ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, ] "aspy.refactor-imports" = [ - {file = "aspy.refactor_imports-2.2.1-py2.py3-none-any.whl", hash = "sha256:ace9ca78abf6cfdd20ea1a321b75b20c8cc2c1af58aecb9dc4ba9d6f70f74645"}, - {file = "aspy.refactor_imports-2.2.1.tar.gz", hash = "sha256:f5b2fcbf9fd68361168588f14eda64d502d029eefe632d15094cd0683ae12984"}, + {file = "aspy.refactor_imports-3.0.1-py2.py3-none-any.whl", hash = "sha256:bc257946fdf5abd9c60393cfb8d0b5d45a2b87d1ee0ede46584c8be5567bc669"}, + {file = "aspy.refactor_imports-3.0.1.tar.gz", hash = "sha256:df497c3726ee2931b03d403e58a4590f7f4e60059b115cf5df0e07e70c7c73be"}, ] astropy = [ {file = "astropy-4.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0764d7f68034c584dda8d1c9cc4357ade05cec4c1134db43bce804fcf656ff1"}, @@ -1868,6 +1929,10 @@ backcall = [ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"}, + {file = "beautifulsoup4-4.10.0.tar.gz", hash = "sha256:c23ad23c521d818955a4151a67d81580319d4bf548d3d49f4223ae041ff98891"}, +] black = [ {file = "black-22.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6"}, {file = "black-22.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866"}, @@ -2113,12 +2178,13 @@ flake8-absolute-import = [ {file = "flake8_absolute_import-1.0.0.1-py3-none-any.whl", hash = "sha256:d24f189bca52ffc0d13e8046606ea42d22a9ad9d409bf39e52b93493cf2ffd2c"}, ] fonttools = [ - {file = "fonttools-4.29.1-py3-none-any.whl", hash = "sha256:1933415e0fbdf068815cb1baaa1f159e17830215f7e8624e5731122761627557"}, - {file = "fonttools-4.29.1.zip", hash = "sha256:2b18a172120e32128a80efee04cff487d5d140fe7d817deb648b2eee023a40e4"}, + {file = "fonttools-4.31.0-py3-none-any.whl", hash = "sha256:058d15bd7aa35f47df70f99a15ac4994787127db42c468e695d1b9ef77c0a6a4"}, + {file = "fonttools-4.31.0.zip", hash = "sha256:1b008d129c1c0f0174a74f2ea07b949ed4fbf328355cf4c9812506ecaac38b9f"}, ] future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] +galcheat = [] galsim = [ {file = "GalSim-2.3.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e15165ddaf0d1572d319efe7160f83bd9b10aa33f4f8854f896c2eea0a71e9e3"}, {file = "GalSim-2.3.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:edaad17af01b8a731ba60877401544255c78a46570a18ce0c5bb5ddcc6555583"}, @@ -2153,24 +2219,24 @@ hydra-core = [ {file = "hydra_core-1.1.1-py3-none-any.whl", hash = "sha256:928b154d8105db4ee67d768e3cd0f74ca9373121fc99dee54488393b17a31929"}, ] identify = [ - {file = "identify-2.4.10-py2.py3-none-any.whl", hash = "sha256:7d10baf6ba6f1912a0a49f4c1c2c49fa1718765c3a37d72d13b07779567c5b85"}, - {file = "identify-2.4.10.tar.gz", hash = "sha256:e12b2aea3cf108de73ae055c2260783bde6601de09718f6768cf8e9f6f6322a6"}, + {file = "identify-2.4.12-py2.py3-none-any.whl", hash = "sha256:5f06b14366bd1facb88b00540a1de05b69b310cbc2654db3c7e07fa3a4339323"}, + {file = "identify-2.4.12.tar.gz", hash = "sha256:3f3244a559290e7d3deb9e9adc7b33594c1bc85a9dd82e0f1be519bf12a1ec17"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] imageio = [ - {file = "imageio-2.16.0-py3-none-any.whl", hash = "sha256:1ee35330318bcb0ce25de778fc1f61555558a159433a568887d7e3d0317ce63c"}, - {file = "imageio-2.16.0.tar.gz", hash = "sha256:7f7d8d8e1eb6f8bb1d15e0dd93bee3f72026a4c3b96e9c690e42f403f7bdea3e"}, + {file = "imageio-2.16.1-py3-none-any.whl", hash = "sha256:d8d17c59b6f5f3b350bbbe346e7cb7dda0399b1881d93ad01cb29b5acdb24c42"}, + {file = "imageio-2.16.1.tar.gz", hash = "sha256:7f123cb23a77ac5abe8ed4e7ad6a60831a82de2c5d123463dcf1d4278c4779d2"}, ] imagesize = [ {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"}, {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.1-py3-none-any.whl", hash = "sha256:e0bc84ff355328a4adfc5240c4f211e0ab386f80aa640d1b11f0618a1d282094"}, - {file = "importlib_metadata-4.11.1.tar.gz", hash = "sha256:175f4ee440a0317f6e8d81b7f8d4869f93316170a65ad2b007d2929186c8052c"}, + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, ] importlib-resources = [ {file = "importlib_resources-5.4.0-py3-none-any.whl", hash = "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45"}, @@ -2181,20 +2247,20 @@ iniconfig = [ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] ipykernel = [ - {file = "ipykernel-6.9.1-py3-none-any.whl", hash = "sha256:4fae9df6e192837552b2406a6052d707046dd2e153860be73c68484bacba18ed"}, - {file = "ipykernel-6.9.1.tar.gz", hash = "sha256:f95070a2dfd3147f8ab19f18ee46733310813758593745e07ec18fb08b409f1d"}, + {file = "ipykernel-6.9.2-py3-none-any.whl", hash = "sha256:c977cff576b8425a68d3a6916510903833f0f25ed8d5c282a0c51c35de27bd47"}, + {file = "ipykernel-6.9.2.tar.gz", hash = "sha256:4c3cc8cb359f2ead70c30f5504971c0d285e2c1c699d2ce9af0216fe9c9fb17c"}, ] ipython = [ - {file = "ipython-7.31.1-py3-none-any.whl", hash = "sha256:55df3e0bd0f94e715abd968bedd89d4e8a7bce4bf498fb123fed4f5398fea874"}, - {file = "ipython-7.31.1.tar.gz", hash = "sha256:b5548ec5329a4bcf054a5deed5099b0f9622eb9ea51aaa7104d215fece201d8c"}, + {file = "ipython-7.32.0-py3-none-any.whl", hash = "sha256:86df2cf291c6c70b5be6a7b608650420e89180c8ec74f376a34e2dc15c3400e7"}, + {file = "ipython-7.32.0.tar.gz", hash = "sha256:468abefc45c15419e3c8e8c0a6a5c115b2127bafa34d7c641b1d443658793909"}, ] ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] ipywidgets = [ - {file = "ipywidgets-7.6.5-py2.py3-none-any.whl", hash = "sha256:d258f582f915c62ea91023299603be095de19afb5ee271698f88327b9fe9bf43"}, - {file = "ipywidgets-7.6.5.tar.gz", hash = "sha256:00974f7cb4d5f8d494c19810fedb9fa9b64bffd3cda7c2be23c133a1ad3c99c5"}, + {file = "ipywidgets-7.7.0-py2.py3-none-any.whl", hash = "sha256:e58ff58bc94d481e91ecb6e13a5cb96a87b6b8ade135e055603d0ca24593df38"}, + {file = "ipywidgets-7.7.0.tar.gz", hash = "sha256:ab4a5596855a88b83761921c768707d65e5847068139bc1729ddfe834703542a"}, ] jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, @@ -2225,99 +2291,98 @@ jupyterlab-pygments = [ {file = "jupyterlab_pygments-0.1.2.tar.gz", hash = "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146"}, ] jupyterlab-widgets = [ - {file = "jupyterlab_widgets-1.0.2-py3-none-any.whl", hash = "sha256:f5d9efface8ec62941173ba1cffb2edd0ecddc801c11ae2931e30b50492eb8f7"}, - {file = "jupyterlab_widgets-1.0.2.tar.gz", hash = "sha256:7885092b2b96bf189c3a705cc3c412a4472ec5e8382d0b47219a66cccae73cfa"}, + {file = "jupyterlab_widgets-1.1.0-py3-none-any.whl", hash = "sha256:c2a9bd3789f120f64d73268c066ed3b000c56bc1dda217be5cdc43e7b4ebad3f"}, + {file = "jupyterlab_widgets-1.1.0.tar.gz", hash = "sha256:d5f41bc1713795385f718d44dcba47e1e1473c6289f28a95aa6b2c0782ee372a"}, ] kiwisolver = [ - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6"}, - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d93a1095f83e908fc253f2fb569c2711414c0bfd451cab580466465b235b470"}, - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4550a359c5157aaf8507e6820d98682872b9100ce7607f8aa070b4b8af6c298"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2210f28778c7d2ee13f3c2a20a3a22db889e75f4ec13a21072eabb5693801e84"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:82f49c5a79d3839bc8f38cb5f4bfc87e15f04cbafa5fbd12fb32c941cb529cfb"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9661a04ca3c950a8ac8c47f53cbc0b530bce1b52f516a1e87b7736fec24bfff0"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ddb500a2808c100e72c075cbb00bf32e62763c82b6a882d403f01a119e3f402"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72be6ebb4e92520b9726d7146bc9c9b277513a57a38efcf66db0620aec0097e0"}, - {file = "kiwisolver-1.3.2-cp310-cp310-win32.whl", hash = "sha256:83d2c9db5dfc537d0171e32de160461230eb14663299b7e6d18ca6dca21e4977"}, - {file = "kiwisolver-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:cba430db673c29376135e695c6e2501c44c256a81495da849e85d1793ee975ad"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4116ba9a58109ed5e4cb315bdcbff9838f3159d099ba5259c7c7fb77f8537492"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19554bd8d54cf41139f376753af1a644b63c9ca93f8f72009d50a2080f870f77"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a4cf5bbdc861987a7745aed7a536c6405256853c94abc9f3287c3fa401b174"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0007840186bacfaa0aba4466d5890334ea5938e0bb7e28078a0eb0e63b5b59d5"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec2eba188c1906b05b9b49ae55aae4efd8150c61ba450e6721f64620c50b59eb"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3dbb3cea20b4af4f49f84cffaf45dd5f88e8594d18568e0225e6ad9dec0e7967"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:5326ddfacbe51abf9469fe668944bc2e399181a2158cb5d45e1d40856b2a0589"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c6572c2dab23c86a14e82c245473d45b4c515314f1f859e92608dcafbd2f19b8"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b5074fb09429f2b7bc82b6fb4be8645dcbac14e592128beeff5461dcde0af09f"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:22521219ca739654a296eea6d4367703558fba16f98688bd8ce65abff36eaa84"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c358721aebd40c243894298f685a19eb0491a5c3e0b923b9f887ef1193ddf829"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ba5a1041480c6e0a8b11a9544d53562abc2d19220bfa14133e0cdd9967e97af"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44e6adf67577dbdfa2d9f06db9fbc5639afefdb5bf2b4dfec25c3a7fbc619536"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d45d1c74f88b9f41062716c727f78f2a59a5476ecbe74956fafb423c5c87a76"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70adc3658138bc77a36ce769f5f183169bc0a2906a4f61f09673f7181255ac9b"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6a5431940f28b6de123de42f0eb47b84a073ee3c3345dc109ad550a3307dd28"}, - {file = "kiwisolver-1.3.2-cp38-cp38-win32.whl", hash = "sha256:ee040a7de8d295dbd261ef2d6d3192f13e2b08ec4a954de34a6fb8ff6422e24c"}, - {file = "kiwisolver-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8dc3d842fa41a33fe83d9f5c66c0cc1f28756530cd89944b63b072281e852031"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a498bcd005e8a3fedd0022bb30ee0ad92728154a8798b703f394484452550507"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80efd202108c3a4150e042b269f7c78643420cc232a0a771743bb96b742f838f"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f8eb7b6716f5b50e9c06207a14172cf2de201e41912ebe732846c02c830455b9"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f441422bb313ab25de7b3dbfd388e790eceb76ce01a18199ec4944b369017009"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30fa008c172355c7768159983a7270cb23838c4d7db73d6c0f6b60dde0d432c6"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f8f6c8f4f1cff93ca5058d6ec5f0efda922ecb3f4c5fb76181f327decff98b8"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba677bcaff9429fd1bf01648ad0901cea56c0d068df383d5f5856d88221fe75b"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7843b1624d6ccca403a610d1277f7c28ad184c5aa88a1750c1a999754e65b439"}, - {file = "kiwisolver-1.3.2-cp39-cp39-win32.whl", hash = "sha256:e6f5eb2f53fac7d408a45fbcdeda7224b1cfff64919d0f95473420a931347ae9"}, - {file = "kiwisolver-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:eedd3b59190885d1ebdf6c5e0ca56828beb1949b4dfe6e5d0256a461429ac386"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dedc71c8eb9c5096037766390172c34fb86ef048b8e8958b4e484b9e505d66bc"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bf7eb45d14fc036514c09554bf983f2a72323254912ed0c3c8e697b62c4c158f"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b65bd35f3e06a47b5c30ea99e0c2b88f72c6476eedaf8cfbc8e66adb5479dcf"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25405f88a37c5f5bcba01c6e350086d65e7465fd1caaf986333d2a045045a223"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:bcadb05c3d4794eb9eee1dddf1c24215c92fb7b55a80beae7a60530a91060560"}, - {file = "kiwisolver-1.3.2.tar.gz", hash = "sha256:fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"}, + {file = "kiwisolver-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:70e7b7a4ebeddef423115ea31857732fc04e0f38dd1e6385e1af05b6164a3d0f"}, + {file = "kiwisolver-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:384b5076b2c0172003abca9ba8b8c5efcaaffd31616f3f5e0a09dcc34772d012"}, + {file = "kiwisolver-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:334a7e3d498a0a791245f0964c746d0414e9b13aef73237f0d798a2101fdbae9"}, + {file = "kiwisolver-1.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:734e943ae519cdb8534d9053f478417c525ec921c06896ec7119e65d9ea4a687"}, + {file = "kiwisolver-1.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:65cbdbe14dc5988e362eb15e02dd24c6724238cb235132f812f1e3a29a61a3de"}, + {file = "kiwisolver-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf0080449d6ea39b817d85abd2c20d2d42fd9b1587544d64371d28d93c379cf"}, + {file = "kiwisolver-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd0223a3a4ddcc0d0e06c6cfeb0adde2bc19c08b4c7fc79d48dac2486a4b115b"}, + {file = "kiwisolver-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed30c5e58e578a2981c67346b2569e04120d1b80fa6906c207fe824d24603313"}, + {file = "kiwisolver-1.4.0-cp310-cp310-win32.whl", hash = "sha256:ed937691f522cc2362c280c903837a4e35195659b9935b598e3cd448db863605"}, + {file = "kiwisolver-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:576ba51b9f4e4d0d583c1cd257f53397bdc5e66a5e49fe68712f658426115777"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2467fe5fff6ed2a728e10dca9b1f37e9b911ca5b228a7d8990c8e3abf80c1724"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff7ae6fb6dce2f520b2d46efc801605fa1378fb19bb4580aebc6174eab05a0"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:313724e85fd14d581a939fa02424f4dc772fd914bc04499a8a6377d47313b966"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bb997d1631b20745b18674d68dd6f1d9d45db512efd5fe0f162a5d4a6bbdd211"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97372c837add54e3e64a811464b14bb01428c4e9256072b6296f04157ea23246"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4471a48f53d20d49f263ca888aab77b754525ef35e6767657e1a44a724a8b0af"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:1cf8c81e8a5fb4f5dcbd473fdb619b895313d29b7c60e4545827dcc6efbd8efc"}, + {file = "kiwisolver-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:87367ba1ad3819f7189fe8faff5f75a7603f526576033e7b86e10b598f8790b2"}, + {file = "kiwisolver-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:139c75216e5875ee5f8f4f7adcc3cd339f46f0d66bda2e10d8d21386d635476f"}, + {file = "kiwisolver-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:895b2df026006ff7434b03ca495983d0d26da96f6d58414c77d616747ee77e34"}, + {file = "kiwisolver-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbf9aa926de224af15c974750fecdc7d2c0043428372acaaf61216e202abbf21"}, + {file = "kiwisolver-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cd1f81bc35ec24cb82a7d0b805521e3d71b25b8a493d5810d18dc29644c6ef8"}, + {file = "kiwisolver-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:199f32bf6f3d3e2246024326497513c5c49c62aecee86f0ac019f5991978d505"}, + {file = "kiwisolver-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af6a7c956a45ee721e4263f5823e1a3b2e6b21a7e2b3646b3794e000620609d0"}, + {file = "kiwisolver-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3891527ec51b0365bb50de9bf826ce3d5b1adc276685b2779889762437bbd359"}, + {file = "kiwisolver-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14f43edc25daa0646d4b4e86c2ebdd32d785ab73a65a570130a3d234a4554b07"}, + {file = "kiwisolver-1.4.0-cp38-cp38-win32.whl", hash = "sha256:5ecf82bb25cec7df4bfcf37afe49f6f6202b4fa4029be7cb0848ed319c72d356"}, + {file = "kiwisolver-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:34e2e39a219b203fa3a82af5b9f8d386a8718677de7a9b82a9634e292a8f4e0a"}, + {file = "kiwisolver-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c19457f58941da61681efaabd5b1c37893108a2f922b9b19538f6921911186d"}, + {file = "kiwisolver-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0a6f3d5063e7fd6662e4773778ad2cb36e598abc6eb171af4a072ca86b441d0"}, + {file = "kiwisolver-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:676f9fac93f97f529dc80b5d6731099fad337549408e8bdd929343b7cb679797"}, + {file = "kiwisolver-1.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4b70f0729947d6327cd659e1b3477ced44a317a4ba441238b2a3642990f0ebd7"}, + {file = "kiwisolver-1.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:925a32900fc16430ba0dec2c0fca2e776eaf2fdc0930d5552be0a59e23304001"}, + {file = "kiwisolver-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ec8bd4e162fd0a8723467395c5bb16fd665a528b78e9339886c82965ed8efb"}, + {file = "kiwisolver-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9b4d1db32a4f1682df1480fd68eb1400235ac8f9ad8932e1624fdb23eb891904"}, + {file = "kiwisolver-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38ebc0cb30ed2f59bd15e23591a53698005123e90e880f1af4600fcdbe4912e1"}, + {file = "kiwisolver-1.4.0-cp39-cp39-win32.whl", hash = "sha256:8f63b981678ca894bb665bcd5043bde2c9ba600e69df730c1ceeadd73ddbcb8c"}, + {file = "kiwisolver-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:b1ff5582bf55e85728119c5a23f695b8e408e15eee7d0f5effe0ee8ad1f8b523"}, + {file = "kiwisolver-1.4.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c29496625c61e18d97a6f6c2f2a55759ca8290fc21a751bc57824599c431c0d2"}, + {file = "kiwisolver-1.4.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:71d44a6a59ea53d41e5950a42ec496fa821bd86f292fb3e10aa1b3932ecfc65e"}, + {file = "kiwisolver-1.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf2030bf18c21bf91fa9cf6a403a765519c9168bd7a91ba1d66d5c7f70ded1e"}, + {file = "kiwisolver-1.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:5ca92de8e48678a2cbbd90adb10773e3553bb9fd1c090bf0dfe5fc3337a181ea"}, + {file = "kiwisolver-1.4.0.tar.gz", hash = "sha256:7508b01e211178a85d21f1f87029846b77b2404a4c68cbd14748d4d4142fa3b8"}, ] "lsstdesc.coord" = [ {file = "LSSTDESC.Coord-1.2.2.tar.gz", hash = "sha256:91507bb540f4cc4d00c8428bd5ea2ea60f16a36e65930881aec639839ed73dac"}, ] markupsafe = [ - {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"}, - {file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"}, - {file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"}, - {file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"}, - {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, - {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] matplotlib = [ {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:456cc8334f6d1124e8ff856b42d2cc1c84335375a16448189999496549f7182b"}, @@ -2377,16 +2442,16 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] nbclient = [ - {file = "nbclient-0.5.11-py3-none-any.whl", hash = "sha256:03e857bea3012377289daa1e1c1651f4fc0295bcd109ccd36a337efcdbebaed7"}, - {file = "nbclient-0.5.11.tar.gz", hash = "sha256:751516992f34b58172bad54eef1e4bf7e4f4460d58e255ca1a4e5c9649476007"}, + {file = "nbclient-0.5.13-py3-none-any.whl", hash = "sha256:47ac905af59379913c1f8f541098d2550153cf8dc58553cbe18c702b181518b0"}, + {file = "nbclient-0.5.13.tar.gz", hash = "sha256:40c52c9b5e3c31faecaee69f202b3f53e38d7c1c563de0fadde9d7eda0fdafe8"}, ] nbconvert = [ - {file = "nbconvert-6.4.2-py3-none-any.whl", hash = "sha256:7b006ae9979af56200e7fa3db39d9d12c99e811e8843b05dbe518e5b754bcb2e"}, - {file = "nbconvert-6.4.2.tar.gz", hash = "sha256:eb2803db18f6facce6bf3b01b684fe47907994bd156d15eaccdf011e3d7f8164"}, + {file = "nbconvert-6.4.4-py3-none-any.whl", hash = "sha256:c0c13d11378e13f72b9cd509c008383dca4051c228e4985f75023b2a5d82fc9f"}, + {file = "nbconvert-6.4.4.tar.gz", hash = "sha256:ee0dfe34bbd1082ac9bfc750aae3c73fcbc34a70c5574c6986ff83c10a3541fd"}, ] nbformat = [ - {file = "nbformat-5.1.3-py3-none-any.whl", hash = "sha256:eb8447edd7127d043361bc17f2f5a807626bc8e878c7709a1c647abda28a9171"}, - {file = "nbformat-5.1.3.tar.gz", hash = "sha256:b516788ad70771c6250977c1374fcca6edebe6126fd2adb5a69aa5c2356fd1c8"}, + {file = "nbformat-5.2.0-py3-none-any.whl", hash = "sha256:3e30424e8291b2188347f5c3ba5273ed3766f12f8c5137c2e456a0815f36e785"}, + {file = "nbformat-5.2.0.tar.gz", hash = "sha256:93df0b9c67221d38fb970c48f6d361819a6c388299a0ef3171bbb912edfe1324"}, ] nbstripout = [ {file = "nbstripout-0.5.0-py2.py3-none-any.whl", hash = "sha256:1e8a471780d1429aaa5d954c4d26c312df8666cc84de0ff160d62d8b576ae65b"}, @@ -2409,8 +2474,8 @@ nodeenv = [ {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, ] notebook = [ - {file = "notebook-6.4.8-py3-none-any.whl", hash = "sha256:3e702fcc54b8ae597533c3864793b7a1e971dec9e112f67235828d8a798fd654"}, - {file = "notebook-6.4.8.tar.gz", hash = "sha256:1e985c9dc6f678bdfffb9dc657306b5469bfa62d73e03f74e8defbf76d284312"}, + {file = "notebook-6.4.10-py3-none-any.whl", hash = "sha256:49cead814bff0945fcb2ee07579259418672ac175d3dc3d8102a4b0a656ed4df"}, + {file = "notebook-6.4.10.tar.gz", hash = "sha256:2408a76bc6289283a8eecfca67e298ec83c67db51a4c2e1b713dd180bb39e90e"}, ] numpy = [ {file = "numpy-1.21.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:301e408a052fdcda5cdcf03021ebafc3c6ea093021bf9d1aa47c54d48bdad166"}, @@ -2563,6 +2628,40 @@ proxmin = [ {file = "proxmin-0.6.12-py2.py3-none-any.whl", hash = "sha256:ae68aaca0b347f2e5d6bc8ab4b75cf7d20375f02caf77b3baa93e07527523671"}, {file = "proxmin-0.6.12.tar.gz", hash = "sha256:2055cccc178be11394ef86ab802e9cb855dff40c89a7ca0ff3377091885afae5"}, ] +psutil = [ + {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, + {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, + {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, + {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, + {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, + {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, + {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, + {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, + {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, + {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, + {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, + {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, + {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, + {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, + {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, + {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, + {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, + {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, + {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, + {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, + {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, + {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, + {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, + {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, + {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, + {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, + {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, + {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, + {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, + {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, + {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, + {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, +] ptyprocess = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2654,8 +2753,8 @@ pyrsistent = [ {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, ] pytest = [ - {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, - {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, + {file = "pytest-7.1.1-py3-none-any.whl", hash = "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea"}, + {file = "pytest-7.1.1.tar.gz", hash = "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63"}, ] pytest-cov = [ {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, @@ -2670,44 +2769,36 @@ pytz = [ {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, ] pywavelets = [ - {file = "PyWavelets-1.2.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:4c29efb581245e4ba3e76b23b1bf254a7c79821d7e63f432e68044cf2d233e9e"}, - {file = "PyWavelets-1.2.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:3089aa6b4962e1f5dbd0434a10f174f7a50f80bf64cb7d33cc725af07bd30ecc"}, - {file = "PyWavelets-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16c30e98f52e1a5d0a06b4b8f294114aaa94a0e95445b4056b6ca0a7a5535a42"}, - {file = "PyWavelets-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79386f4d8518e344487acf22b1c130e5907b3c45852aa50c18df5e19895aa92e"}, - {file = "PyWavelets-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9bf543d552d20cf6ddfd690c5c18afacc8440cfb09b7515b2242bb9abfcc5eb"}, - {file = "PyWavelets-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28bb3d7d411ffbcfaa5a81a5a32044805893752c1641b39f6544b7e0a24661c3"}, - {file = "PyWavelets-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:333e1370167b0a2b963df82e42968000734bfa23b2ce88191e8ce9d24fc4cc57"}, - {file = "PyWavelets-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2ec1fc92573f56c1b129006d109e7518a098f3c8c6a2183b495619faca931461"}, - {file = "PyWavelets-1.2.0-cp310-cp310-win32.whl", hash = "sha256:d30c09fa805533bf7c8a5d06aa8babda5ae6c1541cd652cb2ebe6ab0b9536c0e"}, - {file = "PyWavelets-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:73805016353a47c5b5f9cea547ea6ae07cd3520abfd7888916ff56b01e71307a"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:ec670e78be2c3193e26c4bfa31dff1edd89ee8d7e2f4219782f3ef3f6daf37f0"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:151a7f3d3db36baffe640d691403b7cd3938a1886c8a387b719e7e8b580dd4b1"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:616fd2967dd153c3f539b1e0979168969f3702125caae4caa769efc5621cc2b7"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:abedc0b49273a734d4592e325a5fb32f0741e115d6722e0c59964ecf21344640"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9b05d2f21da666f918692f0313484002307794b5380f7291a395b9271abdda5c"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:537b5a8a8a3e9e5b931d34b517aa2312a3d8385937f98c4f8ffa668483329cfb"}, - {file = "PyWavelets-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7a725030682bf891ced9819b4b21d6ef356fa11b70399d2d3adb319aead1efb0"}, - {file = "PyWavelets-1.2.0-cp38-cp38-macosx_10_13_universal2.whl", hash = "sha256:d9831b251f63460302811607f80a20285292ed0a0a046f95b4648edc0ed90f9c"}, - {file = "PyWavelets-1.2.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:7e4749ff324e8e01a2fdc859ac9714c4be1cbc6e8a34d5ddedb28fc9513b31a1"}, - {file = "PyWavelets-1.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:333684cc0d0e89cf6cb3a8b3ea68528790e1a3edc565a100cda47e29860f892d"}, - {file = "PyWavelets-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71415f2c376ae3e1331249043dddb63370c92fed162ebcb108fd87e12a956d89"}, - {file = "PyWavelets-1.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44315d197bad9564210ef42f2d5a01c07ee6fd456c679d4a6d0f4e23ec9930cf"}, - {file = "PyWavelets-1.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c8b388652b6afb4bf7be313be057240386de93817c6744c2aaf43a22890733c8"}, - {file = "PyWavelets-1.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a1131c27b9f79ca56dd6347d5585a609f51ed3cad0cfb6c17419b1733d3b6acd"}, - {file = "PyWavelets-1.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df4d950be507a68d107c8f618ef7a9e0d9071789cfc1a840f89d0c985448880f"}, - {file = "PyWavelets-1.2.0-cp38-cp38-win32.whl", hash = "sha256:8a72f11c4d23f8ed8544def0003f500e98598e7a1efce892e6f964c430469c05"}, - {file = "PyWavelets-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:be231e4bc569f2b1177711390d406d08ce388c1e01ab864f89be8928db234856"}, - {file = "PyWavelets-1.2.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:90d53119f4b518236ad9a8a6be96d86efb1b4eeb73c28e3ed33824ae601ce7b1"}, - {file = "PyWavelets-1.2.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:351937e4fc6f3df3555cd2813e73bfc344885c5d994fd621d13dd004d05a4cb7"}, - {file = "PyWavelets-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33375e3e6e361659f2519d412de2b50e2527a97c3946ffd66ca20a8ea1346fea"}, - {file = "PyWavelets-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:449d2d5f9c1f28a1bce01f714f9f742d9fdbce90f66de0a92cad39d98d24477b"}, - {file = "PyWavelets-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:18d84982417790a645f74cb0f968e89fb8af575dbf17a52c64af5075aa5528b8"}, - {file = "PyWavelets-1.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3d9dab8223d0ce30e7480751f526ce1e97a1dcf5242875f8206e4449953116c"}, - {file = "PyWavelets-1.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a82e8c307b98d65737b286e0b458343ecee8505dfb519cd314a5f211f4fb92b9"}, - {file = "PyWavelets-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:663d265cb433653ef6335973edd13c66cd86c85fbe9c09e4bd138119bac15974"}, - {file = "PyWavelets-1.2.0-cp39-cp39-win32.whl", hash = "sha256:fd5ca221ac7bedb2a9aebcf3b05020827564db5a979b25005b3a2c7ba84069a2"}, - {file = "PyWavelets-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:69cfc7f2ceb0a1097e7e8d1a026cbb2ff1afecc2d79820856f1abccb6cb59cc4"}, - {file = "PyWavelets-1.2.0.tar.gz", hash = "sha256:6cbd69b047bb4e00873097472133425f5f08a4e6bc8b3f0ae709274d4d5e9a8d"}, + {file = "PyWavelets-1.3.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:eebaa9c28600da336743fefd650332460c132792660e70eb09abf343b0664b87"}, + {file = "PyWavelets-1.3.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:3eeffcf2f7eebae5cc27cb11a7d0d96118e2e9f75ac38ff1a05373d5fe75accb"}, + {file = "PyWavelets-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:35a945bea9da6db9755e42e06e871846514ae91bde3ae24a08a1d090b003a23b"}, + {file = "PyWavelets-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8876764e349673ee8d48bc3cd0afd2f9f7b65378998e2665af12c277c8a56de"}, + {file = "PyWavelets-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c98ac1cee6276db05768e450dc3002033be6c2819c906103a974e0fb0d436f41"}, + {file = "PyWavelets-1.3.0-cp310-cp310-win32.whl", hash = "sha256:6ecfe051ccb097c2dcdcb0977e0a684e76144d6694a202badf0780143d8536f0"}, + {file = "PyWavelets-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:437806465cfa5f2d91809ec13154be050b84a11025784a6b6ce04ac452872b36"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:3c4ebe7ff2c9092f6bdd1f8bf98ce2745f5d43a9936d6e342ee83fbcae548116"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f9ed4f175c66c9b8646a93fd54c588fd8f4b2517f53c59aea5cdf370f9c9ba"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:41e4f0a3a6a088e955006513fe72f863cea3ce293033131cacb8a1a3068ed228"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5b76731d2077242611b32f2e11c72adbf126b432ceae92e2ce8d0f693974c96d"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:3d3ecc2ee87be94fb2dc8c2d35bcae3f24708677196e80028d24ba0fd2f6a70a"}, + {file = "PyWavelets-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:91e1b220f0ddd4c127bab718363c2c4a07dbcd95b9c4bfed09a3cdae47dbba43"}, + {file = "PyWavelets-1.3.0-cp38-cp38-macosx_10_13_universal2.whl", hash = "sha256:8a5941d1f4eb1bc9569c655b63ecb31aa15b3ef0fc9b57df275892c39bccc59e"}, + {file = "PyWavelets-1.3.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:a555a7a85da01357d8258cb45f751881f69013f8920f8738718c60cf8a47b755"}, + {file = "PyWavelets-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69e9a46facf89b51e5700d10f6d831f29745471c1ab42917f2f849a257b9fd77"}, + {file = "PyWavelets-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a51225d24811ba7ef5184c03bb7072db0aa9651c4370a115d4069dedfb8d2f7a"}, + {file = "PyWavelets-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7369597e1b1d125eb4b458a36cef052beed188444e55ed21445c1196008e200"}, + {file = "PyWavelets-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:307ab8a4c3e5c2b8f7d3d371de4a5f019cf4b030b897c3394a4a7ad157369367"}, + {file = "PyWavelets-1.3.0-cp38-cp38-win32.whl", hash = "sha256:27e99818d3c26481de3c68dbe880a7fcafe661cc031b22eff4a64237fe17a7ff"}, + {file = "PyWavelets-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:3383d106fa8da0c2df30401ad056cd7a11b76d885f4bfa16ca7bcc6b4ca2831c"}, + {file = "PyWavelets-1.3.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:84c58a179bdb9fc71039b1f68bcd0718a7d9814b5e3741d7681d3e027bb81b52"}, + {file = "PyWavelets-1.3.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fccf468c55427828a3c534b651311f2759210836491c1112e1548e1babe368a5"}, + {file = "PyWavelets-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ed3afbda88498b3ea3c861bf5b55e4feca41747730a71a22102ed5a74d1e453"}, + {file = "PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38cc635c08a050e175a492e66c9b63a8e1f42254e6879e614b6c9d8d69e0887f"}, + {file = "PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a486160f83efd8517cd748796adbab7c445ee8a3e1d168b4b8b60ed0f5aee3a0"}, + {file = "PyWavelets-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f6e7d969a6ef64ae8be1766b0b0e32debb13424543d331911b8d7e967d60dd42"}, + {file = "PyWavelets-1.3.0-cp39-cp39-win32.whl", hash = "sha256:de67deb275474094e160900ab7e07f2a721b9cd351cf3826c4a3ab89bb71d4b3"}, + {file = "PyWavelets-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:a354979e2ee8cd71a8952ded381f3d9f981692b73c6842bcc6c9f64047e0a5be"}, + {file = "PyWavelets-1.3.0.tar.gz", hash = "sha256:cbaa9d62052d9daf8da765fc8e7c30c38ea2b8e9e1c18841913dfb4aec671ee5"}, ] pywin32 = [ {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, @@ -2724,11 +2815,11 @@ pywin32 = [ {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, ] pywinpty = [ - {file = "pywinpty-2.0.2-cp310-none-win_amd64.whl", hash = "sha256:4b421379b407bf2f52a64a4c58f61deffe623b5add02d871acb290b771bb6227"}, - {file = "pywinpty-2.0.2-cp37-none-win_amd64.whl", hash = "sha256:238b75fc456a6bc558761a89c9e6b3c8f2f54d79db03ae28997a68313c24b2ca"}, - {file = "pywinpty-2.0.2-cp38-none-win_amd64.whl", hash = "sha256:344858a0b956fdc64a547d5e1980b0257b47f5433ed7cb89bf7b6268cb280c6c"}, - {file = "pywinpty-2.0.2-cp39-none-win_amd64.whl", hash = "sha256:a4a066eaf2e30944d3028d946883ceb7883a499b53c4b89ca2d54bd7a4210550"}, - {file = "pywinpty-2.0.2.tar.gz", hash = "sha256:20ec117183f79642eff555ce0dd1823f942618d65813fb6122d14b6e34b5d05a"}, + {file = "pywinpty-2.0.5-cp310-none-win_amd64.whl", hash = "sha256:f86c76e2881c37e69678cbbf178109f8da1fa8584db24d58e1b9369b0276cfcb"}, + {file = "pywinpty-2.0.5-cp37-none-win_amd64.whl", hash = "sha256:ff9b52f182650cfdf3db1b264a6fe0963eb9d996a7a1fa843ac406c1e32111f8"}, + {file = "pywinpty-2.0.5-cp38-none-win_amd64.whl", hash = "sha256:651ee1467bd7eb6f64d44dbc954b7ab7d15ab6d8adacc4e13299692c67c5d5d2"}, + {file = "pywinpty-2.0.5-cp39-none-win_amd64.whl", hash = "sha256:e59a508ae78374febada3e53b5bbc90b5ad07ae68cbfd72a2e965f9793ae04f3"}, + {file = "pywinpty-2.0.5.tar.gz", hash = "sha256:e125d3f1804d8804952b13e33604ad2ca8b9b2cac92b27b521c005d1604794f8"}, ] pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, @@ -2771,24 +2862,32 @@ pyzmq = [ {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"}, {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"}, {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"}, {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"}, {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"}, {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"}, {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"}, {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"}, {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"}, {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"}, {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"}, {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"}, {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"}, {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"}, {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"}, {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"}, {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"}, {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"}, {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"}, {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"}, {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"}, {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"}, {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"}, {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"}, @@ -2796,6 +2895,8 @@ pyzmq = [ {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"}, {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"}, {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"}, {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"}, {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"}, {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"}, @@ -2805,8 +2906,8 @@ pyzmq = [ {file = "pyzmq-22.3.0.tar.gz", hash = "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"}, ] reorder-python-imports = [ - {file = "reorder_python_imports-2.7.1-py2.py3-none-any.whl", hash = "sha256:5477c008cd7a5f2dbe32a35e90d74b5a3427468731441f033034310e427143a3"}, - {file = "reorder_python_imports-2.7.1.tar.gz", hash = "sha256:1ae34422f13f5a4b4669f340774909d721bfc0a8311973c70b3a50540b595bc5"}, + {file = "reorder_python_imports-3.0.1-py2.py3-none-any.whl", hash = "sha256:4a87d5ffdd5f34b29040fd8c9dae375b5f74ade9f5ec7b15cbcc3dc6a3117855"}, + {file = "reorder_python_imports-3.0.1.tar.gz", hash = "sha256:a4e1c28a1bf90a7c8fa4c534058803a7956adc722137d3e54eb91536fe12ffb6"}, ] requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, @@ -2924,6 +3025,10 @@ snowballstemmer = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +soupsieve = [ + {file = "soupsieve-2.3.1-py3-none-any.whl", hash = "sha256:1a3cca2617c6b38c0343ed661b1fa5de5637f257d4fe22bd9f1338010a1efefb"}, + {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"}, +] sphinx = [ {file = "Sphinx-4.4.0-py3-none-any.whl", hash = "sha256:5da895959511473857b6d0200f56865ed62c31e8f82dd338063b84ec022701fe"}, {file = "Sphinx-4.4.0.tar.gz", hash = "sha256:6caad9786055cb1fa22b4a365c1775816b876f91966481765d7d50e9f0dd35cc"}, @@ -2957,12 +3062,12 @@ sphinxcontrib-serializinghtml = [ {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, ] terminado = [ - {file = "terminado-0.13.1-py3-none-any.whl", hash = "sha256:f446b522b50a7aa68b5def0a02893978fb48cb82298b0ebdae13003c6ee6f198"}, - {file = "terminado-0.13.1.tar.gz", hash = "sha256:5b82b5c6e991f0705a76f961f43262a7fb1e55b093c16dca83f16384a7f39b7b"}, + {file = "terminado-0.13.3-py3-none-any.whl", hash = "sha256:874d4ea3183536c1782d13c7c91342ef0cf4e5ee1d53633029cbc972c8760bd8"}, + {file = "terminado-0.13.3.tar.gz", hash = "sha256:94d1cfab63525993f7d5c9b469a50a18d0cdf39435b59785715539dd41e36c0d"}, ] testpath = [ - {file = "testpath-0.5.0-py3-none-any.whl", hash = "sha256:8044f9a0bab6567fc644a3593164e872543bb44225b0e24846e2c89237937589"}, - {file = "testpath-0.5.0.tar.gz", hash = "sha256:1acf7a0bcd3004ae8357409fc33751e16d37ccc650921da1094a86581ad1e417"}, + {file = "testpath-0.6.0-py3-none-any.whl", hash = "sha256:8ada9f80a2ac6fb0391aa7cdb1a7d11cfa8429f693eda83f74dde570fe6fa639"}, + {file = "testpath-0.6.0.tar.gz", hash = "sha256:2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f"}, ] tifffile = [ {file = "tifffile-2021.11.2-py3-none-any.whl", hash = "sha256:2e0066f90e2dbeb3e6a287cfd78bafbd2f142fabbca4a76a8ff809573baf5ad5"}, @@ -3020,8 +3125,8 @@ tornado = [ {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] tqdm = [ - {file = "tqdm-4.62.3-py2.py3-none-any.whl", hash = "sha256:8dd278a422499cd6b727e6ae4061c40b48fce8b76d1ccbf5d34fca9b7f925b0c"}, - {file = "tqdm-4.62.3.tar.gz", hash = "sha256:d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"}, + {file = "tqdm-4.63.0-py2.py3-none-any.whl", hash = "sha256:e643e071046f17139dea55b880dc9b33822ce21613b4a4f5ea57f202833dbc29"}, + {file = "tqdm-4.63.0.tar.gz", hash = "sha256:1d9835ede8e394bb8c9dcbffbca02d717217113adc679236873eeaac5bc0b3cd"}, ] traitlets = [ {file = "traitlets-5.1.1-py3-none-any.whl", hash = "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033"}, @@ -3058,12 +3163,12 @@ typing-extensions = [ {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] urllib3 = [ - {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, - {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] virtualenv = [ - {file = "virtualenv-20.13.1-py2.py3-none-any.whl", hash = "sha256:45e1d053cad4cd453181ae877c4ffc053546ae99e7dd049b9ff1d9be7491abf7"}, - {file = "virtualenv-20.13.1.tar.gz", hash = "sha256:e0621bcbf4160e4e1030f05065c8834b4e93f4fcc223255db2a823440aca9c14"}, + {file = "virtualenv-20.13.3-py2.py3-none-any.whl", hash = "sha256:dd448d1ded9f14d1a4bfa6bfc0c5b96ae3be3f2d6c6c159b23ddcfd701baa021"}, + {file = "virtualenv-20.13.3.tar.gz", hash = "sha256:e9dd1a1359d70137559034c0f5433b34caf504af2dc756367be86a5a32967134"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, @@ -3074,8 +3179,8 @@ webencodings = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] widgetsnbextension = [ - {file = "widgetsnbextension-3.5.2-py2.py3-none-any.whl", hash = "sha256:763a9fdc836d141fa080005a886d63f66f73d56dba1fb5961afc239c77708569"}, - {file = "widgetsnbextension-3.5.2.tar.gz", hash = "sha256:e0731a60ba540cd19bbbefe771a9076dcd2dde90713a8f87f27f53f2d1db7727"}, + {file = "widgetsnbextension-3.6.0-py2.py3-none-any.whl", hash = "sha256:4fd321cad39fdcf8a8e248a657202d42917ada8e8ed5dd3f60f073e0d54ceabd"}, + {file = "widgetsnbextension-3.6.0.tar.gz", hash = "sha256:e84a7a9fcb9baf3d57106e184a7389a8f8eb935bf741a5eb9d60aa18cc029a80"}, ] zipp = [ {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, diff --git a/pyproject.toml b/pyproject.toml index 3b4945e49..22a79e857 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ version = "0.9.3" [tool.poetry.dependencies] astropy = ">=4.3.1" autograd = {version = ">=1.3", optional = true} +galcheat = {git = "https://github.com/aboucaud/galcheat", rev = "bb0c765ef8a130f9112d99580d93adffb2a8af47"} galsim = ">=2.2.4" hydra-core = ">=1.0.6" ipywidgets = ">=7.6.5" diff --git a/tests/test_cosmos.py b/tests/test_cosmos.py index 5e910e71f..845cc89e4 100644 --- a/tests/test_cosmos.py +++ b/tests/test_cosmos.py @@ -21,12 +21,12 @@ def test_cosmos_galaxies_real(): batch_size = 2 catalog = CosmosCatalog.from_file(COSMOS_CATALOG_PATHS) sampling_function = DefaultSampling(stamp_size=stamp_size) - HST = get_surveys("HST") + COSMOS = get_surveys("COSMOS") draw_generator = CosmosGenerator( catalog, sampling_function, - HST, + COSMOS, batch_size=batch_size, stamp_size=stamp_size, cpus=1, @@ -43,12 +43,12 @@ def test_cosmos_galaxies_parametric(): batch_size = 2 catalog = CosmosCatalog.from_file(COSMOS_CATALOG_PATHS) sampling_function = DefaultSampling(stamp_size=stamp_size) - HST = get_surveys("HST") + COSMOS = get_surveys("COSMOS") draw_generator = CosmosGenerator( catalog, sampling_function, - HST, + COSMOS, batch_size=batch_size, stamp_size=stamp_size, cpus=1, @@ -65,12 +65,12 @@ def test_cosmos_ext_galaxies(): batch_size = 2 catalog = CosmosCatalog.from_file(COSMOS_EXT_CATALOG_PATHS, exclusion_level="none") sampling_function = DefaultSampling(stamp_size=stamp_size) - HST = get_surveys("HST") + COSMOS = get_surveys("COSMOS") draw_generator = CosmosGenerator( catalog, sampling_function, - HST, + COSMOS, batch_size=batch_size, stamp_size=stamp_size, cpus=1, diff --git a/tests/test_draw.py b/tests/test_draw.py index cfdbd82f5..c1405ac51 100644 --- a/tests/test_draw.py +++ b/tests/test_draw.py @@ -17,7 +17,7 @@ def get_draw_generator( fixed_parameters=False, sampling_function=None, ): - """Returns a btk.draw_blends generator for default parameters""" + """Returns a btk.draw_blends generator for default parameters.""" catalog_name = "data/sample_input_catalog.fits" stamp_size = 24.0 if fixed_parameters: @@ -43,7 +43,7 @@ def get_draw_generator( draw_generator = btk.draw_blends.CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), batch_size=batch_size, stamp_size=stamp_size, shifts=shifts, @@ -76,9 +76,9 @@ def match_isolated_images_default(isolated_images): the mean and std values in the batch. This is compared to the values measured a proiri for the default input settings. """ - test_batch_max = np.array([90.326, 1242.806, 7627.732, 10377.04, 8513.054, 4767.485]) + test_batch_max = np.array([90.276, 1242.4, 7626.081, 10375.342, 8512.592, 4766.38]) test_batch_mean = 3.1129989295360363 - test_batch_std = 90.89562371148732 + test_batch_std = 90.8863095471388 batch_max = isolated_images.max(axis=(0, 1, 3, 4)) batch_mean = isolated_images.mean() batch_std = isolated_images.std() @@ -107,9 +107,9 @@ def match_blend_images_default(blend_images): the mean and std values in the batch. This is compared to the values measured a priori for the default input settings. """ - test_batch_max = np.array([172.012, 1372.121, 7881.862, 10346.612, 9120.189, 4965.317]) - test_batch_mean = 6.123635022094785 - test_batch_std = 403.7842461889957 + test_batch_max = np.array([172.04, 1375.16, 7880.88, 10823.64, 9120.2, 4836.32]) + test_batch_mean = 6.118185763860468 + test_batch_std = 403.79788119078427 batch_max = blend_images.max(axis=(0, 2, 3)) batch_mean = blend_images.mean() batch_std = blend_images.std() @@ -138,7 +138,7 @@ def match_background_noise(blend_images): the r band. This is compared to the values measured a priori for the default input settings. """ - test_batch_noise = 128664.3287115097 + test_batch_noise = 128666.38136196136 batch_noise = np.var(blend_images[1, 2, 0:32, 0:32]) np.testing.assert_almost_equal( batch_noise, @@ -147,6 +147,13 @@ def match_background_noise(blend_images): err_msg="Did not get desired mean pixel values of blend images", ) + def test_basic_sampling(self): + sampling_function = btk.sampling_functions.BasicSampling() + draw_generator = get_draw_generator( + fixed_parameters=True, sampling_function=sampling_function + ) + next(draw_generator) + @patch("btk.plot_utils.plt.show") def test_default(self, mock_show): default_draw_generator = get_draw_generator(fixed_parameters=True) @@ -162,13 +169,6 @@ def test_default(self, mock_show): len(draw_output["blend_list"][3]) < 3 ), "Default max_number should \ generate 2 or 1 galaxies per blend." - self.match_blend_images_default(draw_output["blend_images"]) - self.match_isolated_images_default(draw_output["isolated_images"]) self.match_background_noise(draw_output["blend_images"]) - - def test_basic_sampling(self): - sampling_function = btk.sampling_functions.BasicSampling() - draw_generator = get_draw_generator( - fixed_parameters=True, sampling_function=sampling_function - ) - draw_output = next(draw_generator) # noqa: F841 + self.match_isolated_images_default(draw_output["isolated_images"]) + self.match_blend_images_default(draw_output["blend_images"]) diff --git a/tests/test_error_cases.py b/tests/test_error_cases.py index ae43b7f9f..e7a7a2b10 100644 --- a/tests/test_error_cases.py +++ b/tests/test_error_cases.py @@ -1,5 +1,6 @@ import pytest from conftest import data_dir +from galcheat.filter import Filter from btk.catalog import CatsimCatalog from btk.catalog import CosmosCatalog @@ -9,8 +10,8 @@ from btk.draw_blends import SourceNotVisible from btk.sampling_functions import DefaultSampling from btk.sampling_functions import SamplingFunction -from btk.survey import Filter -from btk.survey import get_psf +from btk.survey import get_default_psf +from btk.survey import get_default_psf_with_galcheat_info from btk.survey import get_psf_from_file from btk.survey import get_surveys @@ -50,7 +51,7 @@ def compatible_catalogs(self): draw_generator = CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, @@ -81,7 +82,7 @@ def compatible_catalogs(self): draw_generator = CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, @@ -117,7 +118,7 @@ def compatible_catalogs(self): draw_generator = CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, @@ -129,24 +130,21 @@ def compatible_catalogs(self): def test_source_not_visible(): - filt = Filter( - name="u", - psf=get_psf( - mirror_diameter=8.36, - effective_area=32.4, - filt_wavelength=3592.13, - fwhm=0.859, - ), - sky_brightness=22.9, - exp_time=1680, - zeropoint=9.16, - extinction=0.451, + survey = get_surveys("LSST") + filt = Filter.from_dict( + dict( + name="u", + psf_fwhm=0.859, + zeropoint=9.16, + sky_brightness=22.9, + exposure_time=1680, + effective_wavelength=3592.13, + ) ) + filt.psf = get_default_psf_with_galcheat_info(survey, filt) catalog = CatsimCatalog.from_file(CATALOG_PATH) with pytest.raises(SourceNotVisible): - gal = get_catsim_galaxy( # noqa: F841 - catalog.table[0], filt, get_surveys("Rubin"), True, True, True - ) + get_catsim_galaxy(catalog.table[0], filt, survey, True, True, True) def test_survey_not_list(): @@ -167,18 +165,18 @@ def test_survey_not_list(): cpus=cpus, add_noise=add_noise, ) - draw_output = next(draw_generator) # noqa: F841 + next(draw_generator) def test_psf(): - get_psf( + get_default_psf( mirror_diameter=8.36, effective_area=32.4, filt_wavelength=7528.51, fwhm=0.748, atmospheric_model="Moffat", ) - get_psf( + get_default_psf( mirror_diameter=8.36, effective_area=32.4, filt_wavelength=7528.51, @@ -186,7 +184,7 @@ def test_psf(): atmospheric_model=None, ) with pytest.raises(NotImplementedError) as excinfo: - get_psf( + get_default_psf( mirror_diameter=8.36, effective_area=32.4, filt_wavelength=7528.51, @@ -197,12 +195,12 @@ def test_psf(): assert "atmospheric model request" in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - get_psf(mirror_diameter=1, effective_area=4, filt_wavelength=7528.51, fwhm=0.748) + get_default_psf(mirror_diameter=1, effective_area=4, filt_wavelength=7528.51, fwhm=0.748) assert "Incompatible effective-area and mirror-diameter values." in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - get_psf( + get_default_psf( mirror_diameter=0, effective_area=0, filt_wavelength=7528.51, @@ -214,10 +212,10 @@ def test_psf(): excinfo.value ) - get_psf(mirror_diameter=0, effective_area=0, filt_wavelength=7528.51, fwhm=0.748) + get_default_psf(mirror_diameter=0, effective_area=0, filt_wavelength=7528.51, fwhm=0.748) - get_psf_from_file("tests/example_psf", get_surveys("Rubin")) - get_psf_from_file("tests/multi_psf", get_surveys("Rubin")) + get_psf_from_file("tests/example_psf", get_surveys("LSST")) + get_psf_from_file("tests/multi_psf", get_surveys("LSST")) # The case where the folder is empty cannot be tested as you cannot add an empty folder to git @@ -234,7 +232,7 @@ def test_incompatible_catalogs(): draw_generator = CosmosGenerator( # noqa: F841 catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, @@ -242,10 +240,10 @@ def test_incompatible_catalogs(): ) with pytest.raises(ValueError): # Missing filter - draw_generator = CatsimGenerator( # noqa: F841 + CatsimGenerator( catalog, sampling_function, - get_surveys("HST"), + get_surveys("COSMOS"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, @@ -254,10 +252,10 @@ def test_incompatible_catalogs(): catalog = CosmosCatalog.from_file(COSMOS_CATALOG_PATHS, exclusion_level="none") with pytest.raises(ValueError): - draw_generator = CatsimGenerator( # noqa: F841 + CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), stamp_size=stamp_size, batch_size=batch_size, cpus=cpus, diff --git a/tests/test_group_sampling.py b/tests/test_group_sampling.py index a5ae2d2f6..9676c5203 100644 --- a/tests/test_group_sampling.py +++ b/tests/test_group_sampling.py @@ -10,13 +10,13 @@ def get_group_sampling_draw_generator(batch_size=3): - """Returns draw generator with group sampling function""" + """Returns draw generator with group sampling function.""" wld_catalog_name = data_dir / "sample_group_catalog.fits" catalog_name = data_dir / "sample_group_input_catalog.fits" max_number = 10 stamp_size = 24 - survey = get_surveys("Rubin") + survey = get_surveys("LSST") pixel_scale = 0.2 shift = [0.8, -0.7] catalog = CatsimCatalog.from_file(catalog_name) @@ -30,7 +30,7 @@ def get_group_sampling_draw_generator(batch_size=3): def test_group_sampling(): - """Test blends drawn with group sampling function""" + """Test blends drawn with group sampling function.""" draw_blend_generator = get_group_sampling_draw_generator() output = next(draw_blend_generator) blend_images = output["blend_images"] diff --git a/tests/test_main.py b/tests/test_main.py index 62d9987c2..37c3581c7 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -19,9 +19,9 @@ def test_main(): main(cfg) # test survey CLI - cfg = get_cfg(overrides={"surveys": "Rubin"}) + cfg = get_cfg(overrides={"surveys": ["LSST"]}) main(cfg) - cfg = get_cfg(overrides={"surveys": ["Rubin", "DES"], "meas_band_num": [0, 0]}) + cfg = get_cfg(overrides={"surveys": ["LSST", "DES"], "meas_band_num": [0, 0]}) main(cfg) diff --git a/tests/test_measure.py b/tests/test_measure.py index 35ae48dc7..2b08a5a35 100644 --- a/tests/test_measure.py +++ b/tests/test_measure.py @@ -16,7 +16,7 @@ def get_meas_results(meas_function, cpus=1, measure_kwargs=None): catalog_name = data_dir / "sample_input_catalog.fits" stamp_size = 24 - survey = get_surveys("Rubin") + survey = get_surveys("LSST") shifts = [[-0.3, 1.2]] indexes = [[1]] catalog = CatsimCatalog.from_file(catalog_name) diff --git a/tests/test_metrics.py b/tests/test_metrics.py index 7343abbc7..60f03b38c 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -27,7 +27,7 @@ def get_metrics_generator( """Returns draw generator with group sampling function""" catalog_name = "data/sample_input_catalog.fits" stamp_size = 24 - survey = get_surveys("Rubin") + survey = get_surveys("LSST") shifts = [ [[-0.3, 1.2], [-1.6, -1.7]], [[-1.1, -2.1], [1.4, 1.8]], @@ -105,7 +105,7 @@ def test_measure_kwargs(mock_show): ) _, _, results = next(metrics_generator) average_precision = auc(results, "sep_measure", 2, plot=True) - assert average_precision == 0.4375 + assert average_precision == 0.5 def test_detection_eff_matrix(): diff --git a/tests/test_mr.py b/tests/test_mr.py index a34c1ee24..fbd214c62 100644 --- a/tests/test_mr.py +++ b/tests/test_mr.py @@ -21,7 +21,7 @@ def test_multiresolution(mock_show): batch_size = 8 cpus = 1 add_noise = "all" - surveys = get_surveys(["Rubin", "HSC"]) + surveys = get_surveys(["LSST", "HSC"]) catalog = CatsimCatalog.from_file(catalog_name) sampling_function = DefaultSampling(stamp_size=stamp_size) @@ -41,22 +41,22 @@ def test_multiresolution(mock_show): ) blend_results, measure_results, metrics_results = next(metrics_generator) - assert "Rubin" in blend_results["blend_list"].keys(), "Both surveys get well defined outputs" + assert "LSST" in blend_results["blend_list"].keys(), "Both surveys get well defined outputs" assert "HSC" in blend_results["blend_list"].keys(), "Both surveys get well defined outputs" - assert blend_results["blend_images"]["Rubin"][0].shape[-1] == int( + assert blend_results["blend_images"]["LSST"][0].shape[-1] == int( 24.0 / 0.2 - ), "Rubin survey should have a pixel scale of 0.2" + ), "LSST survey should have a pixel scale of 0.2" assert blend_results["blend_images"]["HSC"][0].shape[-1] == int( - 24.0 / 0.167 + 24.0 / 0.168 ), "HSC survey should have a pixel scale of 0.167" assert ( - "Rubin" in measure_results["catalog"]["sep_measure"].keys() + "LSST" in measure_results["catalog"]["sep_measure"].keys() ), "Both surveys get well defined outputs" assert ( "HSC" in measure_results["catalog"]["sep_measure"].keys() ), "Both surveys get well defined outputs" assert ( - "Rubin" in metrics_results["galaxy_summary"]["sep_measure"].keys() + "LSST" in metrics_results["galaxy_summary"]["sep_measure"].keys() ), "Both surveys get well defined outputs" assert ( "HSC" in metrics_results["galaxy_summary"]["sep_measure"].keys() diff --git a/tests/test_save.py b/tests/test_save.py index 513ce0b7c..cfc342ae3 100644 --- a/tests/test_save.py +++ b/tests/test_save.py @@ -23,7 +23,7 @@ def test_save(): draw_blend_generator = CatsimGenerator( catalog, sampling_function, - get_surveys("Rubin"), + get_surveys("LSST"), batch_size=batch_size, stamp_size=stamp_size, save_path=output_dir, @@ -36,10 +36,10 @@ def test_save(): ) blend_results, measure_results, metrics_results = next(metrics_generator) blend_results2, measure_results2, metrics_results2 = load_all_results( - output_dir, ["Rubin"], ["sep_measure"], batch_size + output_dir, ["LSST"], ["sep_measure"], batch_size ) np.testing.assert_array_equal( - blend_results["blend_images"], blend_results2["blend_images"]["Rubin"] + blend_results["blend_images"], blend_results2["blend_images"]["LSST"] ) np.testing.assert_array_equal( measure_results["segmentation"]["sep_measure"][0],