From 5d61d4fdb9a3032c4404ed31982b4a25e398d8ac Mon Sep 17 00:00:00 2001 From: Anno Knierim Date: Sun, 26 Apr 2026 14:34:09 +0200 Subject: [PATCH 1/4] docs: update version switcher to include upcoming v0.8 release --- docs/_static/switcher.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/_static/switcher.json b/docs/_static/switcher.json index f637b37a..fb6b48af 100644 --- a/docs/_static/switcher.json +++ b/docs/_static/switcher.json @@ -9,6 +9,11 @@ "version": "stable", "url": "https://pyvisgen.readthedocs.io/en/stable/" }, + { + "name": "v0.8.0", + "version": "v0.8.0", + "url": "https://pyvisgen.readthedocs.io/en/v0.8.0/" + }, { "name": "v0.7.1", "version": "v0.7.1", From c88b5610cd8324772ff77e7c523cfefcd0888bd0 Mon Sep 17 00:00:00 2001 From: Anno Knierim Date: Sun, 26 Apr 2026 22:43:35 +0200 Subject: [PATCH 2/4] chore: update changelog --- CHANGES.rst | 76 ++++++++++++++++++++++++++++++++ docs/changes/132.bugfix.rst | 1 - docs/changes/132.feature.rst | 3 -- docs/changes/134.maintenance.rst | 5 --- docs/changes/136.maintenance.rst | 13 ------ docs/changes/143.bugfix.rst | 1 - docs/changes/145.feature.rst | 2 - docs/changes/146.bugfix.rst | 1 - docs/changes/146.feature.rst | 1 - docs/changes/146.maintenance.rst | 1 - docs/changes/147.api.rst | 3 -- docs/changes/147.feature.rst | 11 ----- 12 files changed, 76 insertions(+), 42 deletions(-) delete mode 100644 docs/changes/132.bugfix.rst delete mode 100644 docs/changes/132.feature.rst delete mode 100644 docs/changes/134.maintenance.rst delete mode 100644 docs/changes/136.maintenance.rst delete mode 100644 docs/changes/143.bugfix.rst delete mode 100644 docs/changes/145.feature.rst delete mode 100644 docs/changes/146.bugfix.rst delete mode 100644 docs/changes/146.feature.rst delete mode 100644 docs/changes/146.maintenance.rst delete mode 100644 docs/changes/147.api.rst delete mode 100644 docs/changes/147.feature.rst diff --git a/CHANGES.rst b/CHANGES.rst index dc191c83..7730b0c7 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,79 @@ +Pyvisgen 0.8.0 (2026-04-26) +=========================== + + +API Changes +----------- + +- Renamed the ``noisy`` configuration key to ``noise_level`` to reflect that the value can represent either an SEFD (Jy) or T_sys/η (K) depending on the chosen mode. + + Moved ``noise_level``, ``noise_mode``, and ``telescope`` from :class:`~pyvisgen.io.config.SamplingConfig` into a dedicated :class:`~pyvisgen.io.config.NoiseConfig` class, accessible as a new ``[noise]`` section in the TOML configuration. Added a ``band`` key to :class:`~pyvisgen.io.config.NoiseConfig` for selecting a frequency band from the telescope noise config. [`#147 `__] + + +Bug Fixes +--------- + +- Fixed the output file name and included objects of :class:`~pyvisgen.io.PTWriter` [`#132 `__] + +- Fixed reshaping of X1 and X2 in apply_finufft to first permute the axes, ensuring the data is in the correct order for further processing [`#143 `__] + +- Fixed a bug where setting the gridder to default would trigger the fallback instead of using ``pyvisgrid.gridder`` directly [`#146 `__] + + +New Features +------------ + +- Added data format converter (:class:`pyvisgen.io.DataConverter`) that enables fast conversion between HDF5, WebDatset, and PyTorch files + + Added CLI tool (``$ pyvisgen convert``) for the new data format converter [`#132 `__] + +- Breaking Change: Refactored now removed :func:`pyvisgen.simulation.scan.rime` function as a new class-based API :class:`~pyvisgen.simulation.scan.RIMEScan` + With this structure, the `CupyFinufft` wrapper can now be initialized correctly with the actual observation parameters instead of hard coded parameters. [`#145 `__] + +- Added station id pairs to ValidBaselineSubset that allow making stations unavailable for observations [`#146 `__] + +- Added elevation-dependent noise simulation via ``noise_mode='tsys'``, where the system temperature T_sys/η and a telescope-specific lookup table determine the per-baseline SEFD as a function of elevation. + + Added per-telescope noise parameters as external TOML files under ``resources/noise_configs/``. Each file supports multiple frequency bands via ``[bands.]`` sections. The active band is selected with a new ``band`` parameter; if omitted, the first defined band is used. ``available_telescopes()`` lists all installed configs. An informative ``UserWarning`` is emitted before the ``ValueError`` when an unknown telescope is requested. + + Added natural visibility weights (1/σ²) to the :class:`~pyvisgen.simulation.Visibilities` dataclass and propagated them into the FITS writer output. + + Added :class:`~pyvisgen.io.datawriters.UVH5Writer` for writing visibilities in the UVH5 format, including UVW coordinates, LMN direction cosines, all four polarisation products, natural weights, frequency bands, station-pair indices, and the sky image. + + Added ``st_id_pairs`` (shape ``n_baselines x 2``) to :class:`~pyvisgen.simulation.Visibilities` and propagated it through the simulation pipeline into the UVH5 output. + + Added ``fits_out_path`` to :class:`~pyvisgen.io.config.BundleConfig` as an optional secondary FITS output directory alongside ``writer = "UVH5Writer"``. [`#147 `__] + + +Maintenance +----------- + +- Fixed ``astropy>7`` compatibility issues + + Bumped up astropy dependency version to `7.2.0` + + Replaced ``np.chararray`` with ``np.array`` and unicode dtypes to get rid of deprecation warnings [`#134 `__] + +- Updated the entire test framework with unit tests that are more efficient than the old tests. The tests now consist of more unit tests and do not run the entire simulation pipeline every time. + + Removed `tomli` from dependencies and test requirements in `pyproject.toml`, added `pytest-mock` as a new test dependency + + Updated type hints across the codebase + + Added `dataset_type` as an to `FITSWriter` for consistency with other writer classes + + Removed unused submodule `pyvisgen.fits.data` + + Updated `__getitem__` method of `ValidBaselineSubset` dataclass to return `ValidBaselinesSubset` object, similar to `Baselines` dataclass + + `pyvisgen.simulation.array.Array` now has updated property names `relative_pos` and `antenna_pairs`. Removed `calc_relative_pos` method that would just get the `relative_pos` property. [`#136 `__] + +- Set finufft as default in config [`#146 `__] + + +Refactoring and Optimization +---------------------------- + Pyvisgen 0.7.1 (2025-12-11) =========================== diff --git a/docs/changes/132.bugfix.rst b/docs/changes/132.bugfix.rst deleted file mode 100644 index 802cab28..00000000 --- a/docs/changes/132.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed the output file name and included objects of :class:`~pyvisgen.io.PTWriter` diff --git a/docs/changes/132.feature.rst b/docs/changes/132.feature.rst deleted file mode 100644 index 26577a80..00000000 --- a/docs/changes/132.feature.rst +++ /dev/null @@ -1,3 +0,0 @@ -Added data format converter (:class:`pyvisgen.io.DataConverter`) that enables fast conversion between HDF5, WebDatset, and PyTorch files - -Added CLI tool (``$ pyvisgen convert``) for the new data format converter diff --git a/docs/changes/134.maintenance.rst b/docs/changes/134.maintenance.rst deleted file mode 100644 index 99593f3b..00000000 --- a/docs/changes/134.maintenance.rst +++ /dev/null @@ -1,5 +0,0 @@ -Fixed ``astropy>7`` compatibility issues - -Bumped up astropy dependency version to `7.2.0` - -Replaced ``np.chararray`` with ``np.array`` and unicode dtypes to get rid of deprecation warnings diff --git a/docs/changes/136.maintenance.rst b/docs/changes/136.maintenance.rst deleted file mode 100644 index 0a6fa76b..00000000 --- a/docs/changes/136.maintenance.rst +++ /dev/null @@ -1,13 +0,0 @@ -Updated the entire test framework with unit tests that are more efficient than the old tests. The tests now consist of more unit tests and do not run the entire simulation pipeline every time. - -Removed `tomli` from dependencies and test requirements in `pyproject.toml`, added `pytest-mock` as a new test dependency - -Updated type hints across the codebase - -Added `dataset_type` as an to `FITSWriter` for consistency with other writer classes - -Removed unused submodule `pyvisgen.fits.data` - -Updated `__getitem__` method of `ValidBaselineSubset` dataclass to return `ValidBaselinesSubset` object, similar to `Baselines` dataclass - -`pyvisgen.simulation.array.Array` now has updated property names `relative_pos` and `antenna_pairs`. Removed `calc_relative_pos` method that would just get the `relative_pos` property. diff --git a/docs/changes/143.bugfix.rst b/docs/changes/143.bugfix.rst deleted file mode 100644 index 2dc5d956..00000000 --- a/docs/changes/143.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed reshaping of X1 and X2 in apply_finufft to first permute the axes, ensuring the data is in the correct order for further processing diff --git a/docs/changes/145.feature.rst b/docs/changes/145.feature.rst deleted file mode 100644 index 6b4f183e..00000000 --- a/docs/changes/145.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -Breaking Change: Refactored now removed :func:`pyvisgen.simulation.scan.rime` function as a new class-based API :class:`~pyvisgen.simulation.scan.RIMEScan` -With this structure, the `CupyFinufft` wrapper can now be initialized correctly with the actual observation parameters instead of hard coded parameters. diff --git a/docs/changes/146.bugfix.rst b/docs/changes/146.bugfix.rst deleted file mode 100644 index 4072825f..00000000 --- a/docs/changes/146.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed a bug where setting the gridder to default would trigger the fallback instead of using ``pyvisgrid.gridder`` directly diff --git a/docs/changes/146.feature.rst b/docs/changes/146.feature.rst deleted file mode 100644 index 35d8f097..00000000 --- a/docs/changes/146.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added station id pairs to ValidBaselineSubset that allow making stations unavailable for observations diff --git a/docs/changes/146.maintenance.rst b/docs/changes/146.maintenance.rst deleted file mode 100644 index 12191174..00000000 --- a/docs/changes/146.maintenance.rst +++ /dev/null @@ -1 +0,0 @@ -Set finufft as default in config diff --git a/docs/changes/147.api.rst b/docs/changes/147.api.rst deleted file mode 100644 index b2681e24..00000000 --- a/docs/changes/147.api.rst +++ /dev/null @@ -1,3 +0,0 @@ -Renamed the ``noisy`` configuration key to ``noise_level`` to reflect that the value can represent either an SEFD (Jy) or T_sys/η (K) depending on the chosen mode. - -Moved ``noise_level``, ``noise_mode``, and ``telescope`` from :class:`~pyvisgen.io.config.SamplingConfig` into a dedicated :class:`~pyvisgen.io.config.NoiseConfig` class, accessible as a new ``[noise]`` section in the TOML configuration. Added a ``band`` key to :class:`~pyvisgen.io.config.NoiseConfig` for selecting a frequency band from the telescope noise config. diff --git a/docs/changes/147.feature.rst b/docs/changes/147.feature.rst deleted file mode 100644 index 90a32f4c..00000000 --- a/docs/changes/147.feature.rst +++ /dev/null @@ -1,11 +0,0 @@ -Added elevation-dependent noise simulation via ``noise_mode='tsys'``, where the system temperature T_sys/η and a telescope-specific lookup table determine the per-baseline SEFD as a function of elevation. - -Added per-telescope noise parameters as external TOML files under ``resources/noise_configs/``. Each file supports multiple frequency bands via ``[bands.]`` sections. The active band is selected with a new ``band`` parameter; if omitted, the first defined band is used. ``available_telescopes()`` lists all installed configs. An informative ``UserWarning`` is emitted before the ``ValueError`` when an unknown telescope is requested. - -Added natural visibility weights (1/σ²) to the :class:`~pyvisgen.simulation.Visibilities` dataclass and propagated them into the FITS writer output. - -Added :class:`~pyvisgen.io.datawriters.UVH5Writer` for writing visibilities in the UVH5 format, including UVW coordinates, LMN direction cosines, all four polarisation products, natural weights, frequency bands, station-pair indices, and the sky image. - -Added ``st_id_pairs`` (shape ``n_baselines x 2``) to :class:`~pyvisgen.simulation.Visibilities` and propagated it through the simulation pipeline into the UVH5 output. - -Added ``fits_out_path`` to :class:`~pyvisgen.io.config.BundleConfig` as an optional secondary FITS output directory alongside ``writer = "UVH5Writer"``. From b88e7621ee559301f8ce36157c9e1572afdda995 Mon Sep 17 00:00:00 2001 From: Anno Knierim Date: Sun, 26 Apr 2026 22:45:30 +0200 Subject: [PATCH 3/4] fix: fix changelog --- CHANGES.rst | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 7730b0c7..114c00e6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,7 +7,7 @@ API Changes - Renamed the ``noisy`` configuration key to ``noise_level`` to reflect that the value can represent either an SEFD (Jy) or T_sys/η (K) depending on the chosen mode. - Moved ``noise_level``, ``noise_mode``, and ``telescope`` from :class:`~pyvisgen.io.config.SamplingConfig` into a dedicated :class:`~pyvisgen.io.config.NoiseConfig` class, accessible as a new ``[noise]`` section in the TOML configuration. Added a ``band`` key to :class:`~pyvisgen.io.config.NoiseConfig` for selecting a frequency band from the telescope noise config. [`#147 `__] +- Moved ``noise_level``, ``noise_mode``, and ``telescope`` from :class:`~pyvisgen.io.config.SamplingConfig` into a dedicated :class:`~pyvisgen.io.config.NoiseConfig` class, accessible as a new ``[noise]`` section in the TOML configuration. Added a ``band`` key to :class:`~pyvisgen.io.config.NoiseConfig` for selecting a frequency band from the telescope noise config. [`#147 `__] Bug Fixes @@ -25,7 +25,7 @@ New Features - Added data format converter (:class:`pyvisgen.io.DataConverter`) that enables fast conversion between HDF5, WebDatset, and PyTorch files - Added CLI tool (``$ pyvisgen convert``) for the new data format converter [`#132 `__] +- Added CLI tool (``$ pyvisgen convert``) for the new data format converter [`#132 `__] - Breaking Change: Refactored now removed :func:`pyvisgen.simulation.scan.rime` function as a new class-based API :class:`~pyvisgen.simulation.scan.RIMEScan` With this structure, the `CupyFinufft` wrapper can now be initialized correctly with the actual observation parameters instead of hard coded parameters. [`#145 `__] @@ -34,15 +34,15 @@ New Features - Added elevation-dependent noise simulation via ``noise_mode='tsys'``, where the system temperature T_sys/η and a telescope-specific lookup table determine the per-baseline SEFD as a function of elevation. - Added per-telescope noise parameters as external TOML files under ``resources/noise_configs/``. Each file supports multiple frequency bands via ``[bands.]`` sections. The active band is selected with a new ``band`` parameter; if omitted, the first defined band is used. ``available_telescopes()`` lists all installed configs. An informative ``UserWarning`` is emitted before the ``ValueError`` when an unknown telescope is requested. +- Added per-telescope noise parameters as external TOML files under ``resources/noise_configs/``. Each file supports multiple frequency bands via ``[bands.]`` sections. The active band is selected with a new ``band`` parameter; if omitted, the first defined band is used. ``available_telescopes()`` lists all installed configs. An informative ``UserWarning`` is emitted before the ``ValueError`` when an unknown telescope is requested. - Added natural visibility weights (1/σ²) to the :class:`~pyvisgen.simulation.Visibilities` dataclass and propagated them into the FITS writer output. +- Added natural visibility weights (1/σ²) to the :class:`~pyvisgen.simulation.Visibilities` dataclass and propagated them into the FITS writer output. - Added :class:`~pyvisgen.io.datawriters.UVH5Writer` for writing visibilities in the UVH5 format, including UVW coordinates, LMN direction cosines, all four polarisation products, natural weights, frequency bands, station-pair indices, and the sky image. +- Added :class:`~pyvisgen.io.datawriters.UVH5Writer` for writing visibilities in the UVH5 format, including UVW coordinates, LMN direction cosines, all four polarisation products, natural weights, frequency bands, station-pair indices, and the sky image. - Added ``st_id_pairs`` (shape ``n_baselines x 2``) to :class:`~pyvisgen.simulation.Visibilities` and propagated it through the simulation pipeline into the UVH5 output. +- Added ``st_id_pairs`` (shape ``n_baselines x 2``) to :class:`~pyvisgen.simulation.Visibilities` and propagated it through the simulation pipeline into the UVH5 output. - Added ``fits_out_path`` to :class:`~pyvisgen.io.config.BundleConfig` as an optional secondary FITS output directory alongside ``writer = "UVH5Writer"``. [`#147 `__] +- Added ``fits_out_path`` to :class:`~pyvisgen.io.config.BundleConfig` as an optional secondary FITS output directory alongside ``writer = "UVH5Writer"``. [`#147 `__] Maintenance @@ -50,23 +50,23 @@ Maintenance - Fixed ``astropy>7`` compatibility issues - Bumped up astropy dependency version to `7.2.0` +- Bumped up astropy dependency version to `7.2.0` - Replaced ``np.chararray`` with ``np.array`` and unicode dtypes to get rid of deprecation warnings [`#134 `__] +- Replaced ``np.chararray`` with ``np.array`` and unicode dtypes to get rid of deprecation warnings [`#134 `__] - Updated the entire test framework with unit tests that are more efficient than the old tests. The tests now consist of more unit tests and do not run the entire simulation pipeline every time. - Removed `tomli` from dependencies and test requirements in `pyproject.toml`, added `pytest-mock` as a new test dependency +- Removed `tomli` from dependencies and test requirements in `pyproject.toml`, added `pytest-mock` as a new test dependency - Updated type hints across the codebase +- Updated type hints across the codebase - Added `dataset_type` as an to `FITSWriter` for consistency with other writer classes +- Added `dataset_type` as an to `FITSWriter` for consistency with other writer classes - Removed unused submodule `pyvisgen.fits.data` +- Removed unused submodule `pyvisgen.fits.data` - Updated `__getitem__` method of `ValidBaselineSubset` dataclass to return `ValidBaselinesSubset` object, similar to `Baselines` dataclass +- Updated `__getitem__` method of `ValidBaselineSubset` dataclass to return `ValidBaselinesSubset` object, similar to `Baselines` dataclass - `pyvisgen.simulation.array.Array` now has updated property names `relative_pos` and `antenna_pairs`. Removed `calc_relative_pos` method that would just get the `relative_pos` property. [`#136 `__] +- `pyvisgen.simulation.array.Array` now has updated property names `relative_pos` and `antenna_pairs`. Removed `calc_relative_pos` method that would just get the `relative_pos` property. [`#136 `__] - Set finufft as default in config [`#146 `__] From 0742dd1cdcbcb2f6468eab09e46db4a1ea1f2080 Mon Sep 17 00:00:00 2001 From: Anno Knierim Date: Sun, 26 Apr 2026 22:53:10 +0200 Subject: [PATCH 4/4] Fix missing word --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index 114c00e6..d666ebf6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -60,7 +60,7 @@ Maintenance - Updated type hints across the codebase -- Added `dataset_type` as an to `FITSWriter` for consistency with other writer classes +- Added `dataset_type` as an argument/attribute to `FITSWriter` for consistency with other writer classes - Removed unused submodule `pyvisgen.fits.data`