Source code for ivis.models.operators.geometry
import numpy as np
import torch
[docs]
def resolve_pb_grid_lists(vis_data, pb_list=None, grid_list=None, pb=None, grid_array=None):
nbeam = len(vis_data.centers)
if pb_list is None:
if pb is None:
raise ValueError("Need pb_list or pb array")
pb_list = [pb[b] for b in range(nbeam)]
if grid_list is None:
if grid_array is None:
raise ValueError("Need grid_list or grid_array")
grid_list = [grid_array[b] for b in range(nbeam)]
return pb_list, grid_list
[docs]
def to_image2d_tensor(x2d, device, name="x2d"):
xt = torch.as_tensor(x2d, device=device)
if xt.ndim == 1:
side = int(np.sqrt(xt.numel()))
xt = xt.view(side, side)
if xt.ndim != 2:
raise ValueError(f"{name} must be 2D (H,W), got shape {tuple(xt.shape)}")
return xt
[docs]
def uvw_to_radpix(uu, vv, cell_size, device):
cell_rad = cell_size * np.pi / (180.0 * 3600.0)
u_radpix = torch.from_numpy(uu).to(device).float() * (2.0 * np.pi * cell_rad)
v_radpix = torch.from_numpy(vv).to(device).float() * (2.0 * np.pi * cell_rad)
return cell_rad, u_radpix, v_radpix