- Better handling of errors when GPUs are present but currently unavailable for some reason.
- Correct formation of SkyModel for
pyradiosky>=0.3.0
in tests.
- When getting the raw beam data for GPU, there was a check for whether the beam covers the whole sky which didn't always pass when it should have. This has been fixed.
- Added the ability to stop checks on whether the beam interpolates to inf/nan.
Version 1.0 is a major update that brings the GPU implementation up to the same API as the CPU implementation. It also removes support for (l,m)-grid beams.
- Support for
bm_pix
anduse_pixel_beams
(in both CPU and GPU implementations). Now, using aUVBeam
object will automatically use interpolation on the gridded underlying data (which is typically in az/za). This can be done directly using methods inUVBeam
, or via new GPU methods. If you input anAnalyticBeam
, the beam will instead just merely be evaluated.
- Polarization support for GPU implementation.
- Faster performance if using
beam_list
and the frequency is not in thefreq_array
. (interpolation done before the loop). - Factor of ~10x speed-up of
vis_cpu
due to changing the finaleinsum
into a matrix product. - BREAKING CHANGE: the output from the CPU and GPU implementations has changed
shape: it is now
(Ntimes, Nfeed, Nfeed, Nant, Nant)
(and without the feed axes for non-polarized data).
vis_cpu
andvis_gpu
modules renamed tocpu
andgpu
respectively, to avoid some problems with name clashes.- New more comprehensive tests comparing the GPU and CPU implementations against each other and against pyuvsim.
- New tests of documentation notebooks to ensure they're up to date.
- Updated sphinx them to Furo.
- More complete Module Reference documentation.
- Updated tutorial to match the new API.
- Added a new "Understanding the Algorithm" page (with math!)
- Call
UVBeam.interp
withreuse_spline=True
andcheck_azza_domain=False
for significantly faster performance when usingbeam_list
.
- The visibility integral, calculated with the call to
einsum
, has been fixed. It now takes an outer product over feeds, sums over E-field components, and performs the integral over the sky.
- Enhanced performance by allowing unique beams only to be passed (no breaking API change).
- Enhanced performance of
vis_cpu
by only using sources above horizon, and changing some array multiplication strategies (factor of ~3).
- Fix issue with spurious beam normalization when a pixel beam interpolation grid is generated from a UVBeam object
- Fix bug where the imaginary part of complex pixel beams was being discarded
- Fix bug that was causing polarized calculations to fail with
simulate_vis
- CI paths fixed so coverage reports are linked properly
- New units tests
- Fix issue with complex primary beams being cast to real
- Make IPython import optional.
lm_to_az_za
-->enu_to_az_za
and addedorientation
parameter. Significant increase in documentation of this and related coordinate functions.- Refactoring of construction of spline within main CPU routine to its own function:
construct_pixel_beam_spline
.
eci_to_enu_matrix
functionenu_to_eci_matrix
functionpoint_source_crd_eq
functionequatorial_to_eci_coords
functionuvbeam_to_lm
function- New
plotting
module withanimate_source_map
function. - Ability to do polarization! (Only in
vis_cpu
for now, not GPU). - New
wrapper
module withsimulate_vis
function that makes it easier to simulate over an array of frequencies and source positions in standard RA/DEC (i.e. it does the frequency loop, and calculates the rotation matrices for you). It is an example wrapper for the core engine. - Many more unit tests.
- Installation of gpu extras fixed.
- Fix import logic for GPU.
- Port out of hera_sim.