system#

anri.index.system(eta, om, use, w, ring_j, pos, scan, b_e, b_o, n_e, n_o, n_beam=0)[source]#

Entries of the system matrix: (cell index, weight) for voxels and predictions.

A prediction (eta, omega) is spread bilinearly over the 2 x 2 nearest (eta, omega) bins, and over the dty rows by where the voxel sits at that omega (lab y = x sin(omega) + y cos(omega)). Parallax is ignored.

  • n_beam = 0: linearly over the 2 nearest rows.

  • n_beam > 0: over the n_beam rows nearest to the voxel, each weighted by the beam’s profile across dty integrated over the voxel’s chord at that omega (as anri.fwd.beam_weight(), for a beam along lab x): a Gaussian of scan["sig_beam"] blurring a flat top of scan["width_beam"], over a square voxel of side scan["voxel"]. The weights are scaled to sum to about 1 over the rows. Each weight is evaluated at the prediction’s omega, so a voxel off the rotation axis moves across the beam with omega.

Parameters:
  • eta (Array) – [1 or Nv, Q, Nj] predictions (degrees), whether to use them, and their weights. A leading 1 means the same orientations for every voxel; Nv, each voxel’s own.

  • om (Array) – [1 or Nv, Q, Nj] predictions (degrees), whether to use them, and their weights. A leading 1 means the same orientations for every voxel; Nv, each voxel’s own.

  • use (Array) – [1 or Nv, Q, Nj] predictions (degrees), whether to use them, and their weights. A leading 1 means the same orientations for every voxel; Nv, each voxel’s own.

  • w (Array) – [1 or Nv, Q, Nj] predictions (degrees), whether to use them, and their weights. A leading 1 means the same orientations for every voxel; Nv, each voxel’s own.

  • ring_j (Array) – [Nj] ring of each prediction

  • pos (Array) – [Nv, 3] voxel positions in the sample frame

  • scan (dict) – “y0”, “dty0”, “ystep”, “n_rows” and “om0”: the rows are at dty = dty0 + k ystep; optionally “ddty” [n_rows, n_o], each row’s offset from that per omega bin (fly, helical scans: anri.index.dty_offsets()), and “exposure” [n_rows, n_o], each (row, omega bin)’s frames relative to a full one; with a beam profile also “sig_beam”, “width_beam” and “voxel” (beam_rows())

  • b_e (float) – Bin widths and counts of the histogram in eta and omega

  • b_o (float) – Bin widths and counts of the histogram in eta and omega

  • n_e (int) – Bin widths and counts of the histogram in eta and omega

  • n_o (int) – Bin widths and counts of the histogram in eta and omega

  • n_beam (int, default: 0) – Rows per prediction for the beam profile (static); 0 for the 2-row linear model

Returns:

index, weight (jax.Array) – [Nv, Q, Nj, 8] each (4 n_beam with a beam profile); unused corners have index -1