Changelog ========== All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). UNRELEASED ********** 27.4.0 ****** * Add `labels` dict to the ExecutionBlock, to allow key-value pairs to be captured during ad-hoc observing * Migrated project to UV and Ruff. 27.3.0 ****** * Reduced warnings seen at runtime by fixing np.float64 serialization, and refactoring Quantity/VectorQuantity to use Pydantic's `__get_pydantic_core_schema__` pattern. * Removed deprecated `scan_definitions` and `scan_sequence` from the root of SBDefinition. * Added QA metric thresholds 27.2.2 ****** * [BUGFIX] Fixed issue where an exception was raised when deserialising `ScanDefinition.scan_duration`. 27.2.1 ****** * Renamed LSTConstraint fields to start and end 27.2.0 ****** * Added PVTTable PointingPattern to Target class * Added reference_dishes parameter to SchedulingBlockDefinition's DishAllocation class * SonarQube for static analysis of code quality * AstropyQuantity is bifurcated into two versions: `AstropyQuantity` maps to a single scalar Astropy `Quantity`, while `AstropyVectorQuantity` maps to an Astropy `Quantity` that holds a vector of values. * Added ObservingConstraints to SBDefinition 27.1.1 ****** * [BUGFIX] removes numpy version pin which caused issues with other SKA dependencies downstream. 27.1.0 ****** * Added flow-through, detected-filterbank and pulsar-timing PST processing modes to `PSTConfiguration` of `SBDefinition` * [BUGFIX] Changed MidCSPConfigurationBuilder default frequency_band to BAND_1 to match spw setup. * [BUGFIX] Fixed issue where PDM builders would retain state for child properties created via other builders. * list properties now default to an empty list rather than being mandatory in input JSON. 27.0.0 ****** * [BREAKING] Updates to `script_parameters` fields in `DataProductSDP` 26.3.1 ********** * Fixes issue - ValidationArrayAssembly not pulled into root __init__ 26.3.0 ****** * Regenerated the SVG for the project entity diagram * Updates hr to h for hours in ScanDurationUnits due to astropy constraints * Added validate-against parameter to state which capabilities are needed for an SBD to be validated against * Adds ob_ref to the SBDefinition 26.2.1 ****** * Fixes bug where `scan_duration_ms` is not correctly converted to a TimeDeltaMs object 26.2.0 ****** * Adds LIN_X and LIN_Y to Polarisation for data_product_sdp 26.1.0 ****** * Added: Added the purpose field to the project entity. * Adds Two-Line Element Set (TLE) coordinate support. * Adds ScanDefinition.scan_duration as an AstroPy quantity. * Deprecates ScanDefinition.scan_duration_ms in favour of ScanDefinition.scan_duration 26.0.3 ****** * Updates to polarisations from polarisation for PST 26.0.2 ****** * Updates the spectral image class 26.0.1 ****** * Updated the polarization options and taper from str to int in data products 26.0.0 ****** * Adds data_products_ref to results in proposal * Adds PST and Spectral products to the data product class * [BREAKING] Updates the polarisations to be a list and `observation_set_ref` to be a str. 25.0.0 ****** * [BREAKING] Adds `script_parameters` field to `DataProductSDP` class in `Proposal` and moves imaging script parameters from `DataProductSDP` to `DataProductScriptParameters` * Adds `channels_out` and `fit_spectral_pol` as new parameters to `DataProductScriptParameters` * Adds `calibration_strategies` to project model 24.0.0 ****** * [BREAKING] Updates `options` to `products` in the `DataProductSDP` * [BREAKING] Removes `investigator_refs` from `proposal` * Removes ska_oso_pdm.openapi module * Reinstates 'make py2puml' for automatic UML diagram generation * Adds calibration strategy to proposal model * [BREAKING] Updates pixel_size to image_cellsize 23.0.0 ****** * [BREAKING] Removes `Info` from `Project` * [BREAKING] Updates to use `ProposalInfo` and `ObservationInfo` to replace `Info` in `Propsoal` * Adds new status for `ProposalStatus` * Adds `is_active` in `PanelReview` 22.1.1 ****** * Updates on review and recommendation status 22.1.0 ****** * Adds new `SDPConfiguration` class for specifying SDP script, version and parameters in the SBD * Adds support for defining the sub-band to be used with the Band 5b down-converter 22.0.0 ****** * [BREAKING] Removed deprecated `EquatorialCoordinates`, `HorizontalCoordinates`, `SolarSystemObject` and `EquatorialCoordinatesPST` Classes * [BREAKING] Removed deprecated `SDPConfiguration` class 21.0.0 ****** * [BREAKING] Separated science and technical reviewers. * Updates default `is_feasible` to `None` 20.0.1 ****** * Fixed broken test 20.0.0 [DO NOT USE] ******************** * [BREAKING] Renamed `investigator_id` in `Investigators` to `user_id` 19.1.0 ****** * Adds proposal level access model `ProposalAccess` and enum `ProposalRole` for the PPT. 19.0.0 ****** * Adds scan sequences to SB Definition SubarrayBeamConfiguration and DishAllocation to support observing more than one target per scan. * [BREAKING] Remove deprecated `cbf` from the `CSPConfiguration` and the deprecated `number_of_channels` inside the `MCCSAllocation` * Deprecate `sdp_configuration` in the `SBDefinition` 18.5.0 ****** * Updated the panel reviews model to accommodate both technical and science reviews * Added score to the panel decision model 18.4.0 ****** * Add Proposal related fields to the Project model - specifically adding science programmes into the observing blocks and a prsl_ref to the Project 18.3.0 ****** * Changed status in proposal management from lower-case to title-case 18.2.0 ****** * Added decision_id to class `PanelDecision`for the PMT * Metadata for Proposal Management no longer optional 18.1.0 ****** * Replace older usage of `typing.Optional` with modern `| None` syntax. * Added initial proposal management classes for the PMT: `PanelDecision`, `PanelReview` and `Panel` 18.0.0 ****** * [Breaking] Proposal.prsl_id can now be None * DishAllocation.dish_ids serialise to a sorted set in JSON. * Added `PstSPWConfiguration` to allow definition of spectral windows for Mid PST 17.2.0 ****** * Adds PointedMosaicParameters to SBDefinition `__init__.py` to allow importing at SBDefinition level * Adds Low ITF as an array option 17.1.1 ****** * Renames `target_id` in `Beam` to `beam_name` for consistency 17.1.0 ****** * Adds PointedMosaicParameters pointing pattern for mosaics consisting of individual pointings. * Adds 'epoch' field to EquatorialCoordinates and EquatorialCoordinatesPST for compatibility with ADR-63. * Adds `AltAzCoordinates`, `SpecialCoordinates` and `AltAzCoordinates` to align with ADR-63. * Deprecates `HorizontalCoordinates`, `EquatorialCoordinates`, `EquatorialCoordinatesPST` and `SolarSystemObject`. * Adds `target_id` field to `Beam` class in preparation for future removal of `EquatorialCoordinatesPST` * Refactored the Coordinates to have a `to_sky_coord` method rather than storing a `_coord` object. Not technically breaking as it is a private field. * Changed the input type of coordinate units to accept only a Tuple and not a list or string. * Added GalacticCoordinates object * Deprecate number_of_channels in the MCCS part of the SBDefiniton, as this information can be derived from the CSP set up. 17.0.1 ****** * Added default dish ids to MID imaging SB builder 17.0.0 ****** * Added 'name' to targets and csp_configurations, to be used as a user-friendly way to identify the entity. The existing id fields can now be set to a uid in the UI * [Breaking]: In the SBDefinition, remove dish configuration and refactor `dish_allocation` to contain `dish_ids`, `dish_allocation_id` and `selected_subarray_definition` * [Breaking]: In the SBDefinition, refactor `mccs_allocation` to contain `mccs_allocation_id` instead of `mccs_config_id`and `selected_subarray_definition` instead of `configuration` * [Breaking]: Remove telescope from Project 16.2.1 ****** * Changed `midcbf.subband` kwarg `frequency_slice_offset` to be mandatory and defaulting to zero 16.2.0 ****** * Added `builders` module providing high-level functions for generating Mid and Low SBDefinitions. 16.1.0 ****** * Added : - `robust` and `spectral_averaging` to observation details level * Removed: - `spectral_averaging` remoed from low array details 16.0.1 ****** * Changed typo "suppied_type" to "supplied_type" in "Proposal.ObservationSets.Supplied" 16.0.0 ****** * Changed `sub_type` to `attributes` as this reflects better the Science terminology * Changed default of `subarray` from `AA1` to `aa1` * Removed `SpiralParameters` from `PointingKind` enum within the Proposal * Updated descriptions for various Proposal fields to aid in clarity * Changed `beam_size` * Added `uploaded_pdf` to proposals documents * Removed `ProposalTypeENUM` as will be provided by another system, replaced field to be a string * Removed `ProposalSubType` as will be provided by another system, replaced field to be a string * Removed `ScienceCategory` as will be provided by another system, replaced field to be a string * Removed `ObservationType` as will be provided by another system, replaced field to be a string * Removed `ObservingBand` as will be provided by another system, replaced field to be a string * Updated `results` to `result_details` within the Proposal * Added `status` to the Proposal Investigator * Removed a number of fields from the Proposals as they are no longer required * Added `Sensitivity` class for use in the Proposal * Added `SynthesizedBeamSize` class for use with the `synthesized_beam_size` * Updated `image_size` to use AstropyQuantity * Updated `pixel_size` to use AstropyQuantity 15.4.0 ****** * Added PDM version number to entity metadata * Added `do_pst` boolean to `LowCBFConfiguration` to indicate that the standard correlation set-up will be used for PST observing * Changed `SubarrayBeamConfiguration` field `number_of_channels` to optional 15.3.0 ****** * Introduced entity reference version into the status entity schemas. * Added `PointingKind.Spiral` and `SpiralParameters` pointing pattern to support holography observations. * Added `EquatorialCoordinatesPST` coordinate model to support tied array beam observations 15.2.0 ****** * Make a uniform style for enums in the PDM for the names and values of status entities. 15.1.0 ****** * Added `midcbf` in `CSPConfiguration` 15.0.0 ****** * [Breaking] Updated mccs_allocation to support changes in MCCS Schema * [Breaking] Updated lowcbf within csp_configuration * [Breaking] Pulled SubArrayLOW and SubArrayMID into _shared * [Breaking] Renamed scan_duration to scan_duration_ms in ScanDefinition to reflect the dump value units * [Breaking] Removed obsolete subarray_beam_configurations and target_beam_configurations from SBDefinition * Dependency updates: * Astropy >=5.0.3,<7 * Black >22.10.0 14.3.0 ****** * Moved Elevation to top level of observation * Changed integration to integration_time for the observation_set in proposal * Added support for non-sidereal targets known to KatPoint using reference frame 'special' 14.2.0 ****** DO NOT USE 14.1.0 ****** * Added support for Project status entity. 14.0.1 ****** * Override pipeline runner images in CI lint/test jobs. * Remove explicit Pydantic dependencies. * Minor dependency updates. 14.0.0 ****** * Various changes to the Proposal model, including: * [BREAKING] Renames `Proposal.proposal_id` to `prsl_id` * [BREAKING] Renames `Investigators.proposal_investigator_id` to `investigator_id` * [BREAKING] Renames `Proposal.proposal_info` to `information` * [BREAKING] Changes the shape of `observation_set.Supplied` to contain a nested `quantity` field. * [POSSIBLE BREAKING] A number of fields that were optional are now mandatory. Default values (e.g. `[]`) should make this safe, but your code may break if it expects a `None` * Standardisation of all fields that have value and unit components to use the standard 'quantity' object * Implementation of standard types where applicable * Addition of ENUM's to further improve the quality of the information stored * Additional sample test files and tests added to work with the updated structure, including both Draft & Submitted status variations Union's added so that information can be stored as applicable with reduced wasted content * Simple descriptions added to fields with a view that these will be extended, which will add in future updates * ID fields now use type aliases from `_shared.ids` * Structure extended so that results from sensitivity calculations are stored for later referencing * Adds static type checking (enforced by Pyright) to our code linting. 13.0.1 ****** * Remove classmethod property (deprecated in Py3.11) 'kind' from base classes PythonProcedure and PointingPatternParameters to silence warnings. 13.0.0 ****** * [BREAKING] Renames `EBStatus` to `OSOEBStatus` * [BREAKING] Changes status history reference fields from *_id to *_ref for consistency. * StatusHistory entities now default to a `Metadata(version=1)` 12.0.1 ****** * fix: RequestResponse.response_received_at was mandatory rather than optional. 12.0.0 ****** * Adopts [Pydantic](https://docs.pydantic.dev/latest/) for all PDM objects. * Unifies formerly auto-generated models and hand-written models. * Unifies models and serialisation schemas, removing all [Marshmallow](https://marshmallow.readthedocs.io) schemas. * New 'source of truth': OpenAPI schema yaml is generated from Python code. * `sb_definition.ScanDefinition.pointing_correction` is non-nullable, with a default value of `MAINTAIN`. * `EquatorialCoordinates.unit` and `HorizontalCoordinates.unit` are now always a two-element tuple (array in JSON) - previously it could be a single string if both axes of the reference frame had the same units. * Added `RadialVelocity` to `Target` object representation shared by `ProposalInfo` and `SBDefinition`. * [BREAKING] Pydantic models do not accept positional arguments. Previously, many objects required keyword arguments, but some allowed positional. * [BREAKING] `ResponseResponse` and `ResponseError` renamed to `ResponseWrapper` and `ErrorWrapper`. * [BREAKING] Pydantic models enforce runtime correctness. Attempting to instantiate an object with invalid data will raise a `ValidationError` * [BREAKING] `schemas`,`generated` and `entities` removed: Import directly from `ska_oso_pdm` or from an entity-specific subpackage e.g. `ska_oso_pdm.proposal` * [BREAKING] `proposal.ProposalInfo.targets` is now a list of `Target` objects:`proposal.Target` and `sb_definition.Target` are now a single, unified representation. * [BREAKING] Many field names changed to add `_ref` suffix to distinguish between inline objects and references to IDs of other objects. * [POSSIBLE BREAKING] Datetime strings in JSON use `Z` (Zulu time) instead of `+00:00` to indicate UTC. These are equivalent under ISO 8601.