Skip to content

Releases: radionets-project/pyvisgen

v0.3.0

02 Jul 14:23
930e27b
Compare
Choose a tag to compare

Pyvisgen v0.3.0 (2025-07-02)

API Changes

Bug Fixes

  • Fix shape of num_ifs

    • Delete additional bin in masking
    • Fix ra dec bug #25
  • Fix baseline num calculation

    • Fix wavelength scaling
    • Fix lm grid calculation
    • Fix gridding so that it fits the numpy fft gridding #28
  • Fix a numerical issue in the lm grid calculation, caused by adding a big number to small values in the lm grid

    • Use torch.float64 for rd grid and lm grid calculation #32
  • Fix gridding in pyvisgen.simulation.observation.Observation methods create_rd_grid and create_lm_grid
    methods resulting in rotated images

    • Fix pyvisgen.simulation.observation.ValidBaselineSubset dataclass field order
    • Fix tests failing because of api change #39
  • Fix image rotation caused by bug in rd/lm grid computation in pyvisgen.simulation.observation.Obseravtion

    • Fix field order in pyvisgen.simulation.observation.ValidBaselineSubset data class
    • Flip input image at the beginning of pyvisgen.simulation.visibility.vis_loop to ensure correct indexing, e.g. for plotting #40
  • Fixed random number drawing in tests by changing the location of the seed override #44

  • Update the order of simulated bandwidths in the fits writer to the standard found from converted MeerKat observations

    • Tried to fix polarisation infos antenna hdu #49
  • Fix bug in feed rotation/parallactic angle computation in RIME #57

  • Fix observation dec not on same device as r #62

  • examples/ideal_interferometer.ipynb: Added a new code cell to create an lm_grid with used fov parameters.

    • Fixed missing images for the lm_grid in the docs. #63
  • Add quick fix of the annoying import warning when using tqdm.autonotbook: Use tqdm.auto instead. This does not create any warnings, as written in the tqdm documentation (https://tqdm.github.io/docs/shortcuts/#tqdmauto). #65

New Features

  • Implement GPU support for visibility calculations

    • New grid mode:
      • When more than one visibility falls into the same pixel, only the first is calculated
      • Define grid before calculation
    • New dense mode:
      • Calculate visibilities for a dense uv grid
      • Simulate ideal interferometer response
    • Add sensitivity cut in image space:
      • Avoid calculation of pixel values below detection threshold
      • Significantly speed-up simulations
    • Add torch compile to RIME functions #28
  • Changes to vis_loop function in visibility.py:

    • Add a an optional tqdm progress bar to get a visual confirmation the calculation is still running
    • Add optional batch_size parameter to control memory consumption #33
  • Add class Polarisation to pyvisgen.simulation.visibility that is called in vis_loop

    • Added linear, circular, and no polarisation options
    • Update pyvisgen.simulation.visibility.Visibilities dataclass to also store polarisation degree tensors
    • Add keyword arguments for polarisation simulation to pyvisgen.simulation.observation.Observation class
    • Add parallactic angle computation #39
  • pyvisgen.layouts.get_array_layout now also accepts custom layouts stored in a pd.DataFrame #46

  • Add docs #47

  • Added optional auto scaling for batchsize in vis_loop #48

  • Add new gridder that can handle vis data returned by the vis_loop #53

  • Add ideal interferometer simulation guide to documentation (in User Guide)

    • Add example notebook ideal_interferometer.ipynb containing full code for the user guide entry
    • Change primary and primary highlight colors for light theme in _static/pyvisgen.css to darker greens to be more visible
    • Change maintainers in pyproject.toml #58
  • Add DSA-2000 layouts #61

  • Add new quickstart CLI tool that creates a copy of the default configuration at the specified path #73

Maintenance

  • Update readme #26

  • Add docstrings

    • Delete unused files #27
  • Delete unused code and relicts

    • Change from numpy arrays to torch tensors
    • Change some of the keywords to more common phrases inside the toml config
    • Update default data_set.toml
    • Delete old config examples
    • Avoid torch einsum for better readability of the code
    • Update ci.yml and workflow.yml for node20 #28
  • Use observation class to pass sampling options to the fits writer

    • Include writer in tests #31
  • Use c from scipy in scan.py #32

  • Switch from setup.py to pyproject.toml #35

  • Fix package name and url in pyproject.toml

    • remove obsolete setup.py
    • fix setuptools find packages path in pyproject.toml
    • fix formatting of pyproject.toml #36
  • Create new dev environment file that contains pytorch-gpu and pytorch-cuda #37

  • Change pyvisgen.simulation.visibility.Visibilities dataclass component names from stokes components (I , Q, U, and V)
    to visibilities constructed from the stokes components (V_11, V_22, V_12, V_21)

    • Change indices for stokes components according to AIPS Memo 114
      • Indices will be set automatically depending on simulated polarisation
    • Update comment strings in FITS files
    • Update docstrings accordingly in pyvisgen.simulation.visibility.vis_loop and pyvisgen.simulation.observation.Observation #39
  • Switch README to reStructuredText

    • Add Codecov badge #45
  • Drop integration time in fits writer (also missing fits files which are converted from ms files)

    • Update saving of visibility dates to modern standards
    • Use infos from observation class #49
  • Increase verbosity of tests in CI #50

  • Complete rewrite of dataset creation routine pyvisgen.simulation.data_set.SimulateDataSet

    • Accessible using a classmethod to load a config file
    • Add optional multithreading support
    • Draw and fully test parameters before simulation loop. Previously this was done in the loop and tests were only performed for two time steps
    • Support for polarization
    • Add new default config file for new dataset creation routine
    • Update CLI tool for dataset creation routine
    • Allow passing HDF5 key in pyvisgen.utils.data.open_bundles
    • Restructure pyvisgen.gridding module by adding a utils submodule that contains all utility functions that previously were in the gridder submodule
      • Also fix parts of the utility functions
    • Update and fix tests #53
  • Add/update docstrings throughout the codebase #54

  • Remove torch.flip call in visibility.py

    • Change dense UV grid creation to use numpy.float128 and convert to torch.float64 afterwards to fix numerical instabilities
    • Change integration in scan.py to return int_f instead of int_t, removed time integration
    • Exclude dense calculations from code coverage due to lack of GPU computations in GitHub actions #56
  • Fix docs index and readme text #60

  • Add linting CI job

    • Fix attribute error in pyvisgen.simulation #67

Refactoring and Optimization

  • Refactor data classes (Visibilities, Baselines)

    • Add observation class, which holds all relevant information
    • Drop scan-wise splitting in visibilities calculations, but split all valid baselines equally
    • Refactor RIME components (currently only uncorrupted available)
    • Refactor baseline calculations by replacing loops with pytorch built-in methods #28
  • Improve hour angle calculation via array-wise operations #30

  • Use obs.layout instead of passing the layout name separately in pyvisgen.fits.writer.create_vis_hdu #38

  • Added optional normalize parameter to pyvisgen.visibility.vis_loop to decide whether to apply a normalization multiplier of 0.5 (default: True) #43

  • Remove reading of layout files relative to :mod:pyvisgen.layouts.layout

    • Move layout files to external resources directory that is shipped with
      the distribution
    • Ship default config with distribution #73

v0.2.0

12 Jun 16:41
3fc7db5
Compare
Choose a tag to compare

Pyvisgen v0.2.0 (2024-06-12)

API Changes

Bug Fixes

  • fix baseline num calculation
  • fix wavelength scaling
  • fix lm grid calculation
  • fix gridding so that it fits the numpy fft gridding #28

New Features

  • implement GPU support for visibility calculations
  • new grid mode:
    • when more than one visibility falls into the same pixel, only the first is calculated
    • define grid before calculation
  • new dense mode:
    • calculate visibilities for a dense uv grid
    • simulate ideal interferometer response
  • add sensitivity cut in image space:
    • avoid calculation of pixel values below detection threshold
    • significantly speed-up simulations
  • add torch compile to RIME functions #28

Maintenance

  • delete unused code and relicts
  • change from numpy arrays to torch tensors
  • change some of the keywords to more common phrases inside the toml config
  • update default data_set.toml
  • delete old config examples
  • avoid torch einsum for better readability of the code #28

Refactoring and Optimization

  • refactor data classes (Visibilities, Baselines)
  • add observation class, which holds all relevant information
  • drop scan-wise splitting in visibilities calculations, but split all valid baselines equally
  • refactor RIME components (currently only uncorrupted available)
  • refactor baseline calculations by replacing loops with pytorch built-in methods #28

v0.1.4

09 Nov 13:22
5ae0bbc
Compare
Choose a tag to compare

Pyvisgen v0.1.4 (2023-11-09)

API Changes

Bug Fixes

  • fix shape of num_ifs
  • delete additional bin in masking
  • fix ra dec bug #25

New Features

  • update ci:
    • change conda to mamba
    • install towncrier #24

Maintenance

  • update readme #26

  • add docstrings

  • delete unused files #27

Refactoring and Optimization