Skip to content

BUG: RuntimeWarning in snow.categorize and outliers.zscore for edge case inputs #237

Description

@Omesh37

Bug description

Two functions emit RuntimeWarning for valid but edge-case inputs:

1. pvanalytics/features/snow.py:229

RuntimeWarning: invalid value encountered in divide when modeled_voltage_with_snow_copy contains zeros.

The function already uses np.errstate(divide='ignore') but does not suppress invalid which fires on 0/0.

2. pvanalytics/quality/outliers.py:78

RuntimeWarning: Precision loss occurred in moment calculation when all input values are identical (constant data). This comes from scipy.stats.zscore internally.

To reproduce

# snow.py warning
pytest pvanalytics/tests/features/test_snow.py::test_categorize -W error::RuntimeWarning

# outliers.py warning  
pytest pvanalytics/tests/quality/test_outliers.py::test_zscore_all_same -W error::RuntimeWarning

Fix

# snow.py — added 'invalid' to existing errstate
with np.errstate(divide='ignore', invalid='ignore'):
    vmp_ratio = measured_voltage / modeled_voltage_with_snow_copy

# outliers.py — wraped zscore call
with np.errstate(invalid='ignore'):
    is_outlier.loc[~nan_mask] = abs(stats.zscore(data[~nan_mask])) > zmax

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions