-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Undesired decoding to timedelta64 (was: units of "seconds" translated to time coordinate) #1621
Comments
Thanks for filing an issue -- I usually follow the xarray tag on StackOverflow but missed this one. I wrote an answer on StackOverflow to explain why this works this way and how to work around it, but as I say in my answer although this is intended behavior I'm open to ideas for improvement. You are not the first person to complain about this, specifically for handling of wave periods. See #843 and links therein for prior discussion (CC @ocefpaf). |
Thanks @shoyer. I understand the issue better now. Had not considered timedeltas. That does conflate the issue. No sure-fire solution, then, so I'll continue with the workaround. Cheers. |
On https://stackoverflow.com/a/46675990/2005869, @shoyer explains:
I understand the potential issue here, but I think Xarray should follow CF conventions for time, and only treat variables as time coordinates if they have valid CF time units ( We know of thousands of datasets (every dataset with waves!) where the current Xarray behavior is a problem. |
Rich, I know you've been involved in CF conventions and standard names, but I don't think the CF conventions on time apply directly here. These are "time difference" units, which are a distinct type of quantity. And assuredly the period of a wave is a type of "time difference" as well -- it's just not one that is useful to decode into an array with dtype Is there some other sort of metadata we could use to make this distinction of "physical" vs. "human" time differences? Now is a good time to make changes, since we are on the verge of making a major release (v0.10). Throwing out some ideas, none of which I particularly like (but to be clear, I don't like the status quo either):
|
I vote for 1, plus a verbose warning message. I have never found |
Same here. 👍 for PS: |
I don't have a strong opinion here but 1 seems best. |
I vote for |
OK, sounds like there is consensus on removing this. I would still like to there to be an option for doing this sort of decoding, because I'm sure somebody finds this useful (at least I did, back when I wrote it!). In particular, it would be nice to have some way to round-trip the My suggested path forward:
Anyone interested in taking this on? All the logic can be found in |
In order to maintain a list of currently relevant issues, we mark issues as stale after a period of inactivity If this issue remains relevant, please comment here or remove the |
@shoyer I'm hitting this on xarray 0.15.1 so I guess the effort had stalled. I'm quite happy with coordinates being decoded to Is there any plan to come back to this? And would the preferred solution still be the abovementioned one? I'll need to spend some effort fixing our use case, possibly with a horrible work-around, so depending on the complexity of the preferred solution, I may be able to work on a PR for xarray instead. |
I still think the ideal path forward is #1621 (comment), but clearly nobody was excited about taking on this effort :). I do still think we probably should retain a way to serialize/unserialize That said, we certainly could add an optional flag for disabling decoding to timedelta64 (e.g., |
Ok, either @aurghs or I will take a shot at implementing |
That ship has clearly sailed quite a while ago! 🤣 But I think I speak for many when I say THANK YOU @alexamici for taking this up again. Many people will still be very happy if this gets implemented. |
* add decode_timedelta kwarg in decode_cf and open_* functions and test. * Fix style issue * Add chang author reference * removed check decode_timedelta in open_dataset * fix docstring indentation * fix: force dtype in test decode_timedelta
In order to maintain a list of currently relevant issues, we mark issues as stale after a period of inactivity If this issue remains relevant, please comment here or remove the |
Still relevant! |
When using open_dataset( ), it is translating data variables with units of "seconds" to time coordinates. For example, measurements of wave period. I don't believe xarray should treat variables as time coordinates unless their units are of "seconds since...". I have noticed that changing my units to "second" or "sec" or "s" prevents xarray from translating the variable to datetime64 and keeps it float64, as desired. More details and an OPeNDAP example posted on github here: https://stackoverflow.com/questions/46552078/xarray-wave-period-in-seconds-ingested-as-timedelta64
The text was updated successfully, but these errors were encountered: