Changelog¶
0.3.3 (unreleased)¶
Contributors to this version: Ludwig Lierhammer (@ludwiglierhammer)
New features and enhancements¶
new_functions: do_valid_value_check and do_valid_value_clim_check are copies of the old versions from do_missing_value_check and do_missing_value_clim_check that return 1 (fail) for numerically invalid values, otherwise 0 (pass) (#205, #206)
A new checker to detect (
marine_qc.duplicate_check), get (marine_qc.get_duplicates), flag (marine_qc.flag_duplicates) and remove (marine_qc.remove_duplicates) potentially duplicated observations usingsplink(#202, #210, #207)flag definitions can now directly be imported via
marine_qc.Flags(#207)new plotting routine that plots a graph of points showing the longitude and value of a set of observations coloured according to flagged outcomes:
plot_variable_longitude(#240, #244)add new input parameters
xlimandylimin the plotting routines (#240, #244)add new input parameter
marker_sizein the plotting routines (#240, #244)add new function to combine results from multiple QC checks into a single flag: combine_qr_results (#242, #245)
add new function that checks whether both the date and the time is valid: do_datetime_check (#246)
optionally, add coastlines in plots using visualization functions (#248)
add buoy tracking QC functions to imports in quality_control.qc_multiple_check (#249, #250)
the documentation now includes example notebooks how to use
marine_qc(#4, #251, #235, #255)quality control functions now support pandas.DataFrames as input, allowing for a more flexible way of passing data using the data key-word-argument (#241, #257)
Breaking changes¶
Both do_mising_value_check and do_missing_value_clim_check now return 0 (pass) for numerically invalid values, otherwise 1 (fail) (#205, #206)
The minimum versions of several dependencies have been set to support Python 3.11 or higher (numpy >= 1.24.0, pandas >= 3.0.0, scipy >= 1.11.0, xarray >= v2025.07.0, xclim >= 0.56) (#224)
convert buoy tracking QC outcomes from
floattoint(#249, #250)implement decorator
post_format_return_typeinto buoy tracking QC functions to convert output types to input types (#249, #250)convert all input parameter names from the plutal into the singular in buoy tracking QC function, for instance “lats” to “lat” or “lons” to “lon” (#249, #250)
sort parameter order list in buoy tracking QC functions equivalent to other QC functions, for instance [“lon”, “lat”, “date”] to [“lat”, “lon”, “date”] (#249, #250)
cartopyhas been added to the dependencies (#235)when a pandas.DataFrame is provided as input to remove_duplicates using data keyword-argument, the function returns a pandas.DataFrame instead of a tuple of pandas.Series, making it easier to work with the result (#257)
Internal changes¶
move helper modules to
src.marine_qc.helpers(#207)move QC modules to
src.marine_qc.quality_control(#207)move visualization modules to
src.marine_qc.visualization(#207)locally import some members in submodules
src.marine_qc.duplicate_checker,src.marine_qc.helpers,src.marine_qc.quality_controlandsrc.marine_qc.visualization(#207)Upload coverage results to Coveralls instead of Codecov (#58, #232, #233)
rename plotting routines:
latitude_longitude_plottoplot_latitude_longitudeandlatitude_variable_plottoplot_latitude_variable(#240, #244)new helper function
quality_control.qc_individual_report._do_time_checkthat is used in both “do_time_check” and “do_datetime_check” (#246)new helper function
quality_control.qc_individual_report._do_date_checkthat is used in both “do_date_check” and “do_datetime_check” (#246)explicitly convert intermediate result in
quality_control.helpers.time_control.dayin_yearto a python integer to fix incompatible types assignment (#247)new helper function quality_control.qc_individual_report._do_time_check that is used in both do_time_check and do_datetime_check (#246)
new helper function quality_control.qc_individual_report._do_date_check that is used in both do_date_check and do_datetime_check (#246)
rename quality_control.buoy_tracking_qc into quality_control.qc_buoy_tracking (#249, #250)
move “is_monotonic” and “track_day_test” from quality_control.qc_buoy_tracking to quality_control.track_check_utils (#250)
the duplicate_check function now suppresses warnings from splink (#257)
decorators now use variable arguments instead of lists as inputs (#257)
0.3.2 (2023-04-21)¶
Contributors to this version: Ludwig Lierhammer (@ludwiglierhammer), Trevor James Smith (@Zeitsperre)
Announcements¶
New features and enhancements¶
do_date_check now supports flexible input parameters year_init and year_end that define valid year range (#184)
Breaking changes¶
Internal changes¶
Updated the project template and boilerplate code to address configuration issues and benefit from new workflows/conventions (#161):
A new workflow has been added to automatically accept minor/patch updates to GitHub Actions and Python deps coming from Dependabot.
tox.ini` has migrated to tox.toml (new standard).
pyproject.toml and tox.toml now use [dependency-groups] to manage non-end-user dependency lists.
The Makefile recipes are much cleaner and now manage some dependency installation calls.
Various dependency updates.
sphinx documentation now uses internal data types from “auxiliary.py” (#143, #185)
correct repository url in documentation (#185)
cdm_reader_mapper has been dropped from the dependencies (#183, #188)
copy code snippet to load files from GLAMOD test data repo from cdm_reader_mapper (used in testing suite only) (#183, #188)
Bug fixes¶
0.3.1 (2026-03-06)¶
Contributors to this version: Ludwig Lierhammer (@ludwiglierhammer), John Kennedy (@jjk-code-otter) and Trevor James Smith (@Zeitsperre)
New features and enhancements¶
New functions
do_multiple_sequential_checkanddo_multiple_grouped_checkanalog todo_multiple_individual_checkto run multiple checks at once (#32, #95)Call both plotting functions
latitude_longitude_plotandlatitude_variable_plotdirectly frommarine_qc(#95)New functions
do_landlocked_checkanddo_maritime_checkto test whether a position is on land/sea using a land-sea mask (#130, #141)decorator
external_clim.inspect_climatologynow supports str, path-like andxarrayobjects as input (#141)new validator to validate call signature types in multiple_checks (#15, #128)
Breaking changes¶
rename function
do_multiple_row_checktomultiple_individual_check(#95)rename module
marine_qc.multiple_row_checkstomarine_qc.multiple_checks(#95)multiple_checks now raises errors if qc_dict or preproc_dict has an invalid structure (#119, #128)
multiple_checks now raises errors if input directory values do not match the available QC functions or their arguments (#119, #128)
Internal changes¶
make multiple checks more flexible using several helper functions (#14, #95)
add plotting routines to documentation’s API reference (#95)
add helper functions to documentation’s API reference (#95)
add section “More theoretical information” to documentation (#95)
The numpydoc linting tool has been added to the linting checks, and the pre-commit configurations (#53, #59, #120)
The mypy type checking has been added to the pre-commit configurations (#59, #121)
Documentation is now build without any warning messages (#96, #122)
readthedocs.yaml: set fail_on_warnings to “true” (#61, #122)
new validation method validations to validate call signature types for all functions (#128)
multiple_checks: merge helper functions _prepare_preprocessed_vars and _prepare_qc_functions into _prepare_functions (#128)
multiple_checks: rename helper function _validate_and_normalize_input to _normalize_input (#128)
multiple_checks: replace concrete dict types with Mapping in function type hints (#128)
new helper function auxiliary.ensure_arrays to ensure that all inputs are NumPy arrays and to increase test coverage (#128)
new marine_qc data types: ScalarNumberType, SequenceNumberType and ValueNumberType (#128)
remove cdm_reader_mapper.DataBundle-related tests (#139, #146)
add unit test for external_clim and increase test coverage (#17, #154)
0.3.0 (2026-03-06)¶
See 0.3.1
0.2.0 (2025-10-21)¶
Contributors to this version: Ludwig Lierhammer (@ludwiglierhammer)
Announcements¶
First release on zenodo (#66)
0.1.0 (2025-10-21)¶
Contributors to this version: Ludwig Lierhammer (@ludwiglierhammer), John Kennedy (@jjk-code-otter) and Trevor James Smith (@Zeitsperre)
Announcements¶
This marine QC repository is a copy of the results of https://github.com/glamod/glamod-marine-processing/pull/117. This repository replaces glamod_marine_proccesing.qc_suite.modules as an independent package (#6).
License and Legal¶
CI changes¶
New features and enhancements¶
do_night_check: reversedo_day_check(#21)Added
get_value_fastfor extracting values from climatologies (#24)Added
mds_lat_to_yindex_fastfor extracting values from climatologies (#24)Added
mds_lon_to_xindex_fastfor extracting values from climatologies (#24)Implement plotting routines for QC outcomes (#24):
marine_qc.plot_qc_outcomes.latitude_variable_plot: Plot a graph of points showing the latitude and value of a set of observations coloured according to the QC outcomes.
marine_qc.plot_qc_outcomes.latitude_longitude_plot: Plot a graph of points showing the latitude and longitude of a set of observations coloured according to the QC outcomes.
decorator post_formt_return_type has new parameters (#24):
dtype: Desired data type of the result. Default is int.
multiple: If True, assumes the function returns a sequence of results (e.g., a tuple), and applies format_return_type to each element individually.
Both do_bayesian_buddy_check and do_mds_buddy_check allow a list of row numbers to be skipped (ignore_index) (#24).
Internal changes¶
Remove both jupyter notebook specific (nbqa-pyupgrade, nbqa-black, nbqa-isort, nbstripout) and json-related (pretty-format-json) pre-commit hooks (#7)
Replace assert statements with if statement raising error messages (#7)
Split some try statements into single if statements giving warnings (#7)
Fixing some typos in docstrings and comments (#7)
Improved unit test coverage (#9)
combine time_control.day_in_year and time_control.dayinyear to time_control.day_in_year (#9)
new function time_control.valid_month_day to validate month and day information (#9)
extract daytime check from do_day_check and do_night_check (#21)
vectorised many of the QC checks to speed up processing on large datasets (#24)
moved to using pyproj for spherical geometry calculations (#24)
removed dependence on old Climatology class (#24)
utility functions moved from qc_sequential_reports to track_check_utils (#24)