id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,auto_merge,repo,url,merged_by 106899035,MDExOlB1bGxSZXF1ZXN0MTA2ODk5MDM1,1277,closed,0,Restored dim order in DataArray.rolling().reduce() ,6815844," - [x] closes #1125 - [x] tests added / passed - [x] passes ``git diff upstream/master | flake8 --diff`` - [x] whatsnew Added 1 line to fix #1125. I hope this is enough. If another care is necessary, please let me know.",2017-02-19T12:14:55Z,2017-07-09T23:53:15Z,2017-02-27T17:11:02Z,2017-02-27T17:11:02Z,5e50c0dc4d0e8238437963cd79d31daaddd41cd8,,,0,8aa40159f34464fc561bcd189f0f7c418fdabba0,1cafb14cb4726da14abfb8976d22e6e2b5f3ae24,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1277, 108710689,MDExOlB1bGxSZXF1ZXN0MTA4NzEwNjg5,1289,closed,0, Added a support for Dataset.rolling.,6815844," - [x] closes #859 - [x] tests added / passed - [x] passes ``git diff upstream/master | flake8 --diff`` - [x] whatsnew entry There seems to be two approaches to realize Dataset.rolling, 1. Apply rolling in each DataArrays and then combine them. 2. Apply Dataset directoly with some DataArrays that do not depend on `dim` kept aside, then merge them later. I chose the latter approach to reuse existing `Rolling` object as much as possible, but it results in some duplicates in `ImplementsRollingDatasetReduce`. Any feedbacks and comments are very welcome.",2017-03-02T08:40:03Z,2017-07-09T23:53:13Z,2017-03-31T03:10:45Z,2017-03-31T03:10:45Z,09ef2c280677c45593d4f93a67962afc42abacf1,,,0,37c58f4c84f0d8743e3e175d0d2ca982bedb4425,371d034372bc7522098a142a0debf93916c49102,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1289, 113807418,MDExOlB1bGxSZXF1ZXN0MTEzODA3NDE4,1347,closed,0,Support for DataArray.expand_dims(),6815844," - [x] closes #1326 - [x] tests added / passed - [x] passes ``git diff upstream/master | flake8 --diff`` - [x] whatsnew entry I added a DataArray's method `expand_dims` based on the discussion in #1326 . The proposed API is similar to `numpy.expand_dims` and slightly different from `Variables.expand_dims`, which requires whole sequences of `dims` of the result array. My concern is that I do not yet fully understand the lazy data manipulation in xarray. Does Variable.expand_dims do it?",2017-04-02T06:36:37Z,2017-04-10T02:05:38Z,2017-04-10T01:01:54Z,2017-04-10T01:01:54Z,444fce8a7ae26546e283a6876f003aafb84b7552,,,0,dd9f573112f376ad5ff061756c2fa599058899d9,79b61ccdd0c9c1822fbec52d1dc488a4dfd0c8af,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1347, 115014590,MDExOlB1bGxSZXF1ZXN0MTE1MDE0NTkw,1364,closed,0,Fix a typo,6815844," - [x] closes #1363 Fixes typos in reshaping.rst. Is there a good way to check docs before merge?",2017-04-10T02:14:56Z,2017-07-09T23:53:03Z,2017-04-10T02:24:00Z,2017-04-10T02:24:00Z,f87bb0beadd937e3e9657e6d686a20b2bb288d2b,,,0,e65faf553d6c2a61d847aade9f4399eb536734ae,444fce8a7ae26546e283a6876f003aafb84b7552,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1364, 119303797,MDExOlB1bGxSZXF1ZXN0MTE5MzAzNzk3,1400,closed,0,Patch isel points,6815844," - [x] closes #1337 - [x] tests added / passed - [x] passes ``git diff upstream/master | flake8 --diff`` - [x] whatsnew entry A small fix for the bug reported in #1337, where unselected coords were wrongly assigned as `data_vars` by `sel_points`. I hope I did not forget anything.",2017-05-06T14:59:51Z,2017-07-09T23:53:06Z,2017-05-09T02:31:52Z,2017-05-09T02:31:52Z,e1982faf8e906ccdcb16b07462ffa77fd13bf69c,,,0,a5e9e62125f2681d668fab1a6b1d420481b6109e,a9a12b0aca862d5ab19180594f616b8efab13308,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1400, 121071107,MDExOlB1bGxSZXF1ZXN0MTIxMDcxMTA3,1412,closed,0,"Multiindex scalar coords, fixes #1408",6815844," - [x] Closes #1408 - [x] Tests added / passed - [x] Passes ``git diff upstream/master | flake8 --diff`` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API To fix #1408, This modification works, but actually I do not fully satisfied yet. There are `if` statements in many places. The major changes I made are 1. `variable.__getitem__` now returns an OrderedDict if a single element is selected from MultiIndex. 2. `indexing.remap_level_indexers` also returns `selected_dims` which is a map from the original dimension to the selected dims which will be a scalar coordinate. Change 1 keeps level-coordinates even after `ds.isel(yx=0)`. Change 2 enables to track which levels are selected, then the selected levels are changed to a scalar coordinate. I guess much smarter solution should exist. I would be happy if anyone gives me a comment.",2017-05-17T14:25:50Z,2017-05-25T11:04:55Z,2017-05-25T11:04:55Z,,aace43cba61ca4f45e2ec4e53571d604f77dd0a1,,,0,185abd0ed70996fafea5ad23f36d867703b81203,d5c7e0612e8243c0a716460da0b74315f719f2df,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1412, 122418207,MDExOlB1bGxSZXF1ZXN0MTIyNDE4MjA3,1426,closed,0,scalar_level in MultiIndex,6815844," - [x] Closes #1408 - [x] Tests added / passed - [x] Passes ``git diff upstream/master | flake8 --diff`` - [ ] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API [Edit for more clarity] I restarted a new branch to fix #1408 (I closed the older one #1412). ![my_proposal](https://cloud.githubusercontent.com/assets/6815844/26553065/f6562366-44c4-11e7-8c9c-3ef7facfe056.png) Because the changes I made is relatively large, here I summarize this PR. # Sumamry In this PR, I newly added two kinds of levels in MultiIndex, `index-level` and `scalar-level`. `index-level` is an ordinary level in MultiIndex (as in current implementation), while `scalar-level` indicates dropped level (which is newly added in this PR). # Changes in behaviors. 1. Indexing a scalar at a particular level changes that level to `scalar-level` instead of dropping that level (changed from #767). 2. Indexing a scalar from a MultiIndex, the selected value now becomes a `MultiIndex-scalar` rather than a scalar of tuple. 3. Enabled indexing along a `index-level` if the MultiIndex has only a single `index-level`. Examples of the output are shown below. Any suggestions for these behaviors are welcome. ```python In [1]: import numpy as np ...: import xarray as xr ...: ...: ds1 = xr.Dataset({'foo': (('x',), [1, 2, 3])}, {'x': [1, 2, 3], 'y': 'a'}) ...: ds2 = xr.Dataset({'foo': (('x',), [4, 5, 6])}, {'x': [1, 2, 3], 'y': 'b'}) ...: # example data ...: ds = xr.concat([ds1, ds2], dim='y').stack(yx=['y', 'x']) ...: ds Out[1]: Dimensions: (yx: 6) Coordinates: * yx (yx) MultiIndex - y (yx) object 'a' 'a' 'a' 'b' 'b' 'b' # <--- this is index-level - x (yx) int64 1 2 3 1 2 3 # <--- this is also index-level Data variables: foo (yx) int64 1 2 3 4 5 6 In [2]: # 1. indexing a scalar converts `index-level` x to `scalar-level`. ...: ds.sel(x=1) Out[2]: Dimensions: (yx: 2) Coordinates: * yx (yx) MultiIndex - y (yx) object 'a' 'b' # <--- this is index-level - x int64 1 # <--- this is scalar-level Data variables: foo (yx) int64 1 4 In [3]: # 2. indexing a single element from MultiIndex makes a `MultiIndex-scalar` ...: ds.isel(yx=0) Out[3]: Dimensions: () Coordinates: yx MultiIndex # <--- this is MultiIndex-scalar - y Dimensions: (yx: 2) Coordinates: * yx (yx) MultiIndex - y (yx) object 'a' 'b' - x int64 1 Data variables: foo (yx) int64 1 4 ``` # Changes in the public APIs Some changes were necessary to the public APIs, though I tried to minimize them. + `level_names`, `get_level_values` methods were moved from `IndexVariable` to `Variable`. This is because `IndexVariable` cannnot handle 0-d array, which I want to support in 2. + `scalar_level_names` and `all_level_names` properties were added to `Variable` + `reset_levels` method was added to `Variable` class to control `scalar-level` and `index-level`. # Implementation summary The main changes in the implementation is the addition of our own wrapper of `pd.MultiIndex`, `PandasMultiIndexAdapter`. This does most of `MultiIndex`-related operations, such as indexing, concatenation, conversion between 'scalar-level` and `index-level`. # What we can do now The main merit of this proposal is that it enables us to handle `MultiIndex` more consistent way to the normal `Variable`. Now we can + recover the MultiIndex with dropped level. ```python In [5]: ds.sel(x=1).expand_dims('x') Out[5]: Dimensions: (yx: 2) Coordinates: * yx (yx) MultiIndex - y (yx) object 'a' 'b' - x (yx) int64 1 1 Data variables: foo (yx) int64 1 4 ``` + construct a MultiIndex by concatenation of MultiIndex-scalar. ```python In [8]: xr.concat([ds.isel(yx=i) for i in range(len(ds['yx']))], dim='yx') Out[8]: Dimensions: (yx: 6) Coordinates: * yx (yx) MultiIndex - y (yx) object 'a' 'a' 'a' 'b' 'b' 'b' - x (yx) int64 1 2 3 1 2 3 Data variables: foo (yx) int64 1 2 3 4 5 6 ``` # What we cannot do now With the current implementation, we can do ```python ds.sel(y='a').rolling(x=2) ``` but with this PR we cannot, because `x` is not yet an ordinary coordinate, but a MultiIndex with a single `index-level`. I think it is better if we can handle such a MultiIndex with a single `index-level` as very similar way to an ordinary coordinate. Similary, we can neither do `ds.sel(y='a').mean(dim='x')`. Also, `ds.sel(y='a').to_netcdf('file')` (#719) # What are to be decided + How to `repr` these new levels (Current formatting is shown in Out[2] and Out[3] above.) + Terminologies such as `index-level`, `scalar-level`, `MultiIndex-scalar` are clear enough? + How much operations should we support for a single `index-level` MultiIndex? Do we support `ds.sel(y='a').rolling(x=2)` and `ds.sel(y='a').mean(dim='x')`? # TODOs - [ ] Support indexing with DataAarray, `ds.sel(x=ds.x[0])` - [ ] Support `stack`, `unstack`, `set_index`, `reset_index` methods with `scalar-level` MultiIndex. - [ ] Add a full document - [ ] Clean up the code related to MultiIndex - [ ] Fix issues (#1428, #1430, #1431) related to MultiIndex ",2017-05-25T11:03:05Z,2019-01-14T21:20:28Z,2019-01-14T21:20:27Z,,5821b1de3713a3513bdce890e77999fd4c4b0688,,,0,38dbbbca748b0f22d1c49d63e5e5524ac093295f,bb87a9441d22b390e069d0fde58f297a054fd98a,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1426, 128471998,MDExOlB1bGxSZXF1ZXN0MTI4NDcxOTk4,1469,closed,0,Argmin indexes,6815844," - [x] Closes #1388 - [x] Tests added / passed - [x] Passes ``git diff master | flake8 --diff`` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API With this PR, ValueError raises if `argmin()` is called by a multi-dimensional array. `argmin_indexes()` method is also added for `xr.DataArray`. Current API design for `argmin_indexes()` returns the argmin-indexes as an `OrderedDict` of `DataArray`s. Example: ```python In [1]: import xarray as xr ...: da = xr.DataArray([[1, 2], [-1, 40], [5, 6]], ...: [('x', ['c', 'b', 'a']), ('y', [1, 0])]) ...: ...: da.argmin_indexes() ...: Out[1]: OrderedDict([('x', array(1)), ('y', array(0))]) In [2]: da.argmin_indexes(dims='y') Out[2]: OrderedDict([('y', array([0, 0, 0]) Coordinates: * x (x) concatenate path, but I don't think it is very efficient. (Is it already efficient, as dask utilizes out-of-core computation?) Any thoughts are welcome. ",2018-01-18T09:18:19Z,2018-06-22T22:27:11Z,2018-03-01T03:39:19Z,2018-03-01T03:39:19Z,dc3eebf3a514cfdc1039b63f2a542121d1328ba9,,,0,aeabdf5fc7ead2f2ae24b59045cc987f6feb5033,f3bbb3ef6badcfe5d1f3b77c231846f0e79a93ea,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1837, 163896260,MDExOlB1bGxSZXF1ZXN0MTYzODk2MjYw,1841,closed,0,Add dtype support for reduce methods.,6815844," - [x] Closes #1838changes) - [x] Tests added - [x] Tests passed - [x] Passes ``git diff upstream/master **/*py | flake8 --diff`` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Fixes #1838. The new rule for reduce is + If dtype is not None and different from array's dtype, use numpy's aggregation function instead of bottleneck's. + If out is not None, raise an error. as suggested in [this comments](https://github.com/pydata/xarray/issues/1838#issuecomment-358851474).",2018-01-19T06:40:41Z,2018-01-20T18:29:02Z,2018-01-20T18:29:02Z,2018-01-20T18:29:02Z,3bd704a4815ad2281e61eedcee3c7935789d410b,,,0,0da3a635e2996098dbb35969001c6033a11b26a8,74d8318c68be884134d449afad18dfe731d48b72,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1841, 164452988,MDExOlB1bGxSZXF1ZXN0MTY0NDUyOTg4,1851,closed,0,Indexing benchmarking,6815844," - [x] Relates to #1771 Just added some benchmarks for basic, outer, and vectorized indexing and assignments. ",2018-01-23T00:27:29Z,2018-01-24T08:10:19Z,2018-01-24T08:10:19Z,2018-01-24T08:10:19Z,04974b99113d3f449c5592abc01a5701ba2382e4,,,0,57da6e5c3da679ca7528ec29b570122d20e0727e,e31cf43e8d183c63474b2898a0776fda72abc82c,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1851, 165099396,MDExOlB1bGxSZXF1ZXN0MTY1MDk5Mzk2,1858,closed,0,Adding a link to asv benchmark.,6815844,"As discussed in #1851, I added a link in doc/installing.rst and a badge on README. ",2018-01-25T11:56:56Z,2018-01-25T21:55:24Z,2018-01-25T17:46:12Z,2018-01-25T17:46:12Z,009291139fde0c859ee565141cdb3b6a3d28cba0,,,0,416ddfacdca2e1946823a4292db41e1d4f2c1aec,0a0593d78fad6c0b776d4c3c6b32a24b2bdfba35,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1858, 166925359,MDExOlB1bGxSZXF1ZXN0MTY2OTI1MzU5,1883,closed,0,Support nan-ops for object-typed arrays,6815844," - [x] Closes #1866 - [x] Tests added (for all bug fixes or enhancements) - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API I am working to add aggregation ops for object-typed arrays, which may make #1837 cleaner. I added some tests but maybe not sufficient. Any other cases which should be considered? e.g. `[True, 3.0, np.nan]` etc... ",2018-02-02T23:16:39Z,2018-02-15T22:03:06Z,2018-02-15T22:03:01Z,2018-02-15T22:03:01Z,b6a0d60e720f5a19d6e00b11fc7f3d485e52a80c,,,0,e46d07de2dcaf7df1bf12e94c8ad70aa8a7cb10b,2aa5b8a5c094593569f5bd9ae220d1f2fc0ecda0,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1883, 168214895,MDExOlB1bGxSZXF1ZXN0MTY4MjE0ODk1,1899,closed,0,Vectorized lazy indexing,6815844," - [x] Closes #1897 - [x] Tests added (for all bug fixes or enhancements) - [x] Tests passed (for all non-documentation changes) - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) I tried to support lazy vectorised indexing inspired by #1897. More tests would be necessary but I want to decide whether it is worth to continue. My current implementation is + For outer/basic indexers, we combine successive indexers (as we are doing now). + For vectorised indexers, we just store them as is and index sequentially when the evaluation. The implementation was simpler than I thought, but it has a clear limitation. It requires to load array before the vectorised indexing (I mean, the evaluation time). If we make a vectorised indexing for a large array, the performance significantly drops and it is not noticeable until the evaluation time. I appreciate any suggestions.",2018-02-09T11:22:01Z,2018-06-08T01:21:06Z,2018-03-06T22:00:57Z,2018-03-06T22:00:57Z,54468e1924174a03e7ead3be8545f687f084f4dd,,,0,8e967105194d7b4208bcac22127cd0cb01a7a484,dc3eebf3a514cfdc1039b63f2a542121d1328ba9,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1899, 169631557,MDExOlB1bGxSZXF1ZXN0MTY5NjMxNTU3,1919,closed,0,Remove flake8 from travis,6815844," - [x] Closes #1912 The removal of flake8 from travis would increase the clearer separation between style-issue and test failure.",2018-02-16T14:03:46Z,2018-05-01T07:24:04Z,2018-05-01T07:24:00Z,2018-05-01T07:24:00Z,39b2a37207fc8e6c5199ba9386831ba7eb06d82b,,,0,04c55cd0a92ae8d274fe4d60f41389ec8e91642e,d191352b6c1e15a2b6105b4b76552fe974231396,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1919, 169812105,MDExOlB1bGxSZXF1ZXN0MTY5ODEyMTA1,1922,closed,0,Support indexing with 0d-np.ndarray,6815844," - [x] Closes #1921 - [x] Tests added (for all bug fixes or enhancements) - [x] Tests passed (for all non-documentation changes) - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) Now Variable accepts 0d-np.ndarray indexer.",2018-02-18T02:46:27Z,2018-02-18T07:26:33Z,2018-02-18T07:26:30Z,2018-02-18T07:26:30Z,2ff7b4c4e394bfe73445f8cf471f0df8b79417bf,,,0,ebfc09681441da6b6278a50f5db91350a8308859,e0621c7d66c13b486b1890f67a126caec2990da7,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1922, 171396650,MDExOlB1bGxSZXF1ZXN0MTcxMzk2NjUw,1942,closed,0,Fix precision drop when indexing a datetime64 arrays.,6815844," - [x] Closes #1932 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API This precision drop was caused when converting `pd.Timestamp` to `np.array` ```python In [7]: ts = pd.Timestamp(np.datetime64('2018-02-12 06:59:59.999986560')) In [11]: np.asarray(ts, 'datetime64[ns]') Out[11]: array('2018-02-12T06:59:59.999986000', dtype='datetime64[ns]') ``` We need to call `to_datetime64` explicitly. ",2018-02-26T14:53:57Z,2018-06-08T01:21:07Z,2018-02-27T01:13:45Z,2018-02-27T01:13:45Z,d8ccc7a999dce1a9ac205452e327bab5aa5f99f0,,,0,f58aaa046d64315ae231fa77d7aa9e6713628742,f530e668fa50665245988be2a00748b9b3ccc0a8,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1942, 171557279,MDExOlB1bGxSZXF1ZXN0MTcxNTU3Mjc5,1943,closed,0,Fix rtd link on readme,6815844,Typo in url.,2018-02-27T03:52:56Z,2018-02-27T04:31:59Z,2018-02-27T04:27:24Z,2018-02-27T04:27:24Z,243093cf814ffaae2a9ce08215632500fbebcf52,,,0,d31024bb4b25b4ab581bae5718d7015b9686e74f,d8ccc7a999dce1a9ac205452e327bab5aa5f99f0,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1943, 172394913,MDExOlB1bGxSZXF1ZXN0MTcyMzk0OTEz,1950,closed,0,Fix doc for missing values.,6815844, - [x] Closes #1944 ,2018-03-02T00:47:23Z,2018-03-03T06:58:33Z,2018-03-02T20:17:29Z,2018-03-02T20:17:29Z,350e97793f89ddd4097b97e0c4af735a5144be24,,,0,0ca721f51e812eacd04a166238e1a4d72979fd8c,dc3eebf3a514cfdc1039b63f2a542121d1328ba9,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1950, 172670528,MDExOlB1bGxSZXF1ZXN0MTcyNjcwNTI4,1957,closed,0,Numpy 1.13 for rtd,6815844," - [x] Partly closes #1944 I noticed [this](https://github.com/pydata/xarray/pull/1950#issuecomment-370125253) is due to the use of old numpy on rtd. xref #1956 ",2018-03-03T14:51:21Z,2018-03-03T22:22:54Z,2018-03-03T22:22:49Z,,7d63d9b43c9f4ebf02c3af846bd09a3150fdea73,,,0,b035efc79252545015a5b0be9ea9667d91c7a664,350e97793f89ddd4097b97e0c4af735a5144be24,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1957, 173170675,MDExOlB1bGxSZXF1ZXN0MTczMTcwNjc1,1968,closed,0,einsum for xarray,6815844," - [x] Closes #1951 - [x] Tests added - [x] Tests passed (for all non-documentation changes) - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) Currently, lazy-einsum for dask is not yet working. @shoyer I think `apply_ufunc` supports lazy computation, but I did not yet figure out how to do this. Can you give me a help?",2018-03-06T14:18:22Z,2018-03-12T06:42:12Z,2018-03-12T06:42:08Z,2018-03-12T06:42:08Z,8271dffc63ec2b12fa81b11381981c9f900449e7,,,0,2bd06ef56d6a4aca4fc742fd9a6ad85d9f3e25bd,aa83d0ec5a0da9e8880d3194864ff212d5990d6b,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1968, 175403318,MDExOlB1bGxSZXF1ZXN0MTc1NDAzMzE4,1994,closed,0,Make constructing slices lazily.,6815844," - [x] Closes #1993 - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes. Quick fix of #1993. With this fix, the script shown in #1993 runs Bottleneck: 0.08317923545837402 s Pandas: 1.3338768482208252 s Xarray: 1.1349339485168457 s",2018-03-15T23:15:26Z,2018-03-18T08:56:31Z,2018-03-18T08:56:27Z,2018-03-18T08:56:27Z,1d0fbe6fe36d5e8a650d416cce85e7994b32e796,,,0,3f8aad371b8b06ebe2e620952954e6568b345fb2,e1dc51572e971567fd3562db0e9f662e3de80898,MEMBER,,13221727,https://github.com/pydata/xarray/pull/1994, 184495028,MDExOlB1bGxSZXF1ZXN0MTg0NDk1MDI4,2087,closed,0,Drop conflicted coordinate when assignment.,6815844," - [x] Closes #2068 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) After this, when assigning a dataarray to a dataset, non-dimensional and conflicted coordinates of the dataarray are dropped. example ``` In [2]: ds = xr.Dataset({'da': ('x', [0, 1, 2])}, ...: coords={'y': (('x',), [0.1, 0.2, 0.3])}) ...: ds ...: Out[2]: Dimensions: (x: 3) Coordinates: y (x) float64 0.1 0.2 0.3 Dimensions without coordinates: x Data variables: da (x) int64 0 1 2 In [3]: other = ds['da'] ...: other['y'] = 'x', [0, 1, 2] # conflicted non-dimensional coordinate ...: ds['da'] = other ...: ds ...: Out[3]: Dimensions: (x: 3) Coordinates: y (x) float64 0.1 0.2 0.3 # 'y' is not overwritten Dimensions without coordinates: x Data variables: da (x) int64 0 1 2 ```",2018-04-27T00:12:43Z,2018-05-02T05:58:41Z,2018-05-02T02:31:02Z,2018-05-02T02:31:02Z,0cc64a08c672e6361d05acea3fea9f34308b62ed,,,0,6e26ad1df7ba1309cd547896b3c571e2dd5b2a40,d1e1440dc5d0bc9c341da20fde85b56f2a3c1b5b,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2087, 185343180,MDExOlB1bGxSZXF1ZXN0MTg1MzQzMTgw,2100,closed,0,Fix a bug introduced in #2087,6815844," - [x] Closes #2099 - [x] Tests added - [x] Tests passed A quick fix for #2099",2018-05-02T06:07:01Z,2018-05-14T00:01:15Z,2018-05-02T21:59:34Z,2018-05-02T21:59:34Z,b9f40cc1da9c45b3dd33a3434b69c3d8fce57138,,,0,3a830bf8aeb97a25c40517a54efa4ca66b7e42dd,0cc64a08c672e6361d05acea3fea9f34308b62ed,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2100, 185983977,MDExOlB1bGxSZXF1ZXN0MTg1OTgzOTc3,2104,closed,0,implement interp(),6815844," - [x] Closes #2079 (remove if there is no corresponding issue, which should only be the case for minor changes) - [x] Tests added (for all bug fixes or enhancements) - [x] Tests passed (for all non-documentation changes) - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) I started working to add `interpolate_at` to xarray, as discussed in issue #2079 (but without caching). I think I need to take care of more edge cases, but before finishing up this PR, I want to discuss what the best API is. I would like to this method working similar to `isel`, which may support *vectorized* interpolation. Currently, this works as follwos ```python In [1]: import numpy as np ...: import xarray as xr ...: ...: da = xr.DataArray([0, 0.1, 0.2, 0.1], dims='x', coords={'x': [0, 1, 2, 3]}) ...: In [2]: # simple linear interpolation ...: da.interpolate_at(x=[0.5, 1.5]) ...: Out[2]: array([0.05, 0.15]) Coordinates: * x (x) float64 0.5 1.5 In [3]: # with cubic spline interpolation ...: da.interpolate_at(x=[0.5, 1.5], method='cubic') ...: Out[3]: array([0.0375, 0.1625]) Coordinates: * x (x) float64 0.5 1.5 In [4]: # interpolation at one single position ...: da.interpolate_at(x=0.5) ...: Out[4]: array(0.05) Coordinates: x float64 0.5 In [5]: # interpolation with broadcasting ...: da.interpolate_at(x=xr.DataArray([[0.5, 1.0], [1.5, 2.0]], dims=['y', 'z'])) ...: Out[5]: array([[0.05, 0.1 ], [0.15, 0.2 ]]) Coordinates: x (y, z) float64 0.5 1.0 1.5 2.0 Dimensions without coordinates: y, z In [6]: da = xr.DataArray([[0, 0.1, 0.2], [1.0, 1.1, 1.2]], ...: dims=['x', 'y'], ...: coords={'x': [0, 1], 'y': [0, 10, 20]}) ...: In [7]: # multidimensional interpolation ...: da.interpolate_at(x=[0.5, 1.5], y=[5, 15]) ...: Out[7]: array([[0.55, 0.65], [ nan, nan]]) Coordinates: * x (x) float64 0.5 1.5 * y (y) int64 5 15 In [8]: # multidimensional interpolation with broadcasting ...: da.interpolate_at(x=xr.DataArray([0.5, 1.5], dims='z'), ...: y=xr.DataArray([5, 15], dims='z')) ...: Out[8]: array([0.55, nan]) Coordinates: x (z) float64 0.5 1.5 y (z) int64 5 15 Dimensions without coordinates: z ``` #### Design question 1. How many interpolate methods should we support? Currently, I only implemented [scipy.interpolate.interp1d](https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html) for 1dimensional interpolation and [scipy.interpolate.RegularGridInterpolator](https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RegularGridInterpolator.html) for multidimensional interpolation. I think 90% usecases are linear, but there are more methods in scipy. 2. How do we handle `nan`? Currently this raises ValueError if nan is present. It may be possible to carry out the interpolation with skipping nan, but in this case the performance would be significantly drops because it cannot be vectorized. 3. Do we support interpolation along *dimension without coordinate*? In that case, do we attach new coordinate to the object? 4. How should we do if new coordinate has the dimensional coordinate for the dimension to be interpolated? e.g. in the following case, ```python da = xr.DataArray([0, 0.1, 0.2, 0.1], dims='x', coords={'x': [0, 1, 2, 3]}) rslt = da.interpolate_at(x=xr.DataArray([0.5, 1.5], dims=['x'], coords={'x': [1, 3]}) ``` what would be `rslt['x']`? I appreciate any comments.",2018-05-04T13:28:38Z,2018-06-11T13:01:21Z,2018-06-08T00:33:52Z,2018-06-08T00:33:52Z,e39729928544204894e65c187d66c1a2b1900fea,,,0,60e2ca3b056a623b1e35042f7fc3d13668c11fa5,21a9f3d7e3a5dd729aeafd08dda966c365520965,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2104, 187477383,MDExOlB1bGxSZXF1ZXN0MTg3NDc3Mzgz,2119,closed,0,Support keep_attrs for apply_ufunc for xr.Variable,6815844," - [x] Closes #2114 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Fixes 2114.",2018-05-11T14:18:51Z,2018-05-11T22:54:48Z,2018-05-11T22:54:44Z,2018-05-11T22:54:43Z,d63001cdbc3bd84f4d6d90bd570a2215ea9e5c2e,,,0,6f9094f0741403c021774b605eadbc8315dc2630,6d8ac11ca0a785a6fe176eeca9b735c321a35527,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2119, 187600342,MDExOlB1bGxSZXF1ZXN0MTg3NjAwMzQy,2122,closed,0,Fixes centerized rolling with bottleneck,6815844," - [x] Closes #2113 - [x] Tests added (for all bug fixes or enhancements) - [x] Tests passed (for all non-documentation changes) - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Two bugs were found and fixed. 1. rolling a dask-array with center=True and bottleneck 2. rolling an integer dask-array with bottleneck",2018-05-12T02:28:21Z,2018-05-13T00:27:56Z,2018-05-12T06:15:55Z,2018-05-12T06:15:55Z,a52540505f606bd7619536d82d43f19f2cbe58b5,,,0,fc1c2f1987079c6e63fabd6b771693f7bd79894f,d63001cdbc3bd84f4d6d90bd570a2215ea9e5c2e,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2122, 187657188,MDExOlB1bGxSZXF1ZXN0MTg3NjU3MTg4,2124,closed,0,Raise an Error if a coordinate with wrong size is assigned to a dataarray,6815844," - [x] Closes #2112 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API. Now uses `dataset_merge_method` when a new coordinate is assigned to a xr.DataArray ",2018-05-13T07:50:15Z,2018-05-16T02:10:48Z,2018-05-15T16:39:22Z,2018-05-15T16:39:22Z,9a48157b525d9e346e73f358a99ceb52717fd3ea,,,0,923cd1363d424c1904fbe0b6deac051d81361551,ebe0dd03187a5c3138ea12ca4beb13643679fe21,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2124, 187657264,MDExOlB1bGxSZXF1ZXN0MTg3NjU3MjY0,2125,closed,0,Reduce pad size in rolling,6815844," - [ ] Closes #N.A. - [x] Tests added (for all bug fixes or enhancements) - [ ] Tests N.A. - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API I noticed `rolling` with dask array and with bottleneck can be slightly improved by reducing the padding depth in `da.ghost.ghost(a, depth=depth, boundary=boundary)`. @jhamman , can you kindly review this?",2018-05-13T07:52:50Z,2018-05-14T22:43:24Z,2018-05-13T22:37:48Z,2018-05-13T22:37:48Z,f861186cbd11bdbfb2aab8289118a59283a2d7af,,,0,a7adc7e20dd8909220a4bee79e15c7e1aeb95733,ebe0dd03187a5c3138ea12ca4beb13643679fe21,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2125, 190509999,MDExOlB1bGxSZXF1ZXN0MTkwNTA5OTk5,2185,closed,0,weighted rolling mean -> weighted rolling sum,6815844,"An example of weighted rolling mean in doc is actually weighted rolling *sum*. It is a little bit misleading [SO](https://stackoverflow.com/questions/50520835/xarray-simple-weighted-rolling-mean-example-using-construct/50524093#50524093), so I propose to change `weighted rolling mean` -> `weighted rolling sum` ",2018-05-25T08:03:59Z,2018-05-25T10:38:52Z,2018-05-25T10:38:48Z,2018-05-25T10:38:48Z,04df50efefecaea729133c14082eb5e24491633e,,,0,428b970fb28e11ebc17a1d1780a107307ab00daa,b48e0969670f17857a314b5a755b1a1bf7ee38df,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2185, 191653297,MDExOlB1bGxSZXF1ZXN0MTkxNjUzMjk3,2205,closed,0,Support dot with older dask,6815844," - [x] Related with #2203 - [x] Tests added - [x] Tests passed - [x] Fully documented Related with #2203, I think it is better if `xr.DataArray.dot()` is working even with older dask, at least in the simpler case (as this is a very primary operation). The cost is a slight complication of the code. Any comments are welcome. ",2018-05-31T06:13:48Z,2018-06-01T01:01:37Z,2018-06-01T01:01:34Z,2018-06-01T01:01:34Z,9d60897a6544d3a2d4b9b3b64008b2bc316d8b98,,,0,ea5d4e90e286b807f0289fee9b7605f08b1b5e55,7036eb5b629f2112da9aa13538aecb07f0f83f5a,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2205, 193486763,MDExOlB1bGxSZXF1ZXN0MTkzNDg2NzYz,2220,closed,0,Reduce memory usage in doc.interpolation.rst,6815844,"I noticed an example I added to doc in #2104 consumes more than 1 GB memory, and it results in the failing in readthedocs build. This PR changes this to a much lighter example.",2018-06-08T01:23:13Z,2018-06-08T01:45:11Z,2018-06-08T01:31:19Z,2018-06-08T01:31:19Z,98e6a4b84dd2cf4296a3e0aa9710bb79411354e4,,,0,843893c4167eb85bfe2b70db33fd38b56b6743b4,e39729928544204894e65c187d66c1a2b1900fea,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2220, 193762231,MDExOlB1bGxSZXF1ZXN0MTkzNzYyMjMx,2222,closed,0,implement interp_like,6815844," - [x] Closes #2218 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API. This adds `interp_like`, that behaves like `reindex_like` but using interpolation. ",2018-06-09T06:46:48Z,2018-06-20T01:39:40Z,2018-06-20T01:39:24Z,2018-06-20T01:39:23Z,59ad782f29a0f4766bac7802be6650be61f018b8,,,0,134bf835f010cc86e59b299f23914d013565d1f9,66be9c5db7d86ea385c3a4cd4295bfce67e3f25b,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2222, 195508617,MDExOlB1bGxSZXF1ZXN0MTk1NTA4NjE3,2236,closed,0,Refactor nanops,6815844," - [x] Closes #2230 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) In #2230, the addition of `min_count` keywords for our reduction methods was discussed, but our `duck_array_ops` module is becoming messy (mainly due to nan-aggregation methods for dask, bottleneck and numpy) and it looks a little hard to maintain them. I tried to refactor them by moving nan-aggregation methods to `nanops` module. I think I still need to take care of more edge cases, but I appreciate any comment for the current implementation. Note: In my implementation, **bottleneck is not used when `skipna=False`**. bottleneck would be advantageous when `skipna=True` as numpy needs to copy the entire array once, but I think numpy's method is still OK if `skipna=False`. ",2018-06-18T12:27:31Z,2018-09-26T12:42:55Z,2018-08-16T06:59:33Z,2018-08-16T06:59:33Z,0b9ab2d12ae866a27050724d94facae6e56f5927,,,0,b72a1c852add254a4cdd49408fe4e9c934ceece6,4df048c146b8da7093faf96b3e59fb4d56945ec5,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2236, 204585059,MDExOlB1bGxSZXF1ZXN0MjA0NTg1MDU5,2326,closed,0,fix doc build error after #2312,6815844,"I merged #2312 without making sure the building test passing, but there was a typo. Ths PR fixes it. ",2018-07-28T09:15:20Z,2018-07-28T10:05:53Z,2018-07-28T10:05:50Z,2018-07-28T10:05:50Z,ded0a684136540962bcc409e6272b1cebb5af30a,,,0,326dc820ea662972599d522f36bdbf1b7565f21c,2fa9dded34e06104379ad1a12c6967913998889b,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2326, 206224273,MDExOlB1bGxSZXF1ZXN0MjA2MjI0Mjcz,2342,closed,0,apply_ufunc now raises a ValueError when the size of input_core_dims is inconsistent with number of argument,6815844," - [x] Closes #2341 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Now raises a ValueError when the size of input_core_dims is inconsistent with number of argument. ",2018-08-05T06:20:03Z,2018-08-06T22:38:57Z,2018-08-06T22:38:53Z,2018-08-06T22:38:53Z,0b181226bbb1c26adfdd5d47d567fb78d0a450fa,,,0,1e64344507c9db30ba746e29369d299fda39e61d,56381ef444c5e699443e8b4e08611060ad5c9507,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2342, 206226854,MDExOlB1bGxSZXF1ZXN0MjA2MjI2ODU0,2343,closed,0,local flake8,6815844,Trivial changes to pass local flake8 tests.,2018-08-05T07:47:38Z,2018-08-05T23:47:00Z,2018-08-05T23:47:00Z,2018-08-05T23:47:00Z,f217a7d8675062aff14f3dc6fb008af0cba8da49,,,0,1b275b5737287860d6c68614d32f891150bf1f11,56381ef444c5e699443e8b4e08611060ad5c9507,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2343, 206537474,MDExOlB1bGxSZXF1ZXN0MjA2NTM3NDc0,2349,closed,0,dask.ghost -> dask.overlap,6815844,"Dask renamed `dask.ghost` -> `dask.overlap` in dask/dask#3830. This PR follows up this.",2018-08-06T22:54:46Z,2018-08-08T01:14:04Z,2018-08-08T01:14:02Z,2018-08-08T01:14:02Z,04458670782c0b6fdba7e7021055155b2a6f284a,,,0,108381f9c88526e676fff193a4a7f70e7c9204ec,0b181226bbb1c26adfdd5d47d567fb78d0a450fa,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2349, 206864758,MDExOlB1bGxSZXF1ZXN0MjA2ODY0NzU4,2353,closed,0,Raises a ValueError for a confliction between dimension names and level names,6815844," - [x] Closes #2299 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API. Now it raises an Error to assign new dimension with the name conflicting with an existing level name. Therefore, it is not allowed ```python b = xr.Dataset(coords={'dim0': ['a', 'b'], 'dim1': [0, 1]}) b = b.stack(dim_stacked=['dim0', 'dim1']) # This should raise an errors even though its length is consistent with `b['dim0']` b['c'] = (('dim0',), [10, 11, 12, 13]) # This is OK b['c'] = (('dim_stacked',), [10, 11, 12, 13]) ```",2018-08-08T00:52:29Z,2018-08-13T22:16:36Z,2018-08-13T22:16:31Z,2018-08-13T22:16:31Z,e3350fd724c30bb3695f755316f9b840445a0af6,,,0,82475aff193036c4b1493081414fc66befbfc150,846e28f8862b150352512f8e3d05bcb9db57a1a3,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2353, 206867230,MDExOlB1bGxSZXF1ZXN0MjA2ODY3MjMw,2354,closed,0,Mark some tests related to cdat-lite as xfail,6815844,"I just mark some to_cdms2 tests xfail. See #2332 for the details. It is a temporal workaround and we may need to keep #2332 open until it is solved.",2018-08-08T01:13:25Z,2018-08-10T16:09:30Z,2018-08-10T16:09:30Z,2018-08-10T16:09:30Z,fe99a22ca7bcb1f854c22f5f6894d3c5d40774a6,,,0,b81ca434f6b93c8eca5d44b16f5a03ec060db382,04458670782c0b6fdba7e7021055155b2a6f284a,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2354, 208144841,MDExOlB1bGxSZXF1ZXN0MjA4MTQ0ODQx,2366,closed,0,Future warning for default reduction dimension of groupby,6815844," - [ ] Closes #xxxx - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Started to fix #2363. Now warns a futurewarning in groupby if default reduction dimension is not specified. As a side effect, I added `xarray.ALL_DIMS`. With `dim=ALL_DIMS` always reduces along all the dimensions.",2018-08-14T01:16:34Z,2018-09-28T06:54:30Z,2018-09-28T06:54:30Z,2018-09-28T06:54:30Z,638b251c622359b665208276a2cb23b0fbc5141b,,,0,68d7c04e5ebf1e6c7c34a71ee73da6a7f30ca4a2,04253f271c66a12366a82d357c2a889dd3eea42f,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2366, 209078448,MDExOlB1bGxSZXF1ZXN0MjA5MDc4NDQ4,2372,closed,0,[MAINT] Avoid using duck typing,6815844," - [x] Closes #2179 - [x] Tests passed - [ ] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) ",2018-08-17T08:26:31Z,2018-08-20T01:13:26Z,2018-08-20T01:13:16Z,2018-08-20T01:13:16Z,8378d3af259d7d1907359fc087dd0a6ca7e5ef17,,,0,6b206c771b7ebe1bf6eeed7ef0cb50fffbf8df9e,0b9ab2d12ae866a27050724d94facae6e56f5927,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2372, 209145472,MDExOlB1bGxSZXF1ZXN0MjA5MTQ1NDcy,2373,closed,0,More support of non-string dimension names,6815844," - [x] Tests passed (for all non-documentation changes) Following to #2174 In some methods, consistency of the dictionary arguments and keyword arguments are checked twice in `Dataset` and `Variable`. Can we change the API of Variable so that it does not take kwargs-type argument for dimension names?",2018-08-17T13:18:18Z,2018-08-20T01:13:02Z,2018-08-20T01:12:37Z,2018-08-20T01:12:37Z,725bd57ffa64d7e391ceef2b056fa8122ec09e8d,,,0,48a2f3170b907f2e2253fd484d1b323a1f1b51ad,0b9ab2d12ae866a27050724d94facae6e56f5927,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2373, 212889732,MDExOlB1bGxSZXF1ZXN0MjEyODg5NzMy,2398,closed,0,implement Gradient,6815844," - [x] Closes #1332 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Added `xr.gradient`, `xr.DataArray.gradient`, and `xr.Dataset.gradient` according to #1332.",2018-09-04T08:11:52Z,2018-09-21T20:02:43Z,2018-09-21T20:02:43Z,2018-09-21T20:02:43Z,ab96954883200f764a0dd50870e4db240c119265,,,0,528bcab00920a40a49643d412ea0d9c8a2d2102c,66a8f8dd7f5a2997ff614f3966d1951587915e7e,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2398, 218706745,MDExOlB1bGxSZXF1ZXN0MjE4NzA2NzQ1,2446,closed,0,fix:2445,6815844," - [x] Closes #2445 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes It is a regression after #2360.",2018-09-27T16:00:17Z,2018-09-28T18:24:42Z,2018-09-28T18:24:36Z,2018-09-28T18:24:35Z,23d1cda3b7da5c73a5f561a5c953b50beaa2bfe6,,,0,a49e5d7afa60b53a4c4ee1f65443231577fecbcd,c2b09d697c741b5d6ddede0ba01076c0cb09cf19,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2446, 218721452,MDExOlB1bGxSZXF1ZXN0MjE4NzIxNDUy,2447,closed,0,restore ddof support in std,6815844," - [x] Closes #2440 - [x] Tests added - [x] Tests passed - [x] Fully documented, including `whats-new.rst` for all changes It looks that I wrongly remove `ddof` option for `nanstd` in #2236. This PR fixes this. ",2018-09-27T16:51:44Z,2018-10-03T12:44:55Z,2018-09-28T13:44:29Z,2018-09-28T13:44:29Z,458cf51ce20e8d924b38b59c8fbc3bb10f39148e,,,0,a50d8ac2f39ed996b25793c50946ccef90ce5974,78058e2c1f39cbfae6eddb30e3b7d4a81b54ad8b,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2447, 220272833,MDExOlB1bGxSZXF1ZXN0MjIwMjcyODMz,2462,closed,0,pep8speaks,6815844," - [x] Closes #2428 I installed pep8speaks as suggested in #2428. It looks they do not need a yml file, but it may be safer to add this (just renamed from `.stickler.yml`)",2018-10-04T07:17:34Z,2018-10-07T22:40:15Z,2018-10-07T22:40:08Z,2018-10-07T22:40:08Z,cf1e6c73d0366124485c1d767b89ac1cc301705b,,,0,9b620892593672e881cb91f22431179ddde05508,bb87a9441d22b390e069d0fde58f297a054fd98a,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2462, 221311770,MDExOlB1bGxSZXF1ZXN0MjIxMzExNzcw,2477,closed,0,Inhouse LooseVersion,6815844," - [x] Closes #2468 - [x] Tests added - [N.A.] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API (remove if this change should not be visible to users, e.g., if it is an internal clean-up, or if this is part of a larger project that will be documented later) A fix for #2468.",2018-10-09T05:23:56Z,2018-10-10T13:47:31Z,2018-10-10T13:47:23Z,2018-10-10T13:47:23Z,7f20a20aa278d2bb056403d665c10e29968755cd,,,0,7aec9fe1517c74f2711289d073b40d46fff0e233,289b377129b18e7dc6da8336e958a85be868acbe,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2477, 238972759,MDExOlB1bGxSZXF1ZXN0MjM4OTcyNzU5,2612,closed,0,Added Coarsen,6815844," - [x] Closes #2525 - [x] Tests added - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Started to implement `corsen`. The API is currently something like ```python actual = ds.coarsen(time=2, x=3, side='right', coordinate_func={'time': np.max}).max() ``` Currently, it is not working for a datetime coordinate, since `mean` does not work for this dtype. e.g. ```python da = xr.DataArray(np.linspace(0, 365, num=365), dims='time', coords={'time': pd.date_range('15/12/1999', periods=365)}) da['time'].mean() # -> TypeError: ufunc add cannot use operands with types dtype(' - [x] Closes #2940 - [x] Tests added - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Fix for #2940 It looks that there was a bug in the previous logic, but I am not sure why it was working...",2019-05-06T21:23:41Z,2019-06-30T00:34:57Z,2019-06-30T00:34:57Z,,7ba929d15cc77c718c8dbb4f96582820fa98a861,,,0,ca96cc3b709ef043a7fa54030c6ddf26da8b4089,5aaa6547cd14a713f89dfc7c22643d86fce87916,MEMBER,,13221727,https://github.com/pydata/xarray/pull/2942, 340541733,MDExOlB1bGxSZXF1ZXN0MzQwNTQxNzMz,3520,closed,0,Fix set_index when an existing dimension becomes a level,6815844," - [x] Closes #3512 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API There was a bug in `set_index`, where an old dimension was not updated if it becomes a level of MultiIndex.",2019-11-13T16:06:50Z,2019-11-14T11:56:25Z,2019-11-14T11:56:18Z,2019-11-14T11:56:18Z,c0ef2f616e87e9f924425bcd373ac265f14203cb,,,0,18fa5ec46da318d76488ea2994e9654e9683bce9,8b240376fd91352a80b068af606850e8d57d1090,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3520, 341746408,MDExOlB1bGxSZXF1ZXN0MzQxNzQ2NDA4,3541,closed,0,Added fill_value for unstack,6815844," - [x] Closes #3518 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Added an option `fill_value` for `unstack`. I am trying to add `sparse` option too, but it may take longer. Probably better to do in a separate PR? ",2019-11-16T11:10:56Z,2019-11-16T14:42:31Z,2019-11-16T14:36:44Z,2019-11-16T14:36:43Z,56c16e4bf45a3771fd9acba76d802c0199c14519,,,0,5c574ecebc76df7f1f55811acd7b7531ed8dba86,52d48450f6291716a90f4f7e93e15847942e0da0,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3541, 341761585,MDExOlB1bGxSZXF1ZXN0MzQxNzYxNTg1,3542,closed,0,sparse option to reindex and unstack,6815844," - [x] Closes #3518 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Added `sparse` option to `reindex` and `unstack`. I just added a minimal set of codes necessary to `unstack` and `reindex`. There is still a lot of space to complete the sparse support as discussed in #3245. ",2019-11-16T14:41:00Z,2019-11-19T22:40:34Z,2019-11-19T16:23:34Z,2019-11-19T16:23:34Z,220adbc65e0b8c46feddaa6984df4a3a1ce0af6b,,,0,92ce6cdbfc0ff59a1963933bdb46612908ab4de2,56c16e4bf45a3771fd9acba76d802c0199c14519,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3542, 344805747,MDExOlB1bGxSZXF1ZXN0MzQ0ODA1NzQ3,3566,closed,0,Make 0d-DataArray compatible for indexing.,6815844," - [x] Closes #3562 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Now 0d-DataArray can be used for indexing.",2019-11-23T12:43:32Z,2023-08-31T02:06:21Z,2023-08-31T02:06:21Z,,ee41a090c44d58d89d2761d92e3ce84ecae3aacb,,,0,2d738536efcbcbac3ff75aeb5bf680900cd0f886,d1e4164f3961d7bbb3eb79037e96cae14f7182f8,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3566, 347592715,MDExOlB1bGxSZXF1ZXN0MzQ3NTkyNzE1,3587,open,0,boundary options for rolling.construct,6815844," - [x] Closes #2007, #2011 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Added some boundary options for rolling.construct. Currently, the option names are inherited from `np.pad`, `['edge' | 'reflect' | 'symmetric' | 'wrap']`. Do we want a more intuitive name, such as `periodic`?",2019-12-02T12:11:44Z,2022-06-09T14:50:17Z,,,ad596b643eb6e63870b222debe1067821002460f,,,0,56760379d32efc104541c9f3a0f0133e0fa916a4,d1e4164f3961d7bbb3eb79037e96cae14f7182f8,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3587, 360395968,MDExOlB1bGxSZXF1ZXN0MzYwMzk1OTY4,3670,closed,0,sel with categorical index,6815844," - [x] Closes #3669, #3674 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API It is a bit surprising that no members have used xarray with CategoricalIndex... If there is anything missing additionally, please feel free to point it out.",2020-01-08T10:51:06Z,2020-01-25T22:38:28Z,2020-01-25T22:38:21Z,2020-01-25T22:38:20Z,cc142f430f9f468c990b6607ddf3424b0facf054,,,0,27f35059038c6ab74e6352932ac58759f2aca5b0,9c7286639136f52aee877f44de8c89d7c8f41068,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3670, 400511693,MDExOlB1bGxSZXF1ZXN0NDAwNTExNjkz,3953,closed,0,Fix wrong order of coordinate converted from pd.series with MultiIndex,6815844," - [x] Closes #3951 - [x] Tests added - [x] Passes `isort -rc . && black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API It looks `dataframe.set_index(index).index == index` is not always true. Added a workaround for this...",2020-04-07T21:28:04Z,2020-04-08T05:49:46Z,2020-04-08T02:19:11Z,2020-04-08T02:19:10Z,1eedc5c146d9e6ebd46ab2cc8b271e51b3a25959,,,0,b79a96e506e02e549255c6afdd8eeefe6c37b102,f07adb293e67ae01d305fd1c8fb42f5bad2238e7,MEMBER,,13221727,https://github.com/pydata/xarray/pull/3953, 413872842,MDExOlB1bGxSZXF1ZXN0NDEzODcyODQy,4036,closed,0,support darkmode,6815844," - [x] Closes #4024 - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Now it looks like ![image](https://user-images.githubusercontent.com/6815844/81138965-e3f04300-8f9e-11ea-9e5d-7b5b680932d7.png) I'm pretty sure that this workaround is not the best (maybe the second worst), as it only supports the dark mode of vscode but not other environments. I couldn't find a good way to make a workaround for the general dark-mode. Any advice is welcome. ",2020-05-06T04:39:07Z,2020-05-21T21:06:15Z,2020-05-07T20:36:32Z,2020-05-07T20:36:32Z,69548df9826cde9df6cbdae9c033c9fb1e62d493,,,0,6cd140ba5924d067c77a30552c524a3f88206b4d,9ec3f7b44d50ffa2298a9796847e69953ae96cbd,MEMBER,,13221727,https://github.com/pydata/xarray/pull/4036, 418912877,MDExOlB1bGxSZXF1ZXN0NDE4OTEyODc3,4069,closed,0,Improve interp performance,6815844," - [x] Closes #2223 - [x] Passes `isort -rc . && black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Now n-dimensional interp works sequentially if possible. It may speed up some cases.",2020-05-16T04:23:47Z,2020-05-25T20:02:41Z,2020-05-25T20:02:37Z,2020-05-25T20:02:36Z,d1f7cb8fd95d588d3f7a7e90916c25747b90ad5a,,,0,1a7d738ea82cf714a28b4b2f8dcdc711d5c39fc6,2542a63f6ebed1a464af7fc74b9f3bf302925803,MEMBER,,13221727,https://github.com/pydata/xarray/pull/4069, 447892617,MDExOlB1bGxSZXF1ZXN0NDQ3ODkyNjE3,4219,closed,0,nd-rolling,6815844," - [x] Closes #4196 - [x] Tests added - [x] Passes `isort -rc . && black . && mypy . && flake8` - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` - [ ] New functions/methods are listed in `api.rst` I noticed that the implementation of nd-rolling is straightforward. The core part is implemented but I am wondering what the best API is, with keeping it backward-compatible. Obviously, it is basically should look like ```python da.rolling(x=3, y=3).mean() ``` A problem is other parameters, `centers` and `min_periods`. In principle, they can depend on dimension. For example, we can have `center=True` only for `x` but not for `y`. So, maybe we allow dictionary for them? ```python da.rolling(x=3, y=3, center={'x': True, 'y': False}, min_periods={'x': 1, 'y': None}).mean() ``` The same thing happens for `.construct` method. ```python da.rolling(x=3, y=3).construct(x='x_window', y='y_window', stride={'x': 2, 'y': 1}) ``` I'm afraid if this dictionary argument was a bit too redundant. Does anyone have another idea? ",2020-07-12T12:19:19Z,2020-08-08T07:23:51Z,2020-08-08T04:16:27Z,2020-08-08T04:16:27Z,1d3dee08291c83d13c46c9b4ede99020942df2f1,,,0,f44dd5db5ee54cb01f1c6cb6a3d662f93932cd1d,e04e21d6160f43bc44e999b6f54f9fe4682f9b81,MEMBER,,13221727,https://github.com/pydata/xarray/pull/4219, 465085685,MDExOlB1bGxSZXF1ZXN0NDY1MDg1Njg1,4329,closed,0,ndrolling repr fix,6815844," - [x] Closes #4328 - [x] Tests added - [x] Passes `isort . && black . && mypy . && flake8` There was a bug in `rolling.__repr__` but it was not tested. Fixed and tests are added.",2020-08-08T23:34:37Z,2020-08-09T13:15:50Z,2020-08-09T11:57:38Z,2020-08-09T11:57:37Z,df7b2eae3a26c1e86bd5f1dd7dab9cc8c4e53914,,,0,3b9cf9819679a9080a26ba469b78563981a3a9d1,f02ca53714de06a4fc035f9dbc75b55be6fa3297,MEMBER,,13221727,https://github.com/pydata/xarray/pull/4329, 581821524,MDExOlB1bGxSZXF1ZXN0NTgxODIxNTI0,4974,closed,0,implemented pad with new-indexes,6815844," - [x] Closes #3868 - [x] Tests added - [x] Passes `pre-commit run --all-files` - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` Now we use a tuple of indexes for `DataArray.pad` and `Dataset.pad`.",2021-03-01T07:50:08Z,2023-09-14T02:47:24Z,2023-09-14T02:47:24Z,,1c150b58f2d05749bcec5de1a10889289e390b85,,,0,30391c64c809686bfefd3bb878ca66eaf86016a5,d1e4164f3961d7bbb3eb79037e96cae14f7182f8,MEMBER,,13221727,https://github.com/pydata/xarray/pull/4974,