|
| 1 | +*************** |
| 2 | +Pending Changes |
| 3 | +*************** |
| 4 | + |
| 5 | +This document tracks changes pending release for the soiling module refactor. |
| 6 | +Changes from :pull:`435` are integrated via :pull:`479`. |
| 7 | + |
| 8 | + |
| 9 | +API Changes |
| 10 | +----------- |
| 11 | +* Renamed SRR soiling parameters for clarity and consistency (:pull:`479`): |
| 12 | + |
| 13 | + - ``min_interval_length`` -> ``min_interval_days`` in :py:func:`~rdtools.soiling.soiling_srr` |
| 14 | + and :py:func:`~rdtools.soiling.monthly_soiling_rates` |
| 15 | + - ``max_negative_step`` -> ``max_neg_step`` in :py:func:`~rdtools.soiling.SRRAnalysis._calc_result_df` |
| 16 | + |
| 17 | +* Consolidated soiling method names (:pull:`479`): |
| 18 | + |
| 19 | + - Removed ``method="perfect_clean_complex"`` - use ``method="perfect_clean"`` |
| 20 | + with ``detect_neg_shifts=True`` instead |
| 21 | + - Removed ``method="inferred_clean_complex"`` - use ``method="inferred_clean"`` |
| 22 | + with ``detect_neg_shifts=True`` instead |
| 23 | + |
| 24 | +* Renamed SRR parameters for new features (:pull:`479`): |
| 25 | + |
| 26 | + - ``neg_shift`` -> ``detect_neg_shifts`` |
| 27 | + - ``piecewise`` -> ``piecewise_fit`` |
| 28 | + |
| 29 | + |
| 30 | +Enhancements |
| 31 | +------------ |
| 32 | +* Added negative shift detection capability to :py:func:`~rdtools.soiling.soiling_srr` |
| 33 | + via the ``detect_neg_shifts`` parameter. When enabled, detects negative shifts |
| 34 | + in soiling profiles that may indicate partial cleaning events or sensor issues. |
| 35 | + (:pull:`435`, :pull:`479`) |
| 36 | + |
| 37 | +* Added piecewise linear fitting capability to :py:func:`~rdtools.soiling.soiling_srr` |
| 38 | + via the ``piecewise_fit`` parameter. Detects changes in soiling rate slope within |
| 39 | + intervals using segmented regression. (:pull:`435`, :pull:`479`) |
| 40 | + |
| 41 | +* Added ``collapse_window_days`` parameter to :py:func:`~rdtools.soiling.SRRAnalysis._calc_daily_df` |
| 42 | + to control collapsing of consecutive cleaning events (default: 5 days). (:pull:`479`) |
| 43 | + |
| 44 | +* Added ``forward_median_window`` parameter to :py:func:`~rdtools.soiling.SRRAnalysis._calc_result_df` |
| 45 | + for forward median calculation in shift validation (default: 10). (:pull:`479`) |
| 46 | + |
| 47 | +* Added ``neg_shift_factor`` parameter to control sensitivity of negative shift |
| 48 | + detection (default: 2.5). (:pull:`479`) |
| 49 | + |
| 50 | +* Added ``min_piecewise_days`` parameter to set minimum interval length for |
| 51 | + piecewise fitting attempts (default: 27 days). (:pull:`479`) |
| 52 | + |
| 53 | +* Added ``inferred_recovery`` and ``inferred_begin_shift`` columns to soiling interval |
| 54 | + summary output for tracking inferred cleaning recovery and beginning shift values. |
| 55 | + (:pull:`435`, :pull:`479`) |
| 56 | + |
| 57 | +* Consecutive cleaning events are now always collapsed to single events |
| 58 | + (previously only when ``piecewise=True``). This improves soiling interval |
| 59 | + detection consistency. (:pull:`479`) |
| 60 | + |
| 61 | +* Add capability to seed the CircularBlockBootstrap for reproducible uncertainty |
| 62 | + calculations. (:pull:`435`) |
| 63 | + |
| 64 | +* Removed experimental warning label from soiling module. The SRR and CODS |
| 65 | + algorithms are now considered stable. (:pull:`435`, :pull:`479`) |
| 66 | + |
| 67 | + |
| 68 | +Bug Fixes |
| 69 | +--------- |
| 70 | +* Fixed pylint bare except error for :py:func:`~rdtools.soiling.segmented_soiling_period` |
| 71 | + in ``soiling.py`` (:pull:`432`, :pull:`435`) |
| 72 | + |
| 73 | +* Fixed variable shadowing bug in ``CODSAnalysis.iterative_signal_decomposition`` |
| 74 | + where a local variable ``degradation`` shadowed the imported ``degradation`` |
| 75 | + module, causing ``UnboundLocalError``. Renamed to ``degradation_value``. (:pull:`479`) |
| 76 | + |
| 77 | + |
| 78 | +Documentation |
| 79 | +------------- |
| 80 | +* Removed experimental warning docstrings and runtime warnings from soiling |
| 81 | + plotting functions: :py:func:`~rdtools.plotting.soiling_monte_carlo_plot`, |
| 82 | + :py:func:`~rdtools.plotting.soiling_interval_plot`, and |
| 83 | + :py:func:`~rdtools.plotting.soiling_rate_histogram`. (:pull:`435`, :pull:`479`) |
| 84 | + |
| 85 | +* Added new example notebook ``soiling_options_comparison_v2.ipynb`` demonstrating |
| 86 | + the various soiling analysis options including ``detect_neg_shifts`` and |
| 87 | + ``piecewise_fit``. (:pull:`479`) |
| 88 | + |
| 89 | + |
| 90 | +Testing |
| 91 | +------- |
| 92 | +* Added new test fixtures for soiling data with negative shifts |
| 93 | + (``soiling_normalized_daily_with_neg_shifts``) and piecewise slope changes |
| 94 | + (``soiling_normalized_daily_with_piecewise_slope``). (:pull:`435`, :pull:`479`) |
| 95 | + |
| 96 | +* Added comprehensive tests for negative shift detection (``test_negative_shifts``), |
| 97 | + piecewise fitting (``test_piecewise``), and combined functionality |
| 98 | + (``test_piecewise_and_neg_shifts``). (:pull:`435`, :pull:`479`) |
| 99 | + |
| 100 | +* Added pytests to cover invalid segmentations for |
| 101 | + :py:func:`~rdtools.soiling.segmented_soiling_period` including tests for |
| 102 | + non-datetime index, no change point found, short periods, and long periods. |
| 103 | + (:pull:`432`, :pull:`435`, :pull:`479`) |
| 104 | + |
| 105 | +* Updated test parameter names to match API changes (``neg_shift`` -> |
| 106 | + ``detect_neg_shifts``, ``piecewise`` -> ``piecewise_fit``, etc.). (:pull:`479`) |
| 107 | + |
| 108 | +* Updated test function names (``test_soiling_srr_min_interval_length`` -> |
| 109 | + ``test_soiling_srr_min_interval_days``, etc.). (:pull:`479`) |
| 110 | + |
| 111 | + |
| 112 | +Code Quality |
| 113 | +------------ |
| 114 | +* Reformatted ``soiling.py`` with consistent double-quote string formatting |
| 115 | + and improved function signature readability. (:pull:`479`) |
| 116 | + |
| 117 | +* Removed unused ``warnings`` import from ``plotting.py``. (:pull:`479`) |
| 118 | + |
| 119 | + |
| 120 | +Contributors |
| 121 | +------------ |
| 122 | +* Martin Springer (:ghuser:`martin-springer`) |
| 123 | +* Matthew Muller (:ghuser:`mmuller`) |
| 124 | +* Noah Moyer (:ghuser:`noromo01`) |
| 125 | +* Quyen Nguyen (:ghuser:`qnguyen345`) |
0 commit comments