Source code for radiosim.simulations.ppdisks

from pathlib import Path

import h5py
import numpy as np
from tqdm import tqdm

from radiosim.ppdisks import generate_proto_set


[docs] def simulate_ppdisks(config) -> None: metadata_params = config.metadata dataset_params = config.dataset rng = np.random.default_rng(seed=config.ppdisk.general.seed) outpath = Path(config.paths.outpath) if not outpath.is_dir(): outpath.mkdir() file_prefix = dataset_params.file_prefix device = config.general.device verbose = config.general.verbose batch_num = dataset_params.batches batch_size = dataset_params.batch_size batches = { "train": int(batch_num * dataset_params.batches_train_ratio), "valid": int(batch_num * dataset_params.batches_valid_ratio), "test": int(batch_num * dataset_params.batches_test_ratio), } # resolution and pointings taken from FITS headers of DSHARP dataset # https://almascience.eso.org/almadata/lp/DSHARP/ resolution = 0.00299999999999988 pointings = [ (252.1901583333, -14.27663888889), (242.8806334167, -18.64062026556), (246.6002916667, -24.27041666667), (269.088663625, -21.9562676325), (236.6862890833, -34.51002105694), (246.912515125, -23.97199338639), (246.6875916667, -24.38563138889), (239.1667003167, -22.02789646667), (246.484, -24.34672222222), (246.5986583334, -24.72051666667), (246.578625, -24.47213611111), (246.9142916667, -24.65431666667), (239.653748625, -22.95433409167), (252.313727625, -14.36918004583), (239.0382866667, -37.93514649278), (236.3035304583, -34.29194894083), (239.1762312125, -37.82110333889), (239.8185583333, -41.95297045306), (242.2576419583, -39.08689564417), (240.1854510899, -41.92538824062), ] for batch_type, num in batches.items(): for i in tqdm(np.arange(num), desc=f"Generating {batch_type}"): protos, params = generate_proto_set( img_size=metadata_params.img_size, size=batch_size, alpha_range=metadata_params.alpha_range, ratio_range=metadata_params.ratio_range, size_ratio_range=metadata_params.size_ratio_range, device=device, seed=rng.integers(low=0, high=2**32 - 1), verbose=verbose, ) metadata = [] for j in np.arange(batch_size): pointing = rng.choice(pointings) metadata.append( dict( index=j, cell_size=resolution, src_ra=pointing[0], src_dec=pointing[1], ) ) with h5py.File(outpath / f"{file_prefix}_{batch_type}_{i}.h5", "w") as hf: hf.create_dataset("y", data=protos) hf.create_dataset( "metadata", data=str(metadata), dtype=h5py.string_dtype() ) hf.create_dataset("params", data=str(params), dtype=h5py.string_dtype())