Source code for squadds.simulations.utils_sweep
from squadds.simulations.utils_geometry import get_cavity_claw_options_keys
[docs]
def chunk_sweep_options(sweep_opts, N):
if N <= 0:
raise ValueError("N must be greater than 0.")
cpw_opts_key, cplr_opts_key = get_cavity_claw_options_keys(sweep_opts)
if cpw_opts_key is None or cplr_opts_key is None:
raise ValueError("Sweep options must include both cavity and coupler option keys.")
claw_lengths = sweep_opts["claw_opts"]["connection_pads"]["readout"]["claw_length"]
total_lengths = sweep_opts[cpw_opts_key]["total_length"]
base_chunk_size = len(claw_lengths) // N
remainder = len(claw_lengths) % N
chunks = []
start_idx = 0
for index in range(N):
chunk_size = base_chunk_size + (1 if index < remainder else 0)
claw_length_chunk = claw_lengths[start_idx : start_idx + chunk_size]
new_sweep_opts = {
"claw_opts": {"connection_pads": {"readout": sweep_opts["claw_opts"]["connection_pads"]["readout"].copy()}},
cpw_opts_key: sweep_opts[cpw_opts_key].copy(),
cplr_opts_key: sweep_opts[cplr_opts_key].copy(),
}
new_sweep_opts["claw_opts"]["connection_pads"]["readout"]["claw_length"] = claw_length_chunk
new_sweep_opts[cpw_opts_key]["total_length"] = total_lengths
chunks.append(new_sweep_opts)
start_idx += chunk_size
return chunks