2/8 Normalize satellite timestamps across units - #39
Open
Timothy-W-Hilton wants to merge 1 commit into
Open
Conversation
Convert per-pixel acquisition timestamps to elapsed days with NumPy timedelta arithmetic rather than assuming nanosecond precision. This preserves correct LOWESS timing for microsecond-resolution MODIS timestamps, preventing distinct observations from collapsing onto day zero; add a regression test covering the affected normalization path.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Normalize satellite timestamps across units
Summary
Convert per-pixel satellite acquisition times to elapsed days using NumPy
timedelta64arithmetic rather than assuming that datetime values use nanosecond units.Why
vprm_preprocessor.sort_and_merge_by_timestamp()previously divided elapsed datetime values by1e9and then by the number of seconds per day. That is correct only fordatetime64[ns]. MODIS inputs can carrydatetime64[us]timestamps; under the old calculation, distinct acquisition dates then collapsed toward day zero. LOWESS consequently received incorrect time coordinates and could return missing EVI/LSWI values.Change
Divide the elapsed NumPy timedelta directly by
np.timedelta64(1, "D"). This is independent of the underlying datetime precision and produces elapsed days for nanosecond-, microsecond-, and other supported NumPy datetime units.Validation
[0.0, 8.0], rather than collapsing both observations to zero.1 passed(one existing deprecation warning from xarray'sdropmethod).